diff --git a/src/main/java/biomesoplenty/common/biome/end/DeadReefBiome.java b/src/main/java/biomesoplenty/common/biome/end/DeadReefBiome.java index 40c7fcde0..b86aa862b 100644 --- a/src/main/java/biomesoplenty/common/biome/end/DeadReefBiome.java +++ b/src/main/java/biomesoplenty/common/biome/end/DeadReefBiome.java @@ -8,8 +8,11 @@ import net.minecraft.block.Blocks; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.DefaultBiomeFeatures; +import net.minecraft.world.dimension.EndDimension; import net.minecraft.world.gen.GenerationStage; import net.minecraft.world.gen.feature.BushConfig; +import net.minecraft.world.gen.feature.EndGatewayConfig; import net.minecraft.world.gen.feature.Feature; import net.minecraft.world.gen.feature.IFeatureConfig; import net.minecraft.world.gen.placement.FrequencyConfig; @@ -24,7 +27,9 @@ public class DeadReefBiome extends EndBiomeBOP { super((new Builder()).surfaceBuilder(new ConfiguredSurfaceBuilder<>(SurfaceBuilder.DEFAULT, SurfaceBuilder.END_STONE_CONFIG)).precipitation(RainType.NONE).category(Category.THEEND).depth(0.1F).scale(0.2F).temperature(0.5F).downfall(0.5F).waterColor(4159204).waterFogColor(329011).parent((String)null)); - this.addFeature(GenerationStage.Decoration.SURFACE_STRUCTURES, Biome.createDecoratedFeature(Feature.END_CITY, IFeatureConfig.NO_FEATURE_CONFIG, Placement.NOPE, IPlacementConfig.NO_PLACEMENT_CONFIG)); + this.addStructure(Feature.END_CITY, IFeatureConfig.NO_FEATURE_CONFIG); + this.addFeature(GenerationStage.Decoration.SURFACE_STRUCTURES, createDecoratedFeature(Feature.END_GATEWAY, EndGatewayConfig.func_214702_a(EndDimension.SPAWN, true), Placement.END_GATEWAY, IPlacementConfig.NO_PLACEMENT_CONFIG)); + DefaultBiomeFeatures.func_225489_aq(this); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(BOPBiomeFeatures.DEAD_CORAL_SPIKES, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(5))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(BOPBiomeFeatures.DEAD_CORAL_SPLATTER, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(200))); diff --git a/src/main/java/biomesoplenty/common/biome/end/EtherealForestBiome.java b/src/main/java/biomesoplenty/common/biome/end/EtherealForestBiome.java index 9bab55f5c..381e9caec 100644 --- a/src/main/java/biomesoplenty/common/biome/end/EtherealForestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/end/EtherealForestBiome.java @@ -6,11 +6,10 @@ import biomesoplenty.common.world.gen.feature.BOPBiomeFeatures; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.DefaultBiomeFeatures; +import net.minecraft.world.dimension.EndDimension; 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.MultipleRandomFeatureConfig; +import net.minecraft.world.gen.feature.*; import net.minecraft.world.gen.placement.AtSurfaceWithExtraConfig; import net.minecraft.world.gen.placement.FrequencyConfig; import net.minecraft.world.gen.placement.IPlacementConfig; @@ -24,10 +23,12 @@ public class EtherealForestBiome extends EndBiomeBOP { super((new Builder()).surfaceBuilder(new ConfiguredSurfaceBuilder<>(SurfaceBuilder.DEFAULT, SurfaceBuilder.END_STONE_CONFIG)).precipitation(RainType.NONE).category(Category.THEEND).depth(0.1F).scale(0.2F).temperature(0.5F).downfall(0.5F).waterColor(4159204).waterFogColor(329011).parent((String)null)); - this.addFeature(GenerationStage.Decoration.SURFACE_STRUCTURES, Biome.createDecoratedFeature(Feature.END_CITY, IFeatureConfig.NO_FEATURE_CONFIG, Placement.NOPE, IPlacementConfig.NO_PLACEMENT_CONFIG)); + this.addStructure(Feature.END_CITY, IFeatureConfig.NO_FEATURE_CONFIG); + this.addFeature(GenerationStage.Decoration.SURFACE_STRUCTURES, createDecoratedFeature(Feature.END_GATEWAY, EndGatewayConfig.func_214702_a(EndDimension.SPAWN, true), Placement.END_GATEWAY, IPlacementConfig.NO_PLACEMENT_CONFIG)); + DefaultBiomeFeatures.func_225489_aq(this); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createDecoratedFeature(BOPBiomeFeatures.ETHEREAL_TREE, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(1))); - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createDecoratedFeature(BOPBiomeFeatures.ETHEREAL_BUSH, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(25))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createDecoratedFeature(BOPBiomeFeatures.ETHEREAL_BUSH, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(5))); this.addSpawn(EntityClassification.MONSTER, new SpawnListEntry(EntityType.ENDERMAN, 10, 4, 4)); } diff --git a/src/main/java/biomesoplenty/common/biome/nether/AshenInfernoBiome.java b/src/main/java/biomesoplenty/common/biome/nether/AshenInfernoBiome.java index 815b2074e..272476995 100644 --- a/src/main/java/biomesoplenty/common/biome/nether/AshenInfernoBiome.java +++ b/src/main/java/biomesoplenty/common/biome/nether/AshenInfernoBiome.java @@ -1,16 +1,12 @@ package biomesoplenty.common.biome.nether; -import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.api.enums.BOPClimates; import biomesoplenty.common.biome.NetherBiomeBOP; import biomesoplenty.common.world.gen.feature.BOPBiomeFeatures; -import biomesoplenty.common.world.gen.feature.SplotchConfig; -import com.google.common.collect.Lists; import net.minecraft.block.Blocks; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.fluid.Fluids; -import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.DefaultBiomeFeatures; import net.minecraft.world.gen.GenerationStage; import net.minecraft.world.gen.carver.WorldCarver; diff --git a/src/main/java/biomesoplenty/common/biome/nether/VisceralHeapBiome.java b/src/main/java/biomesoplenty/common/biome/nether/VisceralHeapBiome.java index 213d19e1e..ba0a3070b 100644 --- a/src/main/java/biomesoplenty/common/biome/nether/VisceralHeapBiome.java +++ b/src/main/java/biomesoplenty/common/biome/nether/VisceralHeapBiome.java @@ -36,7 +36,7 @@ public class VisceralHeapBiome extends NetherBiomeBOP this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, createDecoratedFeature(Feature.GLOWSTONE_BLOB, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_RANGE, new CountRangeConfig(7, 0, 0, 128))); this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, createDecoratedFeature(BOPBiomeFeatures.FLESH_SPLATTER, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(500))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, createDecoratedFeature(BOPBiomeFeatures.BONE_SPINE, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(17))); + this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, createDecoratedFeature(BOPBiomeFeatures.BONE_SPINE, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(15))); //Base Decorations this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, createDecoratedFeature(Feature.BUSH, new BushConfig(Blocks.BROWN_MUSHROOM.getDefaultState()), Placement.CHANCE_RANGE, new ChanceRangeConfig(0.1F, 0, 0, 128))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/AlpsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/AlpsBiome.java index 3844c12af..42fd0566c 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/AlpsBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/AlpsBiome.java @@ -31,7 +31,7 @@ public class AlpsBiome extends BiomeBOP { public AlpsBiome() { - super((new Biome.Builder()).surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, BOPBiomeFeatures.SNOW_SNOW_GRAVEL_SURFACE)).precipitation(Biome.RainType.SNOW).category(Biome.Category.ICY).depth(7.5F).scale(0.2F).temperature(-0.25F).downfall(0.3F).waterColor(4159204).waterFogColor(329011).parent((String)null)); + super((new Biome.Builder()).surfaceBuilder(new ConfiguredSurfaceBuilder(BOPBiomeFeatures.DEEP_TOP_LAYER, BOPBiomeFeatures.SNOW_SNOW_GRAVEL_SURFACE)).precipitation(Biome.RainType.SNOW).category(Biome.Category.ICY).depth(7.5F).scale(0.2F).temperature(-0.25F).downfall(0.3F).waterColor(4159204).waterFogColor(329011).parent((String)null)); // Structures this.addStructure(Feature.MINESHAFT, new MineshaftConfig(0.004D, MineshaftStructure.Type.NORMAL)); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/LushSwampBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/LushSwampBiome.java index fbf911611..9f6d4ef25 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/LushSwampBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/LushSwampBiome.java @@ -61,7 +61,6 @@ public class LushSwampBiome extends BiomeBOP this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(BOPBlocks.sprout.getDefaultState()), Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(5))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(Blocks.BROWN_MUSHROOM.getDefaultState()), Placement.CHANCE_HEIGHTMAP_DOUBLE, new ChanceConfig(4))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(Blocks.RED_MUSHROOM.getDefaultState()), Placement.CHANCE_HEIGHTMAP_DOUBLE, new ChanceConfig(8))); - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(BOPBlocks.toadstool.getDefaultState()), Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.WATERLILY, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(20))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.REED, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(20))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.PUMPKIN, IFeatureConfig.NO_FEATURE_CONFIG, Placement.CHANCE_HEIGHTMAP_DOUBLE, new ChanceConfig(32))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/VolcanoBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/VolcanoBiome.java index 41315c92a..9019758dd 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/VolcanoBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/VolcanoBiome.java @@ -8,21 +8,17 @@ package biomesoplenty.common.biome.overworld; import biomesoplenty.api.biome.BOPBiomes; -import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.common.biome.BiomeBOP; import biomesoplenty.common.world.gen.feature.BOPBiomeFeatures; -import biomesoplenty.common.world.gen.feature.SplotchConfig; import com.google.common.collect.Lists; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; -import net.minecraft.fluid.Fluids; import net.minecraft.util.math.BlockPos; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.DefaultBiomeFeatures; import net.minecraft.world.gen.GenerationStage; -import net.minecraft.world.gen.carver.WorldCarver; import net.minecraft.world.gen.feature.*; import net.minecraft.world.gen.feature.structure.MineshaftConfig; import net.minecraft.world.gen.feature.structure.MineshaftStructure; @@ -51,7 +47,6 @@ public class VolcanoBiome extends BiomeBOP DefaultBiomeFeatures.addStoneVariants(this); DefaultBiomeFeatures.addOres(this); this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Biome.createDecoratedFeature(Feature.DISK, new SphereReplaceConfig(Blocks.GRAVEL.getDefaultState(), 6, 2, Lists.newArrayList(new BlockState[]{Blocks.DIRT.getDefaultState(), Blocks.GRASS_BLOCK.getDefaultState()})), Placement.COUNT_TOP_SOLID, new FrequencyConfig(1))); - this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Biome.createDecoratedFeature(BOPBiomeFeatures.SPLOTCH, new SplotchConfig(Blocks.LAVA.getDefaultState(), 8, 2, Lists.newArrayList(Blocks.LAVA.getDefaultState(), Blocks.STONE.getDefaultState(), Blocks.GRANITE.getDefaultState(), Blocks.DIORITE.getDefaultState(), Blocks.ANDESITE.getDefaultState(), Blocks.GRAVEL.getDefaultState(), Blocks.MAGMA_BLOCK.getDefaultState(), BOPBlocks.ash_block.getDefaultState())), Placement.COUNT_TOP_SOLID, new FrequencyConfig(2))); this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Biome.createDecoratedFeature(Feature.ORE, new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, Blocks.OBSIDIAN.getDefaultState(), 33), Placement.COUNT_RANGE, new CountRangeConfig(20, 0, 0, 256))); // Other Features diff --git a/src/main/java/biomesoplenty/common/biome/overworld/VolcanoEdgeBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/VolcanoEdgeBiome.java index 50c73b884..da129088d 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/VolcanoEdgeBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/VolcanoEdgeBiome.java @@ -10,18 +10,15 @@ package biomesoplenty.common.biome.overworld; import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.common.biome.BiomeBOP; import biomesoplenty.common.world.gen.feature.BOPBiomeFeatures; -import biomesoplenty.common.world.gen.feature.SplotchConfig; import com.google.common.collect.Lists; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; -import net.minecraft.fluid.Fluids; import net.minecraft.util.math.BlockPos; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.DefaultBiomeFeatures; import net.minecraft.world.gen.GenerationStage; -import net.minecraft.world.gen.carver.WorldCarver; import net.minecraft.world.gen.feature.*; import net.minecraft.world.gen.feature.structure.MineshaftConfig; import net.minecraft.world.gen.feature.structure.MineshaftStructure; @@ -55,8 +52,9 @@ public class VolcanoEdgeBiome extends BiomeBOP //////////////////////////////////////////////////////////// // Vegetation - this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.RANDOM_SELECTOR, new MultipleRandomFeatureConfig(new Feature[]{BOPBiomeFeatures.DEAD_TREE_VOLCANO}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.1F}, BOPBiomeFeatures.DYING_TREE_VOLCANO, IFeatureConfig.NO_FEATURE_CONFIG), Placement.COUNT_EXTRA_HEIGHTMAP, new AtSurfaceWithExtraConfig(1, 0.1F, 1))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.RANDOM_SELECTOR, new MultipleRandomFeatureConfig(new Feature[]{BOPBiomeFeatures.DYING_TREE_VOLCANO}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.1F}, BOPBiomeFeatures.DEAD_TREE_VOLCANO, IFeatureConfig.NO_FEATURE_CONFIG), Placement.COUNT_EXTRA_HEIGHTMAP, new AtSurfaceWithExtraConfig(1, 0.2F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(BOPBlocks.dead_grass.getDefaultState()), Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(2))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(BOPBlocks.sprout.getDefaultState()), Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(2))); //////////////////////////////////////////////////////////// diff --git a/src/main/java/biomesoplenty/common/block/AshBlock.java b/src/main/java/biomesoplenty/common/block/AshBlock.java index 9732ee7f5..2617c9c7a 100644 --- a/src/main/java/biomesoplenty/common/block/AshBlock.java +++ b/src/main/java/biomesoplenty/common/block/AshBlock.java @@ -11,10 +11,12 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; import net.minecraft.particles.ParticleTypes; +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.IWorldReader; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -23,25 +25,17 @@ import java.util.Random; public class AshBlock extends Block { - protected static final VoxelShape SHAPE = Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 14.0D, 16.0D); - public AshBlock(Block.Properties properties) { super(properties); } - @Override - public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext selectionContext) - { - return SHAPE; - } - @Override @OnlyIn(Dist.CLIENT) public void animateTick(BlockState stateIn, World worldIn, BlockPos pos, Random rand) { super.animateTick(stateIn, worldIn, pos, rand); - if (rand.nextInt(2) == 0) + if (rand.nextInt(8) == 0) { worldIn.addParticle(ParticleTypes.SMOKE, (double)((float)pos.getX() + rand.nextFloat()), (double)((float)pos.getY() + 1.1F), (double)((float)pos.getZ() + rand.nextFloat()), 0.0D, 0.0D, 0.0D); } diff --git a/src/main/java/biomesoplenty/common/block/FleshBlock.java b/src/main/java/biomesoplenty/common/block/FleshBlock.java index 6cdf63d3a..ca36434cc 100644 --- a/src/main/java/biomesoplenty/common/block/FleshBlock.java +++ b/src/main/java/biomesoplenty/common/block/FleshBlock.java @@ -18,21 +18,13 @@ import net.minecraft.world.World; public class FleshBlock extends Block { - protected static final VoxelShape SHAPE = Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 14.0D, 16.0D); - public FleshBlock(Block.Properties properties) { super(properties); } @Override - public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext selectionContext) - { - return SHAPE; - } - - @Override - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) + public void onEntityWalk(World worldIn, BlockPos pos, Entity entityIn) { entityIn.setMotion(entityIn.getMotion().mul(0.95D, 1.0D, 0.95D)); } diff --git a/src/main/java/biomesoplenty/common/block/MudBlock.java b/src/main/java/biomesoplenty/common/block/MudBlock.java index 8472853bf..e2599c875 100644 --- a/src/main/java/biomesoplenty/common/block/MudBlock.java +++ b/src/main/java/biomesoplenty/common/block/MudBlock.java @@ -25,25 +25,17 @@ import java.util.Random; public class MudBlock extends Block { - protected static final VoxelShape SHAPE = Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 14.0D, 16.0D); - public MudBlock(Block.Properties properties) { super(properties); } @Override - public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext selectionContext) - { - return SHAPE; - } - - @Override - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) + public void onEntityWalk(World worldIn, BlockPos pos, Entity entityIn) { entityIn.setMotion(entityIn.getMotion().mul(0.5D, 1.0D, 0.5D)); } - + @Override public boolean canSustainPlant(BlockState state, IBlockReader world, BlockPos pos, Direction facing, net.minecraftforge.common.IPlantable plantable) { 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 590932db0..527c4a0e7 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/BOPBiomeFeatures.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBiomeFeatures.java @@ -15,6 +15,7 @@ import net.minecraft.block.LeavesBlock; import net.minecraft.block.SaplingBlock; import net.minecraft.util.Direction; import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.surfacebuilders.DefaultSurfaceBuilder; import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; @@ -47,7 +48,7 @@ public class BOPBiomeFeatures public static final AbstractTreeFeature BIG_MAGIC_TREE = new BigTreeFeature.Builder().log(BOPBlocks.magic_log.getDefaultState()).leaves(BOPBlocks.magic_leaves.getDefaultState()).create(); public static final AbstractTreeFeature GIANT_TREE = new BigTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.getDefaultState()).leaves(Blocks.DARK_OAK_LEAVES.getDefaultState().with(LeavesBlock.PERSISTENT, true)).minHeight(15).maxHeight(20).trunkWidth(4).create(); - public static final AbstractTreeFeature ETHEREAL_TREE = new BigTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.END_STONE || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.ethereal_log.getDefaultState()).leaves(BOPBlocks.ethereal_leaves.getDefaultState()).minHeight(8).maxHeight(15).foliageHeight(1).create(); + public static final AbstractTreeFeature ETHEREAL_TREE = new BigTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.END_STONE || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.ethereal_log.getDefaultState()).leaves(BOPBlocks.ethereal_leaves.getDefaultState()).foliageHeight(2).create(); //Conifer Trees public static final AbstractTreeFeature TALL_SPRUCE_TREE = new TaigaTreeFeature.Builder().log(Blocks.SPRUCE_LOG.getDefaultState()).leaves(Blocks.SPRUCE_LEAVES.getDefaultState()).maxHeight(13).create(); @@ -74,18 +75,18 @@ public class BOPBiomeFeatures //Sparse Trees public static final AbstractTreeFeature SPARSE_OAK_TREE = new BigTreeFeature.Builder().maxHeight(10).foliageHeight(2).create(); - public static final AbstractTreeFeature DYING_TREE = new BigTreeFeature.Builder().maxHeight(10).log(BOPBlocks.dead_log.getDefaultState()).leaves(BOPBlocks.dead_leaves.getDefaultState()).foliageHeight(2).create(); - public static final AbstractTreeFeature DYING_TREE_WASTELAND = new BigTreeFeature.Builder().maxHeight(10).placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.dried_sand).log(BOPBlocks.dead_log.getDefaultState()).leaves(BOPBlocks.dead_leaves.getDefaultState()).foliageHeight(2).create(); - public static final AbstractTreeFeature DYING_TREE_VOLCANO = new BigTreeFeature.Builder().maxHeight(10).placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRAVEL).log(BOPBlocks.dead_log.getDefaultState()).leaves(BOPBlocks.dead_leaves.getDefaultState()).foliageHeight(2).create(); + public static final AbstractTreeFeature DYING_TREE = new BigTreeFeature.Builder().log(BOPBlocks.dead_log.getDefaultState()).leaves(BOPBlocks.dead_leaves.getDefaultState()).maxHeight(10).foliageHeight(2).create(); + public static final AbstractTreeFeature DYING_TREE_WASTELAND = new BigTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.dried_sand).log(BOPBlocks.dead_log.getDefaultState()).leaves(BOPBlocks.dead_leaves.getDefaultState()).maxHeight(10).foliageHeight(2).create(); + public static final AbstractTreeFeature DYING_TREE_VOLCANO = new BigTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRAVEL).log(BOPBlocks.dead_log.getDefaultState()).leaves(BOPBlocks.dead_leaves.getDefaultState()).maxHeight(10).foliageHeight(2).create(); //Bushes/Twiglets - public static final AbstractTreeFeature BUSH = new BushTreeFeature.Builder().maxHeight(2).create(); - public static final AbstractTreeFeature ACACIA_BUSH = new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.RED_SAND).log(Blocks.ACACIA_LOG.getDefaultState()).leaves(Blocks.ACACIA_LEAVES.getDefaultState()).maxHeight(2).create(); - public static final AbstractTreeFeature FLOWERING_BUSH = new BushTreeFeature.Builder().altLeaves(BOPBlocks.flowering_oak_leaves.getDefaultState()).maxHeight(2).create(); - public static final AbstractTreeFeature COBWEB_BUSH = new BushTreeFeature.Builder().maxHeight(2).altLeaves(Blocks.COBWEB.getDefaultState()).create(); - public static final AbstractTreeFeature FULL_COBWEB_BUSH = new BushTreeFeature.Builder().maxHeight(2).leaves(Blocks.COBWEB.getDefaultState()).create(); - public static final AbstractTreeFeature 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.getDefaultState()).leaves(BOPBlocks.hellbark_leaves.getDefaultState()).maxHeight(2).create(); - public static final AbstractTreeFeature ETHEREAL_BUSH = new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.END_STONE || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.ethereal_log.getDefaultState()).leaves(BOPBlocks.ethereal_leaves.getDefaultState()).maxHeight(2).create(); + public static final AbstractTreeFeature BUSH = new BushTreeFeature.Builder().create(); + public static final AbstractTreeFeature ACACIA_BUSH = new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.RED_SAND).log(Blocks.ACACIA_LOG.getDefaultState()).leaves(Blocks.ACACIA_LEAVES.getDefaultState()).create(); + public static final AbstractTreeFeature FLOWERING_BUSH = new BushTreeFeature.Builder().altLeaves(BOPBlocks.flowering_oak_leaves.getDefaultState()).create(); + public static final AbstractTreeFeature COBWEB_BUSH = new BushTreeFeature.Builder().altLeaves(Blocks.COBWEB.getDefaultState()).create(); + public static final AbstractTreeFeature FULL_COBWEB_BUSH = new BushTreeFeature.Builder().leaves(Blocks.COBWEB.getDefaultState()).create(); + public static final AbstractTreeFeature 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.getDefaultState()).leaves(BOPBlocks.hellbark_leaves.getDefaultState()).create(); + public static final AbstractTreeFeature ETHEREAL_BUSH = new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.END_STONE || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.ethereal_log.getDefaultState()).leaves(BOPBlocks.ethereal_leaves.getDefaultState()).create(); public static final AbstractTreeFeature TWIGLET_TREE = new TwigletTreeFeature.Builder().minHeight(1).maxHeight(2).create(); public static final AbstractTreeFeature TALL_TWIGLET_TREE = new TwigletTreeFeature.Builder().minHeight(2).maxHeight(4).create(); @@ -112,7 +113,6 @@ public class BOPBiomeFeatures ///////////////////////////////////////////////////////////////////////////////// //Features - public static final Feature SPLOTCH = new SplotchFeature(SplotchConfig::deserialize); public static final Feature BRAMBLE = new BrambleFeature(NoFeatureConfig::deserialize); public static final Feature MANGROVE = new MangroveFeature(NoFeatureConfig::deserialize); public static final Feature PUMPKIN_PATCH = new PumpkinPatchFeature(NoFeatureConfig::deserialize); @@ -168,6 +168,7 @@ public class BOPBiomeFeatures public static final SurfaceBuilder PODZOL_SURFACE_BUILDER = new PodzolSurfaceBuilder(SurfaceBuilderConfig::deserialize); public static final SurfaceBuilder VOLCANO_SURFACE_BUILDER = new VolcanoSurfaceBuilder(SurfaceBuilderConfig::deserialize); public static final SurfaceBuilder VOLCANO_EDGE_SURFACE_BUILDER = new VolcanoEdgeSurfaceBuilder(SurfaceBuilderConfig::deserialize); + public static final SurfaceBuilder DEEP_TOP_LAYER = new DeepTopLayerSurfaceBuilder(SurfaceBuilderConfig::deserialize); public static final SurfaceBuilderConfig ASH_SURFACE = new SurfaceBuilderConfig(BOPBlocks.ash_block.getDefaultState(), BOPBlocks.ash_block.getDefaultState(), Blocks.GRAVEL.getDefaultState()); public static final SurfaceBuilderConfig TERRACOTTA_SURFACE = new SurfaceBuilderConfig(Blocks.TERRACOTTA.getDefaultState(), Blocks.TERRACOTTA.getDefaultState(), Blocks.GRAVEL.getDefaultState()); diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BoneSpineFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BoneSpineFeature.java index 5a18dfc35..e4000532b 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/BoneSpineFeature.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BoneSpineFeature.java @@ -51,7 +51,7 @@ public class BoneSpineFeature extends Feature int height = 2 + p_212245_3_.nextInt(2); boolean spine = false; - if (p_212245_3_.nextInt(4) == 0) + if (p_212245_3_.nextInt(3) == 0) { spine = true; height = 2 + p_212245_3_.nextInt(maxHeight + 1); diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/DeepTopLayerSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/feature/DeepTopLayerSurfaceBuilder.java new file mode 100644 index 000000000..31374cb70 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/DeepTopLayerSurfaceBuilder.java @@ -0,0 +1,79 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.datafixers.Dynamic; +import java.util.Random; +import java.util.function.Function; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +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; + +public class DeepTopLayerSurfaceBuilder extends SurfaceBuilder { + public DeepTopLayerSurfaceBuilder(Function, ? extends SurfaceBuilderConfig> p_i51315_1_) { + super(p_i51315_1_); + } + + public void buildSurface(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + this.buildSurface(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTop(), config.getUnder(), config.getUnderWaterMaterial(), seaLevel); + } + + protected void buildSurface(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) { + BlockState blockstate = top; + BlockState blockstate1 = middle; + BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); + int i = -1; + int j = (int)(noise / 3.0D + 8.0D + random.nextDouble() * 0.25D); + int k = x & 15; + int l = z & 15; + + for(int i1 = startHeight; i1 >= 0; --i1) { + blockpos$mutableblockpos.setPos(k, i1, l); + BlockState blockstate2 = chunkIn.getBlockState(blockpos$mutableblockpos); + if (blockstate2.isAir()) { + i = -1; + } else if (blockstate2.getBlock() == defaultBlock.getBlock()) { + if (i == -1) { + if (j <= 0) { + blockstate = Blocks.AIR.getDefaultState(); + blockstate1 = defaultBlock; + } else if (i1 >= sealevel - 4 && i1 <= sealevel + 1) { + blockstate = top; + blockstate1 = middle; + } + + if (i1 < sealevel && (blockstate == null || blockstate.isAir())) { + if (biomeIn.func_225486_c(blockpos$mutableblockpos.setPos(x, i1, z)) < 0.15F) { + blockstate = Blocks.ICE.getDefaultState(); + } else { + blockstate = defaultFluid; + } + + blockpos$mutableblockpos.setPos(k, i1, l); + } + + i = j; + if (i1 >= sealevel - 1) { + chunkIn.setBlockState(blockpos$mutableblockpos, blockstate, false); + } else if (i1 < sealevel - 7 - j) { + blockstate = Blocks.AIR.getDefaultState(); + blockstate1 = defaultBlock; + chunkIn.setBlockState(blockpos$mutableblockpos, bottom, false); + } else { + chunkIn.setBlockState(blockpos$mutableblockpos, blockstate1, false); + } + } else if (i > 0) { + --i; + chunkIn.setBlockState(blockpos$mutableblockpos, blockstate1, false); + if (i == 0 && blockstate1.getBlock() == Blocks.SAND && j > 1) { + i = random.nextInt(4) + Math.max(0, i1 - 63); + blockstate1 = blockstate1.getBlock() == Blocks.RED_SAND ? Blocks.RED_SANDSTONE.getDefaultState() : Blocks.SANDSTONE.getDefaultState(); + } + } + } + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SplotchConfig.java b/src/main/java/biomesoplenty/common/world/gen/feature/SplotchConfig.java deleted file mode 100644 index ef7b0e64a..000000000 --- a/src/main/java/biomesoplenty/common/world/gen/feature/SplotchConfig.java +++ /dev/null @@ -1,43 +0,0 @@ -package biomesoplenty.common.world.gen.feature; - -import com.google.common.collect.ImmutableMap; -import com.mojang.datafixers.Dynamic; -import com.mojang.datafixers.types.DynamicOps; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.world.gen.feature.IFeatureConfig; - -import java.util.List; - -public class SplotchConfig implements IFeatureConfig -{ - public final BlockState state; - public final int radius; - public final int ySize; - public final List targets; - - public SplotchConfig(BlockState state, int radius, int ySize, List targets) - { - this.state = state; - this.radius = radius; - this.ySize = ySize; - this.targets = targets; - } - - @Override - public Dynamic serialize(DynamicOps dynamicOps) - { - return new Dynamic<>(dynamicOps, dynamicOps.createMap(ImmutableMap.of(dynamicOps.createString("state"), BlockState.serialize(dynamicOps, this.state).getValue(), dynamicOps.createString("radius"), dynamicOps.createInt(this.radius), dynamicOps.createString("y_size"), dynamicOps.createInt(this.ySize), dynamicOps.createString("targets"), dynamicOps.createList(this.targets.stream().map((p_214692_1_) -> { - return BlockState.serialize(dynamicOps, p_214692_1_).getValue(); - }))))); - } - - public static SplotchConfig deserialize(Dynamic dynamicOps) - { - BlockState lvt_1_1_ = (BlockState)dynamicOps.get("state").map(BlockState::deserialize).orElse(Blocks.AIR.getDefaultState()); - int lvt_2_1_ = dynamicOps.get("radius").asInt(0); - int lvt_3_1_ = dynamicOps.get("y_size").asInt(0); - List lvt_4_1_ = dynamicOps.get("targets").asList(BlockState::deserialize); - return new SplotchConfig(lvt_1_1_, lvt_2_1_, lvt_3_1_, lvt_4_1_); - } -} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SplotchFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/SplotchFeature.java deleted file mode 100644 index ec346002e..000000000 --- a/src/main/java/biomesoplenty/common/world/gen/feature/SplotchFeature.java +++ /dev/null @@ -1,66 +0,0 @@ -package biomesoplenty.common.world.gen.feature; - -import com.mojang.datafixers.Dynamic; -import net.minecraft.block.Block; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorld; -import net.minecraft.world.gen.ChunkGenerator; -import net.minecraft.world.gen.GenerationSettings; -import net.minecraft.world.gen.feature.Feature; - -import java.util.Random; -import java.util.function.Function; - -public class SplotchFeature extends Feature -{ - public SplotchFeature(Function, ? extends SplotchConfig> deserializer) - { - super(deserializer); - } - - @Override - public boolean place(IWorld p_212245_1_, ChunkGenerator p_212245_2_, Random p_212245_3_, BlockPos p_212245_4_, SplotchConfig p_212245_5_) - { - int i = 0; - int j = p_212245_3_.nextInt(p_212245_5_.radius - 2) + 2; - - for(int k = p_212245_4_.getX() - j; k <= p_212245_4_.getX() + j; ++k) { - for(int l = p_212245_4_.getZ() - j; l <= p_212245_4_.getZ() + j; ++l) { - int i1 = k - p_212245_4_.getX(); - int j1 = l - p_212245_4_.getZ(); - if (i1 * i1 + j1 * j1 <= j * j) { - for(int k1 = p_212245_4_.getY() - p_212245_5_.ySize; k1 <= p_212245_4_.getY() + p_212245_5_.ySize; ++k1) { - BlockPos blockpos = new BlockPos(k, k1, l); - BlockPos blockpos1 = blockpos.north(); - BlockPos blockpos2 = blockpos.south(); - BlockPos blockpos3 = blockpos.east(); - BlockPos blockpos4 = blockpos.west(); - BlockPos blockpos5 = blockpos.north().east(); - BlockPos blockpos6 = blockpos.south().east(); - BlockPos blockpos7 = blockpos.north().west(); - BlockPos blockpos8 = blockpos.south().west(); - BlockPos blockpos9 = blockpos.down(); - Block block = p_212245_1_.getBlockState(blockpos).getBlock(); - Block block1 = p_212245_1_.getBlockState(blockpos1).getBlock(); - Block block2 = p_212245_1_.getBlockState(blockpos2).getBlock(); - Block block3 = p_212245_1_.getBlockState(blockpos3).getBlock(); - Block block4 = p_212245_1_.getBlockState(blockpos4).getBlock(); - Block block5 = p_212245_1_.getBlockState(blockpos5).getBlock(); - Block block6 = p_212245_1_.getBlockState(blockpos6).getBlock(); - Block block7 = p_212245_1_.getBlockState(blockpos7).getBlock(); - Block block8 = p_212245_1_.getBlockState(blockpos8).getBlock(); - Block block9 = p_212245_1_.getBlockState(blockpos9).getBlock(); - - if (p_212245_5_.targets.contains(block) && p_212245_5_.targets.contains(block1) && p_212245_5_.targets.contains(block2) && p_212245_5_.targets.contains(block3) && p_212245_5_.targets.contains(block4) && p_212245_5_.targets.contains(block5) && p_212245_5_.targets.contains(block6) && p_212245_5_.targets.contains(block7) && p_212245_5_.targets.contains(block8) && p_212245_5_.targets.contains(block9)) - { - p_212245_1_.setBlockState(blockpos, p_212245_5_.state, 2); - ++i; - } - } - } - } - } - - return i > 0; - } -} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/VolcanoSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/feature/VolcanoSurfaceBuilder.java index 2875f9812..a7e4d5545 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/VolcanoSurfaceBuilder.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/VolcanoSurfaceBuilder.java @@ -33,7 +33,7 @@ public class VolcanoSurfaceBuilder extends SurfaceBuilder } else { - SurfaceBuilder.DEFAULT.buildSurface(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPBiomeFeatures.ASH_SURFACE); + BOPBiomeFeatures.DEEP_TOP_LAYER.buildSurface(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPBiomeFeatures.ASH_SURFACE); } } } \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BigTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BigTreeFeature.java index 1ca3937e5..7af4a58a8 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BigTreeFeature.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BigTreeFeature.java @@ -387,7 +387,7 @@ public class BigTreeFeature extends TreeFeatureBase private int checkLocation(Set changedBlocks, IWorld world, BlockPos pos, int height, MutableBoundingBox boundingBox) { - if (!this.isSoilOrFarm(world, pos.down(), getSapling())) + if (!this.placeOn.matches(world, pos.down())) { return -1; } diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BushTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BushTreeFeature.java index 97e23fb08..53baf69f4 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BushTreeFeature.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BushTreeFeature.java @@ -26,7 +26,7 @@ public class BushTreeFeature extends TreeFeatureBase public Builder() { this.minHeight = 2; - this.maxHeight = 4; + this.maxHeight = 2; } @Override diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/TrunkTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TrunkTreeFeature.java index 6d5ee5362..de3bd5959 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/tree/TrunkTreeFeature.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TrunkTreeFeature.java @@ -24,8 +24,8 @@ public class TrunkTreeFeature extends TreeFeatureBase { public Builder() { - this.minHeight = 6; - this.maxHeight = 9; + this.minHeight = 7; + this.maxHeight = 11; } @Override diff --git a/src/main/java/biomesoplenty/init/ModVanillaCompat.java b/src/main/java/biomesoplenty/init/ModVanillaCompat.java index 030db32ee..45eee6094 100644 --- a/src/main/java/biomesoplenty/init/ModVanillaCompat.java +++ b/src/main/java/biomesoplenty/init/ModVanillaCompat.java @@ -32,9 +32,7 @@ public class ModVanillaCompat addFeature(Biomes.DARK_FOREST, GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(BOPBlocks.toadstool.getDefaultState()), Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(3))); addFeature(Biomes.DARK_FOREST_HILLS, GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(BOPBlocks.toadstool.getDefaultState()), Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(3))); - addFeature(Biomes.FOREST, GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(BOPBlocks.toadstool.getDefaultState()), Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(1))); addFeature(Biomes.FOREST, GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(BOPBlocks.sprout.getDefaultState()), Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(4))); - addFeature(Biomes.WOODED_HILLS, GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(BOPBlocks.toadstool.getDefaultState()), Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(1))); addFeature(Biomes.WOODED_HILLS, GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(Feature.BUSH, new BushConfig(BOPBlocks.sprout.getDefaultState()), Placement.COUNT_HEIGHTMAP_DOUBLE, new FrequencyConfig(4))); addFeature(Biomes.FLOWER_FOREST, GenerationStage.Decoration.VEGETAL_DECORATION, Biome.createDecoratedFeature(BOPBiomeFeatures.JACARANDA_TREE, IFeatureConfig.NO_FEATURE_CONFIG, Placement.COUNT_EXTRA_HEIGHTMAP, new AtSurfaceWithExtraConfig(1, 0.1F, 1)));