package net.minecraft.world.level.biome;

import net.minecraft.world.level.block.state.StateHolder;
import net.minecraft.core.Vec3i;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.level.levelgen.feature.stateproviders.RotatedBlockProvider;
import net.minecraft.world.level.levelgen.feature.blockplacers.ColumnPlacer;
import net.minecraft.world.level.levelgen.feature.blockplacers.DoublePlantPlacer;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.levelgen.feature.stateproviders.ForestFlowerProvider;
import net.minecraft.world.level.levelgen.feature.stateproviders.PlainFlowerProvider;
import java.util.Set;
import com.google.common.collect.ImmutableSet;
import net.minecraft.world.level.levelgen.feature.stateproviders.WeightedStateProvider;
import net.minecraft.world.level.levelgen.feature.blockplacers.BlockPlacer;
import net.minecraft.world.level.levelgen.feature.blockplacers.SimpleBlockPlacer;
import net.minecraft.world.level.levelgen.feature.trunkplacers.MegaJungleTrunkPlacer;
import net.minecraft.world.level.levelgen.feature.foliageplacers.MegaJungleFoliagePlacer;
import net.minecraft.world.level.levelgen.feature.treedecorators.AlterGroundDecorator;
import net.minecraft.world.level.levelgen.feature.trunkplacers.GiantTrunkPlacer;
import net.minecraft.world.level.levelgen.feature.foliageplacers.MegaPineFoliagePlacer;
import net.minecraft.world.level.levelgen.feature.featuresize.ThreeLayersFeatureSize;
import net.minecraft.world.level.levelgen.feature.trunkplacers.DarkOakTrunkPlacer;
import net.minecraft.world.level.levelgen.feature.foliageplacers.DarkOakFoliagePlacer;
import net.minecraft.world.level.levelgen.feature.foliageplacers.BushFoliagePlacer;
import java.util.OptionalInt;
import net.minecraft.world.level.levelgen.feature.trunkplacers.FancyTrunkPlacer;
import net.minecraft.world.level.levelgen.feature.foliageplacers.FancyFoliagePlacer;
import net.minecraft.world.level.levelgen.feature.trunkplacers.ForkingTrunkPlacer;
import net.minecraft.world.level.levelgen.feature.foliageplacers.AcaciaFoliagePlacer;
import net.minecraft.world.level.levelgen.feature.foliageplacers.SpruceFoliagePlacer;
import net.minecraft.world.level.levelgen.feature.foliageplacers.PineFoliagePlacer;
import net.minecraft.world.level.levelgen.feature.treedecorators.LeaveVineDecorator;
import net.minecraft.world.level.levelgen.feature.treedecorators.TrunkVineDecorator;
import net.minecraft.world.level.levelgen.feature.treedecorators.CocoaDecorator;
import net.minecraft.world.level.levelgen.feature.treedecorators.TreeDecorator;
import net.minecraft.world.level.levelgen.feature.featuresize.FeatureSize;
import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacer;
import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacer;
import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider;
import net.minecraft.world.level.levelgen.feature.featuresize.TwoLayersFeatureSize;
import net.minecraft.world.level.levelgen.feature.trunkplacers.StraightTrunkPlacer;
import net.minecraft.world.level.levelgen.feature.foliageplacers.BlobFoliagePlacer;
import net.minecraft.world.level.levelgen.feature.stateproviders.SimpleStateProvider;
import net.minecraft.world.level.levelgen.feature.RuinedPortalFeature;
import net.minecraft.resources.ResourceLocation;
import java.util.Map;
import net.minecraft.world.level.levelgen.feature.BastionPieces;
import net.minecraft.world.level.levelgen.structure.OceanRuinFeature;
import net.minecraft.world.level.levelgen.feature.MineshaftFeature;
import net.minecraft.world.level.block.HugeMushroomBlock;
import net.minecraft.world.level.block.state.properties.Property;
import net.minecraft.world.level.block.SweetBerryBushBlock;
import net.minecraft.world.level.levelgen.feature.HugeFungusConfiguration;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.levelgen.feature.configurations.SeagrassFeatureConfiguration;
import net.minecraft.world.level.levelgen.placement.CarvingMaskDecoratorConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.NoiseDependantDecoratorConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.RandomBooleanFeatureConfiguration;
import net.minecraft.world.level.levelgen.placement.FrequencyChanceDecoratorConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.RandomRandomFeatureConfiguration;
import net.minecraft.world.level.levelgen.placement.FrequencyWithExtraChanceDecoratorConfiguration;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.feature.configurations.RandomFeatureConfiguration;
import net.minecraft.world.level.levelgen.feature.WeightedConfiguredFeature;
import com.google.common.collect.ImmutableList;
import net.minecraft.world.level.levelgen.placement.NoiseCountFactorDecoratorConfiguration;
import net.minecraft.world.level.levelgen.Heightmap;
import net.minecraft.world.level.levelgen.feature.configurations.BlockBlobConfiguration;
import net.minecraft.world.level.levelgen.placement.FrequencyDecoratorConfiguration;
import java.util.List;
import net.minecraft.world.level.levelgen.feature.configurations.DiskConfiguration;
import com.google.common.collect.Lists;
import net.minecraft.world.level.levelgen.placement.ConfiguredDecorator;
import net.minecraft.world.level.levelgen.feature.configurations.DecoratorConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.ReplaceBlockConfiguration;
import net.minecraft.world.level.levelgen.placement.DepthAverageConfigation;
import net.minecraft.world.level.levelgen.feature.configurations.CountRangeDecoratorConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration;
import net.minecraft.world.level.levelgen.placement.ChanceDecoratorConfiguration;
import net.minecraft.world.level.levelgen.placement.FeatureDecorator;
import net.minecraft.world.level.levelgen.feature.configurations.BlockStateConfiguration;
import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver;
import net.minecraft.world.level.levelgen.carver.CarverConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.ProbabilityFeatureConfiguration;
import net.minecraft.world.level.levelgen.carver.WorldCarver;
import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.levelgen.feature.configurations.HugeMushroomFeatureConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.DeltaFeatureConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.ReplaceSpheroidConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.ColumnFeatureConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.SpringConfiguration;
import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.levelgen.feature.configurations.BlockPileConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.RandomPatchConfiguration;
import net.minecraft.world.level.levelgen.feature.treedecorators.BeehiveDecorator;
import net.minecraft.world.level.levelgen.feature.configurations.TreeConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.RuinedPortalConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.JigsawConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.MultiJigsawConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.BuriedTreasureConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.OceanRuinConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.ShipwreckConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.MineshaftConfiguration;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
import net.minecraft.world.level.block.state.BlockState;

public class BiomeDefaultFeatures {
    private static final BlockState GRASS;
    private static final BlockState FERN;
    private static final BlockState PODZOL;
    private static final BlockState OAK_LOG;
    private static final BlockState OAK_LEAVES;
    private static final BlockState JUNGLE_LOG;
    private static final BlockState JUNGLE_LEAVES;
    private static final BlockState SPRUCE_LOG;
    private static final BlockState SPRUCE_LEAVES;
    private static final BlockState ACACIA_LOG;
    private static final BlockState ACACIA_LEAVES;
    private static final BlockState BIRCH_LOG;
    private static final BlockState BIRCH_LEAVES;
    private static final BlockState DARK_OAK_LOG;
    private static final BlockState DARK_OAK_LEAVES;
    private static final BlockState WATER;
    private static final BlockState LAVA;
    private static final BlockState DIRT;
    private static final BlockState GRAVEL;
    private static final BlockState GRANITE;
    private static final BlockState DIORITE;
    private static final BlockState ANDESITE;
    private static final BlockState COAL_ORE;
    private static final BlockState IRON_ORE;
    private static final BlockState GOLD_ORE;
    private static final BlockState REDSTONE_ORE;
    private static final BlockState DIAMOND_ORE;
    private static final BlockState LAPIS_ORE;
    private static final BlockState STONE;
    private static final BlockState EMERALD_ORE;
    private static final BlockState INFESTED_STONE;
    private static final BlockState SAND;
    private static final BlockState CLAY;
    private static final BlockState GRASS_BLOCK;
    private static final BlockState MOSSY_COBBLESTONE;
    private static final BlockState LARGE_FERN;
    private static final BlockState TALL_GRASS;
    private static final BlockState LILAC;
    private static final BlockState ROSE_BUSH;
    private static final BlockState PEONY;
    private static final BlockState BROWN_MUSHROOM;
    private static final BlockState RED_MUSHROOM;
    private static final BlockState SEAGRASS;
    private static final BlockState PACKED_ICE;
    private static final BlockState BLUE_ICE;
    private static final BlockState LILY_OF_THE_VALLEY;
    private static final BlockState BLUE_ORCHID;
    private static final BlockState POPPY;
    private static final BlockState DANDELION;
    private static final BlockState DEAD_BUSH;
    private static final BlockState MELON;
    private static final BlockState PUMPKIN;
    private static final BlockState SWEET_BERRY_BUSH;
    private static final BlockState FIRE;
    private static final BlockState SOUL_FIRE;
    private static final BlockState NETHERRACK;
    private static final BlockState SOUL_SOIL;
    private static final BlockState CRIMSON_ROOTS;
    private static final BlockState LILY_PAD;
    private static final BlockState SNOW;
    private static final BlockState JACK_O_LANTERN;
    private static final BlockState SUNFLOWER;
    private static final BlockState CACTUS;
    private static final BlockState SUGAR_CANE;
    private static final BlockState HUGE_RED_MUSHROOM;
    private static final BlockState HUGE_BROWN_MUSHROOM;
    private static final BlockState HUGE_MUSHROOM_STEM;
    private static final BlockState NETHER_GOLD_ORE;
    private static final BlockState NETHER_QUARTZ_ORE;
    private static final BlockState WARPED_STEM;
    private static final BlockState WARPED_WART_BLOCK;
    private static final BlockState NETHER_WART_BLOCK;
    private static final BlockState CRIMSON_STEM;
    private static final BlockState SHROOMLIGHT;
    public static final ConfiguredStructureFeature<NoneFeatureConfiguration, ? extends StructureFeature<NoneFeatureConfiguration>> PILLAGER_OUTPOST;
    public static final ConfiguredStructureFeature<MineshaftConfiguration, ? extends StructureFeature<MineshaftConfiguration>> MINESHAFT;
    public static final ConfiguredStructureFeature<MineshaftConfiguration, ? extends StructureFeature<MineshaftConfiguration>> MINESHAFT_MESA;
    public static final ConfiguredStructureFeature<NoneFeatureConfiguration, ? extends StructureFeature<NoneFeatureConfiguration>> WOODLAND_MANSION;
    public static final ConfiguredStructureFeature<NoneFeatureConfiguration, ? extends StructureFeature<NoneFeatureConfiguration>> JUNGLE_TEMPLE;
    public static final ConfiguredStructureFeature<NoneFeatureConfiguration, ? extends StructureFeature<NoneFeatureConfiguration>> DESERT_PYRAMID;
    public static final ConfiguredStructureFeature<NoneFeatureConfiguration, ? extends StructureFeature<NoneFeatureConfiguration>> IGLOO;
    public static final ConfiguredStructureFeature<ShipwreckConfiguration, ? extends StructureFeature<ShipwreckConfiguration>> SHIPWRECK;
    public static final ConfiguredStructureFeature<ShipwreckConfiguration, ? extends StructureFeature<ShipwreckConfiguration>> SHIPWRECH_BEACHED;
    public static final ConfiguredStructureFeature<NoneFeatureConfiguration, ? extends StructureFeature<NoneFeatureConfiguration>> SWAMP_HUT;
    public static final ConfiguredStructureFeature<NoneFeatureConfiguration, ? extends StructureFeature<NoneFeatureConfiguration>> STRONGHOLD;
    public static final ConfiguredStructureFeature<NoneFeatureConfiguration, ? extends StructureFeature<NoneFeatureConfiguration>> OCEAN_MONUMENT;
    public static final ConfiguredStructureFeature<OceanRuinConfiguration, ? extends StructureFeature<OceanRuinConfiguration>> OCEAN_RUIN_COLD;
    public static final ConfiguredStructureFeature<OceanRuinConfiguration, ? extends StructureFeature<OceanRuinConfiguration>> OCEAN_RUIN_WARM;
    public static final ConfiguredStructureFeature<NoneFeatureConfiguration, ? extends StructureFeature<NoneFeatureConfiguration>> NETHER_BRIDGE;
    public static final ConfiguredStructureFeature<NoneFeatureConfiguration, ? extends StructureFeature<NoneFeatureConfiguration>> NETHER_FOSSIL;
    public static final ConfiguredStructureFeature<NoneFeatureConfiguration, ? extends StructureFeature<NoneFeatureConfiguration>> END_CITY;
    public static final ConfiguredStructureFeature<BuriedTreasureConfiguration, ? extends StructureFeature<BuriedTreasureConfiguration>> BURIED_TREASURE;
    public static final ConfiguredStructureFeature<MultiJigsawConfiguration, ? extends StructureFeature<MultiJigsawConfiguration>> BASTION_REMNANT;
    public static final ConfiguredStructureFeature<JigsawConfiguration, ? extends StructureFeature<JigsawConfiguration>> VILLAGE_PLAINS;
    public static final ConfiguredStructureFeature<JigsawConfiguration, ? extends StructureFeature<JigsawConfiguration>> VILLAGE_DESERT;
    public static final ConfiguredStructureFeature<JigsawConfiguration, ? extends StructureFeature<JigsawConfiguration>> VILLAGE_SAVANNA;
    public static final ConfiguredStructureFeature<JigsawConfiguration, ? extends StructureFeature<JigsawConfiguration>> VILLAGE_SNOVY;
    public static final ConfiguredStructureFeature<JigsawConfiguration, ? extends StructureFeature<JigsawConfiguration>> VILLAGE_TAIGA;
    public static final ConfiguredStructureFeature<RuinedPortalConfiguration, ? extends StructureFeature<RuinedPortalConfiguration>> RUINED_PORTAL_STANDARD;
    public static final ConfiguredStructureFeature<RuinedPortalConfiguration, ? extends StructureFeature<RuinedPortalConfiguration>> RUINED_PORTAL_DESERT;
    public static final ConfiguredStructureFeature<RuinedPortalConfiguration, ? extends StructureFeature<RuinedPortalConfiguration>> RUINED_PORTAL_JUNGLE;
    public static final ConfiguredStructureFeature<RuinedPortalConfiguration, ? extends StructureFeature<RuinedPortalConfiguration>> RUINED_PORTAL_SWAMP;
    public static final ConfiguredStructureFeature<RuinedPortalConfiguration, ? extends StructureFeature<RuinedPortalConfiguration>> RUINED_PORTAL_MOUNTAIN;
    public static final ConfiguredStructureFeature<RuinedPortalConfiguration, ? extends StructureFeature<RuinedPortalConfiguration>> RUINED_PORTAL_OCEAN;
    public static final ConfiguredStructureFeature<RuinedPortalConfiguration, ? extends StructureFeature<RuinedPortalConfiguration>> RUINED_PORTAL_NETHER;
    public static final TreeConfiguration NORMAL_TREE_CONFIG;
    private static final BeehiveDecorator BEEHIVE_0002;
    private static final BeehiveDecorator BEEHIVE_002;
    private static final BeehiveDecorator BEEHIVE_005;
    public static final TreeConfiguration NORMAL_TREE_WITH_BEES_0002_CONFIG;
    public static final TreeConfiguration NORMAL_TREE_WITH_BEES_002_CONFIG;
    public static final TreeConfiguration NORMAL_TREE_WITH_BEES_005_CONFIG;
    public static final TreeConfiguration JUNGLE_TREE_CONFIG;
    public static final TreeConfiguration JUNGLE_TREE_NOVINE_CONFIG;
    public static final TreeConfiguration PINE_TREE_CONFIG;
    public static final TreeConfiguration SPRUCE_TREE_CONFIG;
    public static final TreeConfiguration ACACIA_TREE_CONFIG;
    public static final TreeConfiguration BIRCH_TREE_CONFIG;
    public static final TreeConfiguration BIRCH_TREE_WITH_BEES_0002_CONFIG;
    public static final TreeConfiguration BIRCH_TREE_WITH_BEES_002_CONFIG;
    public static final TreeConfiguration BIRCH_TREE_WITH_BEES_005_CONFIG;
    public static final TreeConfiguration SUPER_BIRCH_TREE_WITH_BEES_0002_CONFIG;
    public static final TreeConfiguration SWAMP_TREE_CONFIG;
    public static final TreeConfiguration FANCY_TREE_CONFIG;
    public static final TreeConfiguration FANCY_TREE_WITH_BEES_0002_CONFIG;
    public static final TreeConfiguration FANCY_TREE_WITH_BEES_002_CONFIG;
    public static final TreeConfiguration FANCY_TREE_WITH_BEES_005_CONFIG;
    public static final TreeConfiguration JUNGLE_BUSH_CONFIG;
    public static final TreeConfiguration DARK_OAK_TREE_CONFIG;
    public static final TreeConfiguration MEGA_SPRUCE_TREE_CONFIG;
    public static final TreeConfiguration MEGA_PINE_TREE_CONFIG;
    public static final TreeConfiguration MEGA_JUNGLE_TREE_CONFIG;
    public static final RandomPatchConfiguration DEFAULT_GRASS_CONFIG;
    public static final RandomPatchConfiguration TAIGA_GRASS_CONFIG;
    public static final RandomPatchConfiguration JUNGLE_GRASS_CONFIG;
    public static final RandomPatchConfiguration GENERAL_FOREST_FLOWER_CONFIG;
    public static final RandomPatchConfiguration SwAMP_FLOWER_CONFIG;
    public static final RandomPatchConfiguration DEFAULT_FLOWER_CONFIG;
    public static final RandomPatchConfiguration PLAIN_FLOWER_CONFIG;
    public static final RandomPatchConfiguration FOREST_FLOWER_CONFIG;
    public static final RandomPatchConfiguration DEAD_BUSH_CONFIG;
    public static final RandomPatchConfiguration MELON_CONFIG;
    public static final RandomPatchConfiguration PUMPKIN_CONFIG;
    public static final RandomPatchConfiguration SWEET_BERRY_BUSH_CONFIG;
    public static final RandomPatchConfiguration FIRE_CONFIG;
    public static final RandomPatchConfiguration SOUL_FIRE_CONFIG;
    public static final RandomPatchConfiguration WATERLILLY_CONFIG;
    public static final RandomPatchConfiguration RED_MUSHROOM_CONFIG;
    public static final RandomPatchConfiguration BROWN_MUSHROOM_CONFIG;
    public static final RandomPatchConfiguration CRIMSON_ROOTS_CONFIG;
    public static final RandomPatchConfiguration DOUBLE_LILAC_CONFIG;
    public static final RandomPatchConfiguration DOUBLE_ROSE_BUSH_CONFIG;
    public static final RandomPatchConfiguration DOUBLE_PEONY_CONFIG;
    public static final RandomPatchConfiguration SUNFLOWER_CONFIG;
    public static final RandomPatchConfiguration TALL_GRASS_CONFIG;
    public static final RandomPatchConfiguration LARGE_FERN_CONFIG;
    public static final RandomPatchConfiguration CACTUS_CONFIG;
    public static final RandomPatchConfiguration SUGAR_CANE_CONFIG;
    public static final BlockPileConfiguration HAY_PILE_CONFIG;
    public static final BlockPileConfiguration SNOW_PILE_CONFIG;
    public static final BlockPileConfiguration MELON_PILE_CONFIG;
    public static final BlockPileConfiguration PUMPKIN_PILE_CONFIG;
    public static final BlockPileConfiguration ICE_PILE_CONFIG;
    public static final FluidState WATER_STATE;
    public static final FluidState LAVA_STATE;
    public static final SpringConfiguration WATER_SPRING_CONFIG;
    public static final SpringConfiguration LAVA_SPRING_CONFIG;
    public static final SpringConfiguration OPEN_NETHER_SPRING_CONFIG;
    public static final SpringConfiguration BASALT_DELTA_SPRING_CONFIG;
    public static final SpringConfiguration CLOSED_NETHER_SPRING_CONFIG;
    public static final SpringConfiguration OPEN_NETHER_SPRING_SOUL_SAND_CONFIG;
    public static final SpringConfiguration CLOSED_NETHER_SPRING_SOUL_SAND_CONFIG;
    public static final ColumnFeatureConfiguration SMALL_BASALT_COLUMN_FEATURE_CONFIG;
    public static final ColumnFeatureConfiguration LARGE_BASALT_COLUMN_FEATURE_CONFIG;
    public static final ReplaceSpheroidConfiguration BASALT_BLOBS_FEATURE_CONFIG;
    public static final ReplaceSpheroidConfiguration BLACKSTONE_BLOBS_FEATURE_CONFIG;
    public static final DeltaFeatureConfiguration BASALT_DELTA_FEATURE_CONFIG;
    public static final HugeMushroomFeatureConfiguration HUGE_RED_MUSHROOM_CONFIG;
    public static final HugeMushroomFeatureConfiguration HUGE_BROWN_MUSHROOM_CONFIG;
    public static final BlockPileConfiguration CRIMSON_FOREST_CONFIG;
    public static final BlockPileConfiguration WARPED_FOREST_CONFIG;
    public static final BlockPileConfiguration NETHER_SPROUTS_CONFIG;
    
    public static void addDefaultOverworldLandMesaStructures(final Biome bre) {
        bre.addStructureStart(BiomeDefaultFeatures.MINESHAFT_MESA);
        bre.addStructureStart(BiomeDefaultFeatures.STRONGHOLD);
    }
    
    public static void addDefaultOverworldLandStructures(final Biome bre) {
        bre.addStructureStart(BiomeDefaultFeatures.MINESHAFT);
        bre.addStructureStart(BiomeDefaultFeatures.STRONGHOLD);
    }
    
    public static void addDefaultOverworldOceanStructures(final Biome bre) {
        bre.addStructureStart(BiomeDefaultFeatures.MINESHAFT);
        bre.addStructureStart(BiomeDefaultFeatures.SHIPWRECK);
    }
    
    public static void addDefaultCarvers(final Biome bre) {
        bre.<CarverConfiguration>addCarver(GenerationStep.Carving.AIR, Biome.makeCarver((WorldCarver<C>)WorldCarver.CAVE, (C)new ProbabilityFeatureConfiguration(0.14285715f)));
        bre.<CarverConfiguration>addCarver(GenerationStep.Carving.AIR, Biome.makeCarver((WorldCarver<C>)WorldCarver.CANYON, (C)new ProbabilityFeatureConfiguration(0.02f)));
    }
    
    public static void addOceanCarvers(final Biome bre) {
        bre.<CarverConfiguration>addCarver(GenerationStep.Carving.AIR, Biome.makeCarver((WorldCarver<C>)WorldCarver.CAVE, (C)new ProbabilityFeatureConfiguration(0.06666667f)));
        bre.<CarverConfiguration>addCarver(GenerationStep.Carving.AIR, Biome.makeCarver((WorldCarver<C>)WorldCarver.CANYON, (C)new ProbabilityFeatureConfiguration(0.02f)));
        bre.<CarverConfiguration>addCarver(GenerationStep.Carving.LIQUID, Biome.makeCarver((WorldCarver<C>)WorldCarver.UNDERWATER_CANYON, (C)new ProbabilityFeatureConfiguration(0.02f)));
        bre.<CarverConfiguration>addCarver(GenerationStep.Carving.LIQUID, Biome.makeCarver((WorldCarver<C>)WorldCarver.UNDERWATER_CAVE, (C)new ProbabilityFeatureConfiguration(0.06666667f)));
    }
    
    public static void addDefaultLakes(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.LAKES, Feature.LAKE.configured(new BlockStateConfiguration(BiomeDefaultFeatures.WATER)).decorated(FeatureDecorator.WATER_LAKE.configured(new ChanceDecoratorConfiguration(4))));
        bre.addFeature(GenerationStep.Decoration.LAKES, Feature.LAKE.configured(new BlockStateConfiguration(BiomeDefaultFeatures.LAVA)).decorated(FeatureDecorator.LAVA_LAKE.configured(new ChanceDecoratorConfiguration(80))));
    }
    
    public static void addDesertLakes(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.LAKES, Feature.LAKE.configured(new BlockStateConfiguration(BiomeDefaultFeatures.LAVA)).decorated(FeatureDecorator.LAVA_LAKE.configured(new ChanceDecoratorConfiguration(80))));
    }
    
    public static void addDefaultMonsterRoom(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_STRUCTURES, Feature.MONSTER_ROOM.configured(FeatureConfiguration.NONE).decorated(FeatureDecorator.DUNGEONS.configured(new ChanceDecoratorConfiguration(8))));
    }
    
    public static void addDefaultUndergroundVariety(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.DIRT, 33)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(10, 0, 0, 256))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.GRAVEL, 33)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(8, 0, 0, 256))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.GRANITE, 33)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(10, 0, 0, 80))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.DIORITE, 33)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(10, 0, 0, 80))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.ANDESITE, 33)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(10, 0, 0, 80))));
    }
    
    public static void addDefaultOres(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.COAL_ORE, 17)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(20, 0, 0, 128))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.IRON_ORE, 9)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(20, 0, 0, 64))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.GOLD_ORE, 9)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(2, 0, 0, 32))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.REDSTONE_ORE, 8)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(8, 0, 0, 16))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.DIAMOND_ORE, 8)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(1, 0, 0, 16))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.LAPIS_ORE, 7)).decorated(FeatureDecorator.COUNT_DEPTH_AVERAGE.configured(new DepthAverageConfigation(1, 16, 16))));
    }
    
    public static void addExtraGold(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.GOLD_ORE, 9)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(20, 32, 32, 80))));
    }
    
    public static void addExtraEmeralds(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.EMERALD_ORE.configured(new ReplaceBlockConfiguration(BiomeDefaultFeatures.STONE, BiomeDefaultFeatures.EMERALD_ORE)).decorated(FeatureDecorator.EMERALD_ORE.configured(DecoratorConfiguration.NONE)));
    }
    
    public static void addInfestedStone(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NATURAL_STONE, BiomeDefaultFeatures.INFESTED_STONE, 9)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(7, 0, 0, 64))));
    }
    
    public static void addDefaultSoftDisks(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.DISK.configured(new DiskConfiguration(BiomeDefaultFeatures.SAND, 7, 2, Lists.<BlockState>newArrayList(BiomeDefaultFeatures.DIRT, BiomeDefaultFeatures.GRASS_BLOCK))).decorated(FeatureDecorator.COUNT_TOP_SOLID.configured(new FrequencyDecoratorConfiguration(3))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.DISK.configured(new DiskConfiguration(BiomeDefaultFeatures.CLAY, 4, 1, Lists.<BlockState>newArrayList(BiomeDefaultFeatures.DIRT, BiomeDefaultFeatures.CLAY))).decorated(FeatureDecorator.COUNT_TOP_SOLID.configured(new FrequencyDecoratorConfiguration(1))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.DISK.configured(new DiskConfiguration(BiomeDefaultFeatures.GRAVEL, 6, 2, Lists.<BlockState>newArrayList(BiomeDefaultFeatures.DIRT, BiomeDefaultFeatures.GRASS_BLOCK))).decorated(FeatureDecorator.COUNT_TOP_SOLID.configured(new FrequencyDecoratorConfiguration(1))));
    }
    
    public static void addSwampClayDisk(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, Feature.DISK.configured(new DiskConfiguration(BiomeDefaultFeatures.CLAY, 4, 1, Lists.<BlockState>newArrayList(BiomeDefaultFeatures.DIRT, BiomeDefaultFeatures.CLAY))).decorated(FeatureDecorator.COUNT_TOP_SOLID.configured(new FrequencyDecoratorConfiguration(1))));
    }
    
    public static void addMossyStoneBlock(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.LOCAL_MODIFICATIONS, Feature.FOREST_ROCK.configured(new BlockBlobConfiguration(BiomeDefaultFeatures.MOSSY_COBBLESTONE, 0)).decorated(FeatureDecorator.FOREST_ROCK.configured(new FrequencyDecoratorConfiguration(3))));
    }
    
    public static void addFerns(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.LARGE_FERN_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_32.configured(new FrequencyDecoratorConfiguration(7))));
    }
    
    public static void addBerryBushes(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.SWEET_BERRY_BUSH_CONFIG).decorated(FeatureDecorator.CHANCE_HEIGHTMAP_DOUBLE.configured(new ChanceDecoratorConfiguration(12))));
    }
    
    public static void addSparseBerryBushes(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.SWEET_BERRY_BUSH_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(1))));
    }
    
    public static void addLightBambooVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.BAMBOO.configured(new ProbabilityFeatureConfiguration(0.0f)).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(16))));
    }
    
    public static void addBambooVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.BAMBOO.configured(new ProbabilityFeatureConfiguration(0.2f)).decorated(FeatureDecorator.TOP_SOLID_HEIGHTMAP_NOISE_BIASED.configured(new NoiseCountFactorDecoratorConfiguration(160, 80.0, 0.3, Heightmap.Types.WORLD_SURFACE_WG))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.FANCY_TREE_CONFIG).weighted(0.05f), Feature.TREE.configured(BiomeDefaultFeatures.JUNGLE_BUSH_CONFIG).weighted(0.15f), Feature.TREE.configured(BiomeDefaultFeatures.MEGA_JUNGLE_TREE_CONFIG).weighted(0.7f)), Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.JUNGLE_GRASS_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(30, 0.1f, 1))));
    }
    
    public static void addTaigaTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.PINE_TREE_CONFIG).weighted(0.33333334f)), Feature.TREE.configured(BiomeDefaultFeatures.SPRUCE_TREE_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(10, 0.1f, 1))));
    }
    
    public static void addWaterTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.FANCY_TREE_CONFIG).weighted(0.1f)), Feature.TREE.configured(BiomeDefaultFeatures.NORMAL_TREE_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(0, 0.1f, 1))));
    }
    
    public static void addBirchTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.TREE.configured(BiomeDefaultFeatures.BIRCH_TREE_WITH_BEES_0002_CONFIG).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(10, 0.1f, 1))));
    }
    
    public static void addOtherBirchTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.BIRCH_TREE_WITH_BEES_0002_CONFIG).weighted(0.2f), Feature.TREE.configured(BiomeDefaultFeatures.FANCY_TREE_WITH_BEES_0002_CONFIG).weighted(0.1f)), Feature.TREE.configured(BiomeDefaultFeatures.NORMAL_TREE_WITH_BEES_0002_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(10, 0.1f, 1))));
    }
    
    public static void addTallBirchTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.SUPER_BIRCH_TREE_WITH_BEES_0002_CONFIG).weighted(0.5f)), Feature.TREE.configured(BiomeDefaultFeatures.BIRCH_TREE_WITH_BEES_0002_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(10, 0.1f, 1))));
    }
    
    public static void addSavannaTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.ACACIA_TREE_CONFIG).weighted(0.8f)), Feature.TREE.configured(BiomeDefaultFeatures.NORMAL_TREE_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(1, 0.1f, 1))));
    }
    
    public static void addShatteredSavannaTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.ACACIA_TREE_CONFIG).weighted(0.8f)), Feature.TREE.configured(BiomeDefaultFeatures.NORMAL_TREE_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(2, 0.1f, 1))));
    }
    
    public static void addMountainTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.SPRUCE_TREE_CONFIG).weighted(0.666f), Feature.TREE.configured(BiomeDefaultFeatures.FANCY_TREE_CONFIG).weighted(0.1f)), Feature.TREE.configured(BiomeDefaultFeatures.NORMAL_TREE_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(0, 0.1f, 1))));
    }
    
    public static void addMountainEdgeTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.SPRUCE_TREE_CONFIG).weighted(0.666f), Feature.TREE.configured(BiomeDefaultFeatures.FANCY_TREE_CONFIG).weighted(0.1f)), Feature.TREE.configured(BiomeDefaultFeatures.NORMAL_TREE_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(3, 0.1f, 1))));
    }
    
    public static void addJungleTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.FANCY_TREE_CONFIG).weighted(0.1f), Feature.TREE.configured(BiomeDefaultFeatures.JUNGLE_BUSH_CONFIG).weighted(0.5f), Feature.TREE.configured(BiomeDefaultFeatures.MEGA_JUNGLE_TREE_CONFIG).weighted(0.33333334f)), Feature.TREE.configured(BiomeDefaultFeatures.JUNGLE_TREE_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(50, 0.1f, 1))));
    }
    
    public static void addJungleEdgeTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.FANCY_TREE_CONFIG).weighted(0.1f), Feature.TREE.configured(BiomeDefaultFeatures.JUNGLE_BUSH_CONFIG).weighted(0.5f)), Feature.TREE.configured(BiomeDefaultFeatures.JUNGLE_TREE_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(2, 0.1f, 1))));
    }
    
    public static void addBadlandsTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.TREE.configured(BiomeDefaultFeatures.NORMAL_TREE_CONFIG).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(5, 0.1f, 1))));
    }
    
    public static void addSnowyTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.TREE.configured(BiomeDefaultFeatures.SPRUCE_TREE_CONFIG).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(0, 0.1f, 1))));
    }
    
    public static void addGiantSpruceTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.MEGA_SPRUCE_TREE_CONFIG).weighted(0.33333334f), Feature.TREE.configured(BiomeDefaultFeatures.PINE_TREE_CONFIG).weighted(0.33333334f)), Feature.TREE.configured(BiomeDefaultFeatures.SPRUCE_TREE_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(10, 0.1f, 1))));
    }
    
    public static void addGiantTrees(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.MEGA_SPRUCE_TREE_CONFIG).weighted(0.025641026f), Feature.TREE.configured(BiomeDefaultFeatures.MEGA_PINE_TREE_CONFIG).weighted(0.30769232f), Feature.TREE.configured(BiomeDefaultFeatures.PINE_TREE_CONFIG).weighted(0.33333334f)), Feature.TREE.configured(BiomeDefaultFeatures.SPRUCE_TREE_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(10, 0.1f, 1))));
    }
    
    public static void addJungleGrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.JUNGLE_GRASS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(25))));
    }
    
    public static void addSavannaGrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.TALL_GRASS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_32.configured(new FrequencyDecoratorConfiguration(7))));
    }
    
    public static void addShatteredSavannaGrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DEFAULT_GRASS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(5))));
    }
    
    public static void addSavannaExtraGrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DEFAULT_GRASS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(20))));
    }
    
    public static void addBadlandGrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DEFAULT_GRASS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(1))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DEAD_BUSH_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(20))));
    }
    
    public static void addForestFlowers(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_RANDOM_SELECTOR.configured(new RandomRandomFeatureConfiguration(ImmutableList.of(Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DOUBLE_LILAC_CONFIG), Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DOUBLE_ROSE_BUSH_CONFIG), Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DOUBLE_PEONY_CONFIG), Feature.FLOWER.configured(BiomeDefaultFeatures.GENERAL_FOREST_FLOWER_CONFIG)), 0)).decorated(FeatureDecorator.COUNT_HEIGHTMAP_32.configured(new FrequencyDecoratorConfiguration(5))));
    }
    
    public static void addForestGrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DEFAULT_GRASS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(2))));
    }
    
    public static void addSwampVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.TREE.configured(BiomeDefaultFeatures.SWAMP_TREE_CONFIG).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(2, 0.1f, 1))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.FLOWER.configured(BiomeDefaultFeatures.SwAMP_FLOWER_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_32.configured(new FrequencyDecoratorConfiguration(1))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DEFAULT_GRASS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(5))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DEAD_BUSH_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(1))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.WATERLILLY_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(4))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.BROWN_MUSHROOM_CONFIG).decorated(FeatureDecorator.COUNT_CHANCE_HEIGHTMAP.configured(new FrequencyChanceDecoratorConfiguration(8, 0.25f))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.RED_MUSHROOM_CONFIG).decorated(FeatureDecorator.COUNT_CHANCE_HEIGHTMAP_DOUBLE.configured(new FrequencyChanceDecoratorConfiguration(8, 0.125f))));
    }
    
    public static void addMushroomFieldVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_BOOLEAN_SELECTOR.configured(new RandomBooleanFeatureConfiguration(Feature.HUGE_RED_MUSHROOM.configured(BiomeDefaultFeatures.HUGE_RED_MUSHROOM_CONFIG), Feature.HUGE_BROWN_MUSHROOM.configured(BiomeDefaultFeatures.HUGE_BROWN_MUSHROOM_CONFIG))).decorated(FeatureDecorator.COUNT_HEIGHTMAP.configured(new FrequencyDecoratorConfiguration(1))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.BROWN_MUSHROOM_CONFIG).decorated(FeatureDecorator.COUNT_CHANCE_HEIGHTMAP.configured(new FrequencyChanceDecoratorConfiguration(1, 0.25f))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.RED_MUSHROOM_CONFIG).decorated(FeatureDecorator.COUNT_CHANCE_HEIGHTMAP_DOUBLE.configured(new FrequencyChanceDecoratorConfiguration(1, 0.125f))));
    }
    
    public static void addPlainVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new RandomFeatureConfiguration(ImmutableList.of(Feature.TREE.configured(BiomeDefaultFeatures.FANCY_TREE_WITH_BEES_005_CONFIG).weighted(0.33333334f)), Feature.TREE.configured(BiomeDefaultFeatures.NORMAL_TREE_WITH_BEES_005_CONFIG))).decorated(FeatureDecorator.COUNT_EXTRA_HEIGHTMAP.configured(new FrequencyWithExtraChanceDecoratorConfiguration(0, 0.05f, 1))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.FLOWER.configured(BiomeDefaultFeatures.PLAIN_FLOWER_CONFIG).decorated(FeatureDecorator.NOISE_HEIGHTMAP_32.configured(new NoiseDependantDecoratorConfiguration(-0.8, 15, 4))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DEFAULT_GRASS_CONFIG).decorated(FeatureDecorator.NOISE_HEIGHTMAP_DOUBLE.configured(new NoiseDependantDecoratorConfiguration(-0.8, 5, 10))));
    }
    
    public static void addDesertVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DEAD_BUSH_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(2))));
    }
    
    public static void addGiantTaigaVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.TAIGA_GRASS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(7))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DEAD_BUSH_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(1))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.BROWN_MUSHROOM_CONFIG).decorated(FeatureDecorator.COUNT_CHANCE_HEIGHTMAP.configured(new FrequencyChanceDecoratorConfiguration(3, 0.25f))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.RED_MUSHROOM_CONFIG).decorated(FeatureDecorator.COUNT_CHANCE_HEIGHTMAP_DOUBLE.configured(new FrequencyChanceDecoratorConfiguration(3, 0.125f))));
    }
    
    public static void addDefaultFlowers(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.FLOWER.configured(BiomeDefaultFeatures.DEFAULT_FLOWER_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_32.configured(new FrequencyDecoratorConfiguration(2))));
    }
    
    public static void addWarmFlowers(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.FLOWER.configured(BiomeDefaultFeatures.DEFAULT_FLOWER_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_32.configured(new FrequencyDecoratorConfiguration(4))));
    }
    
    public static void addDefaultGrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.DEFAULT_GRASS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(1))));
    }
    
    public static void addTaigaGrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.TAIGA_GRASS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(1))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.BROWN_MUSHROOM_CONFIG).decorated(FeatureDecorator.COUNT_CHANCE_HEIGHTMAP.configured(new FrequencyChanceDecoratorConfiguration(1, 0.25f))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.RED_MUSHROOM_CONFIG).decorated(FeatureDecorator.COUNT_CHANCE_HEIGHTMAP_DOUBLE.configured(new FrequencyChanceDecoratorConfiguration(1, 0.125f))));
    }
    
    public static void addPlainGrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.TALL_GRASS_CONFIG).decorated(FeatureDecorator.NOISE_HEIGHTMAP_32.configured(new NoiseDependantDecoratorConfiguration(-0.8, 0, 7))));
    }
    
    public static void addDefaultMushrooms(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.BROWN_MUSHROOM_CONFIG).decorated(FeatureDecorator.CHANCE_HEIGHTMAP_DOUBLE.configured(new ChanceDecoratorConfiguration(4))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.RED_MUSHROOM_CONFIG).decorated(FeatureDecorator.CHANCE_HEIGHTMAP_DOUBLE.configured(new ChanceDecoratorConfiguration(8))));
    }
    
    public static void addDefaultExtraVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.SUGAR_CANE_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(10))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.PUMPKIN_CONFIG).decorated(FeatureDecorator.CHANCE_HEIGHTMAP_DOUBLE.configured(new ChanceDecoratorConfiguration(32))));
    }
    
    public static void addBadlandExtraVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.SUGAR_CANE_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(13))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.PUMPKIN_CONFIG).decorated(FeatureDecorator.CHANCE_HEIGHTMAP_DOUBLE.configured(new ChanceDecoratorConfiguration(32))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.CACTUS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(5))));
    }
    
    public static void addJungleExtraVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.MELON_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(1))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.VINES.configured(FeatureConfiguration.NONE).decorated(FeatureDecorator.COUNT_HEIGHT_64.configured(new FrequencyDecoratorConfiguration(50))));
    }
    
    public static void addDesertExtraVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.SUGAR_CANE_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(60))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.PUMPKIN_CONFIG).decorated(FeatureDecorator.CHANCE_HEIGHTMAP_DOUBLE.configured(new ChanceDecoratorConfiguration(32))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.CACTUS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(10))));
    }
    
    public static void addSwampExtraVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.SUGAR_CANE_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyDecoratorConfiguration(20))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeDefaultFeatures.PUMPKIN_CONFIG).decorated(FeatureDecorator.CHANCE_HEIGHTMAP_DOUBLE.configured(new ChanceDecoratorConfiguration(32))));
    }
    
    public static void addDesertExtraDecoration(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.SURFACE_STRUCTURES, Feature.DESERT_WELL.configured(FeatureConfiguration.NONE).decorated(FeatureDecorator.CHANCE_HEIGHTMAP.configured(new ChanceDecoratorConfiguration(1000))));
    }
    
    public static void addFossilDecoration(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_STRUCTURES, Feature.FOSSIL.configured(FeatureConfiguration.NONE).decorated(FeatureDecorator.CHANCE_PASSTHROUGH.configured(new ChanceDecoratorConfiguration(64))));
    }
    
    public static void addColdOceanExtraVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.KELP.configured(FeatureConfiguration.NONE).decorated(FeatureDecorator.TOP_SOLID_HEIGHTMAP_NOISE_BIASED.configured(new NoiseCountFactorDecoratorConfiguration(120, 80.0, 0.0, Heightmap.Types.OCEAN_FLOOR_WG))));
    }
    
    public static void addDefaultSeagrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.SIMPLE_BLOCK.configured(new SimpleBlockConfiguration(BiomeDefaultFeatures.SEAGRASS, ImmutableList.<BlockState>of(BiomeDefaultFeatures.STONE), ImmutableList.<BlockState>of(BiomeDefaultFeatures.WATER), ImmutableList.<BlockState>of(BiomeDefaultFeatures.WATER))).decorated(FeatureDecorator.CARVING_MASK.configured(new CarvingMaskDecoratorConfiguration(GenerationStep.Carving.LIQUID, 0.1f))));
    }
    
    public static void addWarmSeagrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.SEAGRASS.configured(new SeagrassFeatureConfiguration(80, 0.3)).decorated(FeatureDecorator.TOP_SOLID_HEIGHTMAP.configured(DecoratorConfiguration.NONE)));
    }
    
    public static void addDeepWarmSeagrass(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.SEAGRASS.configured(new SeagrassFeatureConfiguration(80, 0.8)).decorated(FeatureDecorator.TOP_SOLID_HEIGHTMAP.configured(DecoratorConfiguration.NONE)));
    }
    
    public static void addLukeWarmKelp(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.KELP.configured(FeatureConfiguration.NONE).decorated(FeatureDecorator.TOP_SOLID_HEIGHTMAP_NOISE_BIASED.configured(new NoiseCountFactorDecoratorConfiguration(80, 80.0, 0.0, Heightmap.Types.OCEAN_FLOOR_WG))));
    }
    
    public static void addDefaultSprings(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.SPRING.configured(BiomeDefaultFeatures.WATER_SPRING_CONFIG).decorated(FeatureDecorator.COUNT_BIASED_RANGE.configured(new CountRangeDecoratorConfiguration(50, 8, 8, 256))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.SPRING.configured(BiomeDefaultFeatures.LAVA_SPRING_CONFIG).decorated(FeatureDecorator.COUNT_VERY_BIASED_RANGE.configured(new CountRangeDecoratorConfiguration(20, 8, 16, 256))));
    }
    
    public static void addIcebergs(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.LOCAL_MODIFICATIONS, Feature.ICEBERG.configured(new BlockStateConfiguration(BiomeDefaultFeatures.PACKED_ICE)).decorated(FeatureDecorator.ICEBERG.configured(new ChanceDecoratorConfiguration(16))));
        bre.addFeature(GenerationStep.Decoration.LOCAL_MODIFICATIONS, Feature.ICEBERG.configured(new BlockStateConfiguration(BiomeDefaultFeatures.BLUE_ICE)).decorated(FeatureDecorator.ICEBERG.configured(new ChanceDecoratorConfiguration(200))));
    }
    
    public static void addBlueIce(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.SURFACE_STRUCTURES, Feature.BLUE_ICE.configured(FeatureConfiguration.NONE).decorated(FeatureDecorator.RANDOM_COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(20, 30, 32, 64))));
    }
    
    public static void addSurfaceFreezing(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.TOP_LAYER_MODIFICATION, Feature.FREEZE_TOP_LAYER.configured(FeatureConfiguration.NONE));
    }
    
    public static void addNetherDefaultOres(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NETHERRACK, Blocks.GRAVEL.defaultBlockState(), 33)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(2, 5, 0, 37))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NETHERRACK, Blocks.BLACKSTONE.defaultBlockState(), 33)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(2, 5, 10, 37))));
        addNetherOres(bre, 10, 16);
        addAncientDebris(bre);
    }
    
    public static void addNetherOres(final Biome bre, final int integer2, final int integer3) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NETHERRACK, BiomeDefaultFeatures.NETHER_GOLD_ORE, 10)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(integer2, 10, 20, 128))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NETHERRACK, BiomeDefaultFeatures.NETHER_QUARTZ_ORE, 14)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(integer3, 10, 20, 128))));
    }
    
    public static void addAncientDebris(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Feature.NO_SURFACE_ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NETHER_ORE_REPLACEABLES, Blocks.ANCIENT_DEBRIS.defaultBlockState(), 3)).decorated(FeatureDecorator.COUNT_DEPTH_AVERAGE.configured(new DepthAverageConfigation(1, 16, 8))));
        bre.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Feature.NO_SURFACE_ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NETHER_ORE_REPLACEABLES, Blocks.ANCIENT_DEBRIS.defaultBlockState(), 2)).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(1, 8, 16, 128))));
    }
    
    public static void addCrimsonForestVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.HUGE_FUNGUS.configured(HugeFungusConfiguration.HUGE_CRIMSON_FUNGI_NOT_PLANTED_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP.configured(new FrequencyDecoratorConfiguration(8))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.NETHER_FOREST_VEGETATION.configured(BiomeDefaultFeatures.CRIMSON_FOREST_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP.configured(new FrequencyDecoratorConfiguration(6))));
    }
    
    public static void addWarpedForestVegetation(final Biome bre) {
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.HUGE_FUNGUS.configured(HugeFungusConfiguration.HUGE_WARPED_FUNGI_NOT_PLANTED_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP.configured(new FrequencyDecoratorConfiguration(8))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.NETHER_FOREST_VEGETATION.configured(BiomeDefaultFeatures.WARPED_FOREST_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP.configured(new FrequencyDecoratorConfiguration(5))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.NETHER_FOREST_VEGETATION.configured(BiomeDefaultFeatures.NETHER_SPROUTS_CONFIG).decorated(FeatureDecorator.COUNT_HEIGHTMAP.configured(new FrequencyDecoratorConfiguration(4))));
        bre.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Feature.TWISTING_VINES.configured(FeatureConfiguration.NONE).decorated(FeatureDecorator.COUNT_RANGE.configured(new CountRangeDecoratorConfiguration(10, 0, 0, 128))));
    }
    
    static {
        GRASS = Blocks.GRASS.defaultBlockState();
        FERN = Blocks.FERN.defaultBlockState();
        PODZOL = Blocks.PODZOL.defaultBlockState();
        OAK_LOG = Blocks.OAK_LOG.defaultBlockState();
        OAK_LEAVES = Blocks.OAK_LEAVES.defaultBlockState();
        JUNGLE_LOG = Blocks.JUNGLE_LOG.defaultBlockState();
        JUNGLE_LEAVES = Blocks.JUNGLE_LEAVES.defaultBlockState();
        SPRUCE_LOG = Blocks.SPRUCE_LOG.defaultBlockState();
        SPRUCE_LEAVES = Blocks.SPRUCE_LEAVES.defaultBlockState();
        ACACIA_LOG = Blocks.ACACIA_LOG.defaultBlockState();
        ACACIA_LEAVES = Blocks.ACACIA_LEAVES.defaultBlockState();
        BIRCH_LOG = Blocks.BIRCH_LOG.defaultBlockState();
        BIRCH_LEAVES = Blocks.BIRCH_LEAVES.defaultBlockState();
        DARK_OAK_LOG = Blocks.DARK_OAK_LOG.defaultBlockState();
        DARK_OAK_LEAVES = Blocks.DARK_OAK_LEAVES.defaultBlockState();
        WATER = Blocks.WATER.defaultBlockState();
        LAVA = Blocks.LAVA.defaultBlockState();
        DIRT = Blocks.DIRT.defaultBlockState();
        GRAVEL = Blocks.GRAVEL.defaultBlockState();
        GRANITE = Blocks.GRANITE.defaultBlockState();
        DIORITE = Blocks.DIORITE.defaultBlockState();
        ANDESITE = Blocks.ANDESITE.defaultBlockState();
        COAL_ORE = Blocks.COAL_ORE.defaultBlockState();
        IRON_ORE = Blocks.IRON_ORE.defaultBlockState();
        GOLD_ORE = Blocks.GOLD_ORE.defaultBlockState();
        REDSTONE_ORE = Blocks.REDSTONE_ORE.defaultBlockState();
        DIAMOND_ORE = Blocks.DIAMOND_ORE.defaultBlockState();
        LAPIS_ORE = Blocks.LAPIS_ORE.defaultBlockState();
        STONE = Blocks.STONE.defaultBlockState();
        EMERALD_ORE = Blocks.EMERALD_ORE.defaultBlockState();
        INFESTED_STONE = Blocks.INFESTED_STONE.defaultBlockState();
        SAND = Blocks.SAND.defaultBlockState();
        CLAY = Blocks.CLAY.defaultBlockState();
        GRASS_BLOCK = Blocks.GRASS_BLOCK.defaultBlockState();
        MOSSY_COBBLESTONE = Blocks.MOSSY_COBBLESTONE.defaultBlockState();
        LARGE_FERN = Blocks.LARGE_FERN.defaultBlockState();
        TALL_GRASS = Blocks.TALL_GRASS.defaultBlockState();
        LILAC = Blocks.LILAC.defaultBlockState();
        ROSE_BUSH = Blocks.ROSE_BUSH.defaultBlockState();
        PEONY = Blocks.PEONY.defaultBlockState();
        BROWN_MUSHROOM = Blocks.BROWN_MUSHROOM.defaultBlockState();
        RED_MUSHROOM = Blocks.RED_MUSHROOM.defaultBlockState();
        SEAGRASS = Blocks.SEAGRASS.defaultBlockState();
        PACKED_ICE = Blocks.PACKED_ICE.defaultBlockState();
        BLUE_ICE = Blocks.BLUE_ICE.defaultBlockState();
        LILY_OF_THE_VALLEY = Blocks.LILY_OF_THE_VALLEY.defaultBlockState();
        BLUE_ORCHID = Blocks.BLUE_ORCHID.defaultBlockState();
        POPPY = Blocks.POPPY.defaultBlockState();
        DANDELION = Blocks.DANDELION.defaultBlockState();
        DEAD_BUSH = Blocks.DEAD_BUSH.defaultBlockState();
        MELON = Blocks.MELON.defaultBlockState();
        PUMPKIN = Blocks.PUMPKIN.defaultBlockState();
        SWEET_BERRY_BUSH = ((StateHolder<O, BlockState>)Blocks.SWEET_BERRY_BUSH.defaultBlockState()).<Comparable, Integer>setValue((Property<Comparable>)SweetBerryBushBlock.AGE, 3);
        FIRE = Blocks.FIRE.defaultBlockState();
        SOUL_FIRE = Blocks.SOUL_FIRE.defaultBlockState();
        NETHERRACK = Blocks.NETHERRACK.defaultBlockState();
        SOUL_SOIL = Blocks.SOUL_SOIL.defaultBlockState();
        CRIMSON_ROOTS = Blocks.CRIMSON_ROOTS.defaultBlockState();
        LILY_PAD = Blocks.LILY_PAD.defaultBlockState();
        SNOW = Blocks.SNOW.defaultBlockState();
        JACK_O_LANTERN = Blocks.JACK_O_LANTERN.defaultBlockState();
        SUNFLOWER = Blocks.SUNFLOWER.defaultBlockState();
        CACTUS = Blocks.CACTUS.defaultBlockState();
        SUGAR_CANE = Blocks.SUGAR_CANE.defaultBlockState();
        HUGE_RED_MUSHROOM = ((StateHolder<O, BlockState>)Blocks.RED_MUSHROOM_BLOCK.defaultBlockState()).<Comparable, Boolean>setValue((Property<Comparable>)HugeMushroomBlock.DOWN, false);
        HUGE_BROWN_MUSHROOM = (((StateHolder<O, BlockState>)Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState()).setValue((Property<Comparable>)HugeMushroomBlock.UP, true)).<Comparable, Boolean>setValue((Property<Comparable>)HugeMushroomBlock.DOWN, false);
        HUGE_MUSHROOM_STEM = (((StateHolder<O, BlockState>)Blocks.MUSHROOM_STEM.defaultBlockState()).setValue((Property<Comparable>)HugeMushroomBlock.UP, false)).<Comparable, Boolean>setValue((Property<Comparable>)HugeMushroomBlock.DOWN, false);
        NETHER_GOLD_ORE = Blocks.NETHER_GOLD_ORE.defaultBlockState();
        NETHER_QUARTZ_ORE = Blocks.NETHER_QUARTZ_ORE.defaultBlockState();
        WARPED_STEM = Blocks.WARPED_STEM.defaultBlockState();
        WARPED_WART_BLOCK = Blocks.WARPED_WART_BLOCK.defaultBlockState();
        NETHER_WART_BLOCK = Blocks.NETHER_WART_BLOCK.defaultBlockState();
        CRIMSON_STEM = Blocks.CRIMSON_STEM.defaultBlockState();
        SHROOMLIGHT = Blocks.SHROOMLIGHT.defaultBlockState();
        PILLAGER_OUTPOST = StructureFeature.PILLAGER_OUTPOST.configured(NoneFeatureConfiguration.INSTANCE);
        MINESHAFT = StructureFeature.MINESHAFT.configured(new MineshaftConfiguration(0.004000000189989805, MineshaftFeature.Type.NORMAL));
        MINESHAFT_MESA = StructureFeature.MINESHAFT.configured(new MineshaftConfiguration(0.004, MineshaftFeature.Type.MESA));
        WOODLAND_MANSION = StructureFeature.WOODLAND_MANSION.configured(NoneFeatureConfiguration.INSTANCE);
        JUNGLE_TEMPLE = StructureFeature.JUNGLE_TEMPLE.configured(NoneFeatureConfiguration.INSTANCE);
        DESERT_PYRAMID = StructureFeature.DESERT_PYRAMID.configured(NoneFeatureConfiguration.INSTANCE);
        IGLOO = StructureFeature.IGLOO.configured(NoneFeatureConfiguration.INSTANCE);
        SHIPWRECK = StructureFeature.SHIPWRECK.configured(new ShipwreckConfiguration(false));
        SHIPWRECH_BEACHED = StructureFeature.SHIPWRECK.configured(new ShipwreckConfiguration(true));
        SWAMP_HUT = StructureFeature.SWAMP_HUT.configured(NoneFeatureConfiguration.INSTANCE);
        STRONGHOLD = StructureFeature.STRONGHOLD.configured(NoneFeatureConfiguration.INSTANCE);
        OCEAN_MONUMENT = StructureFeature.OCEAN_MONUMENT.configured(NoneFeatureConfiguration.INSTANCE);
        OCEAN_RUIN_COLD = StructureFeature.OCEAN_RUIN.configured(new OceanRuinConfiguration(OceanRuinFeature.Type.COLD, 0.3f, 0.9f));
        OCEAN_RUIN_WARM = StructureFeature.OCEAN_RUIN.configured(new OceanRuinConfiguration(OceanRuinFeature.Type.WARM, 0.3f, 0.9f));
        NETHER_BRIDGE = StructureFeature.NETHER_BRIDGE.configured(NoneFeatureConfiguration.INSTANCE);
        NETHER_FOSSIL = StructureFeature.NETHER_FOSSIL.configured(NoneFeatureConfiguration.INSTANCE);
        END_CITY = StructureFeature.END_CITY.configured(NoneFeatureConfiguration.INSTANCE);
        BURIED_TREASURE = StructureFeature.BURIED_TREASURE.configured(new BuriedTreasureConfiguration(0.01f));
        BASTION_REMNANT = StructureFeature.BASTION_REMNANT.configured(new MultiJigsawConfiguration(BastionPieces.POOLS));
        VILLAGE_PLAINS = StructureFeature.VILLAGE.configured(new JigsawConfiguration(new ResourceLocation("village/plains/town_centers"), 6));
        VILLAGE_DESERT = StructureFeature.VILLAGE.configured(new JigsawConfiguration(new ResourceLocation("village/desert/town_centers"), 6));
        VILLAGE_SAVANNA = StructureFeature.VILLAGE.configured(new JigsawConfiguration(new ResourceLocation("village/savanna/town_centers"), 6));
        VILLAGE_SNOVY = StructureFeature.VILLAGE.configured(new JigsawConfiguration(new ResourceLocation("village/snowy/town_centers"), 6));
        VILLAGE_TAIGA = StructureFeature.VILLAGE.configured(new JigsawConfiguration(new ResourceLocation("village/taiga/town_centers"), 6));
        RUINED_PORTAL_STANDARD = StructureFeature.RUINED_PORTAL.configured(new RuinedPortalConfiguration(RuinedPortalFeature.Type.STANDARD));
        RUINED_PORTAL_DESERT = StructureFeature.RUINED_PORTAL.configured(new RuinedPortalConfiguration(RuinedPortalFeature.Type.DESERT));
        RUINED_PORTAL_JUNGLE = StructureFeature.RUINED_PORTAL.configured(new RuinedPortalConfiguration(RuinedPortalFeature.Type.JUNGLE));
        RUINED_PORTAL_SWAMP = StructureFeature.RUINED_PORTAL.configured(new RuinedPortalConfiguration(RuinedPortalFeature.Type.SWAMP));
        RUINED_PORTAL_MOUNTAIN = StructureFeature.RUINED_PORTAL.configured(new RuinedPortalConfiguration(RuinedPortalFeature.Type.MOUNTAIN));
        RUINED_PORTAL_OCEAN = StructureFeature.RUINED_PORTAL.configured(new RuinedPortalConfiguration(RuinedPortalFeature.Type.OCEAN));
        RUINED_PORTAL_NETHER = StructureFeature.RUINED_PORTAL.configured(new RuinedPortalConfiguration(RuinedPortalFeature.Type.NETHER));
        NORMAL_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.OAK_LOG), new SimpleStateProvider(BiomeDefaultFeatures.OAK_LEAVES), new BlobFoliagePlacer(2, 0, 0, 0, 3), new StraightTrunkPlacer(4, 2, 0), new TwoLayersFeatureSize(1, 0, 1)).ignoreVines().build();
        BEEHIVE_0002 = new BeehiveDecorator(0.002f);
        BEEHIVE_002 = new BeehiveDecorator(0.02f);
        BEEHIVE_005 = new BeehiveDecorator(0.05f);
        NORMAL_TREE_WITH_BEES_0002_CONFIG = BiomeDefaultFeatures.NORMAL_TREE_CONFIG.withDecorators(ImmutableList.of(BiomeDefaultFeatures.BEEHIVE_0002));
        NORMAL_TREE_WITH_BEES_002_CONFIG = BiomeDefaultFeatures.NORMAL_TREE_CONFIG.withDecorators(ImmutableList.of(BiomeDefaultFeatures.BEEHIVE_002));
        NORMAL_TREE_WITH_BEES_005_CONFIG = BiomeDefaultFeatures.NORMAL_TREE_CONFIG.withDecorators(ImmutableList.of(BiomeDefaultFeatures.BEEHIVE_005));
        JUNGLE_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.JUNGLE_LOG), new SimpleStateProvider(BiomeDefaultFeatures.JUNGLE_LEAVES), new BlobFoliagePlacer(2, 0, 0, 0, 3), new StraightTrunkPlacer(4, 8, 0), new TwoLayersFeatureSize(1, 0, 1)).decorators(ImmutableList.<TreeDecorator>of(new CocoaDecorator(0.2f), TrunkVineDecorator.INSTANCE, LeaveVineDecorator.INSTANCE)).ignoreVines().build();
        JUNGLE_TREE_NOVINE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.JUNGLE_LOG), new SimpleStateProvider(BiomeDefaultFeatures.JUNGLE_LEAVES), new BlobFoliagePlacer(2, 0, 0, 0, 3), new StraightTrunkPlacer(4, 8, 0), new TwoLayersFeatureSize(1, 0, 1)).ignoreVines().build();
        PINE_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.SPRUCE_LOG), new SimpleStateProvider(BiomeDefaultFeatures.SPRUCE_LEAVES), new PineFoliagePlacer(1, 0, 1, 0, 3, 1), new StraightTrunkPlacer(6, 4, 0), new TwoLayersFeatureSize(2, 0, 2)).ignoreVines().build();
        SPRUCE_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.SPRUCE_LOG), new SimpleStateProvider(BiomeDefaultFeatures.SPRUCE_LEAVES), new SpruceFoliagePlacer(2, 1, 0, 2, 1, 1), new StraightTrunkPlacer(5, 2, 1), new TwoLayersFeatureSize(2, 0, 2)).ignoreVines().build();
        ACACIA_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.ACACIA_LOG), new SimpleStateProvider(BiomeDefaultFeatures.ACACIA_LEAVES), new AcaciaFoliagePlacer(2, 0, 0, 0), new ForkingTrunkPlacer(5, 2, 2), new TwoLayersFeatureSize(1, 0, 2)).ignoreVines().build();
        BIRCH_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.BIRCH_LOG), new SimpleStateProvider(BiomeDefaultFeatures.BIRCH_LEAVES), new BlobFoliagePlacer(2, 0, 0, 0, 3), new StraightTrunkPlacer(5, 2, 0), new TwoLayersFeatureSize(1, 0, 1)).ignoreVines().build();
        BIRCH_TREE_WITH_BEES_0002_CONFIG = BiomeDefaultFeatures.BIRCH_TREE_CONFIG.withDecorators(ImmutableList.of(BiomeDefaultFeatures.BEEHIVE_0002));
        BIRCH_TREE_WITH_BEES_002_CONFIG = BiomeDefaultFeatures.BIRCH_TREE_CONFIG.withDecorators(ImmutableList.of(BiomeDefaultFeatures.BEEHIVE_002));
        BIRCH_TREE_WITH_BEES_005_CONFIG = BiomeDefaultFeatures.BIRCH_TREE_CONFIG.withDecorators(ImmutableList.of(BiomeDefaultFeatures.BEEHIVE_005));
        SUPER_BIRCH_TREE_WITH_BEES_0002_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.BIRCH_LOG), new SimpleStateProvider(BiomeDefaultFeatures.BIRCH_LEAVES), new BlobFoliagePlacer(2, 0, 0, 0, 3), new StraightTrunkPlacer(5, 2, 6), new TwoLayersFeatureSize(1, 0, 1)).ignoreVines().decorators(ImmutableList.of(BiomeDefaultFeatures.BEEHIVE_0002)).build();
        SWAMP_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.OAK_LOG), new SimpleStateProvider(BiomeDefaultFeatures.OAK_LEAVES), new BlobFoliagePlacer(3, 0, 0, 0, 3), new StraightTrunkPlacer(5, 3, 0), new TwoLayersFeatureSize(1, 0, 1)).maxWaterDepth(1).decorators(ImmutableList.of(LeaveVineDecorator.INSTANCE)).build();
        FANCY_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.OAK_LOG), new SimpleStateProvider(BiomeDefaultFeatures.OAK_LEAVES), new FancyFoliagePlacer(2, 0, 4, 0, 4), new FancyTrunkPlacer(3, 11, 0), new TwoLayersFeatureSize(0, 0, 0, OptionalInt.of(4))).ignoreVines().heightmap(Heightmap.Types.MOTION_BLOCKING).build();
        FANCY_TREE_WITH_BEES_0002_CONFIG = BiomeDefaultFeatures.FANCY_TREE_CONFIG.withDecorators(ImmutableList.of(BiomeDefaultFeatures.BEEHIVE_0002));
        FANCY_TREE_WITH_BEES_002_CONFIG = BiomeDefaultFeatures.FANCY_TREE_CONFIG.withDecorators(ImmutableList.of(BiomeDefaultFeatures.BEEHIVE_002));
        FANCY_TREE_WITH_BEES_005_CONFIG = BiomeDefaultFeatures.FANCY_TREE_CONFIG.withDecorators(ImmutableList.of(BiomeDefaultFeatures.BEEHIVE_005));
        JUNGLE_BUSH_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.JUNGLE_LOG), new SimpleStateProvider(BiomeDefaultFeatures.OAK_LEAVES), new BushFoliagePlacer(2, 0, 1, 0, 2), new StraightTrunkPlacer(1, 0, 0), new TwoLayersFeatureSize(0, 0, 0)).heightmap(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES).build();
        DARK_OAK_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.DARK_OAK_LOG), new SimpleStateProvider(BiomeDefaultFeatures.DARK_OAK_LEAVES), new DarkOakFoliagePlacer(0, 0, 0, 0), new DarkOakTrunkPlacer(6, 2, 1), new ThreeLayersFeatureSize(1, 1, 0, 1, 2, OptionalInt.empty())).maxWaterDepth(Integer.MAX_VALUE).heightmap(Heightmap.Types.MOTION_BLOCKING).ignoreVines().build();
        MEGA_SPRUCE_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.SPRUCE_LOG), new SimpleStateProvider(BiomeDefaultFeatures.SPRUCE_LEAVES), new MegaPineFoliagePlacer(0, 0, 0, 0, 4, 13), new GiantTrunkPlacer(13, 2, 14), new TwoLayersFeatureSize(1, 1, 2)).decorators(ImmutableList.of(new AlterGroundDecorator(new SimpleStateProvider(BiomeDefaultFeatures.PODZOL)))).build();
        MEGA_PINE_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.SPRUCE_LOG), new SimpleStateProvider(BiomeDefaultFeatures.SPRUCE_LEAVES), new MegaPineFoliagePlacer(0, 0, 0, 0, 4, 3), new GiantTrunkPlacer(13, 2, 14), new TwoLayersFeatureSize(1, 1, 2)).decorators(ImmutableList.of(new AlterGroundDecorator(new SimpleStateProvider(BiomeDefaultFeatures.PODZOL)))).build();
        MEGA_JUNGLE_TREE_CONFIG = new TreeConfiguration.TreeConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.JUNGLE_LOG), new SimpleStateProvider(BiomeDefaultFeatures.JUNGLE_LEAVES), new MegaJungleFoliagePlacer(2, 0, 0, 0, 2), new MegaJungleTrunkPlacer(10, 2, 19), new TwoLayersFeatureSize(1, 1, 2)).decorators(ImmutableList.<TreeDecorator>of(TrunkVineDecorator.INSTANCE, LeaveVineDecorator.INSTANCE)).build();
        DEFAULT_GRASS_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.GRASS), SimpleBlockPlacer.INSTANCE).tries(32).build();
        TAIGA_GRASS_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new WeightedStateProvider().add(BiomeDefaultFeatures.GRASS, 1).add(BiomeDefaultFeatures.FERN, 4), SimpleBlockPlacer.INSTANCE).tries(32).build();
        JUNGLE_GRASS_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new WeightedStateProvider().add(BiomeDefaultFeatures.GRASS, 3).add(BiomeDefaultFeatures.FERN, 1), SimpleBlockPlacer.INSTANCE).blacklist(ImmutableSet.<BlockState>of(BiomeDefaultFeatures.PODZOL)).tries(32).build();
        GENERAL_FOREST_FLOWER_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.LILY_OF_THE_VALLEY), SimpleBlockPlacer.INSTANCE).tries(64).build();
        SwAMP_FLOWER_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.BLUE_ORCHID), SimpleBlockPlacer.INSTANCE).tries(64).build();
        DEFAULT_FLOWER_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new WeightedStateProvider().add(BiomeDefaultFeatures.POPPY, 2).add(BiomeDefaultFeatures.DANDELION, 1), SimpleBlockPlacer.INSTANCE).tries(64).build();
        PLAIN_FLOWER_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(PlainFlowerProvider.INSTANCE, SimpleBlockPlacer.INSTANCE).tries(64).build();
        FOREST_FLOWER_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(ForestFlowerProvider.INSTANCE, SimpleBlockPlacer.INSTANCE).tries(64).build();
        DEAD_BUSH_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.DEAD_BUSH), SimpleBlockPlacer.INSTANCE).tries(4).build();
        MELON_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.MELON), SimpleBlockPlacer.INSTANCE).tries(64).whitelist(ImmutableSet.<Block>of(BiomeDefaultFeatures.GRASS_BLOCK.getBlock())).canReplace().noProjection().build();
        PUMPKIN_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.PUMPKIN), SimpleBlockPlacer.INSTANCE).tries(64).whitelist(ImmutableSet.<Block>of(BiomeDefaultFeatures.GRASS_BLOCK.getBlock())).noProjection().build();
        SWEET_BERRY_BUSH_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.SWEET_BERRY_BUSH), SimpleBlockPlacer.INSTANCE).tries(64).whitelist(ImmutableSet.<Block>of(BiomeDefaultFeatures.GRASS_BLOCK.getBlock())).noProjection().build();
        FIRE_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.FIRE), SimpleBlockPlacer.INSTANCE).tries(64).whitelist(ImmutableSet.<Block>of(BiomeDefaultFeatures.NETHERRACK.getBlock())).noProjection().build();
        SOUL_FIRE_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.SOUL_FIRE), new SimpleBlockPlacer()).tries(64).whitelist(ImmutableSet.<Block>of(BiomeDefaultFeatures.SOUL_SOIL.getBlock())).noProjection().build();
        WATERLILLY_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.LILY_PAD), SimpleBlockPlacer.INSTANCE).tries(10).build();
        RED_MUSHROOM_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.RED_MUSHROOM), SimpleBlockPlacer.INSTANCE).tries(64).noProjection().build();
        BROWN_MUSHROOM_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.BROWN_MUSHROOM), SimpleBlockPlacer.INSTANCE).tries(64).noProjection().build();
        CRIMSON_ROOTS_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.CRIMSON_ROOTS), new SimpleBlockPlacer()).tries(64).noProjection().build();
        DOUBLE_LILAC_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.LILAC), new DoublePlantPlacer()).tries(64).noProjection().build();
        DOUBLE_ROSE_BUSH_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.ROSE_BUSH), new DoublePlantPlacer()).tries(64).noProjection().build();
        DOUBLE_PEONY_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.PEONY), new DoublePlantPlacer()).tries(64).noProjection().build();
        SUNFLOWER_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.SUNFLOWER), new DoublePlantPlacer()).tries(64).noProjection().build();
        TALL_GRASS_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.TALL_GRASS), new DoublePlantPlacer()).tries(64).noProjection().build();
        LARGE_FERN_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.LARGE_FERN), new DoublePlantPlacer()).tries(64).noProjection().build();
        CACTUS_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.CACTUS), new ColumnPlacer(1, 2)).tries(10).noProjection().build();
        SUGAR_CANE_CONFIG = new RandomPatchConfiguration.GrassConfigurationBuilder(new SimpleStateProvider(BiomeDefaultFeatures.SUGAR_CANE), new ColumnPlacer(2, 2)).tries(20).xspread(4).yspread(0).zspread(4).noProjection().needWater().build();
        HAY_PILE_CONFIG = new BlockPileConfiguration(new RotatedBlockProvider(Blocks.HAY_BLOCK));
        SNOW_PILE_CONFIG = new BlockPileConfiguration(new SimpleStateProvider(BiomeDefaultFeatures.SNOW));
        MELON_PILE_CONFIG = new BlockPileConfiguration(new SimpleStateProvider(BiomeDefaultFeatures.MELON));
        PUMPKIN_PILE_CONFIG = new BlockPileConfiguration(new WeightedStateProvider().add(BiomeDefaultFeatures.PUMPKIN, 19).add(BiomeDefaultFeatures.JACK_O_LANTERN, 1));
        ICE_PILE_CONFIG = new BlockPileConfiguration(new WeightedStateProvider().add(BiomeDefaultFeatures.BLUE_ICE, 1).add(BiomeDefaultFeatures.PACKED_ICE, 5));
        WATER_STATE = Fluids.WATER.defaultFluidState();
        LAVA_STATE = Fluids.LAVA.defaultFluidState();
        WATER_SPRING_CONFIG = new SpringConfiguration(BiomeDefaultFeatures.WATER_STATE, true, 4, 1, ImmutableSet.<Block>of(Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE));
        LAVA_SPRING_CONFIG = new SpringConfiguration(BiomeDefaultFeatures.LAVA_STATE, true, 4, 1, ImmutableSet.<Block>of(Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE));
        OPEN_NETHER_SPRING_CONFIG = new SpringConfiguration(BiomeDefaultFeatures.LAVA_STATE, false, 4, 1, ImmutableSet.<Block>of(Blocks.NETHERRACK));
        BASALT_DELTA_SPRING_CONFIG = new SpringConfiguration(BiomeDefaultFeatures.LAVA_STATE, true, 4, 1, ImmutableSet.<Block>of(Blocks.NETHERRACK, Blocks.SOUL_SAND, Blocks.GRAVEL, Blocks.MAGMA_BLOCK, Blocks.BLACKSTONE));
        CLOSED_NETHER_SPRING_CONFIG = new SpringConfiguration(BiomeDefaultFeatures.LAVA_STATE, false, 5, 0, ImmutableSet.<Block>of(Blocks.NETHERRACK));
        OPEN_NETHER_SPRING_SOUL_SAND_CONFIG = new SpringConfiguration(BiomeDefaultFeatures.LAVA_STATE, false, 4, 1, ImmutableSet.<Block>of(Blocks.SOUL_SAND));
        CLOSED_NETHER_SPRING_SOUL_SAND_CONFIG = new SpringConfiguration(BiomeDefaultFeatures.LAVA_STATE, false, 5, 0, ImmutableSet.<Block>of(Blocks.SOUL_SAND));
        SMALL_BASALT_COLUMN_FEATURE_CONFIG = new ColumnFeatureConfiguration.Builder().horizontalReach(1).heightRange(1, 4).build();
        LARGE_BASALT_COLUMN_FEATURE_CONFIG = new ColumnFeatureConfiguration.Builder().horizontalReach(2, 3).heightRange(5, 10).build();
        BASALT_BLOBS_FEATURE_CONFIG = new ReplaceSpheroidConfiguration.Builder().minimumReach(new Vec3i(3, 3, 3)).maximumReach(new Vec3i(7, 7, 7)).targetBlockState(Blocks.NETHERRACK.defaultBlockState()).replaceWithBlockState(Blocks.BASALT.defaultBlockState()).build();
        BLACKSTONE_BLOBS_FEATURE_CONFIG = new ReplaceSpheroidConfiguration.Builder().minimumReach(new Vec3i(3, 3, 3)).maximumReach(new Vec3i(7, 7, 7)).targetBlockState(Blocks.NETHERRACK.defaultBlockState()).replaceWithBlockState(Blocks.BLACKSTONE.defaultBlockState()).build();
        BASALT_DELTA_FEATURE_CONFIG = new DeltaFeatureConfiguration.Builder().contents(Blocks.LAVA.defaultBlockState()).radius(3, 7).rim(Blocks.MAGMA_BLOCK.defaultBlockState(), 2).build();
        HUGE_RED_MUSHROOM_CONFIG = new HugeMushroomFeatureConfiguration(new SimpleStateProvider(BiomeDefaultFeatures.HUGE_RED_MUSHROOM), new SimpleStateProvider(BiomeDefaultFeatures.HUGE_MUSHROOM_STEM), 2);
        HUGE_BROWN_MUSHROOM_CONFIG = new HugeMushroomFeatureConfiguration(new SimpleStateProvider(BiomeDefaultFeatures.HUGE_BROWN_MUSHROOM), new SimpleStateProvider(BiomeDefaultFeatures.HUGE_MUSHROOM_STEM), 3);
        CRIMSON_FOREST_CONFIG = new BlockPileConfiguration(new WeightedStateProvider().add(Blocks.CRIMSON_ROOTS.defaultBlockState(), 87).add(Blocks.CRIMSON_FUNGUS.defaultBlockState(), 11).add(Blocks.WARPED_FUNGUS.defaultBlockState(), 1));
        WARPED_FOREST_CONFIG = new BlockPileConfiguration(new WeightedStateProvider().add(Blocks.WARPED_ROOTS.defaultBlockState(), 85).add(Blocks.CRIMSON_ROOTS.defaultBlockState(), 1).add(Blocks.WARPED_FUNGUS.defaultBlockState(), 13).add(Blocks.CRIMSON_FUNGUS.defaultBlockState(), 1));
        NETHER_SPROUTS_CONFIG = new BlockPileConfiguration(new SimpleStateProvider(Blocks.NETHER_SPROUTS.defaultBlockState()));
    }
}
