diff --git a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java index f7f375f2b..bc157e326 100644 --- a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java +++ b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java @@ -22,6 +22,7 @@ public class BOPBiomes public static RegistryKey bayou_mangrove = register("bayou_mangrove"); public static RegistryKey burnt_forest = register("burnt_forest"); public static RegistryKey cherry_blossom_grove = register("cherry_blossom_grove"); + public static RegistryKey cold_desert = register("cold_desert"); public static RegistryKey coniferous_forest = register("coniferous_forest"); public static RegistryKey coniferous_lakes = register("coniferous_lakes"); public static RegistryKey dead_forest = register("dead_forest"); @@ -35,6 +36,8 @@ public class BOPBiomes public static RegistryKey fungal_field = register("fungal_field"); public static RegistryKey fungal_jungle = register("fungal_jungle"); public static RegistryKey golden_prairie = register("golden_prairie"); + public static RegistryKey grassland = register("grassland"); + public static RegistryKey grassland_clover_patch = register("grassland_clover_patch"); public static RegistryKey gravel_beach = register("gravel_beach"); public static RegistryKey grove = register("grove"); public static RegistryKey grove_clearing = register("grove_clearing"); @@ -43,7 +46,6 @@ public class BOPBiomes public static RegistryKey highland_crag = register("highland_crag"); public static RegistryKey highland_moor = register("highland_moor"); public static RegistryKey jade_cliffs = register("jade_cliffs"); - public static RegistryKey jade_grassland = register("jade_grassland"); public static RegistryKey lavender_field = register("lavender_field"); public static RegistryKey lavender_forest = register("lavender_forest"); public static RegistryKey lush_desert = register("lush_desert"); @@ -52,14 +54,12 @@ public class BOPBiomes public static RegistryKey meadow = register("meadow"); public static RegistryKey meadow_forest = register("meadow_forest"); public static RegistryKey muskeg = register("muskeg"); - public static RegistryKey mushroomy_muskeg = register("mushroomy_muskeg"); public static RegistryKey mystic_grove = register("mystic_grove"); public static RegistryKey mystic_plains = register("mystic_plains"); public static RegistryKey ominous_woods = register("ominous_woods"); public static RegistryKey ominous_mire = register("ominous_mire"); public static RegistryKey orchard = register("orchard"); public static RegistryKey origin_valley = register("origin_valley"); - public static RegistryKey overgrown_fungal_jungle = register("overgrown_fungal_jungle"); public static RegistryKey prairie = register("prairie"); public static RegistryKey rainbow_hills = register("rainbow_hills"); public static RegistryKey rainforest = register("rainforest"); @@ -72,15 +72,14 @@ public class BOPBiomes public static RegistryKey seasonal_forest = register("seasonal_forest"); public static RegistryKey seasonal_orchard = register("seasonal_orchard"); public static RegistryKey seasonal_pumpkin_patch = register("seasonal_pumpkin_patch"); + public static RegistryKey shroomy_wetland = register("shroomy_wetland"); public static RegistryKey shrubland = register("shrubland"); public static RegistryKey shrubland_hills = register("shrubland_hills"); - public static RegistryKey silkglade = register("silkglade"); - public static RegistryKey silkglade_nest = register("silkglade_nest"); public static RegistryKey snowy_coniferous_forest = register("snowy_coniferous_forest"); public static RegistryKey snowy_fir_clearing = register("snowy_fir_clearing"); public static RegistryKey snowy_maple_forest = register("snowy_maple_forest"); + public static RegistryKey tall_dead_forest = register("tall_dead_forest"); public static RegistryKey tropic_beach = register("tropic_beach"); - public static RegistryKey tropic_plains = register("tropic_plains"); public static RegistryKey tropics = register("tropics"); public static RegistryKey tundra = register("tundra"); public static RegistryKey tundra_basin = register("tundra_basin"); @@ -91,7 +90,6 @@ public class BOPBiomes public static RegistryKey wetland = register("wetland"); public static RegistryKey wetland_forest = register("wetland_forest"); public static RegistryKey wooded_scrubland = register("wooded_scrubland"); - public static RegistryKey wooded_wasteland = register("wooded_wasteland"); public static RegistryKey woodland = register("woodland"); public static RegistryKey crystalline_chasm = register("crystalline_chasm"); diff --git a/src/main/java/biomesoplenty/api/block/BOPBlocks.java b/src/main/java/biomesoplenty/api/block/BOPBlocks.java index 6e9bd6faa..c5400635e 100644 --- a/src/main/java/biomesoplenty/api/block/BOPBlocks.java +++ b/src/main/java/biomesoplenty/api/block/BOPBlocks.java @@ -290,9 +290,13 @@ public class BOPBlocks public static Block goldenrod; public static Block willow_vine; + public static Block spanish_moss; + public static Block spanish_moss_plant; public static Block sprout; public static Block bush; + public static Block clover; + public static Block huge_clover_petal; public static Block dune_grass; public static Block desert_grass; public static Block dead_grass; @@ -336,6 +340,7 @@ public class BOPBlocks public static Block potted_wilted_lily; public static Block potted_burning_blossom; public static Block potted_sprout; + public static Block potted_clover; public static Block potted_toadstool; public static Block potted_glowshroom; } diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BambooBlossomGroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BambooBlossomGroveBiome.java index 784ff9fec..d4e7715df 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BambooBlossomGroveBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BambooBlossomGroveBiome.java @@ -56,10 +56,10 @@ public class BambooBlossomGroveBiome extends BiomeTemplate builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BAMBOO_BLOSSOM_GROVE_TREES); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_FLOWERS); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_2); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHORT_BAMBOO_5); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_15); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/CherryBlossomGroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/CherryBlossomGroveBiome.java index 24bed640b..c82e74089 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/CherryBlossomGroveBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/CherryBlossomGroveBiome.java @@ -56,9 +56,9 @@ public class CherryBlossomGroveBiome extends BiomeTemplate builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_TREES); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_FLOWERS); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_4); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WoodedWastelandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ColdDesertBiome.java similarity index 60% rename from src/main/java/biomesoplenty/common/biome/overworld/WoodedWastelandBiome.java rename to src/main/java/biomesoplenty/common/biome/overworld/ColdDesertBiome.java index 9a7b46c2b..1d27e5d81 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/WoodedWastelandBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/ColdDesertBiome.java @@ -11,21 +11,18 @@ import biomesoplenty.api.enums.BOPClimates; import biomesoplenty.common.biome.BiomeTemplate; import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; -import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; -import net.minecraft.particles.ParticleTypes; import net.minecraft.world.biome.*; import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; import net.minecraft.world.gen.feature.structure.StructureFeatures; -import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; -import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; -public class WoodedWastelandBiome extends BiomeTemplate +public class ColdDesertBiome extends BiomeTemplate { - public WoodedWastelandBiome() + public ColdDesertBiome() { - this.addWeight(BOPClimates.HOT_DESERT, 1); + this.addWeight(BOPClimates.ICE_CAP, 7); this.setBeachBiome(null); this.setRiverBiome(null); } @@ -33,34 +30,36 @@ public class WoodedWastelandBiome extends BiomeTemplate @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.DESERT).depth(0.0F).scale(-0.11F).temperature(2.0F).downfall(0.0F); + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.ICY).depth(0.0F).scale(-0.075F).temperature(0.25F).downfall(0.0F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x433721).waterFogColor(0x0C0C03).fogColor(0xDBDDC1).skyColor(0x70ADEF).grassColorOverride(0xAD9364).foliageColorOverride(0xB5A76C).ambientParticle(new ParticleEffectAmbience(ParticleTypes.MYCELIUM, 0.00357F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.25F)).grassColorOverride(0xAD9364).foliageColorOverride(0xB5A76C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override protected void configureGeneration(BiomeGenerationSettings.Builder builder) { - builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.WASTELAND); + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.COLD_DESERT); // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_SNOWY); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); - builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); // Underground DefaultBiomeFeatures.addDefaultCarvers(builder); - DefaultBiomeFeatures.addDefaultLakes(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_LAVA); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); //////////////////////////////////////////////////////////// // Vegetation - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_TREES); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_FLOWERS); - - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_GRASS_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_GRASS_1); //////////////////////////////////////////////////////////// @@ -73,9 +72,16 @@ public class WoodedWastelandBiome extends BiomeTemplate protected void configureMobSpawns(MobSpawnInfo.Builder builder) { // Entities - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HUSK, 80, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.POLAR_BEAR, 1, 1, 2)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.STRAY, 80, 4, 4)); } } diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DeepBayouBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DeepBayouBiome.java index d9e9676b1..ca54e1671 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/DeepBayouBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/DeepBayouBiome.java @@ -48,6 +48,9 @@ public class DeepBayouBiome extends BiomeTemplate // Underground DefaultBiomeFeatures.addDefaultCarvers(builder); DefaultBiomeFeatures.addDefaultLakes(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); DefaultBiomeFeatures.addDefaultOres(builder); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DenseWoodlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DenseWoodlandBiome.java index c41594999..29f6d686e 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/DenseWoodlandBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/DenseWoodlandBiome.java @@ -29,7 +29,7 @@ public class DenseWoodlandBiome extends BiomeTemplate { builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.2F).scale(0.15F).temperature(0.8F).downfall(0.5F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0x85C047).foliageColorOverride(0x68AF1A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA7C047).foliageColorOverride(0x92AF1A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TropicPlainsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java similarity index 66% rename from src/main/java/biomesoplenty/common/biome/overworld/TropicPlainsBiome.java rename to src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java index f1fc7bda9..c54d80bef 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/TropicPlainsBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java @@ -8,40 +8,43 @@ package biomesoplenty.common.biome.overworld; import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; import biomesoplenty.common.biome.BiomeTemplate; import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; -import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.world.biome.*; import net.minecraft.world.gen.GenerationStage; import net.minecraft.world.gen.feature.Features; import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; -public class TropicPlainsBiome extends BiomeTemplate +public class GrasslandBiome extends BiomeTemplate { - public TropicPlainsBiome() + public GrasslandBiome() { - this.setBeachBiome(BOPBiomes.tropic_beach); - this.setRiverBiome(null); + this.addWeight(BOPClimates.COOL_TEMPERATE, 3); + this.setBeachBiome(BOPBiomes.gravel_beach); } @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.NONE).depth(0.1F).scale(0.2F).temperature(0.95F).downfall(1.0F); + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.1F).scale(0.2F).temperature(0.6F).downfall(0.7F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4445678).waterFogColor(270131).fogColor(0xB2EDFF).skyColor(0x66BCFF).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x88C57F).foliageColorOverride(0x6AB66F).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override protected void configureGeneration(BiomeGenerationSettings.Builder builder) { - builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.TROPICS); + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); - builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); // Underground DefaultBiomeFeatures.addDefaultCarvers(builder); @@ -50,17 +53,12 @@ public class TropicPlainsBiome extends BiomeTemplate DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); DefaultBiomeFeatures.addDefaultOres(builder); - builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.WHITE_SAND_DISK_EXTRA); - //////////////////////////////////////////////////////////// // Vegetation - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TROPIC_FLOWERS); - - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_1); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_1); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_64); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE_DESERT); //////////////////////////////////////////////////////////// @@ -73,18 +71,20 @@ public class TropicPlainsBiome extends BiomeTemplate protected void configureMobSpawns(MobSpawnInfo.Builder builder) { // Entities - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PARROT, 40, 1, 2)); - builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.PUFFERFISH, 15, 1, 3)); - builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.TROPICAL_FISH, 25, 8, 8)); - builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.SQUID, 10, 4, 4)); - builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.DOLPHIN, 2, 1, 2)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); } -} \ No newline at end of file +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/JadeGrasslandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandCloverPatchBiome.java similarity index 77% rename from src/main/java/biomesoplenty/common/biome/overworld/JadeGrasslandBiome.java rename to src/main/java/biomesoplenty/common/biome/overworld/GrasslandCloverPatchBiome.java index 6a1634959..5a661ff40 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/JadeGrasslandBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandCloverPatchBiome.java @@ -7,56 +7,56 @@ ******************************************************************************/ package biomesoplenty.common.biome.overworld; +import biomesoplenty.api.biome.BOPBiomes; import biomesoplenty.api.enums.BOPClimates; import biomesoplenty.common.biome.BiomeTemplate; import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; -import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; -import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.world.biome.*; import net.minecraft.world.gen.GenerationStage; import net.minecraft.world.gen.feature.Features; import net.minecraft.world.gen.feature.structure.StructureFeatures; -import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; -import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; -public class JadeGrasslandBiome extends BiomeTemplate +public class GrasslandCloverPatchBiome extends BiomeTemplate { - public JadeGrasslandBiome() + public GrasslandCloverPatchBiome() { - this.setBeachBiome(null); + this.setBeachBiome(BOPBiomes.gravel_beach); } @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.3F).scale(0.2F).temperature(0.8F).downfall(0.85F); + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.0F).scale(0.1F).temperature(0.6F).downfall(0.7F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0xBBD1D5).skyColor(0xB7CCAD).grassColorOverride(0x7CA568).foliageColorOverride(0x8BB76E).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x88C57F).foliageColorOverride(0x6AB66F).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override protected void configureGeneration(BiomeGenerationSettings.Builder builder) { - builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.DEEP_GRASS); + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); // Structures DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); - builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); // Underground DefaultBiomeFeatures.addDefaultCarvers(builder); DefaultBiomeFeatures.addDefaultMonsterRoom(builder); DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); DefaultBiomeFeatures.addDefaultOres(builder); - DefaultBiomeFeatures.addDefaultSoftDisks(builder); //////////////////////////////////////////////////////////// // Vegetation - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_PATCH_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_250); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_CLOVER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); //////////////////////////////////////////////////////////// @@ -73,6 +73,8 @@ public class JadeGrasslandBiome extends BiomeTemplate builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MuskegBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MuskegBiome.java index be4b983a5..618c5d752 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/MuskegBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/MuskegBiome.java @@ -25,7 +25,7 @@ public class MuskegBiome extends BiomeTemplate { public MuskegBiome() { - this.addWeight(BOPClimates.TUNDRA, 1); + this.addWeight(BOPClimates.ICE_CAP, 1); this.setBeachBiome(null); } @@ -66,7 +66,7 @@ public class MuskegBiome extends BiomeTemplate // Vegetation builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MUSKEG_TREES); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_1); //////////////////////////////////////////////////////////// diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MysticGroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MysticGroveBiome.java index 74c5a31b7..0d334c431 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/MysticGroveBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/MysticGroveBiome.java @@ -65,6 +65,7 @@ public class MysticGroveBiome extends BiomeTemplate builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_GROVE_FLOWERS); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_RED_MUSHROOM_EXTRA); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_1); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_RED_MUSHROOM); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MysticPlainsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MysticPlainsBiome.java index 50268dd62..0bfa1f4a5 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/MysticPlainsBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/MysticPlainsBiome.java @@ -64,6 +64,7 @@ public class MysticPlainsBiome extends BiomeTemplate builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_PLAINS_FLOWERS); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_4); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_25); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/OvergrownFungalJungleBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/OvergrownFungalJungleBiome.java deleted file mode 100644 index b51fe7e6d..000000000 --- a/src/main/java/biomesoplenty/common/biome/overworld/OvergrownFungalJungleBiome.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright 2014-2019, the Biomes O' Plenty Team - * - * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. - * - * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. - ******************************************************************************/ -package biomesoplenty.common.biome.overworld; - -import biomesoplenty.api.enums.BOPClimates; -import biomesoplenty.common.biome.BiomeTemplate; -import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; -import net.minecraft.entity.EntityClassification; -import net.minecraft.entity.EntityType; -import net.minecraft.world.biome.*; -import net.minecraft.world.gen.GenerationStage; -import net.minecraft.world.gen.feature.Features; -import net.minecraft.world.gen.feature.structure.StructureFeatures; -import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; -import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; -import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; - -public class OvergrownFungalJungleBiome extends BiomeTemplate -{ - public OvergrownFungalJungleBiome() - { - this.setBeachBiome(null); - this.setGrassColorFunction(this::getGrassColor); - } - - @Override - protected void configureBiome(Biome.Builder builder) - { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.1F).scale(0.05F).temperature(0.9F).downfall(0.9F); - - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4445678).waterFogColor(270131).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0x4AA2F9).foliageColorOverride(0x4ADCF9).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); - } - - @Override - protected void configureGeneration(BiomeGenerationSettings.Builder builder) - { - builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); - - // Structures - DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); - - // Underground - DefaultBiomeFeatures.addDefaultCarvers(builder); - - DefaultBiomeFeatures.addDefaultMonsterRoom(builder); - DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); - DefaultBiomeFeatures.addDefaultOres(builder); - - //////////////////////////////////////////////////////////// - - // Vegetation - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OVERGROWN_FUNGAL_JUNGLE_TREES); - - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GLOWSHROOM_EXTRA); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_GLOWSHROOM_EXTRA); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYCELIUM_SPLATTER); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_GLOWSHROOM_EXTRA); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); - - //////////////////////////////////////////////////////////// - - // Other Features - DefaultBiomeFeatures.addDefaultSprings(builder); - DefaultBiomeFeatures.addSurfaceFreezing(builder); - } - - @Override - protected void configureMobSpawns(MobSpawnInfo.Builder builder) - { - // Entities - builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); - } - - public int getGrassColor(double x, double z) - { - double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false); - return d0 < -0.1D ? 0x4AA2F9 : 0x4DD6CA; - } -} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainbowHillsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainbowHillsBiome.java index 6b15dc7d5..cecd8cb14 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/RainbowHillsBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainbowHillsBiome.java @@ -58,6 +58,7 @@ public class RainbowHillsBiome extends BiomeTemplate builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINBOW_HILLS_FLOWERS); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GOLDENROD_2); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_2); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ScrublandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ScrublandBiome.java index 5c5380103..ea5dfaad0 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/ScrublandBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/ScrublandBiome.java @@ -54,7 +54,10 @@ public class ScrublandBiome extends BiomeTemplate //////////////////////////////////////////////////////////// // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUBLAND_FLOWERS); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DESERT_GRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUB_NORMAL); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); //////////////////////////////////////////////////////////// diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java index 61d130d1c..b57ac331f 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java @@ -35,7 +35,7 @@ public class SeasonalForestBiome extends BiomeTemplate { builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.2F).scale(0.2F).temperature(0.4F).downfall(0.8F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xB5B952).foliageColorOverride(0xA3A627).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalOrchardBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalOrchardBiome.java index 9ba218bb7..d21ed5ec1 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalOrchardBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalOrchardBiome.java @@ -33,7 +33,7 @@ public class SeasonalOrchardBiome extends BiomeTemplate { builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(0.0F).temperature(0.4F).downfall(0.8F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xB5B952).foliageColorOverride(0xA3A627).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override @@ -60,7 +60,6 @@ public class SeasonalOrchardBiome extends BiomeTemplate builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SEASONAL_ORCHARD_TREES); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_5); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_10); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalPumpkinPatchBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalPumpkinPatchBiome.java index 1e8425b33..7e1213216 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalPumpkinPatchBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalPumpkinPatchBiome.java @@ -32,7 +32,7 @@ public class SeasonalPumpkinPatchBiome extends BiomeTemplate { builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(-0.025F).temperature(0.4F).downfall(0.8F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xB5B952).foliageColorOverride(0xA3A627).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override @@ -57,7 +57,6 @@ public class SeasonalPumpkinPatchBiome extends BiomeTemplate builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SEASONAL_PUMPKIN_PATCH_TREES); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BIG_PUMPKIN); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_10); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PUMPKIN_PATCH); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_10); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MushroomyMuskegBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ShroomyWetlandBiome.java similarity index 76% rename from src/main/java/biomesoplenty/common/biome/overworld/MushroomyMuskegBiome.java rename to src/main/java/biomesoplenty/common/biome/overworld/ShroomyWetlandBiome.java index 3944a2f33..0f55a536d 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/MushroomyMuskegBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/ShroomyWetlandBiome.java @@ -18,9 +18,9 @@ import net.minecraft.world.gen.feature.Features; import net.minecraft.world.gen.feature.structure.StructureFeatures; import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; -public class MushroomyMuskegBiome extends BiomeTemplate +public class ShroomyWetlandBiome extends BiomeTemplate { - public MushroomyMuskegBiome() + public ShroomyWetlandBiome() { this.setBeachBiome(null); } @@ -28,9 +28,9 @@ public class MushroomyMuskegBiome extends BiomeTemplate @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(-0.175F).scale(-0.05F).temperature(-0.25F).downfall(0.6F); + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(0.0F).scale(0.0F).temperature(0.6F).downfall(0.7F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).grassColorOverride(0x94966E).foliageColorOverride(0x8D9B6B).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x272179).waterFogColor(0x0C031B).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x5A935F).foliageColorOverride(0x4F9657).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override @@ -45,29 +45,34 @@ public class MushroomyMuskegBiome extends BiomeTemplate // Underground DefaultBiomeFeatures.addDefaultCarvers(builder); - DefaultBiomeFeatures.addDefaultLakes(builder); builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); DefaultBiomeFeatures.addDefaultMonsterRoom(builder); DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); DefaultBiomeFeatures.addDefaultOres(builder); - - builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_CLAY); - builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_GRAVEL); + DefaultBiomeFeatures.addSwampClayDisk(builder); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); //////////////////////////////////////////////////////////// // Vegetation - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MUSHROOMY_MUSKEG_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHROOMY_WETLAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_BROWN_MUSHROOM_EXTRA); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PODZOL_SPLATTER); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_BROWN_MUSHROOM); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); //////////////////////////////////////////////////////////// diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeBiome.java deleted file mode 100644 index 805027f9d..000000000 --- a/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeBiome.java +++ /dev/null @@ -1,92 +0,0 @@ -/******************************************************************************* - * Copyright 2014-2019, the Biomes O' Plenty Team - * - * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. - * - * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. - ******************************************************************************/ -package biomesoplenty.common.biome.overworld; - -import biomesoplenty.api.enums.BOPClimates; -import biomesoplenty.common.biome.BiomeTemplate; -import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; -import net.minecraft.entity.EntityClassification; -import net.minecraft.entity.EntityType; -import net.minecraft.world.biome.*; -import net.minecraft.world.gen.GenerationStage; -import net.minecraft.world.gen.feature.*; -import net.minecraft.world.gen.feature.structure.StructureFeatures; -import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; -import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; -import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; - -public class SilkgladeBiome extends BiomeTemplate -{ - public SilkgladeBiome() - { - this.addWeight(BOPClimates.DRY_TEMPERATE, 1); - this.setBeachBiome(null); - this.setRiverBiome(null); - this.setGrassColorFunction(this::getGrassColor); - } - - @Override - protected void configureBiome(Biome.Builder builder) - { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.1F).scale(0.25F).temperature(0.75F).downfall(0.2F); - - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x82826A).waterFogColor(0x0D0F09).fogColor(12638463).skyColor(calculateSkyColor(0.75F)).grassColorOverride(0x939F76).foliageColorOverride(0xDEE1C6).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); - } - - @Override - protected void configureGeneration(BiomeGenerationSettings.Builder builder) - { - builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); - - // Structures - builder.addStructureStart(StructureFeatures.SWAMP_HUT); - DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); - builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); - - // Underground - DefaultBiomeFeatures.addDefaultCarvers(builder); - DefaultBiomeFeatures.addDefaultLakes(builder); - DefaultBiomeFeatures.addDefaultMonsterRoom(builder); - DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); - DefaultBiomeFeatures.addDefaultOres(builder); - DefaultBiomeFeatures.addDefaultSoftDisks(builder); - - //////////////////////////////////////////////////////////// - - // Vegetation - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SILKGLADE_TREES); - - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); - - //////////////////////////////////////////////////////////// - - // Other Features - DefaultBiomeFeatures.addDefaultSprings(builder); - DefaultBiomeFeatures.addSurfaceFreezing(builder); - } - - @Override - protected void configureMobSpawns(MobSpawnInfo.Builder builder) - { - // Entities - builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CAVE_SPIDER, 50, 4, 4)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); - } - - private int getGrassColor(double x, double z) - { - double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false); - return d0 < -0.1D ? 0xB2B39F : 0x939F76; - } -} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeNestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TallDeadForestBiome.java similarity index 66% rename from src/main/java/biomesoplenty/common/biome/overworld/SilkgladeNestBiome.java rename to src/main/java/biomesoplenty/common/biome/overworld/TallDeadForestBiome.java index 05552e95b..828ff2c0a 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeNestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/TallDeadForestBiome.java @@ -7,6 +7,7 @@ ******************************************************************************/ package biomesoplenty.common.biome.overworld; +import biomesoplenty.api.biome.BOPBiomes; import biomesoplenty.api.enums.BOPClimates; import biomesoplenty.common.biome.BiomeTemplate; import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; @@ -16,25 +17,21 @@ import net.minecraft.world.biome.*; import net.minecraft.world.gen.GenerationStage; import net.minecraft.world.gen.feature.Features; import net.minecraft.world.gen.feature.structure.StructureFeatures; -import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; -import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; -public class SilkgladeNestBiome extends BiomeTemplate +public class TallDeadForestBiome extends BiomeTemplate { - public SilkgladeNestBiome() + public TallDeadForestBiome() { - this.setBeachBiome(null); - this.setRiverBiome(null); - this.setGrassColorFunction(this::getGrassColor); + this.setBeachBiome(BOPBiomes.gravel_beach); } @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.5F).scale(0.2F).temperature(0.75F).downfall(0.2F); + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.5F).scale(0.1F).temperature(0.3F).downfall(0.3F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x82826A).waterFogColor(0x0D0F09).fogColor(12638463).skyColor(calculateSkyColor(0.75F)).grassColorOverride(0x939F76).foliageColorOverride(0xDEE1C6).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.3F)).grassColorOverride(0xBAAD64).foliageColorOverride(0xB7B763).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override @@ -43,13 +40,14 @@ public class SilkgladeNestBiome extends BiomeTemplate builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); // Structures - builder.addStructureStart(StructureFeatures.SWAMP_HUT); DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); - builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); // Underground DefaultBiomeFeatures.addDefaultCarvers(builder); - DefaultBiomeFeatures.addDefaultLakes(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); DefaultBiomeFeatures.addDefaultOres(builder); @@ -58,13 +56,10 @@ public class SilkgladeNestBiome extends BiomeTemplate //////////////////////////////////////////////////////////// // Vegetation - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SILKGLADE_NEST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_DEAD_FOREST_TREES); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); //////////////////////////////////////////////////////////// @@ -79,13 +74,12 @@ public class SilkgladeNestBiome extends BiomeTemplate // Entities builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); - builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CAVE_SPIDER, 50, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); - } - - private int getGrassColor(double x, double z) - { - double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false); - return d0 < -0.1D ? 0xB2B39F : 0x939F76; + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); } } diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java index 0f59d435c..7e7157c72 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java @@ -32,7 +32,7 @@ public class TundraBasinBiome extends BiomeTemplate @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(-0.075F).temperature(0.2F).downfall(0.5F); + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(0.0F).temperature(0.2F).downfall(0.5F); builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.2F)).grassColorOverride(0xC08359).foliageColorOverride(0xC5975C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @@ -40,7 +40,7 @@ public class TundraBasinBiome extends BiomeTemplate @Override protected void configureGeneration(BiomeGenerationSettings.Builder builder) { - builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.GRAVEL_FULL); + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.STONE_BASIN); // Structures DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); @@ -49,7 +49,9 @@ public class TundraBasinBiome extends BiomeTemplate // Underground DefaultBiomeFeatures.addDefaultCarvers(builder); DefaultBiomeFeatures.addDefaultMonsterRoom(builder); - DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_GRAVEL); + DefaultBiomeFeatures.addDefaultOres(builder); DefaultBiomeFeatures.addDefaultSoftDisks(builder); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WastelandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WastelandBiome.java index c74d9eaff..35edef46f 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/WastelandBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/WastelandBiome.java @@ -45,7 +45,7 @@ public class WastelandBiome extends BiomeTemplate // Structures DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); - builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); // Underground DefaultBiomeFeatures.addDefaultCarvers(builder); @@ -56,6 +56,9 @@ public class WastelandBiome extends BiomeTemplate //////////////////////////////////////////////////////////// // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_FLOWERS); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_GRASS_2); //////////////////////////////////////////////////////////// diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WoodlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WoodlandBiome.java index ac514cb31..9441a7bbd 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/WoodlandBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/WoodlandBiome.java @@ -31,7 +31,7 @@ public class WoodlandBiome extends BiomeTemplate { builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.1F).scale(0.1F).temperature(0.8F).downfall(0.5F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0x85C047).foliageColorOverride(0x68AF1A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA7C047).foliageColorOverride(0x92AF1A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override diff --git a/src/main/java/biomesoplenty/common/block/FoliageBlockBOP.java b/src/main/java/biomesoplenty/common/block/FoliageBlockBOP.java index a74472f11..bb83959a7 100644 --- a/src/main/java/biomesoplenty/common/block/FoliageBlockBOP.java +++ b/src/main/java/biomesoplenty/common/block/FoliageBlockBOP.java @@ -8,10 +8,9 @@ package biomesoplenty.common.block; import biomesoplenty.api.block.BOPBlocks; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.BushBlock; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.block.*; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; @@ -24,12 +23,17 @@ import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import net.minecraft.world.gen.feature.IFeatureConfig; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.server.ServerWorld; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.PlantType; import javax.annotation.Nullable; +import java.util.Random; -public class FoliageBlockBOP extends BushBlock implements IPlantable +public class FoliageBlockBOP extends BushBlock implements IPlantable, IGrowable { protected static final VoxelShape NORMAL = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D); protected static final VoxelShape SHORT = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 7.0D, 15.0D); @@ -44,7 +48,7 @@ public class FoliageBlockBOP extends BushBlock implements IPlantable { Block block = state.getBlock(); - if (block == BOPBlocks.desert_grass) + if (block == BOPBlocks.desert_grass || block == BOPBlocks.clover) { return SHORT; } @@ -106,4 +110,51 @@ public class FoliageBlockBOP extends BushBlock implements IPlantable { return PlantType.PLAINS; } + + @Override + public boolean isValidBonemealTarget(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.clover) + { + return true; + } + + return false; + } + + @Override + public boolean isBonemealSuccess(World worldIn, Random rand, BlockPos pos, BlockState state) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.clover) { return (double)rand.nextFloat() < 0.4D; } + + return false; + } + + @Override + public void performBonemeal(ServerWorld world, Random rand, BlockPos pos, BlockState state) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.clover) { this.growHugeClover(world, rand, pos, state); } + } + + public boolean growHugeClover(ServerWorld world, Random rand, BlockPos pos, BlockState state) + { + world.removeBlock(pos, false); + ConfiguredFeature configuredfeature = BOPFeatures.HUGE_CLOVER.configured(IFeatureConfig.NONE); + + if (configuredfeature.place(world, world.getChunkSource().getGenerator(), rand, pos)) + { + return true; + } + else + { + world.setBlock(pos, state, 3); + return false; + } + } } diff --git a/src/main/java/biomesoplenty/common/block/HugeCloverPetalBlock.java b/src/main/java/biomesoplenty/common/block/HugeCloverPetalBlock.java new file mode 100644 index 000000000..60975a594 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/HugeCloverPetalBlock.java @@ -0,0 +1,78 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.HorizontalBlock; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.DirectionProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraftforge.common.IPlantable; +import net.minecraftforge.common.PlantType; + +public class HugeCloverPetalBlock extends HorizontalBlock implements IPlantable +{ + public static final DirectionProperty FACING = HorizontalBlock.FACING; + public static final VoxelShape SHAPE = Block.box(0.0D, 13.0D, 0.0D, 16.0D, 15.0D, 16.0D); + + public HugeCloverPetalBlock(Properties properties) + { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return SHAPE; + } + + protected void createBlockStateDefinition(StateContainer.Builder builder) { + builder.add(FACING); + } + + public BlockState updateShape(BlockState p_196271_1_, Direction p_196271_2_, BlockState p_196271_3_, IWorld p_196271_4_, BlockPos p_196271_5_, BlockPos p_196271_6_) { + return !p_196271_1_.canSurvive(p_196271_4_, p_196271_5_) ? Blocks.AIR.defaultBlockState() : super.updateShape(p_196271_1_, p_196271_2_, p_196271_3_, p_196271_4_, p_196271_5_, p_196271_6_); + } + + protected boolean mayPlaceOn(BlockState p_200014_1_, IBlockReader p_200014_2_, BlockPos p_200014_3_) { + return p_200014_1_.is(Blocks.GRASS_BLOCK) || p_200014_1_.is(Blocks.DIRT) || p_200014_1_.is(Blocks.COARSE_DIRT) || p_200014_1_.is(Blocks.PODZOL) || p_200014_1_.is(Blocks.FARMLAND); + } + + @Override + public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) { + BlockPos blockpos = p_196260_3_.below(); + if (p_196260_1_.getBlock() == this) //Forge: This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check. + return p_196260_2_.getBlockState(blockpos).canSustainPlant(p_196260_2_, blockpos, Direction.UP, this); + return this.mayPlaceOn(p_196260_2_.getBlockState(blockpos), p_196260_2_, blockpos); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } + + @Override + public BlockState getPlant(IBlockReader world, BlockPos pos) { + BlockState state = world.getBlockState(pos); + if (state.getBlock() != this) return defaultBlockState(); + return state; + } + + public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { + return this.defaultBlockState().setValue(FACING, p_196258_1_.getHorizontalDirection()); + } +} diff --git a/src/main/java/biomesoplenty/common/block/SpanishMossBlock.java b/src/main/java/biomesoplenty/common/block/SpanishMossBlock.java new file mode 100644 index 000000000..b0558ac98 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/SpanishMossBlock.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.*; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.pathfinding.PathType; +import net.minecraft.state.StateContainer; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; + +public class SpanishMossBlock extends AbstractBodyPlantBlock { + public static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); + + public SpanishMossBlock(AbstractBlock.Properties p_i241195_1_) { + super(p_i241195_1_, Direction.DOWN, SHAPE, false); + } + + protected AbstractTopPlantBlock getHeadBlock() { + return (AbstractTopPlantBlock) BOPBlocks.spanish_moss; + } + + @Override + public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) { + BlockPos blockpos = p_196260_3_.relative(this.growthDirection.getOpposite()); + BlockState blockstate = p_196260_2_.getBlockState(blockpos); + Block block = blockstate.getBlock(); + if (!this.canAttachToBlock(block)) { + return false; + } else { + return block == this.getHeadBlock() || block == this.getBodyBlock() || blockstate.getBlock().is(BlockTags.LEAVES) || blockstate.getBlock().is(BlockTags.LOGS); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/SpanishMossBottomBlock.java b/src/main/java/biomesoplenty/common/block/SpanishMossBottomBlock.java new file mode 100644 index 000000000..86a471e76 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/SpanishMossBottomBlock.java @@ -0,0 +1,50 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.*; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IWorldReader; + +import java.util.Random; + +public class SpanishMossBottomBlock extends AbstractTopPlantBlock { + protected static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); + + public SpanishMossBottomBlock(AbstractBlock.Properties p_i241194_1_) { + super(p_i241194_1_, Direction.DOWN, SHAPE, false, 0.01D); + } + + protected int getBlocksToGrowWhenBonemealed(Random p_230332_1_) { + return PlantBlockHelper.getBlocksToGrowWhenBonemealed(p_230332_1_); + } + + protected Block getBodyBlock() { + return BOPBlocks.spanish_moss_plant; + } + + protected boolean canGrowInto(BlockState p_230334_1_) { + return PlantBlockHelper.isValidGrowthState(p_230334_1_); + } + + @Override + public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) { + BlockPos blockpos = p_196260_3_.relative(this.growthDirection.getOpposite()); + BlockState blockstate = p_196260_2_.getBlockState(blockpos); + Block block = blockstate.getBlock(); + if (!this.canAttachToBlock(block)) { + return false; + } else { + return block == this.getHeadBlock() || block == this.getBodyBlock() || blockstate.getBlock().is(BlockTags.LEAVES) || blockstate.getBlock().is(BlockTags.LOGS); + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java index 8469109fd..a73db3aab 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java @@ -48,10 +48,8 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature BIG_RAINBOW_BIRCH_TREE = register("big_rainbow_birch_tree", BOPFeatures.BIG_RAINBOW_BIRCH_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature BIG_WHITE_CHERRY_TREE = register("big_white_cherry_tree", BOPFeatures.BIG_WHITE_CHERRY_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature BIG_YELLOW_AUTUMN_TREE = register("big_yellow_autumn_tree", BOPFeatures.BIG_YELLOW_AUTUMN_TREE.configured(Features.OAK.config())); - public static final ConfiguredFeature BIRCH_POPLAR = register("birch_poplar", BOPFeatures.BIRCH_POPLAR.configured(Features.OAK.config())); public static final ConfiguredFeature BURNT_TREE = register("burnt_tree", BOPFeatures.BURNT_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature BUSH = register("bush", BOPFeatures.BUSH.configured(Features.OAK.config())); - public static final ConfiguredFeature COBWEB_BUSH = register("cobweb_bush", BOPFeatures.COBWEB_BUSH.configured(Features.OAK.config())); public static final ConfiguredFeature CYPRESS_TREE = register("cypress_tree", BOPFeatures.CYPRESS_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature CYPRESS_TREE_MEDIUM = register("cypress_tree_medium", BOPFeatures.CYPRESS_TREE_MEDIUM.configured(Features.OAK.config())); public static final ConfiguredFeature DARK_OAK_POPLAR = register("dark_oak_poplar", BOPFeatures.DARK_OAK_POPLAR.configured(Features.OAK.config())); @@ -69,8 +67,6 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature FLOWERING_BUSH = register("flowering_bush", BOPFeatures.FLOWERING_BUSH.configured(Features.OAK.config())); public static final ConfiguredFeature FLOWERING_OAK_TREE = register("flowering_oak_tree", BOPFeatures.FLOWERING_OAK_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature FLOWERING_OAK_TREE_BEES = register("flowering_oak_tree_bees", BOPFeatures.FLOWERING_OAK_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_005)))); - public static final ConfiguredFeature FULL_COBWEB_BUSH = register("full_cobweb_bush", BOPFeatures.FULL_COBWEB_BUSH.configured(Features.OAK.config())); - public static final ConfiguredFeature FULL_SILK_TREE = register("full_silk_tree", BOPFeatures.FULL_SILK_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature GIANT_TREE = register("giant_tree", BOPFeatures.GIANT_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature HELLBARK_TREE = register("hellbark_tree", BOPFeatures.HELLBARK_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature JACARANDA_TREE = register("jacaranda_tree", BOPFeatures.JACARANDA_TREE.configured(Features.OAK.config())); @@ -88,13 +84,13 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature REDWOOD_TREE = register("redwood_tree", BOPFeatures.REDWOOD_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature REDWOOD_TREE_LARGE = register("redwood_tree_large", BOPFeatures.REDWOOD_TREE_LARGE.configured(Features.OAK.config())); public static final ConfiguredFeature REDWOOD_TREE_MEDIUM = register("redwood_tree_medium", BOPFeatures.REDWOOD_TREE_MEDIUM.configured(Features.OAK.config())); - public static final ConfiguredFeature SILK_TREE = register("silk_tree", BOPFeatures.SILK_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature SMALL_DEAD_TREE = register("small_dead_tree", BOPFeatures.SMALL_DEAD_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature SPARSE_ACACIA_TREE = register("sparse_acacia_tree", BOPFeatures.SPARSE_ACACIA_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature SPARSE_OAK_TREE = register("sparse_oak_tree", BOPFeatures.SPARSE_OAK_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature SPRUCE_BUSH = register("spruce_bush", BOPFeatures.SPRUCE_BUSH.configured(Features.OAK.config())); public static final ConfiguredFeature SPRUCE_POPLAR = register("spruce_poplar", BOPFeatures.SPRUCE_POPLAR.configured(Features.OAK.config())); public static final ConfiguredFeature SPRUCE_TWIGLET_TREE = register("spruce_twiglet_tree", BOPFeatures.SPRUCE_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TALL_DEAD_TREE = register("tall_dead_tree", BOPFeatures.TALL_DEAD_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature TALL_SPRUCE_TREE = register("tall_spruce_tree", BOPFeatures.TALL_SPRUCE_TREE.configured(Features.OAK.config())); public static final ConfiguredFeature TALL_SPRUCE_TREE_BEES = register("tall_spruce_tree_bees", BOPFeatures.TALL_SPRUCE_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_005)))); public static final ConfiguredFeature TALL_SWAMP_TREE = register("tall_swamp_tree", BOPFeatures.TALL_SWAMP_TREE.configured(Features.OAK.config())); @@ -117,8 +113,8 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature CHERRY_BLOSSOM_GROVE_TREES = register("cherry_blossom_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(WHITE_CHERRY_TREE_BEES.weighted(0.1F), PINK_CHERRY_TREE_BEES.weighted(0.2F), BIG_WHITE_CHERRY_TREE.weighted(0.3F), FLOWERING_OAK_TREE_BEES.weighted(0.15F), FLOWERING_BUSH.weighted(0.3F)), BIG_PINK_CHERRY_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.3F, 1)))); public static final ConfiguredFeature CONIFEROUS_FOREST_TREES = register("coniferous_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.33333334F)), FIR_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.1F, 1)))); public static final ConfiguredFeature CONIFEROUS_LAKES_TREES = register("coniferous_lakes_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.1F)), FIR_TREE_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.1F, 1)))); - public static final ConfiguredFeature DEAD_FOREST_TREES = register("dead_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DYING_TREE.weighted(0.2F), DEAD_TREE.weighted(0.1F), TALL_SPRUCE_TREE.weighted(0.3F), SMALL_DEAD_TREE.weighted(0.3F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.5F, 1)))); - public static final ConfiguredFeature DEEP_BAYOU_TREES = register("deep_bayou_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(CYPRESS_TREE.weighted(0.2F), CYPRESS_TREE_MEDIUM.weighted(0.5F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(24, 0.6F, 1)))); + public static final ConfiguredFeature DEAD_FOREST_TREES = register("dead_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DYING_TREE.weighted(0.2F), TALL_SPRUCE_TREE.weighted(0.3F), SMALL_DEAD_TREE.weighted(0.3F), DEAD_TWIGLET_TREE.weighted(0.2F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.5F, 1)))); + public static final ConfiguredFeature DEEP_BAYOU_TREES = register("deep_bayou_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(CYPRESS_TREE.weighted(0.2F), CYPRESS_TREE_MEDIUM.weighted(0.5F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(26, 0.8F, 1)))); public static final ConfiguredFeature DENSE_WOODLAND_TREES = register("dense_woodland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_OAK_TREE.weighted(0.5F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1)))); public static final ConfiguredFeature DRYLAND_TREES = register("dryland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TWIGLET_TREE.weighted(0.4F), SPARSE_OAK_TREE.weighted(0.2F)), ACACIA_TWIGLET_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.4F, 1)))); public static final ConfiguredFeature DRY_BONEYARD_TREES = register("dry_boneyard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TWIGLET_TREE.weighted(0.4F), SPARSE_OAK_TREE.weighted(0.2F)), ACACIA_TWIGLET_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1)))); @@ -133,15 +129,13 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature LUSH_DESERT_TREES = register("lush_desert_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(ACACIA_BUSH.weighted(0.4F), SPARSE_ACACIA_TREE.weighted(0.2F)), ACACIA_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.4F, 1)))); public static final ConfiguredFeature MEADOW_TREES = register("meadow_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE_BEES.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.1F, 1)))); public static final ConfiguredFeature MEADOW_FOREST_TREES = register("meadow_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.25F)), TALL_SPRUCE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(8, 0.1F, 1)))); - public static final ConfiguredFeature MUSKEG_TREES = register("muskeg_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DARK_OAK_TWIGLET_TREE.weighted(0.4F), DEAD_TREE.weighted(0.3F), DYING_TREE.weighted(0.075F), DEAD_TWIGLET_TREE_TALL.weighted(0.1F)), DEAD_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.3F, 1)))); - public static final ConfiguredFeature MUSHROOMY_MUSKEG_TREES = register("mushroomy_muskeg_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DARK_OAK_TWIGLET_TREE.weighted(0.4F), DEAD_TREE.weighted(0.3F), DYING_TREE.weighted(0.075F), DEAD_TWIGLET_TREE_TALL.weighted(0.1F)), DEAD_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1)))); - public static final ConfiguredFeature MYSTIC_GROVE_TREES = register("mystic_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_FLOWERING_OAK_TREE.weighted(0.15F), JACARANDA_TREE.weighted(0.25F), BIG_MAGIC_TREE.weighted(0.3F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1)))); + public static final ConfiguredFeature MUSKEG_TREES = register("muskeg_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_DEAD_TREE.weighted(0.1F)), DEAD_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1)))); + public static final ConfiguredFeature MYSTIC_GROVE_TREES = register("mystic_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_FLOWERING_OAK_TREE.weighted(0.15F), JACARANDA_TREE.weighted(0.25F), BIG_MAGIC_TREE.weighted(0.3F), GIANT_TREE.weighted(0.02F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1)))); public static final ConfiguredFeature MYSTIC_PLAINS_TREES = register("mystic_plains_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FLOWERING_OAK_TREE.weighted(0.1F), JACARANDA_TREE.weighted(0.25F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1)))); public static final ConfiguredFeature OMINOUS_WOODS_TREES = register("ominous_woods_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.05F), DYING_TREE.weighted(0.15F), TALL_UMBRAN_TREE.weighted(0.7F)), UMBRAN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.5F, 1)))); public static final ConfiguredFeature OMINOUS_MIRE_TREES = register("ominous_mire_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.1F), DYING_TREE.weighted(0.2F), UMBRAN_TREE.weighted(0.4F)), WILLOW_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1)))); public static final ConfiguredFeature ORCHARD_TREES = register("orchard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_FLOWERING_OAK_TREE.weighted(0.1F)), FLOWERING_OAK_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.3F, 1)))); public static final ConfiguredFeature ORIGIN_VALLEY_TREES = register("origin_valley_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_ORIGIN_TREE.weighted(0.1F)), ORIGIN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(BOPPlacements.ALPHA_TREE.configured(NoPlacementConfig.INSTANCE))); - public static final ConfiguredFeature OVERGROWN_FUNGAL_JUNGLE_TREES = register("overgrown_fungal_jungle_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(GIANT_TREE.weighted(0.04F), BIG_OAK_TREE.weighted(0.4F), Features.OAK.weighted(0.2F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(20, 0.6F, 1)))); public static final ConfiguredFeature PRAIRIE_TREES = register("prairie_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_OAK_TREE.weighted(0.1F)), SPARSE_OAK_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.85F, 0.3F, 1)))); public static final ConfiguredFeature RAINBOW_HILLS_TREES = register("rainbow_hills_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.2F), FIR_TREE_SMALL.weighted(0.1F), FIR_TREE.weighted(0.025F), BIG_RAINBOW_BIRCH_TREE.weighted(0.2F)), RAINBOW_BIRCH_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(15, 0.5F, 1)))); public static final ConfiguredFeature RAINFOREST_TREES = register("rainforest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.JUNGLE_TREE.weighted(0.1F)), MAHOGANY_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1)))); @@ -153,18 +147,18 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature SEASONAL_FOREST_TREES = register("seasonal_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.OAK.weighted(0.05F), BIG_OAK_TREE.weighted(0.025F), MAPLE_TREE.weighted(0.2F), YELLOW_AUTUMN_TREE.weighted(0.3F), BIG_MAPLE_TREE.weighted(0.1F), BIG_YELLOW_AUTUMN_TREE.weighted(0.1F), BIG_ORANGE_AUTUMN_TREE.weighted(0.1F)), ORANGE_AUTUMN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.3F, 1)))); public static final ConfiguredFeature SEASONAL_ORCHARD_TREES = register("seasonal_orchard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_YELLOW_AUTUMN_TREE.weighted(0.05F)), YELLOW_AUTUMN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.5F, 1)))); public static final ConfiguredFeature SEASONAL_PUMPKIN_PATCH_TREES = register("seasonal_pumpkin_patch_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.2F), ORANGE_AUTUMN_TREE.weighted(0.1F), BIG_ORANGE_AUTUMN_TREE.weighted(0.05F)), TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.5F, 1)))); + public static final ConfiguredFeature SHROOMY_WETLAND_TREES = register("shroomy_wetland_trees", DARK_OAK_TWIGLET_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.2F, 1)))); public static final ConfiguredFeature SHRUBLAND_TREES = register("shrubland_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.05F, 1)))); public static final ConfiguredFeature SHRUBLAND_HILLS_TREES = register("shrubland_hills_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.05F, 1)))); - public static final ConfiguredFeature SILKGLADE_TREES = register("silkglade_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.SWAMP_TREE.weighted(0.05F), BIRCH_POPLAR.weighted(0.15F), COBWEB_BUSH.weighted(0.2F), SMALL_DEAD_TREE.weighted(0.5F), SILK_TREE.weighted(0.2F), FULL_COBWEB_BUSH.weighted(0.05F), FULL_SILK_TREE.weighted(0.05F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.4F, 1)))); - public static final ConfiguredFeature SILKGLADE_NEST_TREES = register("silkglade_nest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SMALL_DEAD_TREE.weighted(0.1F), SILK_TREE.weighted(0.1F), FULL_COBWEB_BUSH.weighted(0.4F), FULL_SILK_TREE.weighted(0.3F)), COBWEB_BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(25, 0.5F, 1)))); public static final ConfiguredFeature SNOWY_CONIFEROUS_FOREST_TREES = register("snowy_coniferous_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.4F), MAPLE_TREE.weighted(0.1F)), FIR_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.1F, 1)))); public static final ConfiguredFeature SNOWY_MAPLE_FOREST_TREES = register("snowy_maple_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.025F), FIR_TREE_SMALL.weighted(0.1F), BIG_MAPLE_TREE.weighted(0.3F)), MAPLE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.1F, 1)))); + public static final ConfiguredFeature TALL_DEAD_FOREST_TREES = register("tall_dead_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DYING_TREE.weighted(0.2F), DEAD_TWIGLET_TREE.weighted(0.3F), TALL_SPRUCE_TREE.weighted(0.1F), SMALL_DEAD_TREE.weighted(0.1F), Features.OAK.weighted(0.05F)), DEAD_TWIGLET_TREE_TALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.6F, 1)))); public static final ConfiguredFeature TROPICS_TREES = register("tropics_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(JUNGLE_TWIGLET_TREE.weighted(0.3F), FLOWERING_BUSH.weighted(0.1F)), PALM_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(11, 0.2F, 1)))); public static final ConfiguredFeature TUNDRA_TREES = register("tundra_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TWIGLET_TREE_SMALL.weighted(0.1F)), MAPLE_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1)))); public static final ConfiguredFeature TUNDRA_BOG_TREES = register("tundra_bog_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPRUCE_TWIGLET_TREE.weighted(0.4F), MAPLE_TWIGLET_TREE.weighted(0.6F)), TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(16, 0.4F, 1)))); public static final ConfiguredFeature UNDERGROWTH_TREES = register("undergrowth_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_HELLBARK_TREE.weighted(0.1F)), HELLBARK_TREE)).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(35))); public static final ConfiguredFeature VOLCANIC_PLAINS_TREES = register("volcanic_plains_trees", TWIGLET_TREE_VOLCANO.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.1F, 1)))); - public static final ConfiguredFeature WASTELAND_TREES = register("wasteland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE_WASTELAND.weighted(0.2F)), DYING_TREE_WASTELAND)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.8F, 0.2F, 1)))); + public static final ConfiguredFeature WASTELAND_TREES = register("wasteland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE_WASTELAND.weighted(0.2F)), DYING_TREE_WASTELAND)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.75F, 0.1F, 1)))); public static final ConfiguredFeature WETLAND_TREES = register("wetland_trees", WILLOW_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.1F, 1)))); public static final ConfiguredFeature WETLAND_FOREST_TREES = register("wetland_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(WILLOW_TREE.weighted(0.25F)), TALL_SPRUCE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.1F, 1)))); public static final ConfiguredFeature WOODED_SCRUBLAND_TREES = register("wooded_scrubland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPRUCE_TWIGLET_TREE.weighted(0.3F), TALL_TWIGLET_TREE.weighted(0.1F)), ACACIA_TWIGLET)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.5F, 1)))); @@ -172,6 +166,7 @@ public class BOPConfiguredFeatures // Biome Flower Listings public static final ConfiguredFeature CHERRY_BLOSSOM_GROVE_FLOWERS = register("cherry_blossom_grove_flowers", Feature.FLOWER.configured(BOPFeatures.CHERRY_BLOSSOM_GROVE_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5))); + public static final ConfiguredFeature CLOVER_PATCH_FLOWERS = register("clover_patch_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.AZURE_BLUET.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(16).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(20))); public static final ConfiguredFeature CONIFEROUS_FOREST_FLOWERS = register("coniferous_forest_flowers", Feature.FLOWER.configured(BOPFeatures.CONIFEROUS_FOREST_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4))); public static final ConfiguredFeature LUSH_DESERT_FLOWERS = register("lush_desert_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.wildflower.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6))); public static final ConfiguredFeature FLOWER_MEADOW_FLOWERS = register("flower_meadow_flowers", Feature.FLOWER.configured(BOPFeatures.FLOWER_MEADOW_FLOWER_CONFIG).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(4)); @@ -192,7 +187,6 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature SHRUBLAND_FLOWERS = register("shrubland_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.ALLIUM.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); public static final ConfiguredFeature SNOWY_FLOWERS = register("snowy_flowers", Feature.FLOWER.configured(BOPFeatures.SNOWY_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); public static final ConfiguredFeature TROPIC_FLOWERS = register("tropic_flowers", Feature.FLOWER.configured(BOPFeatures.TROPICS_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(15))); - public static final ConfiguredFeature TROPICAL_PLAINS_FLOWERS = register("tropical_plains_flowers", Feature.FLOWER.configured(BOPFeatures.TROPICAL_PLAINS_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(12))); public static final ConfiguredFeature UNDERGROWTH_FLOWERS = register("undergrowth_flowers", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.burning_blossom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(8))); public static final ConfiguredFeature WASTELAND_FLOWERS = register("wasteland_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.wilted_lily.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); public static final ConfiguredFeature WETLAND_FLOWERS = register("wetland_flowers", Feature.FLOWER.configured(BOPFeatures.WETLAND_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); @@ -201,6 +195,7 @@ public class BOPConfiguredFeatures ///////////////////////////////////////////////////////////////////// // Foliage + public static final ConfiguredFeature STANDARD_GRASS_1 = register("standard_grass_1", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); public static final ConfiguredFeature STANDARD_GRASS_3 = register("standard_grass_3", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); public static final ConfiguredFeature STANDARD_GRASS_6 = register("standard_grass_6", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); public static final ConfiguredFeature STANDARD_GRASS_12 = register("standard_grass_12", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(12))); @@ -212,6 +207,7 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature FERN_24 = register("fern_24", BOPFeatures.FERN.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(24))); + public static final ConfiguredFeature WASTELAND_GRASS_1 = register("wasteland_grass_1", BOPFeatures.WASTELAND_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); public static final ConfiguredFeature WASTELAND_GRASS_2 = register("wasteland_grass_2", BOPFeatures.WASTELAND_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(2))); public static final ConfiguredFeature BUSH_5 = register("bush_5", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); @@ -228,6 +224,10 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature SPROUTS_200 = register("sprouts_200", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(200))); public static final ConfiguredFeature SPROUTS_UNDERGROWTH = register("sprouts_undergrowth", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(75))); + public static final ConfiguredFeature CLOVER_3 = register("clover_3", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature CLOVER_6 = register("clover_6", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); + public static final ConfiguredFeature CLOVER_250 = register("clover_250", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(FeatureUtil.denseCount(250))); + public static final ConfiguredFeature DUNE_GRASS_128 = register("dune_grass_128", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dune_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(128))); public static final ConfiguredFeature DESERT_GRASS_10 = register("desert_grass_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.desert_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); @@ -259,7 +259,6 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature TOADSTOOL_EXTRA = register("toadstool_extra", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.toadstool.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); public static final ConfiguredFeature GLOWSHROOM_UNCOMMON = register("glowshroom_uncommon", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.glowshroom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(7))); public static final ConfiguredFeature GLOWSHROOM_NORMAL = register("glowshroom_normal", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.glowshroom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(20))); - public static final ConfiguredFeature GLOWSHROOM_EXTRA = register("glowshroom_extra", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.glowshroom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50))); public static final ConfiguredFeature BARLEY = register("barley", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleProjects(BOPBlocks.barley.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(15)); // Water Plants @@ -313,8 +312,8 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature FLESH_TENDON = register("flesh_tendon", BOPFeatures.FLESH_TENDON.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(65))); public static final ConfiguredFeature GRAVEL_DISK_EXTRA = register("gravel_disk_extra", Feature.DISK.configured(new SphereReplaceConfig(Blocks.GRAVEL.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(6)); public static final ConfiguredFeature HUGE_BROWN_MUSHROOM_EXTRA = register("huge_brown_mushroom_extra", Features.HUGE_BROWN_MUSHROOM.decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(21))); + public static final ConfiguredFeature HUGE_CLOVER = register("huge_clover", BOPFeatures.HUGE_CLOVER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); public static final ConfiguredFeature HUGE_GLOWSHROOM = register("huge_glowshroom", BOPFeatures.HUGE_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); - public static final ConfiguredFeature HUGE_GLOWSHROOM_EXTRA = register("huge_glowshroom_extra", BOPFeatures.HUGE_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(18))); public static final ConfiguredFeature HUGE_RED_MUSHROOM_EXTRA = register("huge_red_mushroom_extra", Features.HUGE_RED_MUSHROOM.decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); public static final ConfiguredFeature HUGE_TOADSTOOL = register("huge_toadstool", BOPFeatures.HUGE_TOADSTOOL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); public static final ConfiguredFeature LARGE_CRYSTAL = register("large_crystal", BOPFeatures.LARGE_CRYSTAL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(200))); @@ -337,7 +336,6 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature SMALL_CRYSTAL = register("small_crystal", BOPFeatures.SMALL_CRYSTAL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(40))); public static final ConfiguredFeature SMALL_GLOWSHROOM_UNCOMMON = register("small_glowshroom_uncommon", BOPFeatures.SMALL_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); public static final ConfiguredFeature SMALL_GLOWSHROOM = register("small_glowshroom", BOPFeatures.SMALL_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); - public static final ConfiguredFeature SMALL_GLOWSHROOM_EXTRA = register("small_glowshroom_extra", BOPFeatures.SMALL_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(12))); public static final ConfiguredFeature SMALL_RED_MUSHROOM = register("small_red_mushroom", BOPFeatures.SMALL_RED_MUSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); public static final ConfiguredFeature SMALL_TOADSTOOL = register("small_toadstool", BOPFeatures.SMALL_TOADSTOOL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); public static final ConfiguredFeature VOLCANO_GRASS_SPLATTER = register("volcano_grass_splatter", BOPFeatures.GRASS_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java index 73793eb73..690713ae4 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java @@ -36,8 +36,6 @@ public class BOPFeatures public static final Feature WHITE_CHERRY_TREE = register("white_cherry_tree", new BasicTreeFeature.Builder().log(BOPBlocks.cherry_log.defaultBlockState()).leaves(BOPBlocks.white_cherry_leaves.defaultBlockState()).create()); public static final Feature JACARANDA_TREE = register("jacaranda_tree", new BasicTreeFeature.Builder().log(BOPBlocks.jacaranda_log.defaultBlockState()).leaves(BOPBlocks.jacaranda_leaves.defaultBlockState()).create()); public static final Feature SMALL_DEAD_TREE = register("small_dead_tree", new BasicTreeFeature.Builder().log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).create()); - public static final Feature SILK_TREE = register("silk_tree", new BasicTreeFeature.Builder().log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).altLeaves(Blocks.COBWEB.defaultBlockState()).create()); - public static final Feature FULL_SILK_TREE = register("full_silk_tree", new BasicTreeFeature.Builder().log(BOPBlocks.dead_log.defaultBlockState()).leaves(Blocks.COBWEB.defaultBlockState()).create()); public static final Feature MAGIC_TREE = register("magic_tree", new PoplarTreeFeature.Builder().log(BOPBlocks.magic_log.defaultBlockState()).leaves(BOPBlocks.magic_leaves.defaultBlockState()).minHeight(8).maxHeight(12).create()); //Big Trees @@ -53,7 +51,7 @@ public class BOPFeatures public static final Feature BIG_JACARANDA_TREE = register("big_jacaranda_tree", new BigTreeFeature.Builder().log(BOPBlocks.jacaranda_log.defaultBlockState()).leaves(BOPBlocks.jacaranda_leaves.defaultBlockState()).create()); public static final Feature BIG_MAGIC_TREE = register("big_magic_tree", new PoplarTreeFeature.Builder().log(BOPBlocks.magic_log.defaultBlockState()).leaves(BOPBlocks.magic_leaves.defaultBlockState()).minHeight(16).maxHeight(20).create()); - public static final Feature GIANT_TREE = register("giant_tree", new BigTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)).minHeight(12).maxHeight(18).trunkWidth(4).create()); + public static final Feature GIANT_TREE = register("giant_tree", new BigTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)).minHeight(15).maxHeight(20).trunkWidth(4).create()); //Conifer Trees public static final Feature TALL_SPRUCE_TREE = register("tall_spruce_tree", new TaigaTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).maxHeight(13).create()); @@ -66,7 +64,6 @@ public class BOPFeatures //Poplar Trees public static final Feature SPRUCE_POPLAR = register("spruce_poplar", new PoplarTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).create()); - public static final Feature BIRCH_POPLAR = register("birch_poplar", new PoplarTreeFeature.Builder().log(Blocks.BIRCH_LOG.defaultBlockState()).leaves(Blocks.BIRCH_LEAVES.defaultBlockState()).create()); public static final Feature DARK_OAK_POPLAR = register("dark_oak_poplar", new PoplarTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState()).create()); //Swamp Trees @@ -86,8 +83,6 @@ public class BOPFeatures public static final Feature SPRUCE_BUSH = register("spruce_bush", new BushTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).create()); public static final Feature ACACIA_BUSH = register("acacia_bush", new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.orange_sand).log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).create()); public static final Feature FLOWERING_BUSH = register("flowering_bush", new BushTreeFeature.Builder().altLeaves(BOPBlocks.flowering_oak_leaves.defaultBlockState()).create()); - public static final Feature COBWEB_BUSH = register("cobweb_bush", new BushTreeFeature.Builder().altLeaves(Blocks.COBWEB.defaultBlockState()).create()); - public static final Feature FULL_COBWEB_BUSH = register("full_cobweb_bush", new BushTreeFeature.Builder().leaves(Blocks.COBWEB.defaultBlockState()).create()); public static final Feature HELLBARK_TREE = register("hellbark_tree", new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.hellbark_log.defaultBlockState()).leaves(BOPBlocks.hellbark_leaves.defaultBlockState()).create()); public static final Feature TWIGLET_TREE = register("twiglet_tree", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(2).create()); @@ -100,8 +95,8 @@ public class BOPFeatures public static final Feature ACACIA_TWIGLET = register("acacia_twiglet", new TwigletTreeFeature.Builder().log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); public static final Feature MAPLE_TWIGLET_TREE = register("maple_twiglet_tree", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(2).leaves(BOPBlocks.maple_leaves.defaultBlockState()).create()); public static final Feature DEAD_TWIGLET_TREE_SMALL = register("dead_twiglet_tree_small", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(1).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).create()); - public static final Feature DEAD_TWIGLET_TREE = register("dead_twiglet_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.05F, 0.25F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(4).maxHeight(7).create()); - public static final Feature DEAD_TWIGLET_TREE_TALL = register("dead_twiglet_tree_tall", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.15F, 0.6F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(8).maxHeight(12).create()); + public static final Feature DEAD_TWIGLET_TREE = register("dead_twiglet_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.05F, 0.25F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create()); + public static final Feature DEAD_TWIGLET_TREE_TALL = register("dead_twiglet_tree_tall", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.15F, 0.6F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(12).maxHeight(18).create()); public static final Feature TWIGLET_TREE_VOLCANO = register("twiglet_tree_volcano", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.black_sand).log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); public static final Feature BIG_HELLBARK_TREE = register("big_hellbark_tree", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.hellbark_log.defaultBlockState()).leaves(BOPBlocks.hellbark_leaves.defaultBlockState()).minHeight(3).maxHeight(7).create()); @@ -112,8 +107,9 @@ public class BOPFeatures public static final Feature MAHOGANY_TREE = register("mahogany_tree", new MahoganyTreeFeature.Builder().create()); public static final Feature PALM_TREE = register("palm_tree", new PalmTreeFeature.Builder().create()); public static final Feature DEAD_TREE = register("dead_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create()); + public static final Feature TALL_DEAD_TREE = register("tall_dead_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(8).maxHeight(12).create()); public static final Feature DEAD_TREE_WASTELAND = register("dead_tree_wasteland", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.dried_salt).trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create()); - public static final Feature BURNT_TREE = register("burnt_tree", new TwigletTreeFeature.Builder().leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.stripped_hellbark_log.defaultBlockState()).minHeight(4).maxHeight(8).create()); + public static final Feature BURNT_TREE = register("burnt_tree", new TwigletTreeFeature.Builder().leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.stripped_hellbark_log.defaultBlockState()).minHeight(3).maxHeight(5).create()); ///////////////////////////////////////////////////////////////////////////////// @@ -128,6 +124,7 @@ public class BOPFeatures public static final Feature FERN_GRASS = register("fern_grass", new FernGrassFeature(NoFeatureConfig.CODEC.stable())); public static final Feature FLESH_TENDON = register("flesh_tendon", new FleshTendonFeature(NoFeatureConfig.CODEC.stable())); public static final Feature GRASS_SPLATTER = register("grass_splatter", new GrassSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature HUGE_CLOVER = register("huge_clover", new HugeCloverFeature(NoFeatureConfig.CODEC.stable())); public static final Feature HUGE_GLOWSHROOM = register("huge_glowshroom", new HugeGlowshroomFeature(NoFeatureConfig.CODEC.stable())); public static final Feature HUGE_TOADSTOOL = register("huge_toadstool", new HugeToadstoolFeature(NoFeatureConfig.CODEC.stable())); public static final Feature LARGE_CRYSTAL = register("large_crystal", new LargeCrystalFeature(NoFeatureConfig.CODEC.stable())); @@ -162,7 +159,6 @@ public class BOPFeatures public static final BlockClusterFeatureConfig RAINBOW_HILLS_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.orange_cosmos.defaultBlockState(), 1).add(BOPBlocks.pink_daffodil.defaultBlockState(), 1).add(Blocks.LILY_OF_THE_VALLEY.defaultBlockState(), 1).add(Blocks.AZURE_BLUET.defaultBlockState(), 1).add(Blocks.ALLIUM.defaultBlockState(), 1).add(Blocks.CORNFLOWER.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1).add(Blocks.BLUE_ORCHID.defaultBlockState(), 1).add(Blocks.PINK_TULIP.defaultBlockState(), 1).add(Blocks.RED_TULIP.defaultBlockState(), 1).add(Blocks.WHITE_TULIP.defaultBlockState(), 1).add(Blocks.ORANGE_TULIP.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); public static final BlockClusterFeatureConfig RAINFOREST_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.orange_cosmos.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); public static final BlockClusterFeatureConfig SNOWY_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.violet.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); - public static final BlockClusterFeatureConfig TROPICAL_PLAINS_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.orange_cosmos.defaultBlockState(), 1).add(Blocks.OXEYE_DAISY.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); public static final BlockClusterFeatureConfig TROPICS_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.pink_hibiscus.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); public static final BlockClusterFeatureConfig WETLAND_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.BLUE_ORCHID.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/HugeCloverFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/HugeCloverFeature.java new file mode 100644 index 000000000..f6ef0996b --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/HugeCloverFeature.java @@ -0,0 +1,81 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.ibm.icu.impl.CalendarAstronomer; +import com.mojang.serialization.Codec; +import net.minecraft.block.*; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class HugeCloverFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public HugeCloverFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) + { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + this.setBlock(world, pos, BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.NORTH)); + this.setBlock(world, pos.south(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.WEST)); + this.setBlock(world, pos.east(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.EAST)); + this.setBlock(world, pos.south().east(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.SOUTH)); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int x = 0; x <= 1; x++) + { + for (int z = 0; z <= 1; z++) + { + BlockPos pos1 = pos.offset(x, 0, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1) || !this.placeOn.matches(world, pos1.below())) + { + return false; + } + } + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/CypressTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/CypressTreeFeature.java index 3c0d6b12a..747980a05 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/tree/CypressTreeFeature.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/CypressTreeFeature.java @@ -10,10 +10,7 @@ package biomesoplenty.common.world.gen.feature.tree; import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.common.util.biome.GeneratorUtil; import biomesoplenty.common.util.block.IBlockPosQuery; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.BushBlock; -import net.minecraft.block.SaplingBlock; +import net.minecraft.block.*; import net.minecraft.block.material.Material; import net.minecraft.tags.BlockTags; import net.minecraft.util.Direction; @@ -38,7 +35,7 @@ public class CypressTreeFeature extends TreeFeatureBase this.minHeight = 6; this.maxHeight = 15; this.placeOn = (world, pos) -> world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING); - this.replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getMaterial() == Material.WATER || world.getBlockState(pos).getBlock().is(BlockTags.SAPLINGS) || world.getBlockState(pos).getBlock() == Blocks.VINE || world.getBlockState(pos).getBlock() == BOPBlocks.willow_vine || world.getBlockState(pos).getBlock() instanceof BushBlock; + this.replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getMaterial() == Material.WATER || world.getBlockState(pos).getBlock().is(BlockTags.SAPLINGS) || world.getBlockState(pos).getBlock() == Blocks.VINE || world.getBlockState(pos).getBlock() == BOPBlocks.willow_vine || world.getBlockState(pos).getBlock() == BOPBlocks.spanish_moss_plant || world.getBlockState(pos).getBlock() == BOPBlocks.spanish_moss || world.getBlockState(pos).getBlock() instanceof BushBlock; this.log = BOPBlocks.willow_log.defaultBlockState(); this.leaves = BOPBlocks.willow_leaves.defaultBlockState(); this.vine = BOPBlocks.willow_vine.defaultBlockState(); @@ -65,17 +62,11 @@ public class CypressTreeFeature extends TreeFeatureBase { for (int y = 0; y <= height; y++) { - int trunkWidth = (this.trunkWidth * (height - y) / height) + 1; - int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); - int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + int radius = this.trunkWidth - 1; - // require 3x3 for the leaves, 1x1 for the trunk - int start = (y <= baseHeight ? trunkStart : trunkStart - 1); - int end = (y <= baseHeight ? trunkEnd : trunkEnd + 1); - - for (int x = start; x <= end; x++) + for (int x = -radius; x <= radius; x++) { - for (int z = start; z <= end; z++) + for (int z = -radius; z <= radius; z++) { BlockPos pos1 = pos.offset(x, y, z); // note, there may be a sapling on the first layer - make sure this.replace matches it! @@ -96,25 +87,29 @@ public class CypressTreeFeature extends TreeFeatureBase return true; } - // generates a layer of leafs - public void generateLeafLayer(IWorld world, Random rand, BlockPos pos, int leavesRadius, int trunkStart, int trunkEnd, Set changedLeaves, MutableBoundingBox boundingBox) + // generates a layer of leaves + public void generateLeafLayer(IWorld world, Random rand, BlockPos pos, int leavesRadius, Set changedLeaves, MutableBoundingBox boundingBox) { - int start = trunkStart - leavesRadius; - int end = trunkEnd + leavesRadius; + int start = -leavesRadius; + int end = leavesRadius; for (int x = start; x <= end; x++) { for (int z = start; z <= end; z++) { // skip corners - if ((leavesRadius > 0 ) && (x == start || x == end) && (z == start || z == end)) {continue;} - int distFromTrunk = (x < 0 ? trunkStart - x : x - trunkEnd) + (z < 0 ? trunkStart - z : z - trunkEnd); - - // set leaves as long as it's not too far from the trunk to survive - if (distFromTrunk <= 2) + if ((leavesRadius > 0) && (x == start || x == end) && (z == start || z == end)) { - this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + continue; } + + // Make ends more scraggly + if ((leavesRadius > 0) && ((x == start || x == end) || (z == start || z == end)) && rand.nextDouble() < 0.2) + { + continue; + } + + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); } } } @@ -155,11 +150,11 @@ public class CypressTreeFeature extends TreeFeatureBase { for (int z = 0; z <= this.trunkWidth - 1; z++) { - if (!this.placeOn.matches(world, startPos.offset(x, 0, z))) - { - // Abandon if we can't place the tree on this block - return false; - } + if (!this.placeOn.matches(world, startPos.offset(x, 0, z))) + { + // Abandon if we can't place the tree on this block + return false; + } } } @@ -167,8 +162,12 @@ public class CypressTreeFeature extends TreeFeatureBase int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); int baseHeight = GeneratorUtil.nextIntBetween(random, (int)(height * 0.6F), (int)(height * 0.4F)); int leavesHeight = height - baseHeight; + int baseLeavesHeight = leavesHeight; if (leavesHeight < 3) {return false;} + leavesHeight = MathHelper.clamp(leavesHeight, 3, 5); + leavesHeight = MathHelper.clamp(leavesHeight + random.nextInt(3), 0, baseLeavesHeight); + if (!this.checkSpace(world, startPos.above(), baseHeight, height)) { // Abandon if there isn't enough room @@ -185,54 +184,99 @@ public class CypressTreeFeature extends TreeFeatureBase // Add layers of leaves for (int i = 0; i < leavesHeight; i++) { - - int trunkWidth = (this.trunkWidth * i / height) + 1; - int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); - int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); - - - int radius = MathHelper.clamp(i, 0, 2); - if (i == leavesHeight - 1) + int radius = 3; + if (i == 0) { radius = 1; } + else if (i <= 2) + { + radius = 2; + } + + this.generateLeafLayer(world, random, pos, radius, changedLeaves, boundingBox); - if (radius == 0) - { - this.placeLeaves(world, pos, changedLeaves, boundingBox); - } - else if (radius < 2) - { - this.generateLeafLayer(world, random, pos, radius, trunkStart, trunkEnd, changedLeaves, boundingBox); - } - else - { - this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkStart), Direction.NORTH, radius, changedLogs, changedLeaves, boundingBox); - this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkStart), Direction.EAST, radius, changedLogs, changedLeaves, boundingBox); - this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkEnd), Direction.SOUTH, radius, changedLogs, changedLeaves, boundingBox); - this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkEnd), Direction.WEST, radius, changedLogs, changedLeaves, boundingBox); - } pos = pos.below(); } + this.placeSpanishMoss(world, random, pos); + + // We make the radius to check 1 less than the width + int trunkRadius = this.trunkWidth - 1; + // Generate the trunk - for (int y = 0; y < height - 1; y++) + for (int x = -trunkRadius; x <= trunkRadius; x++) { - int trunkWidth = (this.trunkWidth * ((baseHeight + 5) - y) / (baseHeight + 5)) + 1; - int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); - int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); - - if (trunkWidth < 1) + for (int z = -trunkRadius; z <= trunkRadius; z++) { - trunkStart = 0; - trunkEnd = 0; - } + int dist = Math.abs(x) + Math.abs(z); - for (int x = trunkStart; x <= trunkEnd; x++) - { - for (int z = trunkStart; z <= trunkEnd; z++) + if (dist > trunkRadius) { - this.placeLog(world, startPos.offset(x, y, z), changedLogs, boundingBox); + continue; + } + + int heightHere = height - 1; + if (dist == 1) + { + heightHere = (int) (height * (0.2 + random.nextDouble() * 0.15)); + } + + heightHere += random.nextInt(2); + + for (int y = 0; y < heightHere; y++) + { + BlockPos local = startPos.offset(x, y, z); + boolean air = world.getBlockState(local).getFluidState().isEmpty(); + + this.placeLog(world, local, changedLogs, boundingBox); + + if (x == 0 && z == 0 && air && y < heightHere - leavesHeight + 1) + { + if (y >= baseHeight && random.nextInt(3) == 0) + { + // Big branch + double theta = Math.PI * random.nextDouble() * 2; + + int length = 2 + random.nextInt(3); + + BlockPos branchPos = null; + for (int i = 0; i < length; i++) + { + branchPos = local.offset(Math.cos(theta) * i, i / 2, Math.sin(theta) * i); + + this.placeLog(world, branchPos, changedLogs, boundingBox); + } + + generateLeafLayer(world, random, branchPos, 2, changedLeaves, boundingBox); + generateLeafLayer(world, random, branchPos.above(), 1, changedLeaves, boundingBox); + if (random.nextBoolean()) + { + generateLeafLayer(world, random, branchPos.above(2), 0, changedLeaves, boundingBox); + } + + this.placeSpanishMoss(world, random, branchPos); + + } + else if (y >= baseHeight && random.nextInt(3) == 0) + { + // Small branch + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(random); + BlockPos offset = local.relative(direction); + + this.placeLog(world, offset, changedLogs, boundingBox); + + for (Direction dir : Direction.values()) + { + if (random.nextDouble() > 0.2) + { + this.placeLeaves(world, offset.relative(dir), changedLeaves, boundingBox); + } + } + + this.placeSpanishMoss(world, random, offset); + } + } } } } @@ -251,4 +295,49 @@ public class CypressTreeFeature extends TreeFeatureBase } return false; } + + private void placeSpanishMoss(IWorld p_236429_1_, Random p_236429_2_, BlockPos p_236429_3_) + { + BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); + + for(int i = 0; i < 50; ++i) + { + blockpos$mutable.setWithOffset(p_236429_3_, p_236429_2_.nextInt(5) - p_236429_2_.nextInt(5), p_236429_2_.nextInt(3) - p_236429_2_.nextInt(3), p_236429_2_.nextInt(5) - p_236429_2_.nextInt(5)); + if (p_236429_1_.isEmptyBlock(blockpos$mutable)) + { + BlockState blockstate = p_236429_1_.getBlockState(blockpos$mutable.above()); + if (blockstate.getBlock() == BOPBlocks.willow_leaves) + { + int j = MathHelper.nextInt(p_236429_2_, 1, 3); + + if (p_236429_2_.nextInt(5) == 0) + { + j = 1; + } + + placeSpanishMossColumn(p_236429_1_, p_236429_2_, blockpos$mutable, j, 17, 25); + } + } + } + } + + public static void placeSpanishMossColumn(IWorld p_236427_0_, Random p_236427_1_, BlockPos.Mutable p_236427_2_, int p_236427_3_, int p_236427_4_, int p_236427_5_) + { + for(int i = 0; i <= p_236427_3_; ++i) + { + if (p_236427_0_.isEmptyBlock(p_236427_2_)) + { + if (i == p_236427_3_ || !p_236427_0_.isEmptyBlock(p_236427_2_.below())) + { + p_236427_0_.setBlock(p_236427_2_, BOPBlocks.spanish_moss.defaultBlockState().setValue(AbstractTopPlantBlock.AGE, Integer.valueOf(MathHelper.nextInt(p_236427_1_, p_236427_4_, p_236427_5_))), 2); + break; + } + + p_236427_0_.setBlock(p_236427_2_, BOPBlocks.spanish_moss_plant.defaultBlockState(), 2); + } + + p_236427_2_.move(Direction.DOWN); + } + + } } diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/RedwoodTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/RedwoodTreeFeature.java index 0e6c102cf..4469f50db 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/tree/RedwoodTreeFeature.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/RedwoodTreeFeature.java @@ -144,11 +144,11 @@ public class RedwoodTreeFeature extends TreeFeatureBase { for (int z = 0; z <= this.trunkWidth - 1; z++) { - if (!this.placeOn.matches(world, startPos.offset(x, 0, z))) - { - // Abandon if we can't place the tree on this block - return false; - } + if (!this.placeOn.matches(world, startPos.offset(x, 0, z))) + { + // Abandon if we can't place the tree on this block + return false; + } } } @@ -190,41 +190,86 @@ public class RedwoodTreeFeature extends TreeFeatureBase } else { - this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkStart), Direction.NORTH, radius, changedLogs, changedLeaves, boundingBox); - this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkStart), Direction.EAST, radius, changedLogs, changedLeaves, boundingBox); - this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkEnd), Direction.SOUTH, radius, changedLogs, changedLeaves, boundingBox); - this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkEnd), Direction.WEST, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkStart), Direction.NORTH, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkStart), Direction.EAST, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkEnd), Direction.SOUTH, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkEnd), Direction.WEST, radius, changedLogs, changedLeaves, boundingBox); } pos = pos.below(); } + // Create the trunk widths scales + double[] scalingFactors = new double[]{ + (0.35 + random.nextDouble() * 0.15), + (0.07 + random.nextDouble() * 0.1), + (random.nextDouble() * 0.06) + }; + + if (this.trunkWidth == 3) { + scalingFactors = new double[]{ + (0.6 + random.nextDouble() * 0.2), + (0.1 + random.nextDouble() * 0.2), + (0.03 + random.nextDouble() * 0.09) + }; + } + // Generate the trunk - for (int y = 0; y < height - 1; y++) - { - int trunkWidth = (this.trunkWidth * (height - y) / height) + 1; - int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); - int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + for (int x = -this.trunkWidth; x <= this.trunkWidth; x++) { + for (int z = -this.trunkWidth; z <= this.trunkWidth; z++) { + int dist = Math.abs(x) + Math.abs(z); - if (trunkWidth < 1) - { - trunkStart = 0; - trunkEnd = 0; - } + int heightHere = height - 2; - for (int x = trunkStart; x <= trunkEnd; x++) - { - for (int z = trunkStart; z <= trunkEnd; z++) - { - this.placeLog(world, startPos.offset(x, y, z), changedLogs, boundingBox); + // If we're not the center of the trunk on a single trunk width, give up + if (this.trunkWidth == 1 && dist > 0) { + continue; } - } - if (trunkWidth > 1 && y > 2 && y < (baseHeight - 2)) - { - if (random.nextInt(5) == 0) + // Scale bigger widths + if (dist == 1) { + heightHere = (int) (height * scalingFactors[0]); + } else if (dist == 2) { + heightHere = (int) (height * scalingFactors[1]); + } else if (dist == 3) { + heightHere = (int) (height * scalingFactors[2]); + } else if (dist > 3) { + continue; + } + + heightHere += random.nextInt(2); + + for (int y = 0; y < heightHere; y++) { - Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(random); - this.generateBush(changedLogs, changedLeaves, world, random, startPos.offset(direction.getStepX()*(trunkWidth-1), y, direction.getStepZ()*(trunkWidth-1)), boundingBox); + BlockPos local = startPos.offset(x, y, z); + this.placeLog(world, local, changedLogs, boundingBox); + + if (dist > 0 && y > 4 && y < (baseHeight - 2) && random.nextInt(10) == 0) { + double theta; + if (x == 0 && z == 0) { + // Prevents bushes originating from the center from generating too low + if (y < 10) { + continue; + } + + theta = Math.PI * random.nextDouble() * 2; + } else { + // Make sure the branches only go in the same direction of the current trunk position from the center + double angleFromCenter = Math.atan2(x, z); + + theta = angleFromCenter + (Math.PI * (random.nextDouble() * 0.5 - 0.25)); + } + + int branchLength = (3 - dist) + 1 + random.nextInt(2); + + BlockPos branchPos = null; + for (int i = 0; i < branchLength; i++) { + branchPos = local.offset(Math.cos(theta) * i, i / 2, Math.sin(theta) * i); + + this.placeLog(world, branchPos, changedLogs, boundingBox); + } + + this.generateBush(changedLogs, changedLeaves, world, random, branchPos, boundingBox); + } } } } @@ -234,17 +279,17 @@ public class RedwoodTreeFeature extends TreeFeatureBase protected boolean generateBush(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos pos, MutableBoundingBox boundingBox) { - //Generate a bush 3 blocks tall, with the bottom block already set to a log - for (int y = 0; y < 2; ++y) + //Generate a bush 3 blocks tall, with the center block set to a log + for (int y = -1; y < 2; ++y) { // log in the center - if (2 - y > 1) + if (y == 0) { this.placeLog(world, pos.offset(0, y, 0), changedLogs, boundingBox); } //Reduces the radius closer to the top of the bush - int leavesRadius = (2 - y > 1 ? 2 : 1); + int leavesRadius = y == 0 ? 2 : 1; for (int x = -leavesRadius; x <= leavesRadius; ++x) { @@ -275,4 +320,4 @@ public class RedwoodTreeFeature extends TreeFeatureBase return true; } -} +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPConfiguredSurfaceBuilders.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPConfiguredSurfaceBuilders.java index 842f9eb80..53f928faa 100644 --- a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPConfiguredSurfaceBuilders.java +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPConfiguredSurfaceBuilders.java @@ -21,6 +21,7 @@ public class BOPConfiguredSurfaceBuilders public static final ConfiguredSurfaceBuilder DEEP_SNOW = register("deep_snow", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, BOPSurfaceBuilders.SNOW_SNOW_GRAVEL_SURFACE)); public static final ConfiguredSurfaceBuilder ALPS_FOOTHILLS = register("alps_foothills", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_STONE)); public static final ConfiguredSurfaceBuilder GRAVEL_FULL = register("gravel_full", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRAVEL)); + public static final ConfiguredSurfaceBuilder COLD_DESERT = register("cold_desert", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.COLD_DESERT, SurfaceBuilder.CONFIG_GRAVEL)); public static final ConfiguredSurfaceBuilder EXPOSED_STONE = register("exposed_stone", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.EXPOSED_STONE, SurfaceBuilder.CONFIG_GRASS)); public static final ConfiguredSurfaceBuilder DRYLAND = register("dryland", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DRYLAND, SurfaceBuilder.CONFIG_GRASS)); public static final ConfiguredSurfaceBuilder MANGROVE = register("mangrove", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.MANGROVE, BOPSurfaceBuilders.MUD_SURFACE)); @@ -35,6 +36,7 @@ public class BOPConfiguredSurfaceBuilders public static final ConfiguredSurfaceBuilder GROVE_LAKES = register("grove_lakes", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, BOPSurfaceBuilders.DIORITE_SURFACE)); public static final ConfiguredSurfaceBuilder DEEP_GRASS = register("deep_grass", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, SurfaceBuilder.CONFIG_GRASS)); public static final ConfiguredSurfaceBuilder RAINFOREST_CLIFFS = register("rainforest_cliffs", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TERRACOTTA, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder STONE_BASIN = register("stone_basin", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, BOPSurfaceBuilders.BASIN_SURFACE)); public static final ConfiguredSurfaceBuilder ORIGIN_VALLEY = register("origin_valley", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.ORIGIN_VALLEY, BOPSurfaceBuilders.ORIGIN_GRASS_SURFACE)); public static final ConfiguredSurfaceBuilder TROPIC_BEACH = register("tropic_beach", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TROPICS, BOPSurfaceBuilders.WHITE_SAND_SURFACE)); public static final ConfiguredSurfaceBuilder TROPICS = register("tropics", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TROPICS, SurfaceBuilder.CONFIG_GRASS)); diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java index 6a07a0e5e..d64cba164 100644 --- a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java @@ -32,6 +32,7 @@ public class BOPSurfaceBuilders public static final SurfaceBuilderConfig BLACK_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.black_sand.defaultBlockState(), BOPBlocks.black_sand.defaultBlockState(), BOPBlocks.black_sand.defaultBlockState()); public static final SurfaceBuilderConfig DRIED_SALT_SURFACE = new SurfaceBuilderConfig(BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState()); public static final SurfaceBuilderConfig ORIGIN_GRASS_SURFACE = new SurfaceBuilderConfig(BOPBlocks.origin_grass_block.defaultBlockState(), Blocks.DIRT.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + public static final SurfaceBuilderConfig BASIN_SURFACE = new SurfaceBuilderConfig(Blocks.AIR.defaultBlockState(), Blocks.STONE.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); public static final SurfaceBuilder DRYLAND = register("dryland", new DrylandSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); public static final SurfaceBuilder HIGHLAND_CRAG = register("highland_crag", new HighlandCragSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); @@ -50,6 +51,7 @@ public class BOPSurfaceBuilders public static final SurfaceBuilder TROPICS = register("tropics", new TropicsSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); public static final SurfaceBuilder LUSH_DESERT = register("lush_desert", new LushDesertSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); public static final SurfaceBuilder BLACK_SAND = register("black_sand", new BlackSandSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder COLD_DESERT = register("cold_desert", new ColdDesertSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); private static > F register(String key, F builder) { diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ColdDesertSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ColdDesertSurfaceBuilder.java new file mode 100644 index 000000000..fc51968ec --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ColdDesertSurfaceBuilder.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class ColdDesertSurfaceBuilder extends SurfaceBuilder +{ + public ColdDesertSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + if (noise > 2.6D) + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.SNOW_SNOW_GRAVEL_SURFACE); + } + else + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRAVEL); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPShoreLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPShoreLayer.java index df83d07e0..8add8bac5 100644 --- a/src/main/java/biomesoplenty/common/world/layer/BOPShoreLayer.java +++ b/src/main/java/biomesoplenty/common/world/layer/BOPShoreLayer.java @@ -61,7 +61,7 @@ public enum BOPShoreLayer implements ICastleTransformer return MUSHROOM_FIELD_SHORE; } } - else if (biome != null && biome.getBiomeCategory() == Biome.Category.JUNGLE && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_floodplain, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_cliffs, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_jungle, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_field, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.overgrown_fungal_jungle, biomeId)) + else if (biome != null && biome.getBiomeCategory() == Biome.Category.JUNGLE && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_floodplain, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_cliffs, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_jungle, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_field, biomeId)) { if (!isJungleCompatible(northBiomeId) || !isJungleCompatible(eastBiomeId) || !isJungleCompatible(southBiomeId) || !isJungleCompatible(westBiomeId)) { diff --git a/src/main/java/biomesoplenty/core/ClientProxy.java b/src/main/java/biomesoplenty/core/ClientProxy.java index e53bcd845..d0ee51fb0 100644 --- a/src/main/java/biomesoplenty/core/ClientProxy.java +++ b/src/main/java/biomesoplenty/core/ClientProxy.java @@ -37,7 +37,7 @@ public class ClientProxy extends CommonProxy @Override public void init() { - addClassicPack(); + //addClassicPack(); BlockColors blockColors = Minecraft.getInstance().getBlockColors(); ItemColors itemColors = Minecraft.getInstance().getItemColors(); @@ -45,7 +45,7 @@ public class ClientProxy extends CommonProxy //Grass Coloring blockColors.register((state, world, pos, tintIndex) -> world != null && pos != null ? BiomeColors.getAverageGrassColor(world, pos) : GrassColors.get(0.5D, 1.0D), - BOPBlocks.sprout, BOPBlocks.watergrass, BOPBlocks.potted_sprout); + BOPBlocks.sprout, BOPBlocks.clover, BOPBlocks.huge_clover_petal, BOPBlocks.watergrass, BOPBlocks.potted_sprout, BOPBlocks.potted_clover); //Foliage Coloring blockColors.register((state, world, pos, tintIndex) -> @@ -62,8 +62,8 @@ public class ClientProxy extends CommonProxy itemColors.register((stack, tintIndex) -> { BlockState BlockState = ((BlockItem)stack.getItem()).getBlock().defaultBlockState(); return blockColors.getColor(BlockState, null, null, tintIndex); }, - BOPBlocks.sprout, BOPBlocks.bush, BOPBlocks.flowering_oak_leaves, BOPBlocks.mahogany_leaves, - BOPBlocks.palm_leaves, BOPBlocks.willow_leaves, BOPBlocks.willow_vine); + BOPBlocks.sprout, BOPBlocks.bush, BOPBlocks.clover, BOPBlocks.huge_clover_petal, BOPBlocks.flowering_oak_leaves, + BOPBlocks.mahogany_leaves, BOPBlocks.palm_leaves, BOPBlocks.willow_leaves, BOPBlocks.willow_vine); } public static void addClassicPack() diff --git a/src/main/java/biomesoplenty/init/ModBiomes.java b/src/main/java/biomesoplenty/init/ModBiomes.java index 068be4b07..a7496dde4 100644 --- a/src/main/java/biomesoplenty/init/ModBiomes.java +++ b/src/main/java/biomesoplenty/init/ModBiomes.java @@ -150,6 +150,7 @@ public class ModBiomes registerBiome(new BayouBiome(), "bayou"); registerBiome(new BurntForestBiome(), "burnt_forest"); registerBiome(new CherryBlossomGroveBiome(), "cherry_blossom_grove"); + registerBiome(new ColdDesertBiome(), "cold_desert"); registerBiome(new ConiferousForestBiome(), "coniferous_forest"); registerBiome(new ConiferousLakesBiome(), "coniferous_lakes"); registerBiome(new DeadForestBiome(), "dead_forest"); @@ -163,6 +164,8 @@ public class ModBiomes registerBiome(new FungalFieldBiome(), "fungal_field"); registerBiome(new FungalJungleBiome(), "fungal_jungle"); registerBiome(new GoldenPrairieBiome(), "golden_prairie"); + registerBiome(new GrasslandBiome(), "grassland"); + registerBiome(new GrasslandCloverPatchBiome(), "grassland_clover_patch"); registerBiome(new GroveBiome(), "grove"); registerBiome(new GroveClearingBiome(), "grove_clearing"); registerBiome(new GroveLakesBiome(), "grove_lakes"); @@ -170,7 +173,6 @@ public class ModBiomes registerBiome(new HighlandCragBiome(), "highland_crag"); registerBiome(new HighlandMoorBiome(), "highland_moor"); registerBiome(new JadeCliffsBiome(), "jade_cliffs"); - registerBiome(new JadeGrasslandBiome(), "jade_grassland"); registerBiome(new LavenderFieldBiome(), "lavender_field"); registerBiome(new LavenderForestBiome(), "lavender_forest"); registerBiome(new LushDesertBiome(), "lush_desert"); @@ -179,13 +181,11 @@ public class ModBiomes registerBiome(new MeadowBiome(), "meadow"); registerBiome(new MeadowForestBiome(), "meadow_forest"); registerBiome(new MuskegBiome(), "muskeg"); - registerBiome(new MushroomyMuskegBiome(), "mushroomy_muskeg"); registerBiome(new MysticGroveBiome(), "mystic_grove"); registerBiome(new MysticPlainsBiome(), "mystic_plains"); registerBiome(new OminousWoodsBiome(), "ominous_woods"); registerBiome(new OminousMireBiome(), "ominous_mire"); registerBiome(new OriginValleyBiome(), "origin_valley"); - registerBiome(new OvergrownFungalJungleBiome(), "overgrown_fungal_jungle"); registerBiome(new PrairieBiome(), "prairie"); registerBiome(new RainbowHillsBiome(), "rainbow_hills"); registerBiome(new RainforestBiome(), "rainforest"); @@ -197,14 +197,13 @@ public class ModBiomes registerBiome(new SeasonalForestBiome(), "seasonal_forest"); registerBiome(new SeasonalOrchardBiome(), "seasonal_orchard"); registerBiome(new SeasonalPumpkinPatchBiome(), "seasonal_pumpkin_patch"); + registerBiome(new ShroomyWetlandBiome(), "shroomy_wetland"); registerBiome(new ShrublandBiome(), "shrubland"); registerBiome(new ShrublandHillsBiome(), "shrubland_hills"); - registerBiome(new SilkgladeBiome(), "silkglade"); - registerBiome(new SilkgladeNestBiome(), "silkglade_nest"); registerBiome(new SnowyConiferousForestBiome(), "snowy_coniferous_forest"); registerBiome(new SnowyMapleForestBiome(), "snowy_maple_forest"); registerBiome(new SnowyFirClearingBiome(), "snowy_fir_clearing"); - registerBiome(new TropicPlainsBiome(), "tropic_plains"); + registerBiome(new TallDeadForestBiome(), "tall_dead_forest"); registerBiome(new TropicsBiome(), "tropics"); registerBiome(new TundraBiome(), "tundra"); registerBiome(new TundraBasinBiome(), "tundra_basin"); @@ -214,7 +213,6 @@ public class ModBiomes registerBiome(new WetlandBiome(), "wetland"); registerBiome(new WetlandForestBiome(), "wetland_forest"); registerBiome(new WoodedScrublandBiome(), "wooded_scrubland"); - registerBiome(new WoodedWastelandBiome(), "wooded_wasteland"); registerBiome(new WoodlandBiome(), "woodland"); //Nether Biomes @@ -235,12 +233,14 @@ public class ModBiomes registerSubBiome(coniferous_forest, fir_clearing, 0.75F, 100); registerSubBiome(coniferous_forest, coniferous_lakes, 1.0F, 100); + registerSubBiome(dead_forest, tall_dead_forest, 0.75F, 100); registerSubBiome(dead_forest, burnt_forest, 0.6F, 100); registerSubBiome(dryland, dry_boneyard, 0.75F, 100); registerSubBiome(fungal_jungle, fungal_field, 0.9F, 100); - registerSubBiome(fungal_jungle, overgrown_fungal_jungle, 0.65F, 100); + + registerSubBiome(grassland, grassland_clover_patch, 1.0F, 100); registerSubBiome(grove, grove_clearing, 1.0F, 100); registerSubBiome(grove, grove_lakes, 1.0F, 100); @@ -248,8 +248,6 @@ public class ModBiomes registerSubBiome(highland, highland_crag, 1.25F, 100); registerSubBiome(highland, highland_moor, 0.75F, 100); - registerSubBiome(jade_cliffs, jade_grassland, 0.85F, 100); - registerSubBiome(lavender_field, lavender_forest, 0.6F, 100); registerSubBiome(lush_desert, lush_savanna, 0.65F, 100); @@ -259,8 +257,6 @@ public class ModBiomes registerSubBiome(meadow, flower_meadow, 1.0F, 100); registerSubBiome(meadow, meadow_forest, 1.0F, 100); - registerSubBiome(muskeg, mushroomy_muskeg, 0.75F, 100); - registerSubBiome(mystic_grove, mystic_plains, 0.75F, 100); registerSubBiome(ominous_woods, ominous_mire, 0.75F, 100); @@ -279,19 +275,14 @@ public class ModBiomes registerSubBiome(shrubland, shrubland_hills, 0.75F, 100); - registerSubBiome(silkglade, silkglade_nest, 0.45F, 100); - registerSubBiome(snowy_coniferous_forest, snowy_fir_clearing, 0.75F, 100); registerSubBiome(snowy_coniferous_forest, snowy_maple_forest, 1.25F, 100); - registerSubBiome(tropics, tropic_plains, 0.75F, 100); - registerSubBiome(tundra, tundra_basin, 1.5F, 100); registerSubBiome(tundra, tundra_bog, 2.0F, 100); - registerSubBiome(wasteland, wooded_wasteland, 0.85F, 100); - - registerSubBiome(wetland, wetland_forest, 1.0F, 100); + registerSubBiome(wetland, wetland_forest, 1.5F, 100); + registerSubBiome(wetland, shroomy_wetland, 1.5F, 100); registerSubBiome(woodland, dense_woodland, 0.9F, 100); @@ -359,6 +350,7 @@ public class ModBiomes registerBiomeToDictionary(bayou_mangrove, Type.OVERWORLD, Type.HOT, Type.WET, Type.SWAMP); registerBiomeToDictionary(burnt_forest, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DRY, Type.DEAD, Type.RARE, Type.FOREST); registerBiomeToDictionary(cherry_blossom_grove, Type.OVERWORLD, Type.WET, Type.LUSH, Type.RARE, Type.FOREST); + registerBiomeToDictionary(cold_desert, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.SNOWY, Type.DRY); registerBiomeToDictionary(coniferous_forest, Type.OVERWORLD, Type.DENSE, Type.CONIFEROUS, Type.FOREST); registerBiomeToDictionary(coniferous_lakes, Type.OVERWORLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST); registerBiomeToDictionary(dead_forest, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DEAD, Type.RARE, Type.FOREST); @@ -373,6 +365,8 @@ public class ModBiomes registerBiomeToDictionary(fungal_jungle, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.MUSHROOM, Type.RARE); registerBiomeToDictionary(golden_prairie, Type.OVERWORLD, Type.DRY, Type.PLAINS); registerBiomeToDictionary(gravel_beach, Type.OVERWORLD, Type.SPARSE, Type.BEACH); + registerBiomeToDictionary(grassland, Type.OVERWORLD, Type.SPARSE, Type.PLAINS, Type.WET); + registerBiomeToDictionary(grassland_clover_patch, Type.OVERWORLD, Type.DENSE, Type.PLAINS, Type.WET); registerBiomeToDictionary(grove, Type.OVERWORLD, Type.FOREST, Type.HILLS); registerBiomeToDictionary(grove_clearing, Type.OVERWORLD, Type.SPARSE, Type.PLAINS); registerBiomeToDictionary(grove_lakes, Type.OVERWORLD, Type.SPARSE); @@ -380,7 +374,6 @@ public class ModBiomes registerBiomeToDictionary(highland_crag, Type.OVERWORLD, Type.SPARSE, Type.MOUNTAIN, Type.WASTELAND); registerBiomeToDictionary(highland_moor, Type.OVERWORLD, Type.SPARSE, Type.WET, Type.MOUNTAIN, Type.SWAMP); registerBiomeToDictionary(jade_cliffs, Type.OVERWORLD, Type.CONIFEROUS, Type.MAGICAL, Type.RARE, Type.FOREST, Type.MOUNTAIN); - registerBiomeToDictionary(jade_grassland, Type.OVERWORLD, Type.SPARSE, Type.CONIFEROUS, Type.MAGICAL, Type.RARE, Type.PLAINS); registerBiomeToDictionary(lavender_field, Type.OVERWORLD, Type.LUSH, Type.PLAINS); registerBiomeToDictionary(lavender_forest, Type.OVERWORLD, Type.DENSE, Type.LUSH, Type.FOREST); registerBiomeToDictionary(lush_desert, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.SAVANNA, Type.LUSH, Type.RARE, Type.SANDY); @@ -389,14 +382,12 @@ public class ModBiomes registerBiomeToDictionary(meadow, Type.OVERWORLD, Type.WET, Type.CONIFEROUS, Type.FOREST); registerBiomeToDictionary(meadow_forest, Type.OVERWORLD, Type.WET, Type.CONIFEROUS, Type.FOREST); registerBiomeToDictionary(muskeg, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.WET, Type.DEAD, Type.RARE, Type.SWAMP, Type.SNOWY); - registerBiomeToDictionary(mushroomy_muskeg, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.WET, Type.DEAD, Type.RARE, Type.MUSHROOM, Type.SWAMP, Type.SNOWY); registerBiomeToDictionary(mystic_grove, Type.OVERWORLD, Type.WET, Type.LUSH, Type.MAGICAL, Type.RARE, Type.FOREST); registerBiomeToDictionary(mystic_plains, Type.OVERWORLD, Type.SPARSE, Type.WET, Type.LUSH, Type.MAGICAL, Type.RARE, Type.PLAINS); registerBiomeToDictionary(ominous_mire, Type.OVERWORLD, Type.COLD, Type.WET, Type.CONIFEROUS, Type.SPOOKY, Type.RARE, Type.FOREST, Type.SWAMP); registerBiomeToDictionary(ominous_woods, Type.OVERWORLD, Type.COLD, Type.WET, Type.CONIFEROUS, Type.SPOOKY, Type.RARE, Type.FOREST); registerBiomeToDictionary(orchard, Type.OVERWORLD, Type.SPARSE, Type.LUSH, Type.FOREST, Type.PLAINS); registerBiomeToDictionary(origin_valley, Type.OVERWORLD, Type.RARE); - registerBiomeToDictionary(overgrown_fungal_jungle, Type.OVERWORLD, Type.HOT, Type.DENSE, Type.WET, Type.JUNGLE, Type.LUSH, Type.MUSHROOM, Type.RARE, Type.FOREST); registerBiomeToDictionary(prairie, Type.OVERWORLD, Type.SPARSE, Type.DRY, Type.PLAINS); registerBiomeToDictionary(rainbow_hills, Type.OVERWORLD, Type.DENSE, Type.WET, Type.LUSH, Type.MAGICAL, Type.FOREST, Type.HILLS); registerBiomeToDictionary(rainforest, Type.OVERWORLD, Type.HOT, Type.DENSE, Type.WET, Type.JUNGLE, Type.LUSH, Type.FOREST); @@ -409,15 +400,14 @@ public class ModBiomes registerBiomeToDictionary(seasonal_forest, Type.OVERWORLD, Type.FOREST); registerBiomeToDictionary(seasonal_orchard, Type.OVERWORLD, Type.FOREST); registerBiomeToDictionary(seasonal_pumpkin_patch, Type.OVERWORLD, Type.SPARSE, Type.FOREST); + registerBiomeToDictionary(shroomy_wetland, Type.OVERWORLD, Type.WET, Type.FOREST, Type.SWAMP, Type.MUSHROOM); registerBiomeToDictionary(shrubland, Type.OVERWORLD, Type.SPARSE, Type.PLAINS); registerBiomeToDictionary(shrubland_hills, Type.OVERWORLD, Type.PLAINS, Type.HILLS); - registerBiomeToDictionary(silkglade, Type.OVERWORLD, Type.DRY, Type.SPOOKY, Type.RARE, Type.FOREST); - registerBiomeToDictionary(silkglade_nest, Type.OVERWORLD, Type.DENSE, Type.DRY, Type.SPOOKY, Type.RARE, Type.FOREST); registerBiomeToDictionary(snowy_coniferous_forest, Type.OVERWORLD, Type.COLD, Type.CONIFEROUS, Type.FOREST, Type.SNOWY); registerBiomeToDictionary(snowy_fir_clearing, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST, Type.SNOWY); registerBiomeToDictionary(snowy_maple_forest, Type.OVERWORLD, Type.COLD, Type.DENSE, Type.CONIFEROUS, Type.FOREST, Type.SNOWY); + registerBiomeToDictionary(tall_dead_forest, Type.OVERWORLD, Type.COLD, Type.DEAD, Type.RARE, Type.FOREST); registerBiomeToDictionary(tropic_beach, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.RARE, Type.BEACH, Type.SANDY); - registerBiomeToDictionary(tropic_plains, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.WET, Type.JUNGLE, Type.LUSH, Type.RARE, Type.PLAINS); registerBiomeToDictionary(tropics, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.RARE); registerBiomeToDictionary(tundra, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DEAD, Type.PLAINS); registerBiomeToDictionary(tundra_basin, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DRY, Type.DEAD, Type.WASTELAND); @@ -428,7 +418,6 @@ public class ModBiomes registerBiomeToDictionary(wetland, Type.OVERWORLD, Type.WET, Type.FOREST, Type.SWAMP); registerBiomeToDictionary(wetland_forest, Type.OVERWORLD, Type.WET, Type.DENSE, Type.FOREST, Type.SWAMP); registerBiomeToDictionary(wooded_scrubland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.SAVANNA); - registerBiomeToDictionary(wooded_wasteland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.SAVANNA, Type.DEAD, Type.RARE, Type.WASTELAND); registerBiomeToDictionary(woodland, Type.OVERWORLD, Type.FOREST); //Nether Biomes @@ -447,6 +436,7 @@ public class ModBiomes registerVillagerType(bayou_mangrove, VillagerType.SWAMP); registerVillagerType(burnt_forest, VillagerType.TAIGA); registerVillagerType(cherry_blossom_grove, VillagerType.PLAINS); + registerVillagerType(cold_desert, VillagerType.SNOW); registerVillagerType(coniferous_forest, VillagerType.TAIGA); registerVillagerType(coniferous_lakes, VillagerType.TAIGA); registerVillagerType(dead_forest, VillagerType.TAIGA); @@ -460,6 +450,8 @@ public class ModBiomes registerVillagerType(fungal_field, VillagerType.JUNGLE); registerVillagerType(fungal_jungle, VillagerType.JUNGLE); registerVillagerType(golden_prairie, VillagerType.PLAINS); + registerVillagerType(grassland, VillagerType.PLAINS); + registerVillagerType(grassland_clover_patch, VillagerType.PLAINS); registerVillagerType(gravel_beach, VillagerType.PLAINS); registerVillagerType(grove, VillagerType.PLAINS); registerVillagerType(grove_clearing, VillagerType.PLAINS); @@ -468,7 +460,6 @@ public class ModBiomes registerVillagerType(highland_crag, VillagerType.PLAINS); registerVillagerType(highland_moor, VillagerType.PLAINS); registerVillagerType(jade_cliffs, VillagerType.PLAINS); - registerVillagerType(jade_grassland, VillagerType.PLAINS); registerVillagerType(lavender_field, VillagerType.PLAINS); registerVillagerType(lavender_forest, VillagerType.PLAINS); registerVillagerType(lush_desert, VillagerType.SAVANNA); @@ -477,14 +468,12 @@ public class ModBiomes registerVillagerType(meadow, VillagerType.TAIGA); registerVillagerType(meadow_forest, VillagerType.TAIGA); registerVillagerType(muskeg, VillagerType.SNOW); - registerVillagerType(mushroomy_muskeg, VillagerType.SNOW); registerVillagerType(mystic_grove, VillagerType.PLAINS); registerVillagerType(mystic_plains, VillagerType.PLAINS); registerVillagerType(ominous_mire, VillagerType.SWAMP); registerVillagerType(ominous_woods, VillagerType.SWAMP); registerVillagerType(orchard, VillagerType.PLAINS); registerVillagerType(origin_valley, VillagerType.PLAINS); - registerVillagerType(overgrown_fungal_jungle, VillagerType.JUNGLE); registerVillagerType(prairie, VillagerType.PLAINS); registerVillagerType(rainbow_hills, VillagerType.PLAINS); registerVillagerType(rainforest, VillagerType.JUNGLE); @@ -497,15 +486,14 @@ public class ModBiomes registerVillagerType(seasonal_forest, VillagerType.PLAINS); registerVillagerType(seasonal_orchard, VillagerType.PLAINS); registerVillagerType(seasonal_pumpkin_patch, VillagerType.PLAINS); + registerVillagerType(shroomy_wetland, VillagerType.SWAMP); registerVillagerType(shrubland, VillagerType.PLAINS); registerVillagerType(shrubland_hills, VillagerType.PLAINS); - registerVillagerType(silkglade, VillagerType.SWAMP); - registerVillagerType(silkglade_nest, VillagerType.SWAMP); registerVillagerType(snowy_coniferous_forest, VillagerType.SNOW); registerVillagerType(snowy_fir_clearing, VillagerType.SNOW); registerVillagerType(snowy_maple_forest, VillagerType.SNOW); + registerVillagerType(tall_dead_forest, VillagerType.TAIGA); registerVillagerType(tropic_beach, VillagerType.JUNGLE); - registerVillagerType(tropic_plains, VillagerType.JUNGLE); registerVillagerType(tropics, VillagerType.JUNGLE); registerVillagerType(tundra, VillagerType.TAIGA); registerVillagerType(tundra_basin, VillagerType.TAIGA); @@ -516,7 +504,6 @@ public class ModBiomes registerVillagerType(wetland, VillagerType.SWAMP); registerVillagerType(wetland_forest, VillagerType.SWAMP); registerVillagerType(wooded_scrubland, VillagerType.SAVANNA); - registerVillagerType(wooded_wasteland, VillagerType.DESERT); registerVillagerType(woodland, VillagerType.PLAINS); } diff --git a/src/main/java/biomesoplenty/init/ModBlocks.java b/src/main/java/biomesoplenty/init/ModBlocks.java index b137f125e..c819d468b 100644 --- a/src/main/java/biomesoplenty/init/ModBlocks.java +++ b/src/main/java/biomesoplenty/init/ModBlocks.java @@ -297,11 +297,15 @@ public class ModBlocks goldenrod = registerBlock(new TallFlowerBlockBOP(AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "goldenrod"); //Vines - willow_vine = registerBlock(new VineBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().randomTicks().strength(0.2F).sound(SoundType.GRASS)), "willow_vine"); + willow_vine = registerBlock(new VineBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).randomTicks().noCollission().strength(0.2F).sound(SoundType.GRASS)), "willow_vine"); + spanish_moss = registerBlock(new SpanishMossBottomBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).randomTicks().noCollission().instabreak().sound(SoundType.GRASS)), "spanish_moss"); + spanish_moss_plant = registerBlockNoGroup(new SpanishMossBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "spanish_moss_plant"); //Plants sprout = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "sprout"); bush = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "bush"); + clover = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "clover"); + huge_clover_petal = registerBlock(new HugeCloverPetalBlock(AbstractBlock.Properties.of(Material.PLANT).strength(0.2F).sound(SoundType.GRASS)), "huge_clover_petal"); dune_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.TERRACOTTA_LIGHT_GREEN).noCollission().instabreak().sound(SoundType.GRASS)), "dune_grass"); desert_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.TERRACOTTA_ORANGE).noCollission().instabreak().sound(SoundType.GRASS)), "desert_grass"); dead_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.WOOD).noCollission().instabreak().sound(SoundType.GRASS)), "dead_grass"); @@ -348,6 +352,7 @@ public class ModBlocks potted_wilted_lily = registerBlockNoGroup(new FlowerPotBlock(wilted_lily, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_wilted_lily"); potted_burning_blossom = registerBlockNoGroup(new FlowerPotBlock(burning_blossom, AbstractBlock.Properties.of(Material.DECORATION).instabreak().lightLevel((state) -> 7)), "potted_burning_blossom"); potted_sprout = registerBlockNoGroup(new FlowerPotBlock(sprout, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_sprout"); + potted_clover = registerBlockNoGroup(new FlowerPotBlock(clover, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_clover"); potted_toadstool = registerBlockNoGroup(new FlowerPotBlock(toadstool, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_toadstool"); potted_glowshroom = registerBlockNoGroup(new FlowerPotBlock(glowshroom, AbstractBlock.Properties.of(Material.DECORATION).instabreak().lightLevel((state) -> 6)), "potted_glowshroom"); @@ -408,8 +413,12 @@ public class ModBlocks RenderTypeLookup.setRenderLayer(blue_hydrangea, cutoutRenderType); RenderTypeLookup.setRenderLayer(goldenrod, cutoutRenderType); RenderTypeLookup.setRenderLayer(willow_vine, cutoutRenderType); + RenderTypeLookup.setRenderLayer(spanish_moss, cutoutRenderType); + RenderTypeLookup.setRenderLayer(spanish_moss_plant, cutoutRenderType); RenderTypeLookup.setRenderLayer(sprout, cutoutRenderType); RenderTypeLookup.setRenderLayer(bush, cutoutRenderType); + RenderTypeLookup.setRenderLayer(clover, cutoutRenderType); + RenderTypeLookup.setRenderLayer(huge_clover_petal, cutoutRenderType); RenderTypeLookup.setRenderLayer(dune_grass, cutoutRenderType); RenderTypeLookup.setRenderLayer(desert_grass, cutoutRenderType); RenderTypeLookup.setRenderLayer(dead_grass, cutoutRenderType); @@ -452,6 +461,7 @@ public class ModBlocks RenderTypeLookup.setRenderLayer(potted_wilted_lily, cutoutRenderType); RenderTypeLookup.setRenderLayer(potted_burning_blossom, cutoutRenderType); RenderTypeLookup.setRenderLayer(potted_sprout, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_clover, cutoutRenderType); RenderTypeLookup.setRenderLayer(potted_toadstool, cutoutRenderType); RenderTypeLookup.setRenderLayer(potted_glowshroom, cutoutRenderType); diff --git a/src/main/java/biomesoplenty/init/ModVanillaCompat.java b/src/main/java/biomesoplenty/init/ModVanillaCompat.java index 1c212ddcf..908e2f284 100644 --- a/src/main/java/biomesoplenty/init/ModVanillaCompat.java +++ b/src/main/java/biomesoplenty/init/ModVanillaCompat.java @@ -130,8 +130,12 @@ public class ModVanillaCompat registerFlammable(BOPBlocks.blue_hydrangea, 60, 100); registerFlammable(BOPBlocks.goldenrod, 60, 100); registerFlammable(BOPBlocks.willow_vine, 15, 100); + registerFlammable(BOPBlocks.spanish_moss, 60, 100); + registerFlammable(BOPBlocks.spanish_moss_plant, 60, 100); registerFlammable(BOPBlocks.sprout, 60, 100); registerFlammable(BOPBlocks.bush, 60, 100); + registerFlammable(BOPBlocks.clover, 60, 100); + registerFlammable(BOPBlocks.huge_clover_petal, 60, 100); registerFlammable(BOPBlocks.dune_grass, 60, 100); registerFlammable(BOPBlocks.desert_grass, 60, 100); registerFlammable(BOPBlocks.dead_grass, 60, 100); @@ -220,9 +224,13 @@ public class ModVanillaCompat registerCompostable(0.65F, BOPBlocks.goldenrod); registerCompostable(0.5F, BOPBlocks.willow_vine); + registerCompostable(0.5F, BOPBlocks.spanish_moss); + registerCompostable(0.5F, BOPBlocks.spanish_moss_plant); registerCompostable(0.5F, BOPBlocks.sprout); registerCompostable(0.5F, BOPBlocks.bush); + registerCompostable(0.5F, BOPBlocks.clover); + registerCompostable(0.5F, BOPBlocks.huge_clover_petal); registerCompostable(0.5F, BOPBlocks.dune_grass); registerCompostable(0.5F, BOPBlocks.desert_grass); registerCompostable(0.5F, BOPBlocks.dead_grass); diff --git a/src/main/resources/assets/biomesoplenty/blockstates/clover.json b/src/main/resources/assets/biomesoplenty/blockstates/clover.json new file mode 100644 index 000000000..52d7b0e7d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/clover.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/clover" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/huge_clover_petal.json b/src/main/resources/assets/biomesoplenty/blockstates/huge_clover_petal.json new file mode 100644 index 000000000..3644c6985 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/huge_clover_petal.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=east": { "model": "biomesoplenty:block/huge_clover_petal", "y": 90 }, + "facing=south": { "model": "biomesoplenty:block/huge_clover_petal", "y": 180 }, + "facing=west": { "model": "biomesoplenty:block/huge_clover_petal", "y": 270 }, + "facing=north": { "model": "biomesoplenty:block/huge_clover_petal", "y": 0 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_clover.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_clover.json new file mode 100644 index 000000000..f15804218 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_clover.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_clover" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss.json b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss.json new file mode 100644 index 000000000..ee5026219 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "biomesoplenty:block/spanish_moss" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss_plant.json b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss_plant.json new file mode 100644 index 000000000..eadd58bd6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss_plant.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "biomesoplenty:block/spanish_moss_plant" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/lang/en_us.json b/src/main/resources/assets/biomesoplenty/lang/en_us.json index 6dba7ab5e..25172e227 100644 --- a/src/main/resources/assets/biomesoplenty/lang/en_us.json +++ b/src/main/resources/assets/biomesoplenty/lang/en_us.json @@ -29,6 +29,8 @@ "biome.biomesoplenty.fungal_field": "Fungal Field", "biome.biomesoplenty.fungal_jungle": "Fungal Jungle", "biome.biomesoplenty.golden_prairie": "Golden Prairie", + "biome.biomesoplenty.grassland": "Grassland", + "biome.biomesoplenty.grassland_clover_patch": "Grassland Clover Patch", "biome.biomesoplenty.gravel_beach": "Gravel Beach", "biome.biomesoplenty.grove": "Grove", "biome.biomesoplenty.grove_clearing": "Grove Clearing", @@ -37,7 +39,6 @@ "biome.biomesoplenty.highland_crag": "Highland Crag", "biome.biomesoplenty.highland_moor": "Highland Moor", "biome.biomesoplenty.jade_cliffs": "Jade Cliffs", - "biome.biomesoplenty.jade_grassland": "Jade Grassland", "biome.biomesoplenty.lavender_field": "Lavender Field", "biome.biomesoplenty.lavender_forest": "Lavender Forest", "biome.biomesoplenty.lush_desert": "Lush Desert", @@ -46,14 +47,12 @@ "biome.biomesoplenty.meadow": "Meadow", "biome.biomesoplenty.meadow_forest": "Meadow Forest", "biome.biomesoplenty.muskeg": "Muskeg", - "biome.biomesoplenty.mushroomy_muskeg": "Mushroomy Muskeg", "biome.biomesoplenty.mystic_grove": "Mystic Grove", "biome.biomesoplenty.mystic_plains": "Mystic Plains", "biome.biomesoplenty.ominous_mire": "Ominous Mire", "biome.biomesoplenty.ominous_woods": "Ominous Woods", "biome.biomesoplenty.orchard": "Orchard", "biome.biomesoplenty.origin_valley": "Origin Valley", - "biome.biomesoplenty.overgrown_fungal_jungle": "Overgrown Fungal Jungle", "biome.biomesoplenty.prairie": "Prairie", "biome.biomesoplenty.rainbow_hills": "Rainbow Hills", "biome.biomesoplenty.rainforest": "Rainforest", @@ -66,15 +65,14 @@ "biome.biomesoplenty.seasonal_forest": "Seasonal Forest", "biome.biomesoplenty.seasonal_orchard": "Seasonal Orchard", "biome.biomesoplenty.seasonal_pumpkin_patch": "Seasonal Pumpkin Patch", + "biome.biomesoplenty.shroomy_wetland": "Shroomy Wetland", "biome.biomesoplenty.shrubland": "Shrubland", "biome.biomesoplenty.shrubland_hills": "Shrubland Hills", - "biome.biomesoplenty.silkglade": "Silkglade", - "biome.biomesoplenty.silkglade_nest": "Silkglade Nest", "biome.biomesoplenty.snowy_coniferous_forest": "Snowy Coniferous Forest", "biome.biomesoplenty.snowy_fir_clearing": "Snowy Fir Clearing", "biome.biomesoplenty.snowy_maple_forest": "Snowy Maple Forest", + "biome.biomesoplenty.tall_dead_forest": "Tall Dead Forest", "biome.biomesoplenty.tropic_beach": "Tropic Beach", - "biome.biomesoplenty.tropic_plains": "Tropic Plains", "biome.biomesoplenty.tropics": "Tropics", "biome.biomesoplenty.tundra": "Tundra", "biome.biomesoplenty.tundra_basin": "Tundra Basin", @@ -88,7 +86,6 @@ "biome.biomesoplenty.wetland_forest": "Wetland Forest", "biome.biomesoplenty.withered_abyss": "Withered Abyss", "biome.biomesoplenty.wooded_scrubland": "Wooded Scrubland", - "biome.biomesoplenty.wooded_wasteland": "Wooded Wasteland", "biome.biomesoplenty.woodland": "Woodland", "item.biomesoplenty.bop_icon": "BOP Icon", @@ -133,6 +130,7 @@ "block.biomesoplenty.cherry_wall_sign": "Cherry Wall Sign", "block.biomesoplenty.cherry_wood": "Cherry Wood", "block.biomesoplenty.chiseled_black_sandstone": "Chiseled Black Sandstone", + "block.biomesoplenty.clover": "Clover", "block.biomesoplenty.cut_black_sandstone": "Cut Black Sandstone", "block.biomesoplenty.cut_black_sandstone_slab": "Cut Black Sandstone Slab", "block.biomesoplenty.chiseled_orange_sandstone": "Chiseled Orange Sandstone", @@ -198,6 +196,7 @@ "block.biomesoplenty.hellbark_trapdoor": "Hellbark Trapdoor", "block.biomesoplenty.hellbark_wall_sign": "Hellbark Wall Sign", "block.biomesoplenty.hellbark_wood": "Hellbark Wood", + "block.biomesoplenty.huge_clover_petal": "Huge Clover Petal", "block.biomesoplenty.jacaranda_button": "Jacaranda Button", "block.biomesoplenty.jacaranda_door": "Jacaranda Door", "block.biomesoplenty.jacaranda_fence": "Jacaranda Fence", @@ -285,6 +284,7 @@ "block.biomesoplenty.pink_daffodil": "Pink Daffodil", "block.biomesoplenty.pink_hibiscus": "Pink Hibiscus", "block.biomesoplenty.potted_burning_blossom": "Potted Burning Blossom", + "block.biomesoplenty.potted_clover": "Potted Clover", "block.biomesoplenty.potted_dead_sapling": "Potted Dead Sapling", "block.biomesoplenty.potted_fir_sapling": "Potted Fir Sapling", "block.biomesoplenty.potted_flowering_oak_sapling": "Potted Flowering Oak Sapling", @@ -343,6 +343,8 @@ "block.biomesoplenty.smooth_white_sandstone": "Smooth White Sandstone", "block.biomesoplenty.smooth_white_sandstone_slab": "Smooth White Sandstone Slab", "block.biomesoplenty.smooth_white_sandstone_stairs": "Smooth White Sandstone Stairs", + "block.biomesoplenty.spanish_moss": "Spanish Moss", + "block.biomesoplenty.spanish_moss_plant": "Spanish Moss Plant", "block.biomesoplenty.sprout": "Sprout", "block.biomesoplenty.stripped_cherry_log": "Stripped Cherry Log", "block.biomesoplenty.stripped_cherry_wood": "Stripped Cherry Wood", diff --git a/src/main/resources/assets/biomesoplenty/models/block/clover.json b/src/main/resources/assets/biomesoplenty/models/block/clover.json new file mode 100644 index 000000000..b8f3fbbc1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/clover.json @@ -0,0 +1,36 @@ +{ + "ambientocclusion": false, + "textures": { + "plant": "biomesoplenty:block/clover", + "stem": "biomesoplenty:block/clover_stem", + "particle": "#plant" + }, + "elements": [ + { + "from": [0, 7, 0], + "to": [16, 7, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#plant", "tintindex": 0}, + "down": {"uv": [0, 0, 16, 16], "texture": "#plant", "rotation": 270, "tintindex": 0} + } + }, + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/huge_clover_petal.json b/src/main/resources/assets/biomesoplenty/models/block/huge_clover_petal.json new file mode 100644 index 000000000..a187db4a5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/huge_clover_petal.json @@ -0,0 +1,29 @@ +{ + "ambientocclusion": false, + "textures": { + "petal": "biomesoplenty:block/huge_clover_petal", + "stem": "biomesoplenty:block/huge_clover_stem", + "stem_back": "biomesoplenty:block/huge_clover_stem_back", + "particle": "#petal" + }, + "elements": [ + { + "from": [0, 15, 0], + "to": [16, 15, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#petal", "tintindex": 0}, + "down": {"uv": [0, 0, 16, 16], "texture": "#petal", "rotation": 270, "tintindex": 0} + } + }, + { + "from": [0, 0, 8], + "to": [16, 16, 8], + "shade": false, + "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8], "rescale": true}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#stem_back", "tintindex": 0}, + "south": {"uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0} + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_clover.json b/src/main/resources/assets/biomesoplenty/models/block/potted_clover.json new file mode 100644 index 000000000..3e768d032 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_clover.json @@ -0,0 +1,83 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "minecraft:block/flower_pot", + "flowerpot": "minecraft:block/flower_pot", + "dirt": "minecraft:block/dirt", + "plant": "biomesoplenty:block/clover_stem", + "planttop": "biomesoplenty:block/clover" + }, + "elements": [ + { "from": [ 5, 0, 5 ], + "to": [ 6, 6, 11 ], + "faces": { + "down": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 10, 0, 5 ], + "to": [ 11, 6, 11 ], + "faces": { + "down": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 5 ], + "to": [ 10, 6, 6 ], + "faces": { + "down": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 10 ], + "to": [ 10, 6, 11 ], + "faces": { + "down": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 6 ], + "to": [ 10, 4, 10 ], + "faces": { + "down": { "uv": [ 6, 6, 10, 10 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 6, 10, 10 ], "texture": "#dirt" } + } + }, + { + "from": [0, 9.3, 0], + "to": [16, 9.3, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#planttop", "tintindex": 0}, + "down": {"uv": [0, 0, 16, 16], "texture": "#planttop", "rotation": 270, "tintindex": 0} + } + }, + { "from": [ 2.6, 4, 8 ], + "to": [ 13.4, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 } + } + }, + { "from": [ 8, 4, 2.6 ], + "to": [ 8, 16, 13.4 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/spanish_moss.json b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss.json new file mode 100644 index 000000000..9f649a045 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "biomesoplenty:block/spanish_moss" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/spanish_moss_plant.json b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss_plant.json new file mode 100644 index 000000000..f4f2f992c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss_plant.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "biomesoplenty:block/spanish_moss_plant" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/clover.json b/src/main/resources/assets/biomesoplenty/models/item/clover.json new file mode 100644 index 000000000..6bf0a0cd1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/clover.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/clover" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/huge_clover_petal.json b/src/main/resources/assets/biomesoplenty/models/item/huge_clover_petal.json new file mode 100644 index 000000000..475ef8bf4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/huge_clover_petal.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/huge_clover_petal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_clover.json b/src/main/resources/assets/biomesoplenty/models/item/potted_clover.json new file mode 100644 index 000000000..037d3d660 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_clover.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/spanish_moss.json b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss.json new file mode 100644 index 000000000..116662193 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "biomesoplenty:block/spanish_moss_plant" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/spanish_moss_plant.json b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss_plant.json new file mode 100644 index 000000000..116662193 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss_plant.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "biomesoplenty:block/spanish_moss_plant" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/textures/block/clover.png b/src/main/resources/assets/biomesoplenty/textures/block/clover.png new file mode 100644 index 000000000..ca5bcabbe Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/clover.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/clover_stem.png b/src/main/resources/assets/biomesoplenty/textures/block/clover_stem.png new file mode 100644 index 000000000..3e618a7dc Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/clover_stem.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_bottom.png index 724df8451..d3289fedd 100644 Binary files a/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_bottom.png and b/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_top.png b/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_top.png index 6ff440828..12dcb5b95 100644 Binary files a/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_top.png and b/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_leaves.png index f6a3687f0..ec9a3b8e4 100644 Binary files a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_leaves.png and b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_petal.png b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_petal.png new file mode 100644 index 000000000..3ea09e6f7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_petal.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem.png b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem.png new file mode 100644 index 000000000..2969a11cc Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem_back.png b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem_back.png new file mode 100644 index 000000000..37cdf0a7a Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem_back.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss.png b/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss.png new file mode 100644 index 000000000..08a50c002 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss_plant.png b/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss_plant.png new file mode 100644 index 000000000..367d16766 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss_plant.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/huge_clover_petal.png b/src/main/resources/assets/biomesoplenty/textures/item/huge_clover_petal.png new file mode 100644 index 000000000..f2c0f803c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/huge_clover_petal.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/clover.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/clover.png new file mode 100644 index 000000000..45175e1cf Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/clover.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/clover_stem.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/clover_stem.png new file mode 100644 index 000000000..ceb77b46c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/clover_stem.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_petal.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_petal.png new file mode 100644 index 000000000..49115e502 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_petal.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem.png new file mode 100644 index 000000000..50e9a13dc Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem_back.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem_back.png new file mode 100644 index 000000000..78dbcb9b3 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem_back.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss.png new file mode 100644 index 000000000..1b4370101 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss_plant.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss_plant.png new file mode 100644 index 000000000..b57c554eb Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss_plant.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/huge_clover_petal.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/huge_clover_petal.png new file mode 100644 index 000000000..fb51cb70f Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/huge_clover_petal.png differ diff --git a/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json index a33ab0af3..42823e1dd 100644 --- a/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json +++ b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json @@ -56,6 +56,12 @@ "conditions": { "biome": "biomesoplenty:cherry_blossom_grove" } + }, + "cold_desert": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:cold_desert" + } }, "coniferous_forest": { "trigger": "minecraft:location", @@ -140,6 +146,18 @@ "conditions": { "biome": "biomesoplenty:golden_prairie" } + }, + "grassland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grassland" + } + }, + "grassland_clover_patch": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grassland_clover_patch" + } }, "gravel_beach": { "trigger": "minecraft:location", @@ -188,12 +206,6 @@ "conditions": { "biome": "biomesoplenty:jade_cliffs" } - }, - "jade_grassland": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:jade_grassland" - } }, "lavender_field": { "trigger": "minecraft:location", @@ -242,12 +254,6 @@ "conditions": { "biome": "biomesoplenty:muskeg" } - }, - "mushroomy_muskeg": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:mushroomy_muskeg" - } }, "mystic_grove": { "trigger": "minecraft:location", @@ -284,12 +290,6 @@ "conditions": { "biome": "biomesoplenty:origin_valley" } - }, - "overgrown_fungal_jungle": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:overgrown_fungal_jungle" - } }, "prairie": { "trigger": "minecraft:location", @@ -362,6 +362,12 @@ "conditions": { "biome": "biomesoplenty:seasonal_pumpkin_patch" } + }, + "shroomy_wetland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:shroomy_wetland" + } }, "shrubland": { "trigger": "minecraft:location", @@ -374,18 +380,6 @@ "conditions": { "biome": "biomesoplenty:shrubland_hills" } - }, - "silkglade": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:silkglade" - } - }, - "silkglade_nest": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:silkglade_nest" - } }, "snowy_coniferous_forest": { "trigger": "minecraft:location", @@ -404,6 +398,12 @@ "conditions": { "biome": "biomesoplenty:snowy_maple_forest" } + }, + "tall_dead_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tall_dead_forest" + } }, "tropic_beach": { "trigger": "minecraft:location", @@ -411,12 +411,6 @@ "biome": "biomesoplenty:tropic_beach" } }, - "tropic_plains": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:tropic_plains" - } - }, "tropics": { "trigger": "minecraft:location", "conditions": { @@ -494,12 +488,6 @@ "conditions": { "biome": "biomesoplenty:wooded_scrubland" } - }, - "wooded_wasteland": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:wooded_wasteland" - } }, "woodland": { "trigger": "minecraft:location", diff --git a/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json index 808af4b6b..020e2ccc3 100644 --- a/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json +++ b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json @@ -55,6 +55,12 @@ "conditions": { "biome": "biomesoplenty:cherry_blossom_grove" } + }, + "cold_desert": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:cold_desert" + } }, "coniferous_forest": { "trigger": "minecraft:location", @@ -139,6 +145,18 @@ "conditions": { "biome": "biomesoplenty:golden_prairie" } + }, + "grassland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grassland" + } + }, + "grassland_clover_patch": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grassland_clover_patch" + } }, "gravel_beach": { "trigger": "minecraft:location", @@ -187,12 +205,6 @@ "conditions": { "biome": "biomesoplenty:jade_cliffs" } - }, - "jade_grassland": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:jade_grassland" - } }, "lavender_field": { "trigger": "minecraft:location", @@ -241,12 +253,6 @@ "conditions": { "biome": "biomesoplenty:muskeg" } - }, - "mushroomy_muskeg": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:mushroomy_muskeg" - } }, "mystic_grove": { "trigger": "minecraft:location", @@ -283,12 +289,6 @@ "conditions": { "biome": "biomesoplenty:origin_valley" } - }, - "overgrown_fungal_jungle": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:overgrown_fungal_jungle" - } }, "prairie": { "trigger": "minecraft:location", @@ -361,6 +361,12 @@ "conditions": { "biome": "biomesoplenty:seasonal_pumpkin_patch" } + }, + "shroomy_wetland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:shroomy_wetland" + } }, "shrubland": { "trigger": "minecraft:location", @@ -373,18 +379,6 @@ "conditions": { "biome": "biomesoplenty:shrubland_hills" } - }, - "silkglade": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:silkglade" - } - }, - "silkglade_nest": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:silkglade_nest" - } }, "snowy_coniferous_forest": { "trigger": "minecraft:location", @@ -403,6 +397,12 @@ "conditions": { "biome": "biomesoplenty:snowy_fir_clearing" } + }, + "tall_dead_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tall_dead_forest" + } }, "tropic_beach": { "trigger": "minecraft:location", @@ -410,12 +410,6 @@ "biome": "biomesoplenty:tropic_beach" } }, - "tropic_plains": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:tropic_plains" - } - }, "tropics": { "trigger": "minecraft:location", "conditions": { @@ -493,12 +487,6 @@ "conditions": { "biome": "biomesoplenty:wooded_scrubland" } - }, - "wooded_wasteland": { - "trigger": "minecraft:location", - "conditions": { - "biome": "biomesoplenty:wooded_wasteland" - } }, "woodland": { "trigger": "minecraft:location", @@ -516,6 +504,7 @@ "bayou_mangrove", "burnt_forest", "cherry_blossom_grove", + "cold_desert", "coniferous_forest", "coniferous_lakes", "crystalline_chasm", @@ -530,6 +519,8 @@ "fungal_field", "fungal_jungle", "golden_prairie", + "grassland", + "grassland_clover_patch", "gravel_beach", "grove", "grove_clearing", @@ -538,7 +529,6 @@ "highland_crag", "highland_moor", "jade_cliffs", - "jade_grassland", "lavender_field", "lavender_forest", "lush_desert", @@ -547,14 +537,12 @@ "meadow", "meadow_forest", "muskeg", - "mushroomy_muskeg", "mystic_grove", "mystic_plains", "ominous_woods", "ominous_mire", "orchard", "origin_valley", - "overgrown_fungal_jungle", "prairie", "rainbow_hills", "rainforest", @@ -567,15 +555,14 @@ "seasonal_forest", "seasonal_orchard", "seasonal_pumpkin_patch", + "shroomy_wetland", "shrubland", "shrubland_hills", - "silkglade", - "silkglade_nest", "snowy_coniferous_forest", "snowy_fir_clearing", "snowy_maple_forest", + "tall_dead_forest", "tropic_beach", - "tropic_plains", "tropics", "tundra", "tundra_basin", @@ -589,7 +576,6 @@ "wetland_forest", "withered_abyss", "wooded_scrubland", - "wooded_wasteland", "woodland" ] ] diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/clover.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/clover.json new file mode 100644 index 000000000..d6ca611b2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/clover.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:clover" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/huge_clover_petal.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/huge_clover_petal.json new file mode 100644 index 000000000..55b758bcf --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/huge_clover_petal.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:huge_clover_petal" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_clover.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_clover.json new file mode 100644 index 000000000..32f7e102b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_clover.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:clover" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/flower_pots.json b/src/main/resources/data/minecraft/tags/blocks/flower_pots.json index 525221891..3c76e0498 100644 --- a/src/main/resources/data/minecraft/tags/blocks/flower_pots.json +++ b/src/main/resources/data/minecraft/tags/blocks/flower_pots.json @@ -30,6 +30,7 @@ "biomesoplenty:potted_wilted_lily", "biomesoplenty:potted_burning_blossom", "biomesoplenty:potted_sprout", + "biomesoplenty:potted_clover", "biomesoplenty:potted_toadstool", "biomesoplenty:potted_glowshroom" ]