diff --git a/src/main/java/biomesoplenty/api/block/BOPBlocks.java b/src/main/java/biomesoplenty/api/block/BOPBlocks.java index 1494163e5..1f03f9f6e 100644 --- a/src/main/java/biomesoplenty/api/block/BOPBlocks.java +++ b/src/main/java/biomesoplenty/api/block/BOPBlocks.java @@ -259,6 +259,10 @@ public class BOPBlocks public static Block cattail; public static Block tall_cattail; + public static Block reed; + public static Block watergrass; + public static Block mangrove_root; + public static Block toadstool; public static Block glowshroom; diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java index 149456896..f8a0b2fdd 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java @@ -90,6 +90,7 @@ public class BayouBiome extends BiomeBOP 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(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(5))); 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))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BogBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BogBiome.java index 44c7fc770..aefd3914b 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BogBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BogBiome.java @@ -89,6 +89,7 @@ public class BogBiome extends BiomeBOP this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.DARK_OAK_TWIGLET_TREE, BOPBiomeFeatures.TALL_TWIGLET_TREE, BOPBiomeFeatures.DEAD_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.8F, 0.4F, 0.1F}, BOPBiomeFeatures.DYING_TREE, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(3, 0.2F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BIG_BROWN_MUSHROOM, IFeatureConfig.NO_FEATURE_CONFIG, AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig((int)0.8F, 0.1F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(6))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.bush), TWICE_SURFACE, new FrequencyConfig(17))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(Blocks.BROWN_MUSHROOM), TWICE_SURFACE_WITH_CHANCE, new ChanceConfig(15))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(Blocks.RED_MUSHROOM), TWICE_SURFACE_WITH_CHANCE, new ChanceConfig(8))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BogMireBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BogMireBiome.java index 769044e3c..9f5cb1e3e 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BogMireBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BogMireBiome.java @@ -84,6 +84,7 @@ public class BogMireBiome extends BiomeBOP // Vegetation this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(6))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(5))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(Blocks.BROWN_MUSHROOM), TWICE_SURFACE_WITH_CHANCE, new ChanceConfig(15))); 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.SEA_GRASS, new SeaGrassConfig(64, 0.6D), TOP_SOLID_ONCE, IPlacementConfig.NO_PLACEMENT_CONFIG)); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BorealForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BorealForestBiome.java index 8a5cfa7c7..24a28ead8 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BorealForestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BorealForestBiome.java @@ -84,6 +84,7 @@ public class BorealForestBiome extends BiomeBOP // Vegetation this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.OAK_TREE, BOPBiomeFeatures.BIG_YELLOW_AUTUMN_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.1F, 0.3F}, BOPBiomeFeatures.TALL_SPRUCE_TREE, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(12, 0.3F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new FernGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(8))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(5))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.bush), TWICE_SURFACE, new FrequencyConfig(7))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFlowerFeature(Feature.DEFAULT_FLOWERS, SURFACE_PLUS_32, new FrequencyConfig(6))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.PUMPKIN, IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE_WITH_CHANCE, new ChanceConfig(32))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java index 24842a60b..05eb33700 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java @@ -82,6 +82,7 @@ public class ConiferousForestBiome extends BiomeBOP this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.CONIFEROUS_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.33333334F}, BOPBiomeFeatures.CONIFEROUS_TREE_LARGE, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(10, 0.1F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFlowerFeature(Feature.DEFAULT_FLOWERS, SURFACE_PLUS_32, new FrequencyConfig(2))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new FernGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(4))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(5))); 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.BUSH, new BushConfig(BOPBlocks.toadstool), TWICE_SURFACE_WITH_CHANCE, new ChanceConfig(6))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/FloodplainBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/FloodplainBiome.java index afa9bf69e..1484af221 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/FloodplainBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/FloodplainBiome.java @@ -7,6 +7,7 @@ ******************************************************************************/ package biomesoplenty.common.biome.overworld; +import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.api.enums.BOPClimates; import biomesoplenty.common.biome.BiomeBOP; import biomesoplenty.common.world.gen.feature.BOPBiomeFeatures; @@ -17,6 +18,7 @@ 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.DoublePlantConfig; import net.minecraft.world.gen.feature.Feature; import net.minecraft.world.gen.feature.IFeatureConfig; @@ -76,6 +78,7 @@ public class FloodplainBiome extends BiomeBOP this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(BOPBiomeFeatures.BUSH, IFeatureConfig.NO_FEATURE_CONFIG, AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(15, 0.3F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.DOUBLE_PLANT, new DoublePlantConfig(Blocks.TALL_GRASS.getDefaultState()), SURFACE_PLUS_32, new FrequencyConfig(25))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.watergrass), TWICE_SURFACE, new FrequencyConfig(150))); 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.VEGETAL_DECORATION, createCompositeFeature(Feature.WATERLILY, IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(200))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.LIQUIDS, new LiquidsConfig(Fluids.WATER), HEIGHT_BIASED_RANGE, new CountRangeConfig(50, 8, 8, 256))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java index 0eece03be..662b3bb89 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java @@ -9,6 +9,7 @@ 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.StandardGrassFeature; @@ -19,6 +20,7 @@ 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.Feature; import net.minecraft.world.gen.feature.IFeatureConfig; import net.minecraft.world.gen.feature.LakesConfig; @@ -80,6 +82,7 @@ public class GrasslandBiome extends BiomeBOP // Vegetation this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(4))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.REED, IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(30))); 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))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MarshBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MarshBiome.java index f76a1c68c..8f374e801 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/MarshBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/MarshBiome.java @@ -7,6 +7,7 @@ ******************************************************************************/ package biomesoplenty.common.biome.overworld; +import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.api.enums.BOPClimates; import biomesoplenty.common.biome.BiomeBOP; import biomesoplenty.common.world.gen.feature.BOPBiomeFeatures; @@ -17,6 +18,7 @@ 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.DoublePlantConfig; import net.minecraft.world.gen.feature.Feature; import net.minecraft.world.gen.feature.IFeatureConfig; @@ -75,6 +77,7 @@ public class MarshBiome extends BiomeBOP this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.DOUBLE_PLANT, new DoublePlantConfig(Blocks.TALL_GRASS.getDefaultState()), SURFACE_PLUS_32, new FrequencyConfig(50))); 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.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.watergrass), TWICE_SURFACE, new FrequencyConfig(50))); 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.UNDERGROUND_DECORATION, createCompositeFeature(Feature.FOSSILS, IFeatureConfig.NO_FEATURE_CONFIG, WITH_CHANCE, new ChanceConfig(64))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/OvergrownCliffsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/OvergrownCliffsBiome.java index 9acad2b3c..deacc8126 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/OvergrownCliffsBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/OvergrownCliffsBiome.java @@ -9,6 +9,7 @@ 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; @@ -20,6 +21,7 @@ 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.DoublePlantConfig; import net.minecraft.world.gen.feature.Feature; import net.minecraft.world.gen.feature.IFeatureConfig; @@ -88,11 +90,13 @@ public class OvergrownCliffsBiome extends BiomeBOP // Vegetation this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.JUNGLE_TWIGLET_TREE, BOPBiomeFeatures.MAHOGANY_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.3F, 0.2F}, BOPBiomeFeatures.BUSH, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(18, 0.4F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFlowerFeature(BOPBiomeFeatures.JUNGLE_FLOWERS, SURFACE_PLUS_32, new FrequencyConfig(5))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.watergrass), TWICE_SURFACE, new FrequencyConfig(50))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(15))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.DOUBLE_PLANT, new DoublePlantConfig(Blocks.TALL_GRASS.getDefaultState()), SURFACE_PLUS_32, new FrequencyConfig(25))); 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.VINES, IFeatureConfig.NO_FEATURE_CONFIG, AT_HEIGHT_64, new FrequencyConfig(50))); this.addFeature(GenerationStage.Decoration.TOP_LAYER_MODIFICATION, createCompositeFeature(Feature.ICE_AND_SNOW, IFeatureConfig.NO_FEATURE_CONFIG, PASSTHROUGH, IPlacementConfig.NO_PLACEMENT_CONFIG)); // Entity spawning diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java index 71d338dae..2a1f7260c 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java @@ -9,6 +9,7 @@ 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; @@ -93,6 +94,7 @@ public class RainforestBiome extends BiomeBOP // Vegetation this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{Feature.JUNGLE_TREE, BOPBiomeFeatures.PALM_TREE, BOPBiomeFeatures.BIG_OAK_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.1F, 0.2F, 0.4F}, BOPBiomeFeatures.FLOWERING_OAK_TREE, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(12, 0.5F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFlowerFeature(BOPBiomeFeatures.RAINFOREST_FLOWERS, SURFACE_PLUS_32, new FrequencyConfig(8))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.watergrass), TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new FernGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(15))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.DOUBLE_PLANT, new DoublePlantConfig(Blocks.TALL_GRASS.getDefaultState()), SURFACE_PLUS_32, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(Blocks.BROWN_MUSHROOM), TWICE_SURFACE_WITH_CHANCE, new ChanceConfig(4))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java index ee5af43b5..85be45005 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java @@ -86,6 +86,7 @@ public class SeasonalForestBiome extends BiomeBOP // Vegetation this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.BIG_OAK_TREE, BOPBiomeFeatures.DYING_TREE, BOPBiomeFeatures.MAPLE_TREE, BOPBiomeFeatures.YELLOW_AUTUMN_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.05F, 0.1F, 0.2F, 0.3F}, BOPBiomeFeatures.ORANGE_AUTUMN_TREE, 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(Feature.BUSH, new BushConfig(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(5))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(3))); 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))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ShieldBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ShieldBiome.java index b12eda66b..8280c657e 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/ShieldBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/ShieldBiome.java @@ -85,6 +85,8 @@ public class ShieldBiome extends BiomeBOP this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.BUSH}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.3F}, BOPBiomeFeatures.TALL_SPRUCE_TREE, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(6, 0.1F, 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.reed), TWICE_SURFACE, new FrequencyConfig(5))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.watergrass), TWICE_SURFACE, new FrequencyConfig(5))); 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.BUSH, new BushConfig(BOPBlocks.toadstool), TWICE_SURFACE_WITH_CHANCE, new ChanceConfig(3))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ShrublandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ShrublandBiome.java index 19bc0d4a7..c7eb0e257 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/ShrublandBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/ShrublandBiome.java @@ -82,6 +82,7 @@ public class ShrublandBiome extends BiomeBOP // Vegetation this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(BOPBiomeFeatures.BUSH, IFeatureConfig.NO_FEATURE_CONFIG, AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(1, 0.05F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFlowerFeature(BOPBiomeFeatures.SHRUBLAND_FLOWERS, SURFACE_PLUS_32, new FrequencyConfig(3))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(10))); 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(12))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.LIQUIDS, new LiquidsConfig(Fluids.WATER), HEIGHT_BIASED_RANGE, new CountRangeConfig(50, 8, 8, 256))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeBiome.java index 6b931da08..0b0794793 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeBiome.java @@ -59,7 +59,7 @@ public class SilkgladeBiome extends BiomeBOP this.addStructure(Feature.MINESHAFT, new MineshaftConfig(0.004D, MineshaftStructure.Type.NORMAL)); this.addStructure(Feature.STRONGHOLD, new StrongholdConfig()); - this.addCarver(GenerationStage.Carving.AIR, createWorldCarverWrapper(BOPBiomeFeatures.SPIDER_CAVE_WORLD_CARVER, new ProbabilityConfig(0.14285715F))); + 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(); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SteppeBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SteppeBiome.java index b8b9329cd..f514bc47c 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/SteppeBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/SteppeBiome.java @@ -82,6 +82,7 @@ public class SteppeBiome extends BiomeBOP // Vegetation this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(10))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.DOUBLE_PLANT, new DoublePlantConfig(Blocks.TALL_GRASS.getDefaultState()), SURFACE_PLUS_32, new FrequencyConfig(4))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.desert_grass), TWICE_SURFACE, new FrequencyConfig(20))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.barley), TWICE_SURFACE, new FrequencyConfig(5))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TemperateRainforestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TemperateRainforestBiome.java index 849e20c53..a22533d71 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/TemperateRainforestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/TemperateRainforestBiome.java @@ -9,6 +9,7 @@ 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; @@ -86,6 +87,7 @@ public class TemperateRainforestBiome extends BiomeBOP this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.SWAMP_TREE, BOPBiomeFeatures.BIG_OAK_TREE, BOPBiomeFeatures.SEQUOIA_TREE_LARGE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG, IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.3F, 0.1F, 0.5F}, BOPBiomeFeatures.SEQUOIA_TREE_LARGE, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(10, 0.2F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new FernGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.DOUBLE_PLANT, new DoublePlantConfig(Blocks.LARGE_FERN.getDefaultState()), SURFACE_PLUS_32, new FrequencyConfig(15))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFlowerFeature(Feature.DEFAULT_FLOWERS, SURFACE_PLUS_32, new FrequencyConfig(2))); 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))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TropicalRainforestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TropicalRainforestBiome.java index 3f8827166..9cc87d21c 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/TropicalRainforestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/TropicalRainforestBiome.java @@ -9,6 +9,7 @@ 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; @@ -89,6 +90,7 @@ public class TropicalRainforestBiome extends BiomeBOP // Vegetation this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{Feature.JUNGLE_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.1F}, BOPBiomeFeatures.MAHOGANY_TREE, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(12, 0.3F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFlowerFeature(BOPBiomeFeatures.JUNGLE_FLOWERS, SURFACE_PLUS_32, new FrequencyConfig(6))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.watergrass), TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new FernGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(15))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.DOUBLE_PLANT, new DoublePlantConfig(Blocks.TALL_GRASS.getDefaultState()), SURFACE_PLUS_32, new FrequencyConfig(15))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.DOUBLE_PLANT, new DoublePlantConfig(Blocks.LARGE_FERN.getDefaultState()), SURFACE_PLUS_32, new FrequencyConfig(6))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TundraBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TundraBiome.java index dc259ec03..64add3bda 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/TundraBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/TundraBiome.java @@ -87,6 +87,7 @@ public class TundraBiome extends BiomeBOP this.addFeature(GenerationStage.Decoration.LOCAL_MODIFICATIONS, createCompositeFeature(Feature.BLOCK_BLOB, new BlockBlobConfig(Blocks.COBBLESTONE, 0), AT_SURFACE_RANDOM_COUNT, new FrequencyConfig(1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.DEAD_TWIGLET_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.1F}, BOPBiomeFeatures.MAPLE_TWIGLET_TREE, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(4, 0.3F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new StandardGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(6))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(5))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.bush), 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))); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WetlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WetlandBiome.java index ff669335c..238ff2e99 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/WetlandBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/WetlandBiome.java @@ -90,6 +90,8 @@ public class WetlandBiome extends BiomeBOP this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.RANDOM_FEATURE_LIST, new RandomDefaultFeatureListConfig(new Feature[]{BOPBiomeFeatures.TALL_SPRUCE_TREE}, new IFeatureConfig[]{IFeatureConfig.NO_FEATURE_CONFIG}, new float[]{0.33333334F}, BOPBiomeFeatures.WILLOW_TREE, IFeatureConfig.NO_FEATURE_CONFIG), AT_SURFACE_WITH_EXTRA, new AtSurfaceWithExtraConfig(6, 0.1F, 1))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFlowerFeature(BOPBiomeFeatures.WETLAND_FLOWERS, SURFACE_PLUS_32, new FrequencyConfig(3))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(new FernGrassFeature(), IFeatureConfig.NO_FEATURE_CONFIG, TWICE_SURFACE, new FrequencyConfig(8))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.reed), TWICE_SURFACE, new FrequencyConfig(10))); + this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.watergrass), TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.DOUBLE_PLANT, new DoublePlantConfig(BOPBlocks.tall_cattail.getDefaultState()), SURFACE_PLUS_32, new FrequencyConfig(5))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(BOPBlocks.cattail), TWICE_SURFACE, new FrequencyConfig(10))); this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, createCompositeFeature(Feature.BUSH, new BushConfig(Blocks.BROWN_MUSHROOM), TWICE_SURFACE_WITH_CHANCE, new ChanceConfig(4))); diff --git a/src/main/java/biomesoplenty/common/block/BlockWaterTopPlant.java b/src/main/java/biomesoplenty/common/block/BlockWaterTopPlant.java new file mode 100644 index 000000000..e7e4078d9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/BlockWaterTopPlant.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * 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.Block; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.fluid.IFluidState; +import net.minecraft.init.Blocks; +import net.minecraft.init.Fluids; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorldReaderBase; + +public class BlockWaterTopPlant extends BlockPlantBOP +{ + public BlockWaterTopPlant(Block.Properties properties) + { + super(properties); + } + + @Override + public boolean isValidPosition(IBlockState state, IWorldReaderBase worldIn, BlockPos pos) + { + IFluidState ifluidstate = worldIn.getFluidState(pos.down()); + Block ground = worldIn.getBlockState(pos.down(2)).getBlock(); + return (ifluidstate.getFluid() == Fluids.WATER || state.getMaterial() == Material.ICE) && (ground == Blocks.DIORITE || ground == Blocks.GRANITE || ground == Blocks.ANDESITE || ground == Blocks.STONE || ground == Blocks.DIRT || ground == Blocks.COARSE_DIRT || ground == Blocks.GRASS_BLOCK || ground == Blocks.GRAVEL || ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == BOPBlocks.mud || ground == BOPBlocks.dried_sand); + } +} diff --git a/src/main/java/biomesoplenty/common/item/ItemWaterTopPlant.java b/src/main/java/biomesoplenty/common/item/ItemWaterTopPlant.java new file mode 100644 index 000000000..ae621bb3e --- /dev/null +++ b/src/main/java/biomesoplenty/common/item/ItemWaterTopPlant.java @@ -0,0 +1,105 @@ +package biomesoplenty.common.item; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.advancements.CriteriaTriggers; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.fluid.IFluidState; +import net.minecraft.init.Blocks; +import net.minecraft.init.Fluids; +import net.minecraft.init.SoundEvents; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; +import net.minecraft.stats.StatList; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.world.World; + +public class ItemWaterTopPlant extends ItemBlock +{ + private Block block; + + public ItemWaterTopPlant(Block blockIn, Item.Properties builder) + { + super(blockIn, builder); + this.block = blockIn; + } + + /** + * Called when this item is used when targetting a Block + */ + @Override + public EnumActionResult onItemUse(ItemUseContext context) + { + return EnumActionResult.PASS; + } + + /** + * Called to trigger the item's "innate" right click behavior. To handle when this item is used on a Block, see + * {@link #onItemUse}. + */ + @Override + public ActionResult onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) + { + ItemStack itemstack = playerIn.getHeldItem(handIn); + RayTraceResult raytraceresult = this.rayTrace(worldIn, playerIn, true); + if (raytraceresult == null) + { + return new ActionResult<>(EnumActionResult.PASS, itemstack); + } + else + { + if (raytraceresult.type == RayTraceResult.Type.BLOCK) + { + BlockPos blockpos = raytraceresult.getBlockPos(); + if (!worldIn.isBlockModifiable(playerIn, blockpos) || !playerIn.canPlayerEdit(blockpos.offset(raytraceresult.sideHit), raytraceresult.sideHit, itemstack)) + { + return new ActionResult<>(EnumActionResult.FAIL, itemstack); + } + + BlockPos blockpos1 = blockpos.up(); + IBlockState iblockstate = worldIn.getBlockState(blockpos); + Material material = iblockstate.getMaterial(); + IFluidState ifluidstate = worldIn.getFluidState(blockpos); + Block ground = worldIn.getBlockState(blockpos.down()).getBlock(); + if ((ifluidstate.getFluid() == Fluids.WATER || material == Material.ICE) && worldIn.isAirBlock(blockpos1) && (ground == Blocks.DIORITE || ground == Blocks.GRANITE || ground == Blocks.ANDESITE || ground == Blocks.STONE || ground == Blocks.DIRT || ground == Blocks.COARSE_DIRT || ground == Blocks.GRASS_BLOCK || ground == Blocks.GRAVEL || ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == BOPBlocks.mud || ground == BOPBlocks.dried_sand)) + { + + // special case for handling block placement with water lilies + net.minecraftforge.common.util.BlockSnapshot blocksnapshot = net.minecraftforge.common.util.BlockSnapshot.getBlockSnapshot(worldIn, blockpos1); + worldIn.setBlockState(blockpos1, this.block.getDefaultState(), 11); + if (net.minecraftforge.event.ForgeEventFactory.onPlayerBlockPlace(playerIn, blocksnapshot, net.minecraft.util.EnumFacing.UP, handIn).isCanceled()) + { + blocksnapshot.restore(true, false); + return new ActionResult(EnumActionResult.FAIL, itemstack); + } + + if (playerIn instanceof EntityPlayerMP) + { + CriteriaTriggers.PLACED_BLOCK.trigger((EntityPlayerMP)playerIn, blockpos1, itemstack); + } + + if (!playerIn.abilities.isCreativeMode) + { + itemstack.shrink(1); + } + + playerIn.addStat(StatList.ITEM_USED.get(this)); + worldIn.playSound(playerIn, blockpos, SoundEvents.BLOCK_LILY_PAD_PLACE, SoundCategory.BLOCKS, 1.0F, 1.0F); + return new ActionResult<>(EnumActionResult.SUCCESS, itemstack); + } + } + + return new ActionResult<>(EnumActionResult.FAIL, itemstack); + } + } +} \ No newline at end of file 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 14fe678f9..40050cfbb 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/BOPBiomeFeatures.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBiomeFeatures.java @@ -128,6 +128,4 @@ public class BOPBiomeFeatures public static final SurfaceBuilderConfig SNOW_SNOW_GRAVEL_SURFACE = new SurfaceBuilderConfig(Blocks.SNOW_BLOCK.getDefaultState(), Blocks.SNOW_BLOCK.getDefaultState(), Blocks.GRAVEL.getDefaultState()); public static final SurfaceBuilderConfig WHITE_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.white_sand.getDefaultState(), BOPBlocks.white_sand.getDefaultState(), BOPBlocks.white_sand.getDefaultState()); public static final SurfaceBuilderConfig DRIED_SAND_GRAVEL_SURFACE = new SurfaceBuilderConfig(BOPBlocks.dried_sand.getDefaultState(), BOPBlocks.dried_sand.getDefaultState(), BOPBlocks.dried_sand.getDefaultState()); - - public static final WorldCarver SPIDER_CAVE_WORLD_CARVER = new SpiderCaveWorldCarver(); } diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SpiderCaveWorldCarver.java b/src/main/java/biomesoplenty/common/world/gen/feature/SpiderCaveWorldCarver.java deleted file mode 100644 index 1d4e83375..000000000 --- a/src/main/java/biomesoplenty/common/world/gen/feature/SpiderCaveWorldCarver.java +++ /dev/null @@ -1,192 +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.world.gen.feature; - -import java.util.BitSet; -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Lists; - -import biomesoplenty.api.block.BOPBlocks; -import biomesoplenty.common.block.BlockBramble; -import biomesoplenty.common.util.biome.GeneratorUtil; -import biomesoplenty.common.util.block.IBlockPosQuery; -import net.minecraft.block.BlockLeaves; -import net.minecraft.block.BlockSapling; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.init.Blocks; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.gen.IChunkGenSettings; -import net.minecraft.world.gen.IChunkGenerator; -import net.minecraft.world.gen.carver.WorldCarver; -import net.minecraft.world.gen.feature.Feature; -import net.minecraft.world.gen.feature.NoFeatureConfig; -import net.minecraft.world.gen.feature.ProbabilityConfig; - -public class SpiderCaveWorldCarver extends WorldCarver { - public boolean func_212246_a(IBlockReader p_212246_1_, Random p_212246_2_, int p_212246_3_, int p_212246_4_, ProbabilityConfig p_212246_5_) { - return p_212246_2_.nextFloat() <= p_212246_5_.probability; - } - - public boolean carve(IWorld region, Random random, int chunkX, int chunkZ, int originalX, int originalZ, BitSet mask, ProbabilityConfig config) { - int i = (this.func_202520_b() * 2 - 1) * 16; - int j = random.nextInt(random.nextInt(random.nextInt(15) + 1) + 1); - - for(int k = 0; k < j; ++k) { - double d0 = (double)(chunkX * 16 + random.nextInt(16)); - double d1 = (double)random.nextInt(random.nextInt(120) + 8); - double d2 = (double)(chunkZ * 16 + random.nextInt(16)); - int l = 1; - if (random.nextInt(4) == 0) { - double d3 = 0.5D; - float f1 = 1.0F + random.nextFloat() * 6.0F; - this.addRoom(region, random.nextLong(), originalX, originalZ, d0, d1, d2, f1, 0.5D, mask); - l += random.nextInt(4); - } - - for(int k1 = 0; k1 < l; ++k1) { - float f = random.nextFloat() * ((float)Math.PI * 2F); - float f3 = (random.nextFloat() - 0.5F) / 4.0F; - double d4 = 1.0D; - float f2 = random.nextFloat() * 2.0F + random.nextFloat(); - if (random.nextInt(10) == 0) { - f2 *= random.nextFloat() * random.nextFloat() * 3.0F + 1.0F; - } - - int i1 = i - random.nextInt(i / 4); - int j1 = 0; - this.addTunnel(region, random.nextLong(), originalX, originalZ, d0, d1, d2, f2, f, f3, 0, i1, 1.0D, mask); - } - } - - return true; - } - - protected void addRoom(IWorld worldIn, long seed, int mainChunkX, int mainChunkZ, double xRange, double yRange, double zRange, float roomRadius, double roomHeight, BitSet mask) { - double d0 = 1.5D + (double)(MathHelper.sin(((float)Math.PI / 2F)) * roomRadius); - double d1 = d0 * roomHeight; - this.carveAtTarget(worldIn, seed, mainChunkX, mainChunkZ, xRange + 1.0D, yRange, zRange, d0, d1, mask); - } - - protected void addTunnel(IWorld worldIn, long seed, int mainChunkX, int mainChunkZ, double rangeX, double rangeY, double rangeZ, float p_202533_12_, float area, float p_202533_14_, int depth, int maxDepth, double p_202533_17_, BitSet mask) { - Random random = new Random(seed); - int i = random.nextInt(maxDepth / 2) + maxDepth / 4; - boolean flag = random.nextInt(6) == 0; - float f = 0.0F; - float f1 = 0.0F; - - for(int j = depth; j < maxDepth; ++j) { - double d0 = 1.5D + (double)(MathHelper.sin((float)Math.PI * (float)j / (float)maxDepth) * p_202533_12_); - double d1 = d0 * p_202533_17_; - float f2 = MathHelper.cos(p_202533_14_); - rangeX += (double)(MathHelper.cos(area) * f2); - rangeY += (double)MathHelper.sin(p_202533_14_); - rangeZ += (double)(MathHelper.sin(area) * f2); - p_202533_14_ = p_202533_14_ * (flag ? 0.92F : 0.7F); - p_202533_14_ = p_202533_14_ + f1 * 0.1F; - area += f * 0.1F; - f1 = f1 * 0.9F; - f = f * 0.75F; - f1 = f1 + (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 2.0F; - f = f + (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 4.0F; - if (j == i && p_202533_12_ > 1.0F) { - this.addTunnel(worldIn, random.nextLong(), mainChunkX, mainChunkZ, rangeX, rangeY, rangeZ, random.nextFloat() * 0.5F + 0.5F, area - ((float)Math.PI / 2F), p_202533_14_ / 3.0F, j, maxDepth, 1.0D, mask); - this.addTunnel(worldIn, random.nextLong(), mainChunkX, mainChunkZ, rangeX, rangeY, rangeZ, random.nextFloat() * 0.5F + 0.5F, area + ((float)Math.PI / 2F), p_202533_14_ / 3.0F, j, maxDepth, 1.0D, mask); - return; - } - - if (random.nextInt(4) != 0) { - if (!this.isWithinGenerationDepth(mainChunkX, mainChunkZ, rangeX, rangeZ, j, maxDepth, p_202533_12_)) { - return; - } - - this.carveAtTarget(worldIn, seed, mainChunkX, mainChunkZ, rangeX, rangeY, rangeZ, d0, d1, mask); - } - } - - } - - protected boolean carveAtTarget(IWorld worldIn, long seed, int mainChunkX, int mainChunkZ, double xRange, double yRange, double zRange, double placementXZBound, double placementYBound, BitSet mask) { - double d0 = (double)(mainChunkX * 16 + 8); - double d1 = (double)(mainChunkZ * 16 + 8); - if (!(xRange < d0 - 16.0D - placementXZBound * 2.0D) && !(zRange < d1 - 16.0D - placementXZBound * 2.0D) && !(xRange > d0 + 16.0D + placementXZBound * 2.0D) && !(zRange > d1 + 16.0D + placementXZBound * 2.0D)) { - int i = Math.max(MathHelper.floor(xRange - placementXZBound) - mainChunkX * 16 - 1, 0); - int j = Math.min(MathHelper.floor(xRange + placementXZBound) - mainChunkX * 16 + 1, 16); - int k = Math.max(MathHelper.floor(yRange - placementYBound) - 1, 1); - int l = Math.min(MathHelper.floor(yRange + placementYBound) + 1, 248); - int i1 = Math.max(MathHelper.floor(zRange - placementXZBound) - mainChunkZ * 16 - 1, 0); - int j1 = Math.min(MathHelper.floor(zRange + placementXZBound) - mainChunkZ * 16 + 1, 16); - if (this.doesAreaHaveFluids(worldIn, mainChunkX, mainChunkZ, i, j, k, l, i1, j1)) { - return false; - } else { - boolean flag = false; - BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); - BlockPos.MutableBlockPos blockpos$mutableblockpos1 = new BlockPos.MutableBlockPos(); - BlockPos.MutableBlockPos blockpos$mutableblockpos2 = new BlockPos.MutableBlockPos(); - - for(int k1 = i; k1 < j; ++k1) { - int l1 = k1 + mainChunkX * 16; - double d2 = ((double)l1 + 0.5D - xRange) / placementXZBound; - - for(int i2 = i1; i2 < j1; ++i2) { - int j2 = i2 + mainChunkZ * 16; - double d3 = ((double)j2 + 0.5D - zRange) / placementXZBound; - if (!(d2 * d2 + d3 * d3 >= 1.0D)) { - boolean flag1 = false; - - for(int k2 = l; k2 > k; --k2) { - double d4 = ((double)k2 - 0.5D - yRange) / placementYBound; - if (!(d4 <= -0.7D) && !(d2 * d2 + d4 * d4 + d3 * d3 >= 1.0D)) { - int l2 = k1 | i2 << 4 | k2 << 8; - if (!mask.get(l2)) { - mask.set(l2); - blockpos$mutableblockpos.setPos(l1, k2, j2); - IBlockState iblockstate = worldIn.getBlockState(blockpos$mutableblockpos); - IBlockState iblockstate1 = worldIn.getBlockState(blockpos$mutableblockpos1.setPos(blockpos$mutableblockpos).move(EnumFacing.UP)); - if (iblockstate.getBlock() == Blocks.GRASS_BLOCK || iblockstate.getBlock() == Blocks.MYCELIUM) { - flag1 = true; - } - - if (this.isTargetSafeFromFalling(iblockstate, iblockstate1)) { - if (k2 < 11) { - worldIn.setBlockState(blockpos$mutableblockpos, LAVA_FLUID.getBlockState(), 2); - } - else - { - worldIn.setBlockState(blockpos$mutableblockpos, Blocks.COBWEB.getDefaultState(), 2); - if (flag1) { - blockpos$mutableblockpos2.setPos(blockpos$mutableblockpos).move(EnumFacing.DOWN); - if (worldIn.getBlockState(blockpos$mutableblockpos2).getBlock() == Blocks.DIRT) { - IBlockState iblockstate2 = worldIn.getBiome(blockpos$mutableblockpos).getSurfaceBuilderConfig().getTop(); - worldIn.setBlockState(blockpos$mutableblockpos2, iblockstate2, 2); - } - } - } - - flag = true; - } - } - } - } - } - } - } - - return flag; - } - } else { - return false; - } - } - } \ No newline at end of file diff --git a/src/main/java/biomesoplenty/core/ClientProxy.java b/src/main/java/biomesoplenty/core/ClientProxy.java index ced7d7a20..9c28a1ee0 100644 --- a/src/main/java/biomesoplenty/core/ClientProxy.java +++ b/src/main/java/biomesoplenty/core/ClientProxy.java @@ -50,9 +50,9 @@ public class ClientProxy extends CommonProxy ItemColors itemColors = Minecraft.getInstance().getItemColors(); //Grass Coloring - /*blockColors.register((state, world, pos, tintIndex) -> + blockColors.register((state, world, pos, tintIndex) -> world != null && pos != null ? BiomeColors.getGrassColor(world, pos) : GrassColors.get(0.5D, 1.0D), - BOPBlocks.short_grass);*/ + BOPBlocks.watergrass); //Foliage Coloring blockColors.register((state, world, pos, tintIndex) -> diff --git a/src/main/java/biomesoplenty/init/ModBlocks.java b/src/main/java/biomesoplenty/init/ModBlocks.java index 56f464283..2f0f14ff8 100644 --- a/src/main/java/biomesoplenty/init/ModBlocks.java +++ b/src/main/java/biomesoplenty/init/ModBlocks.java @@ -9,6 +9,7 @@ package biomesoplenty.init; import static biomesoplenty.api.block.BOPBlocks.*; +import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.common.block.BlockAsh; import biomesoplenty.common.block.BlockBramble; import biomesoplenty.common.block.BlockDoubleWaterPlant; @@ -22,6 +23,7 @@ import biomesoplenty.common.block.BlockMushroomBOP; import biomesoplenty.common.block.BlockPlantBOP; import biomesoplenty.common.block.BlockSaplingBOP; import biomesoplenty.common.block.BlockWaterPlant; +import biomesoplenty.common.block.BlockWaterTopPlant; import biomesoplenty.common.block.trees.DeadTree; import biomesoplenty.common.block.trees.EtherealTree; import biomesoplenty.common.block.trees.FirTree; @@ -40,6 +42,7 @@ import biomesoplenty.common.block.trees.UmbranTree; import biomesoplenty.common.block.trees.WhiteCherryTree; import biomesoplenty.common.block.trees.WillowTree; import biomesoplenty.common.block.trees.YellowAutumnTree; +import biomesoplenty.common.item.ItemWaterTopPlant; import biomesoplenty.common.util.inventory.ItemGroupBOP; import net.minecraft.block.Block; import net.minecraft.block.BlockButtonWood; @@ -57,8 +60,10 @@ import net.minecraft.block.BlockVine; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.material.MaterialColor; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemGroup; import net.minecraftforge.registries.ForgeRegistries; public class ModBlocks @@ -313,6 +318,10 @@ public class ModBlocks cattail = registerBlock(new BlockWaterPlant(Block.Properties.create(Material.PLANTS, MaterialColor.DIRT).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "cattail"); tall_cattail = registerBlock(new BlockDoubleWaterPlant(cattail, Block.Properties.create(Material.PLANTS, MaterialColor.DIRT).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "tall_cattail"); + //reed = registerBlock(new BlockWaterTopPlant(Block.Properties.create(Material.PLANTS, MaterialColor.DIRT).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), new ItemWaterTopPlant(BOPBlocks.reed, new Item.Properties().group(ItemGroupBOP.instance)), "reed"); + reed = registerBlock(new BlockWaterTopPlant(Block.Properties.create(Material.PLANTS, MaterialColor.DIRT).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "reed"); + watergrass = registerBlock(new BlockWaterTopPlant(Block.Properties.create(Material.PLANTS, MaterialColor.GRASS).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "watergrass"); + bramble = registerBlock(new BlockBramble(Block.Properties.create(Material.PLANTS, MaterialColor.NETHERRACK).hardnessAndResistance(0.4F).sound(SoundType.WOOD)), "bramble"); toadstool = registerBlock(new BlockMushroomBOP(Block.Properties.create(Material.PLANTS).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "toadstool"); @@ -328,4 +337,18 @@ public class ModBlocks ForgeRegistries.ITEMS.register(itemBlock); return block; } + + public static Block registerBlock(Block block, ItemBlock itemBlock, String name) + { + block.setRegistryName(name); + ForgeRegistries.BLOCKS.register(block); + + if (itemBlock != null) + { + itemBlock.setRegistryName(name); + ForgeRegistries.ITEMS.register(itemBlock); + } + + return block; + } } diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mangrove_root.json b/src/main/resources/assets/biomesoplenty/blockstates/mangrove_root.json new file mode 100644 index 000000000..3732ba34c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mangrove_root.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mangrove_root" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/reed.json b/src/main/resources/assets/biomesoplenty/blockstates/reed.json new file mode 100644 index 000000000..4c78c2c76 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/reed.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/reed" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/watergrass.json b/src/main/resources/assets/biomesoplenty/blockstates/watergrass.json new file mode 100644 index 000000000..c0de6246c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/watergrass.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/watergrass" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/lang/en_us.json b/src/main/resources/assets/biomesoplenty/lang/en_us.json index 8363a9c5e..39d1795a8 100644 --- a/src/main/resources/assets/biomesoplenty/lang/en_us.json +++ b/src/main/resources/assets/biomesoplenty/lang/en_us.json @@ -229,6 +229,7 @@ "block.biomesoplenty.mahogany_trapdoor": "Mahogany Trapdoor", "block.biomesoplenty.mahogany_wood": "Mahogany Wood", "block.biomesoplenty.mahogany_wood_slab": "Mahogany Slab", + "block.biomesoplenty.mangrove_root": "Mangrove Root", "block.biomesoplenty.maple_leaves": "Maple Leaves", "block.biomesoplenty.maple_sapling": "Maple Sapling", "block.biomesoplenty.mud": "Mud", @@ -272,6 +273,7 @@ "block.biomesoplenty.redwood_trapdoor": "Redwood Trapdoor", "block.biomesoplenty.redwood_wood": "Redwood Wood", "block.biomesoplenty.redwood_wood_slab": "Redwood Slab", + "block.biomesoplenty.reed": "Reed", "block.biomesoplenty.rose": "Rose", "block.biomesoplenty.smooth_white_sandstone": "Smooth White Sandstone", "block.biomesoplenty.spectral_fern": "Spectral Fern", @@ -317,6 +319,7 @@ "block.biomesoplenty.umbran_wood": "Umbran Wood", "block.biomesoplenty.umbran_wood_slab": "Umbran Slab", "block.biomesoplenty.violet": "Violet", + "block.biomesoplenty.watergrass": "Watergrass", "block.biomesoplenty.white_cherry_leaves": "White Cherry Leaves", "block.biomesoplenty.white_cherry_sapling": "White Cherry Sapling", "block.biomesoplenty.white_sand": "White Sand", diff --git a/src/main/resources/assets/biomesoplenty/models/block/mangrove_root.json b/src/main/resources/assets/biomesoplenty/models/block/mangrove_root.json new file mode 100644 index 000000000..04759e463 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mangrove_root.json @@ -0,0 +1,7 @@ +{ + "parent": "biomesoplenty:block/water_plant", + "textures": { + "cross_top": "biomesoplenty:blocks/mangrove_root_top", + "cross_bottom": "biomesoplenty:blocks/mangrove_root_bottom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/reed.json b/src/main/resources/assets/biomesoplenty/models/block/reed.json new file mode 100644 index 000000000..06fb672c1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/reed.json @@ -0,0 +1,7 @@ +{ + "parent": "biomesoplenty:block/water_plant", + "textures": { + "cross_top": "biomesoplenty:blocks/reed_top", + "cross_bottom": "biomesoplenty:blocks/reed_bottom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/tinted_water_plant.json b/src/main/resources/assets/biomesoplenty/models/block/tinted_water_plant.json new file mode 100644 index 000000000..b30fd0f8c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/tinted_water_plant.json @@ -0,0 +1,44 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "#cross_top" + }, + "elements": [ + { "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": "#cross_top", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_top", "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": "#cross_top", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_top", "tintindex": 0 } + } + }, + { "from": [ 0.8, -16, 8 ], + "to": [ 15.2, 0, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_bottom", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_bottom", "tintindex": 0 } + } + }, + { "from": [ 8, -16, 0.8 ], + "to": [ 8, 0, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_bottom", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_bottom", "tintindex": 0 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/water_plant.json b/src/main/resources/assets/biomesoplenty/models/block/water_plant.json new file mode 100644 index 000000000..7e0b7fd1c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/water_plant.json @@ -0,0 +1,44 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "#cross_top" + }, + "elements": [ + { "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": "#cross_top" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_top" } + } + }, + { "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": "#cross_top" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_top" } + } + }, + { "from": [ 0.8, -16, 8 ], + "to": [ 15.2, 0, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_bottom" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_bottom" } + } + }, + { "from": [ 8, -16, 0.8 ], + "to": [ 8, 0, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_bottom" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_bottom" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/watergrass.json b/src/main/resources/assets/biomesoplenty/models/block/watergrass.json new file mode 100644 index 000000000..9c520af60 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/watergrass.json @@ -0,0 +1,7 @@ +{ + "parent": "biomesoplenty:block/tinted_water_plant", + "textures": { + "cross_top": "biomesoplenty:blocks/watergrass_top", + "cross_bottom": "biomesoplenty:blocks/watergrass_bottom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/mangrove_root.json b/src/main/resources/assets/biomesoplenty/models/item/mangrove_root.json new file mode 100644 index 000000000..a51964404 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mangrove_root.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/mangrove_root" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/reed.json b/src/main/resources/assets/biomesoplenty/models/item/reed.json new file mode 100644 index 000000000..da9c10c25 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/reed.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/reed" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/watergrass.json b/src/main/resources/assets/biomesoplenty/models/item/watergrass.json new file mode 100644 index 000000000..fe3f2cb33 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/watergrass.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:items/watergrass" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/textures/blocks/reed_bottom.png b/src/main/resources/assets/biomesoplenty/textures/blocks/reed_bottom.png new file mode 100644 index 000000000..0d13678e7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/blocks/reed_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/blocks/reed_top.png b/src/main/resources/assets/biomesoplenty/textures/blocks/reed_top.png new file mode 100644 index 000000000..4ae611afc Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/blocks/reed_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/blocks/watergrass_bottom.png b/src/main/resources/assets/biomesoplenty/textures/blocks/watergrass_bottom.png new file mode 100644 index 000000000..ecc4e5d79 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/blocks/watergrass_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/blocks/watergrass_top.png b/src/main/resources/assets/biomesoplenty/textures/blocks/watergrass_top.png new file mode 100644 index 000000000..f192abc2b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/blocks/watergrass_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/items/reed.png b/src/main/resources/assets/biomesoplenty/textures/items/reed.png new file mode 100644 index 000000000..760945f29 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/items/reed.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/items/watergrass.png b/src/main/resources/assets/biomesoplenty/textures/items/watergrass.png new file mode 100644 index 000000000..bf03f51c7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/items/watergrass.png differ diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/ash_block.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/ash_block.json deleted file mode 100644 index 2f41569f7..000000000 --- a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/ash_block.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "rewards": { - "recipes": [ - "biomesoplenty:ash_block" - ] - }, - "criteria": { - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "biomesoplenty:ash_block" - } - }, - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "biomesoplenty:pile_of_ashes" - } - ] - } - } - }, - "requirements": [ - [ - "has_the_recipe", - "has_item" - ] - ] -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/flesh.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/flesh.json deleted file mode 100644 index 7ac12ff4e..000000000 --- a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/flesh.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "rewards": { - "recipes": [ - "biomesoplenty:flesh" - ] - }, - "criteria": { - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "biomesoplenty:flesh" - } - }, - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "biomesoplenty:chunk_of_flesh" - } - ] - } - } - }, - "requirements": [ - [ - "has_the_recipe", - "has_item" - ] - ] -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/ash_block.json b/src/main/resources/data/biomesoplenty/recipes/ash_block.json deleted file mode 100644 index a08450ab9..000000000 --- a/src/main/resources/data/biomesoplenty/recipes/ash_block.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "##", - "##" - ], - "key": { - "#": { - "item": "biomesoplenty:pile_of_ashes" - } - }, - "result": { - "item": "biomesoplenty:ash_block" - } -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/flesh.json b/src/main/resources/data/biomesoplenty/recipes/flesh.json deleted file mode 100644 index 483c4dd96..000000000 --- a/src/main/resources/data/biomesoplenty/recipes/flesh.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "##", - "##" - ], - "key": { - "#": { - "item": "biomesoplenty:chunk_of_flesh" - } - }, - "result": { - "item": "biomesoplenty:flesh" - } -} \ No newline at end of file