diff --git a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java index 9a24659e4..affc81159 100644 --- a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java +++ b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java @@ -57,6 +57,7 @@ public class BOPBiomes public static Optional sacred_springs = Optional.absent(); public static Optional seasonal_forest = Optional.absent(); public static Optional shrubland = Optional.absent(); + public static Optional snowy_coniferous_forest = Optional.absent(); public static Optional steppe = Optional.absent(); public static Optional thicket = Optional.absent(); public static Optional tundra = Optional.absent(); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSnowyConiferousForest.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSnowyConiferousForest.java new file mode 100644 index 000000000..1fe289a97 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenSnowyConiferousForest.java @@ -0,0 +1,95 @@ +package biomesoplenty.common.biome.overworld; + +import net.minecraft.block.BlockTallGrass; +import net.minecraft.entity.passive.EntityWolf; +import net.minecraft.init.Blocks; +import biomesoplenty.api.biome.BOPBiome; +import biomesoplenty.api.biome.generation.GeneratorStage; +import biomesoplenty.api.biome.generation.GeneratorWeighted; +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.block.BlockBOPDirt; +import biomesoplenty.common.block.BlockBOPDoublePlant; +import biomesoplenty.common.block.BlockBOPGrass; +import biomesoplenty.common.block.BlockBOPLilypad; +import biomesoplenty.common.block.BlockBOPMushroom; +import biomesoplenty.common.enums.BOPClimates; +import biomesoplenty.common.enums.BOPFlowers; +import biomesoplenty.common.enums.BOPGems; +import biomesoplenty.common.enums.BOPPlants; +import biomesoplenty.common.enums.BOPTrees; +import biomesoplenty.common.enums.BOPWoods; +import biomesoplenty.common.world.BOPWorldSettings; +import biomesoplenty.common.world.feature.GeneratorDoubleFlora; +import biomesoplenty.common.world.feature.GeneratorFlora; +import biomesoplenty.common.world.feature.GeneratorGrass; +import biomesoplenty.common.world.feature.GeneratorOreSingle; +import biomesoplenty.common.world.feature.GeneratorWaterside; +import biomesoplenty.common.world.feature.tree.GeneratorTaigaTree; + +public class BiomeGenSnowyConiferousForest extends BOPBiome +{ + + public BiomeGenSnowyConiferousForest() + { + + // terrain + this.terrainSettings.avgHeight(68).heightVariation(10, 20); + + this.setColor(0xFFFFFF); + this.setEnableSnow(); + this.setTemperatureRainfall(0.0F, 0.5F); + + this.addWeight(BOPClimates.TUNDRA, 10); + + this.topBlock = BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.LOAMY); + this.fillerBlock = BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.LOAMY); + + this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 8, 4, 4)); + + // gravel + this.addGenerator("gravel", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(4).maxRadius(7).with(Blocks.gravel.getDefaultState()).create()); + + // trees + // + GeneratorWeighted treeGenerator = new GeneratorWeighted(8.0F); + this.addGenerator("trees", GeneratorStage.TREE, treeGenerator); + treeGenerator.add("fir", 4, (new GeneratorTaigaTree.Builder()).log(BOPWoods.FIR).leaves(BOPTrees.FIR).minHeight(5).maxHeight(28).create()); + treeGenerator.add("mega_fir", 2, (new GeneratorTaigaTree.Builder()).log(BOPWoods.FIR).leaves(BOPTrees.FIR).minHeight(20).maxHeight(40).trunkWidth(2).create()); + + // other plants + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SHRUB).create()); + this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(2.0F).with(BOPPlants.DEADLEAFPILE).create()); + this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); + + // shrooms + this.addGenerator("toadstools", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPMushroom.MushroomType.TOADSTOOL).create()); + this.addGenerator("blue_milk_caps", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BlockBOPMushroom.MushroomType.BLUE_MILK_CAP).create()); + this.addGenerator("brown_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(Blocks.brown_mushroom.getDefaultState()).create()); + this.addGenerator("red_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(Blocks.red_mushroom.getDefaultState()).create()); + + // flowers + GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.1F); + this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator); + flowerGenerator.add("violet", 1, (new GeneratorFlora.Builder().with(BOPFlowers.VIOLET).create())); + + // grasses + GeneratorWeighted grassGenerator = new GeneratorWeighted(2.0F); + this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator); + grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).generationAttempts(128).create()); + grassGenerator.add("mediumgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).generationAttempts(128).create()); + grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).generationAttempts(128).create()); + grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).generationAttempts(128).create()); + grassGenerator.add("fern", 4, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.FERN).create()); + + // gem + this.addGenerator("tanzanite", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.TANZANITE).create()); + + } + + @Override + public void applySettings(BOPWorldSettings settings) + { + if (!settings.generateBopGems) {this.removeGenerator("tanzanite");} + } + +} diff --git a/src/main/java/biomesoplenty/common/init/ModBiomes.java b/src/main/java/biomesoplenty/common/init/ModBiomes.java index 27c9a4afa..c75c15142 100644 --- a/src/main/java/biomesoplenty/common/init/ModBiomes.java +++ b/src/main/java/biomesoplenty/common/init/ModBiomes.java @@ -62,6 +62,7 @@ import static biomesoplenty.api.biome.BOPBiomes.sacred_springs; import static biomesoplenty.api.biome.BOPBiomes.savanna_extension; import static biomesoplenty.api.biome.BOPBiomes.seasonal_forest; import static biomesoplenty.api.biome.BOPBiomes.shrubland; +import static biomesoplenty.api.biome.BOPBiomes.snowy_coniferous_forest; import static biomesoplenty.api.biome.BOPBiomes.steppe; import static biomesoplenty.api.biome.BOPBiomes.swampland_extension; import static biomesoplenty.api.biome.BOPBiomes.taiga_extension; @@ -127,6 +128,7 @@ import biomesoplenty.common.biome.overworld.BiomeGenQuagmire; import biomesoplenty.common.biome.overworld.BiomeGenSacredSprings; import biomesoplenty.common.biome.overworld.BiomeGenSeasonalForest; import biomesoplenty.common.biome.overworld.BiomeGenShrubland; +import biomesoplenty.common.biome.overworld.BiomeGenSnowyConiferousForest; import biomesoplenty.common.biome.overworld.BiomeGenSteppe; import biomesoplenty.common.biome.overworld.BiomeGenThicket; import biomesoplenty.common.biome.overworld.BiomeGenTundra; @@ -339,6 +341,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry sacred_springs = registerBOPBiome(new BiomeGenSacredSprings(), "Sacred Springs"); seasonal_forest = registerBOPBiome(new BiomeGenSeasonalForest(), "Seasonal Forest"); shrubland = registerBOPBiome(new BiomeGenShrubland(), "Shrubland"); + snowy_coniferous_forest = registerBOPBiome(new BiomeGenSnowyConiferousForest(), "Snowy Coniferous Forest"); steppe = registerBOPBiome(new BiomeGenSteppe(), "Steppe"); thicket = registerBOPBiome(new BiomeGenThicket(), "Thicket"); tundra = registerBOPBiome(new BiomeGenTundra(), "Tundra"); @@ -400,6 +403,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry registerBiomeToDictionary(BOPBiomes.quagmire, Type.SWAMP, Type.WATER, Type.DEAD, Type.WET, Type.WASTELAND); registerBiomeToDictionary(BOPBiomes.seasonal_forest, Type.FOREST, Type.DENSE, Type.LUSH); registerBiomeToDictionary(BOPBiomes.shrubland, Type.PLAINS, Type.SPARSE, Type.DRY); + registerBiomeToDictionary(BOPBiomes.snowy_coniferous_forest, Type.FOREST, Type.HILLS, Type.CONIFEROUS, Type.DENSE, Type.COLD, Type.SNOWY); registerBiomeToDictionary(BOPBiomes.steppe, Type.PLAINS, Type.SANDY, Type.DRY, Type.HOT, Type.SAVANNA, Type.SPARSE, Type.DEAD); registerBiomeToDictionary(BOPBiomes.thicket, Type.PLAINS, Type.FOREST, Type.DRY, Type.DEAD, Type.DENSE); registerBiomeToDictionary(BOPBiomes.tundra, Type.COLD, Type.WASTELAND, Type.DRY, Type.DEAD, Type.SPARSE);