diff --git a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java index 673f399af..5549faa1f 100644 --- a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java +++ b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java @@ -15,6 +15,7 @@ public class BOPBiomes { public static Optional alps = Optional.empty(); public static Optional alps_foothills = Optional.empty(); + public static Optional bayou = Optional.empty(); public static Optional bog = Optional.empty(); public static Optional bog_mire = Optional.empty(); public static Optional boreal_forest = Optional.empty(); @@ -24,7 +25,6 @@ public class BOPBiomes public static Optional cold_desert = Optional.empty(); public static Optional coniferous_forest = Optional.empty(); public static Optional dead_forest = Optional.empty(); - public static Optional dead_plains = Optional.empty(); public static Optional floodplains = Optional.empty(); public static Optional flower_meadow = Optional.empty(); public static Optional grassland = Optional.empty(); @@ -58,7 +58,6 @@ public class BOPBiomes public static Optional snowy_forest = Optional.empty(); public static Optional steppe = Optional.empty(); public static Optional temperate_rainforest = Optional.empty(); - public static Optional thicket = Optional.empty(); public static Optional tropical_rainforest = Optional.empty(); public static Optional tropics = Optional.empty(); public static Optional tundra = Optional.empty(); diff --git a/src/main/java/biomesoplenty/api/enums/BOPClimates.java b/src/main/java/biomesoplenty/api/enums/BOPClimates.java index cb823c643..ffc4722aa 100644 --- a/src/main/java/biomesoplenty/api/enums/BOPClimates.java +++ b/src/main/java/biomesoplenty/api/enums/BOPClimates.java @@ -82,11 +82,11 @@ public enum BOPClimates BOPClimates.TUNDRA.addBiome(10, Biomes.SNOWY_TAIGA).addBiome(7, Biomes.MOUNTAINS); BOPClimates.WET_BOREAL.addBiome(10, Biomes.TAIGA); BOPClimates.DRY_BOREAL.addBiome(5, Biomes.GIANT_TREE_TAIGA); - BOPClimates.WET_TEMPERATE.addBiome(5, Biomes.DARK_FOREST); + BOPClimates.WET_TEMPERATE.addBiome(5, Biomes.DARK_FOREST).addBiome(7, Biomes.SWAMP); BOPClimates.DRY_TEMPERATE.addBiome(7, Biomes.BIRCH_FOREST); BOPClimates.COOL_TEMPERATE.addBiome(10, Biomes.FOREST); BOPClimates.WARM_TEMPERATE.addBiome(10, Biomes.PLAINS); - BOPClimates.SUBTROPICAL.addBiome(10, Biomes.SWAMP); + BOPClimates.SUBTROPICAL.addBiome(1, Biomes.LUKEWARM_OCEAN); BOPClimates.TROPICAL.addBiome(15, Biomes.JUNGLE); BOPClimates.MEDITERRANEAN.addBiome(1, Biomes.PLAINS); BOPClimates.SAVANNA.addBiome(10, Biomes.SAVANNA); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DeadPlainsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java similarity index 75% rename from src/main/java/biomesoplenty/common/biome/overworld/DeadPlainsBiome.java rename to src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java index bcfff332e..149456896 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/DeadPlainsBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java @@ -9,9 +9,11 @@ package biomesoplenty.common.biome.overworld; import com.google.common.collect.Lists; +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.api.enums.BOPClimates; import biomesoplenty.common.biome.BiomeBOP; import biomesoplenty.common.world.gen.feature.BOPBiomeFeatures; -import biomesoplenty.common.world.gen.feature.StandardGrassFeature; +import biomesoplenty.common.world.gen.feature.FernGrassFeature; import net.minecraft.entity.EntityType; import net.minecraft.entity.EnumCreatureType; import net.minecraft.init.Blocks; @@ -19,6 +21,8 @@ import net.minecraft.init.Fluids; import net.minecraft.util.math.BlockPos; import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.BushConfig; +import net.minecraft.world.gen.feature.DoublePlantConfig; import net.minecraft.world.gen.feature.Feature; import net.minecraft.world.gen.feature.IFeatureConfig; import net.minecraft.world.gen.feature.LakesConfig; @@ -26,10 +30,12 @@ import net.minecraft.world.gen.feature.LiquidsConfig; import net.minecraft.world.gen.feature.MinableConfig; import net.minecraft.world.gen.feature.ProbabilityConfig; import net.minecraft.world.gen.feature.RandomDefaultFeatureListConfig; +import net.minecraft.world.gen.feature.SeaGrassConfig; import net.minecraft.world.gen.feature.SphereReplaceConfig; import net.minecraft.world.gen.feature.structure.MineshaftConfig; import net.minecraft.world.gen.feature.structure.MineshaftStructure; import net.minecraft.world.gen.feature.structure.StrongholdConfig; +import net.minecraft.world.gen.feature.structure.SwampHutConfig; import net.minecraft.world.gen.placement.AtSurfaceWithExtraConfig; import net.minecraft.world.gen.placement.ChanceConfig; import net.minecraft.world.gen.placement.CountRangeConfig; @@ -42,13 +48,14 @@ import net.minecraft.world.gen.surfacebuilders.CompositeSurfaceBuilder; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -public class DeadPlainsBiome extends BiomeBOP +public class BayouBiome extends BiomeBOP { - public DeadPlainsBiome() + public BayouBiome() { - super((new Biome.BiomeBuilder()).surfaceBuilder(new CompositeSurfaceBuilder(DEFAULT_SURFACE_BUILDER, GRASS_DIRT_GRAVEL_SURFACE)).precipitation(Biome.RainType.RAIN).category(Biome.Category.PLAINS).depth(0.0F).scale(0.0F).temperature(0.3F).downfall(0.3F).waterColor(4159204).waterFogColor(329011).parent((String)null)); + super((new Biome.BiomeBuilder()).surfaceBuilder(new CompositeSurfaceBuilder(DEFAULT_SURFACE_BUILDER, GRASS_DIRT_GRAVEL_SURFACE)).precipitation(Biome.RainType.RAIN).category(Biome.Category.SWAMP).depth(-0.2F).scale(0.05F).temperature(0.95F).downfall(0.9F).waterColor(0x62AF6E).waterFogColor(0x0C2116).parent((String)null)); // Mineshafts and Strongholds + this.addStructure(Feature.SWAMP_HUT, new SwampHutConfig()); this.addStructure(Feature.MINESHAFT, new MineshaftConfig(0.004D, MineshaftStructure.Type.NORMAL)); this.addStructure(Feature.STRONGHOLD, new StrongholdConfig()); @@ -58,11 +65,13 @@ public class DeadPlainsBiome extends BiomeBOP this.addStructureFeatures(); // Lakes - this.addFeature(GenerationStage.Decoration.LOCAL_MODIFICATIONS, createCompositeFeature(Feature.LAKES, new LakesConfig(Blocks.WATER), LAKE_WATER, new LakeChanceConfig(4))); + this.addFeature(GenerationStage.Decoration.LOCAL_MODIFICATIONS, createCompositeFeature(Feature.LAKES, new LakesConfig(Blocks.WATER), LAKE_WATER, new LakeChanceConfig(2))); this.addFeature(GenerationStage.Decoration.LOCAL_MODIFICATIONS, createCompositeFeature(Feature.LAKES, new LakesConfig(Blocks.LAVA), LAVA_LAKE, new LakeChanceConfig(80))); - - // Underground + + // Dungeons this.addFeature(GenerationStage.Decoration.UNDERGROUND_STRUCTURES, createCompositeFeature(Feature.DUNGEONS, IFeatureConfig.NO_FEATURE_CONFIG, DUNGEON_ROOM, new DungeonRoomConfig(8))); + + // Ores this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.DIRT.getDefaultState(), 33), COUNT_RANGE, new CountRangeConfig(10, 0, 0, 256))); this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.GRAVEL.getDefaultState(), 33), COUNT_RANGE, new CountRangeConfig(8, 0, 0, 256))); this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.GRANITE.getDefaultState(), 33), COUNT_RANGE, new CountRangeConfig(10, 0, 0, 80))); @@ -74,16 +83,21 @@ public class DeadPlainsBiome extends BiomeBOP this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.REDSTONE_ORE.getDefaultState(), 8), COUNT_RANGE, new CountRangeConfig(8, 0, 0, 16))); this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.DIAMOND_ORE.getDefaultState(), 8), COUNT_RANGE, new CountRangeConfig(1, 0, 0, 16))); this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.LAPIS_ORE.getDefaultState(), 7), DEPTH_AVERAGE, new DepthAverageConfig(1, 16, 16))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.SPHERE_REPLACE, new SphereReplaceConfig(Blocks.SAND, 7, 2, Lists.newArrayList(Blocks.DIRT, Blocks.GRASS_BLOCK)), TOP_SOLID, new FrequencyConfig(3))); this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.SPHERE_REPLACE, new SphereReplaceConfig(Blocks.CLAY, 4, 1, Lists.newArrayList(Blocks.DIRT, Blocks.CLAY)), TOP_SOLID, new FrequencyConfig(1))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.SPHERE_REPLACE, new SphereReplaceConfig(Blocks.GRAVEL, 6, 2, Lists.newArrayList(Blocks.DIRT, Blocks.GRASS_BLOCK)), TOP_SOLID, new FrequencyConfig(1))); // Vegetation - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.DYING_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.2F}, BOPBiomeFeatures.OAK_TREE, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig((int)0.95, 0.2F, 1))); - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(5))); - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.PUMPKIN, IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE_WITH_CHANCE, new ChanceConfig(32))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.SPARSE_OAK_TREE, BOPBiomeFeatures.TALL_WILLOW_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.1F, 0.3F}, Feature.SWAMP_TREE, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(20, 0.7F, 1))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new FernGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(12))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.DOUBLE_PLANT, new DoublePlantConfig(Blocks.TALL_GRASS.getDefaultState()), SURFACE_PLUS_32, new FrequencyConfig(6))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.DOUBLE_PLANT, new DoublePlantConfig(Blocks.LARGE_FERN.getDefaultState()), SURFACE_PLUS_32, new FrequencyConfig(12))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(Blocks.BROWN_MUSHROOM), TWICE_SURFACE_WITH_CHANCE, new ChanceConfig(4))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(Blocks.RED_MUSHROOM), TWICE_SURFACE_WITH_CHANCE, new ChanceConfig(8))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.WATERLILY, IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(50))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.REED, IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.LIQUIDS, new LiquidsConfig(Fluids.WATER), HEIGHT_BIASED_RANGE, new CountRangeConfig(50, 8, 8, 256))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.LIQUIDS, new LiquidsConfig(Fluids.LAVA), HEIGHT_VERY_BIASED_RANGE, new CountRangeConfig(20, 8, 16, 256))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.SEA_GRASS, new SeaGrassConfig(64, 0.6D), TOP_SOLID_ONCE, IPlacementConfig.NO_PLACEMENT_CONFIG)); + this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, createCompositeFeature(Feature.FOSSILS, IFeatureConfig.NO_FEATURE_CONFIG, WITH_CHANCE, new ChanceConfig(64))); this.addFeature(GenerationStage.Decoration.TOP_LAYER_MODIFICATION, createCompositeFeature(Feature.ICE_AND_SNOW, IFeatureConfig.NO_FEATURE_CONFIG, PASSTHROUGH, IPlacementConfig.NO_PLACEMENT_CONFIG)); // Entity spawning @@ -91,7 +105,6 @@ public class DeadPlainsBiome extends BiomeBOP this.addSpawn(EnumCreatureType.CREATURE, new Biome.SpawnListEntry(EntityType.PIG, 10, 4, 4)); this.addSpawn(EnumCreatureType.CREATURE, new Biome.SpawnListEntry(EntityType.CHICKEN, 10, 4, 4)); this.addSpawn(EnumCreatureType.CREATURE, new Biome.SpawnListEntry(EntityType.COW, 8, 4, 4)); - this.addSpawn(EnumCreatureType.WATER_CREATURE, new Biome.SpawnListEntry(EntityType.SQUID, 10, 1, 2)); this.addSpawn(EnumCreatureType.AMBIENT, new Biome.SpawnListEntry(EntityType.BAT, 10, 8, 8)); this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.SPIDER, 100, 4, 4)); this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.ZOMBIE, 95, 4, 4)); @@ -101,17 +114,20 @@ public class DeadPlainsBiome extends BiomeBOP this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.SLIME, 100, 4, 4)); this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.ENDERMAN, 10, 1, 4)); this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.WITCH, 5, 1, 1)); + this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.SLIME, 1, 1, 1)); + + this.addWeight(BOPClimates.SUBTROPICAL, 10); } @OnlyIn(Dist.CLIENT) public int getGrassColor(BlockPos pos) { - return 0xBCA165; + return 0x6FAA50; } @OnlyIn(Dist.CLIENT) public int getFoliageColor(BlockPos pos) { - return 0xBCA165; + return 0x8BDB67; } } diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BogMireBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BogMireBiome.java index edd63ece0..2910619b3 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BogMireBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BogMireBiome.java @@ -108,12 +108,12 @@ public class BogMireBiome extends BiomeBOP @OnlyIn(Dist.CLIENT) public int getGrassColor(BlockPos pos) { - return 0x68584A; + return 0x5E5C3E; } @OnlyIn(Dist.CLIENT) public int getFoliageColor(BlockPos pos) { - return 0x938060; + return 0x776F4F; } } diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ChaparralBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ChaparralBiome.java index 165c44070..1ade25640 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/ChaparralBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/ChaparralBiome.java @@ -81,7 +81,7 @@ public class ChaparralBiome extends BiomeBOP this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.SPHERE_REPLACE, new SphereReplaceConfig(Blocks.GRAVEL, 6, 2, Lists.newArrayList(Blocks.DIRT, Blocks.GRASS_BLOCK)), TOP_SOLID, new FrequencyConfig(1))); // Vegetation - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.TWIGLET_TREE, BOPBiomeFeatures.DEAD_TWIGLET_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.5F, 0.25F}, BOPBiomeFeatures.BUSH, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(12, 0.3F, 1))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.TWIGLET_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.5F}, BOPBiomeFeatures.BUSH, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(12, 0.3F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFlowerFeature(Feature.DEFAULT_FLOWERS, SURFACE_PLUS_32, new FrequencyConfig(3))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(8))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.bush), TWICE_SURFACE, new FrequencyConfig(6))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ThicketBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ThicketBiome.java deleted file mode 100644 index ef53100a4..000000000 --- a/src/main/java/biomesoplenty/common/biome/overworld/ThicketBiome.java +++ /dev/null @@ -1,105 +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 com.google.common.collect.Lists; - -import biomesoplenty.api.block.BOPBlocks; -import biomesoplenty.api.enums.BOPClimates; -import biomesoplenty.common.biome.BiomeBOP; -import biomesoplenty.common.world.gen.feature.BOPBiomeFeatures; -import biomesoplenty.common.world.gen.feature.StandardGrassFeature; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.EnumCreatureType; -import net.minecraft.init.Blocks; -import net.minecraft.init.Fluids; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.gen.GenerationStage; -import net.minecraft.world.gen.feature.BushConfig; -import net.minecraft.world.gen.feature.Feature; -import net.minecraft.world.gen.feature.IFeatureConfig; -import net.minecraft.world.gen.feature.LakesConfig; -import net.minecraft.world.gen.feature.LiquidsConfig; -import net.minecraft.world.gen.feature.MinableConfig; -import net.minecraft.world.gen.feature.ProbabilityConfig; -import net.minecraft.world.gen.feature.RandomDefaultFeatureListConfig; -import net.minecraft.world.gen.feature.SphereReplaceConfig; -import net.minecraft.world.gen.feature.structure.MineshaftConfig; -import net.minecraft.world.gen.feature.structure.MineshaftStructure; -import net.minecraft.world.gen.feature.structure.StrongholdConfig; -import net.minecraft.world.gen.feature.structure.VillageConfig; -import net.minecraft.world.gen.feature.structure.VillagePieces; -import net.minecraft.world.gen.placement.AtSurfaceWithExtraConfig; -import net.minecraft.world.gen.placement.CountRangeConfig; -import net.minecraft.world.gen.placement.DepthAverageConfig; -import net.minecraft.world.gen.placement.DungeonRoomConfig; -import net.minecraft.world.gen.placement.FrequencyConfig; -import net.minecraft.world.gen.placement.IPlacementConfig; -import net.minecraft.world.gen.placement.LakeChanceConfig; -import net.minecraft.world.gen.surfacebuilders.CompositeSurfaceBuilder; - -public class ThicketBiome extends BiomeBOP -{ - public ThicketBiome() - { - super((new Biome.BiomeBuilder()).surfaceBuilder(new CompositeSurfaceBuilder(DEFAULT_SURFACE_BUILDER, GRASS_DIRT_GRAVEL_SURFACE)).precipitation(Biome.RainType.RAIN).category(Biome.Category.PLAINS).depth(0.1F).scale(0.1F).temperature(0.65F).downfall(0.3F).waterColor(4159204).waterFogColor(329011).parent((String)null)); - - // Mineshafts and Strongholds - this.addStructure(Feature.MINESHAFT, new MineshaftConfig(0.004D, MineshaftStructure.Type.NORMAL)); - this.addStructure(Feature.STRONGHOLD, new StrongholdConfig()); - - this.addCarver(GenerationStage.Carving.AIR, createWorldCarverWrapper(CAVE_WORLD_CARVER, new ProbabilityConfig(0.14285715F))); - this.addCarver(GenerationStage.Carving.AIR, createWorldCarverWrapper(CANYON_WORLD_CARVER, new ProbabilityConfig(0.02F))); - - this.addStructureFeatures(); - - // Lakes - this.addFeature(GenerationStage.Decoration.LOCAL_MODIFICATIONS, createCompositeFeature(Feature.LAKES, new LakesConfig(Blocks.WATER), LAKE_WATER, new LakeChanceConfig(4))); - this.addFeature(GenerationStage.Decoration.LOCAL_MODIFICATIONS, createCompositeFeature(Feature.LAKES, new LakesConfig(Blocks.LAVA), LAVA_LAKE, new LakeChanceConfig(80))); - - // Underground - this.addFeature(GenerationStage.Decoration.UNDERGROUND_STRUCTURES, createCompositeFeature(Feature.DUNGEONS, IFeatureConfig.NO_FEATURE_CONFIG, DUNGEON_ROOM, new DungeonRoomConfig(8))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.DIRT.getDefaultState(), 33), COUNT_RANGE, new CountRangeConfig(10, 0, 0, 256))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.GRAVEL.getDefaultState(), 33), COUNT_RANGE, new CountRangeConfig(8, 0, 0, 256))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.GRANITE.getDefaultState(), 33), COUNT_RANGE, new CountRangeConfig(10, 0, 0, 80))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.DIORITE.getDefaultState(), 33), COUNT_RANGE, new CountRangeConfig(10, 0, 0, 80))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.ANDESITE.getDefaultState(), 33), COUNT_RANGE, new CountRangeConfig(10, 0, 0, 80))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.COAL_ORE.getDefaultState(), 17), COUNT_RANGE, new CountRangeConfig(20, 0, 0, 128))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.IRON_ORE.getDefaultState(), 9), COUNT_RANGE, new CountRangeConfig(20, 0, 0, 64))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.GOLD_ORE.getDefaultState(), 9), COUNT_RANGE, new CountRangeConfig(2, 0, 0, 32))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.REDSTONE_ORE.getDefaultState(), 8), COUNT_RANGE, new CountRangeConfig(8, 0, 0, 16))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.DIAMOND_ORE.getDefaultState(), 8), COUNT_RANGE, new CountRangeConfig(1, 0, 0, 16))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.MINABLE, new MinableConfig(MinableConfig.IS_ROCK, Blocks.LAPIS_ORE.getDefaultState(), 7), DEPTH_AVERAGE, new DepthAverageConfig(1, 16, 16))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.SPHERE_REPLACE, new SphereReplaceConfig(Blocks.SAND, 7, 2, Lists.newArrayList(Blocks.DIRT, Blocks.GRASS_BLOCK)), TOP_SOLID, new FrequencyConfig(3))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.SPHERE_REPLACE, new SphereReplaceConfig(Blocks.CLAY, 4, 1, Lists.newArrayList(Blocks.DIRT, Blocks.CLAY)), TOP_SOLID, new FrequencyConfig(1))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, createCompositeFeature(Feature.SPHERE_REPLACE, new SphereReplaceConfig(Blocks.GRAVEL, 6, 2, Lists.newArrayList(Blocks.DIRT, Blocks.GRASS_BLOCK)), TOP_SOLID, new FrequencyConfig(1))); - - // Vegetation - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.SPARSE_OAK_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.15F}, BOPBiomeFeatures.BUSH, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(10, 0.1F, 1))); - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(8))); - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(BOPBiomeFeatures.BRAMBLE, IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(75))); - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.bush), TWICE_SURFACE, new FrequencyConfig(7))); - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.LIQUIDS, new LiquidsConfig(Fluids.WATER), HEIGHT_BIASED_RANGE, new CountRangeConfig(50, 8, 8, 256))); - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.LIQUIDS, new LiquidsConfig(Fluids.LAVA), HEIGHT_VERY_BIASED_RANGE, new CountRangeConfig(20, 8, 16, 256))); - this.addFeature(GenerationStage.Decoration.TOP_LAYER_MODIFICATION, createCompositeFeature(Feature.ICE_AND_SNOW, IFeatureConfig.NO_FEATURE_CONFIG, PASSTHROUGH, IPlacementConfig.NO_PLACEMENT_CONFIG)); - - // Entity spawning - this.addSpawn(EnumCreatureType.WATER_CREATURE, new Biome.SpawnListEntry(EntityType.SQUID, 10, 1, 2)); - this.addSpawn(EnumCreatureType.AMBIENT, new Biome.SpawnListEntry(EntityType.BAT, 10, 8, 8)); - this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.SPIDER, 100, 4, 4)); - this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.ZOMBIE, 95, 4, 4)); - this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); - this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.SKELETON, 100, 4, 4)); - this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.CREEPER, 100, 4, 4)); - this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.SLIME, 100, 4, 4)); - this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.ENDERMAN, 10, 1, 4)); - this.addSpawn(EnumCreatureType.MONSTER, new Biome.SpawnListEntry(EntityType.WITCH, 5, 1, 1)); - - this.addWeight(BOPClimates.DRY_TEMPERATE, 3); - } -} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPBiomeFeatures.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBiomeFeatures.java index def06b840..a67f22a45 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/BOPBiomeFeatures.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBiomeFeatures.java @@ -72,6 +72,7 @@ public class BOPBiomeFeatures public static final AbstractTreeFeature ALPS_SPRUCE_TREE = new TaigaTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.STONE).log(Blocks.SPRUCE_LOG.getDefaultState()).leaves(Blocks.SPRUCE_LEAVES.getDefaultState()).maxHeight(13).create(); public static final AbstractTreeFeature SWAMP_TREE = new BasicTreeFeature.Builder().vine(Blocks.VINE.getDefaultState()).minHeight(8).maxHeight(12).maxLeavesRadius(2).leavesOffset(0).create(); public static final AbstractTreeFeature WILLOW_TREE = new BasicTreeFeature.Builder().log(BOPBlocks.willow_log.getDefaultState()).leaves(BOPBlocks.willow_leaves.getDefaultState()).vine(BOPBlocks.willow_vine.getDefaultState()).minHeight(8).maxHeight(12).maxLeavesRadius(2).leavesOffset(0).create(); + public static final AbstractTreeFeature TALL_WILLOW_TREE = new BasicTreeFeature.Builder().log(BOPBlocks.willow_log.getDefaultState()).leaves(BOPBlocks.willow_leaves.getDefaultState()).vine(BOPBlocks.willow_vine.getDefaultState()).minHeight(10).maxHeight(16).maxLeavesRadius(2).leavesOffset(0).create(); public static final AbstractTreeFeature BUSH = new BushTreeFeature.Builder().maxHeight(2).create(); public static final AbstractTreeFeature PALM_TREE = new PalmTreeFeature.Builder().create(); public static final AbstractTreeFeature OASIS_PALM_TREE = new PalmTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.SAND).create(); diff --git a/src/main/java/biomesoplenty/init/ModBiomes.java b/src/main/java/biomesoplenty/init/ModBiomes.java index dea5437eb..33292a980 100644 --- a/src/main/java/biomesoplenty/init/ModBiomes.java +++ b/src/main/java/biomesoplenty/init/ModBiomes.java @@ -13,11 +13,11 @@ import biomesoplenty.api.enums.BOPClimates; import biomesoplenty.common.biome.BiomeBOP; import biomesoplenty.common.biome.overworld.AlpsBiome; import biomesoplenty.common.biome.overworld.AlpsFoothillsBiome; +import biomesoplenty.common.biome.overworld.BayouBiome; import biomesoplenty.common.biome.overworld.CherryBlossomGroveBiome; import biomesoplenty.common.biome.overworld.ColdDesertBiome; import biomesoplenty.common.biome.overworld.ConiferousForestBiome; import biomesoplenty.common.biome.overworld.DeadForestBiome; -import biomesoplenty.common.biome.overworld.DeadPlainsBiome; import biomesoplenty.common.biome.overworld.FloodplainsBiome; import biomesoplenty.common.biome.overworld.FlowerMeadowBiome; import biomesoplenty.common.biome.overworld.BogBiome; @@ -56,7 +56,6 @@ import biomesoplenty.common.biome.overworld.SnowyConiferousForestBiome; import biomesoplenty.common.biome.overworld.SnowyForestBiome; import biomesoplenty.common.biome.overworld.SteppeBiome; import biomesoplenty.common.biome.overworld.TemperateRainforestBiome; -import biomesoplenty.common.biome.overworld.ThicketBiome; import biomesoplenty.common.biome.overworld.TropicalRainforestBiome; import biomesoplenty.common.biome.overworld.TropicsBiome; import biomesoplenty.common.biome.overworld.TundraBiome; @@ -94,6 +93,7 @@ public class ModBiomes { alps = registerBiome(new AlpsBiome(), "alps"); alps_foothills = registerBiome(new AlpsFoothillsBiome(), "alps_foothills"); + bayou = registerBiome(new BayouBiome(), "bayou"); bog = registerBiome(new BogBiome(), "bog"); bog_mire = registerBiome(new BogMireBiome(), "bog_mire"); boreal_forest = registerBiome(new BorealForestBiome(), "boreal_forest"); @@ -103,7 +103,6 @@ public class ModBiomes cold_desert = registerBiome(new ColdDesertBiome(), "cold_desert"); coniferous_forest = registerBiome(new ConiferousForestBiome(), "coniferous_forest"); dead_forest = registerBiome(new DeadForestBiome(), "dead_forest"); - dead_plains = registerBiome(new DeadPlainsBiome(), "dead_plains"); floodplains = registerBiome(new FloodplainsBiome(), "floodplains"); flower_meadow = registerBiome(new FlowerMeadowBiome(), "flower_meadow"); grassland = registerBiome(new GrasslandBiome(), "grassland"); @@ -137,7 +136,6 @@ public class ModBiomes snowy_forest = registerBiome(new SnowyForestBiome(), "snowy_forest"); steppe = registerBiome(new SteppeBiome(), "steppe"); temperate_rainforest = registerBiome(new TemperateRainforestBiome(), "temperate_rainforest"); - thicket = registerBiome(new ThicketBiome(), "thicket"); tropical_rainforest = registerBiome(new TropicalRainforestBiome(), "tropical_rainforest"); tropics = registerBiome(new TropicsBiome(), "tropics"); tundra = registerBiome(new TundraBiome(), "tundra"); @@ -149,9 +147,8 @@ public class ModBiomes // Note: Rarity supports two decimal places registerSubBiome(Biomes.DESERT, oasis, 0.25F, 100); - registerSubBiome(bog, bog_mire, 0.75F, 100); + registerSubBiome(bog, bog_mire, 0.5F, 100); registerSubBiome(brushland, xeric_shrubland, 1.5F, 100); - registerSubBiome(dead_forest, dead_plains, 1.0F, 100); registerSubBiome(grove, grove_orchard, 0.75F, 100); registerSubBiome(highland, highland_moor, 1.0F, 100); registerSubBiome(meadow, flower_meadow, 0.75F, 100); diff --git a/src/main/resources/assets/biomesoplenty/lang/en_us.json b/src/main/resources/assets/biomesoplenty/lang/en_us.json index 1c0a42753..7eb14ec49 100644 --- a/src/main/resources/assets/biomesoplenty/lang/en_us.json +++ b/src/main/resources/assets/biomesoplenty/lang/en_us.json @@ -32,12 +32,9 @@ "biome.biomesoplenty.cold_desert": "Cold Desert", "biome.biomesoplenty.coniferous_forest": "Coniferous Forest", "biome.biomesoplenty.corrupted_sands": "Corrupted Sands", - "biome.biomesoplenty.crag": "Crag", "biome.biomesoplenty.dead_forest": "Dead Forest", - "biome.biomesoplenty.dead_plains": "Dead Plains", "biome.biomesoplenty.floodplains": "Floodplains", "biome.biomesoplenty.flower_meadow": "Flower Meadow", - "biome.biomesoplenty.frosted_tundra": "Frosted Tundra", "biome.biomesoplenty.fungi_forest": "Fungi Forest", "biome.biomesoplenty.grassland": "Grassland", "biome.biomesoplenty.gravel_beach": "Gravel Beach", @@ -45,7 +42,6 @@ "biome.biomesoplenty.grove_orchard": "Grove Orchard", "biome.biomesoplenty.highland": "Highland", "biome.biomesoplenty.highland_moor": "Highland Moor", - "biome.biomesoplenty.lake": "Lake", "biome.biomesoplenty.lavender_fields": "Lavender Fields", "biome.biomesoplenty.lush_swamp": "Lush Swamp", "biome.biomesoplenty.mangrove": "Mangrove", @@ -72,7 +68,6 @@ "biome.biomesoplenty.snowy_forest": "Snowy Forest", "biome.biomesoplenty.steppe": "Steppe", "biome.biomesoplenty.temperate_rainforest": "Temperate Rainforest", - "biome.biomesoplenty.thicket": "Thicket", "biome.biomesoplenty.tropical_rainforest": "Tropical Rainforest", "biome.biomesoplenty.tropics": "Tropics", "biome.biomesoplenty.tundra": "Tundra",