From c49e6537cb9cb35d1f4bb6cfbd80b4199dff3460 Mon Sep 17 00:00:00 2001 From: Matt Caughey Date: Mon, 18 Jan 2016 20:13:24 -0500 Subject: [PATCH] Re-added Wetland biome (Willow trees are broken currently) --- .../biomesoplenty/api/biome/BOPBiomes.java | 1 + .../biome/overworld/BiomeGenWetland.java | 138 ++++++++++++++++++ .../biomesoplenty/common/init/ModBiomes.java | 4 + .../assets/biomesoplenty/lang/en_US.lang | 2 +- 4 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/BiomeGenWetland.java diff --git a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java index 33b0860c9..a13aeffbd 100644 --- a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java +++ b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java @@ -64,6 +64,7 @@ public class BOPBiomes public static Optional steppe = Optional.absent(); public static Optional thicket = Optional.absent(); public static Optional tundra = Optional.absent(); + public static Optional wetland = Optional.absent(); public static Optional woodland = Optional.absent(); public static Optional xeric_shrubland = Optional.absent(); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenWetland.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenWetland.java new file mode 100644 index 000000000..cff576d6c --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenWetland.java @@ -0,0 +1,138 @@ +/******************************************************************************* + * Copyright 2015-2016, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ + +package biomesoplenty.common.biome.overworld; + +import net.minecraft.block.BlockDoublePlant; +import net.minecraft.block.BlockTallGrass; +import net.minecraft.block.BlockFlower.EnumFlowerType; +import net.minecraft.entity.monster.EntitySlime; +import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; +import biomesoplenty.api.biome.BOPBiome; +import biomesoplenty.api.biome.generation.GeneratorStage; +import biomesoplenty.api.biome.generation.GeneratorWeighted; +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.api.block.BlockQueries; +import biomesoplenty.common.block.BlockBOPCoral; +import biomesoplenty.common.block.BlockBOPDoublePlant; +import biomesoplenty.common.block.BlockBOPLilypad; +import biomesoplenty.common.block.BlockBOPMushroom; +import biomesoplenty.common.block.BlockBOPPlant; +import biomesoplenty.common.block.BlockBOPVine; +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.util.biome.GeneratorUtils.ScatterYMethod; +import biomesoplenty.common.util.block.BlockQuery; +import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery; +import biomesoplenty.common.world.BOPWorldSettings; +import biomesoplenty.common.world.feature.GeneratorColumns; +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.GeneratorBasicTree; +import biomesoplenty.common.world.feature.tree.GeneratorTaigaTree; + +public class BiomeGenWetland extends BOPBiome +{ + + public BiomeGenWetland() + { + // terrain + this.terrainSettings.avgHeight(63).heightVariation(5, 10).octaves(1, 1, 1, 1, 0, 0).sidewaysNoise(0.0F); + + this.setColor(0x4F9657); + this.setTemperatureRainfall(0.6F, 0.9F); + this.waterColorMultiplier = 0x636084; + this.seaFloorBlock = BOPBlocks.mud.getDefaultState(); + + this.addWeight(BOPClimates.WET_TEMPERATE, 10); + + this.spawnableWaterCreatureList.clear(); + this.spawnableMonsterList.add(new SpawnListEntry(EntitySlime.class, 10, 1, 3)); + + // mud + this.addGenerator("mud", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(10).maxRadius(8).with(BOPBlocks.mud.getDefaultState()).create()); + + // trees & logs + GeneratorWeighted treeGenerator = new GeneratorWeighted(9); + this.addGenerator("trees", GeneratorStage.TREE, treeGenerator); + treeGenerator.add("willow", 5, (new GeneratorBasicTree.Builder()).log(BOPWoods.WILLOW).leaves(BOPTrees.WILLOW).minHeight(8).maxHeight(12).vine(Blocks.vine.getDefaultState()).create()); + treeGenerator.add("spruce", 4, (new GeneratorTaigaTree.Builder()).maxHeight(13).create()); // TODO: implement pine cones + + // grasses + GeneratorWeighted grassGenerator = new GeneratorWeighted(10.0F); + this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator); + grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create()); + grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create()); + grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create()); + grassGenerator.add("doublegrass", 1, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.GRASS).create()); + grassGenerator.add("fern", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.FERN).create()); + + // flowers + GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.7F); + this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator); + flowerGenerator.add("swampflower", 2, (new GeneratorFlora.Builder()).with(BOPFlowers.SWAMPFLOWER).create()); + flowerGenerator.add("blue_orchid", 1, (new GeneratorFlora.Builder().with(EnumFlowerType.BLUE_ORCHID).create())); + + // other plants + this.addGenerator("koru", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BOPPlants.KORU).create()); + this.addGenerator("cattail", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(3.0F).with(BOPPlants.CATTAIL).create()); + this.addGenerator("double_cattail", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(3.0F).with(BlockBOPDoublePlant.DoublePlantType.TALL_CATTAIL).create()); + this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.LEAFPILE).create()); + this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.DEADLEAFPILE).create()); + this.addGenerator("sugar_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(1.0F).generationAttempts(24).placeOn(BlockQueries.litFertileWaterside).with(Blocks.reeds.getDefaultState()).minHeight(1).maxHeight(3).create()); + this.addGenerator("river_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(2.0F).generationAttempts(24).placeOn(BlockQueries.litFertileWaterside).with(BlockBOPPlant.paging.getVariantState(BOPPlants.RIVERCANE)).minHeight(1).maxHeight(3).create()); + this.addGenerator("berry_bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.BERRYBUSH).create()); + + // water plants + this.addGenerator("duckweed", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BlockBOPLilypad.LilypadType.DUCKWEED).create()); + this.addGenerator("lily", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(Blocks.waterlily.getDefaultState()).create()); + this.addGenerator("medium_lily", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BlockBOPLilypad.LilypadType.MEDIUM).create()); + this.addGenerator("small_lily", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BlockBOPLilypad.LilypadType.SMALL).create()); + this.addGenerator("tiny_lily", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BlockBOPLilypad.LilypadType.TINY).create()); + this.addGenerator("algae", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(3.0F).replace(Blocks.water).with(BOPBlocks.coral.getDefaultState().withProperty(BlockBOPCoral.VARIANT, BlockBOPCoral.CoralType.ALGAE)).scatterYMethod(ScatterYMethod.AT_GROUND).create()); + this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.REED).generationAttempts(32).create()); + + // shrooms + this.addGenerator("toadstools", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(BlockBOPMushroom.MushroomType.TOADSTOOL).create()); + this.addGenerator("blue_milk_caps", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPMushroom.MushroomType.BLUE_MILK_CAP).create()); + this.addGenerator("red_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(Blocks.red_mushroom.getDefaultState()).create()); + this.addGenerator("brown_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(Blocks.brown_mushroom.getDefaultState()).create()); + + // gem + this.addGenerator("malachite", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.MALACHITE).create()); + + } + + @Override + public void applySettings(BOPWorldSettings settings) + { + if (!settings.generateBopGems) {this.removeGenerator("malachite");} + } + + @Override + public int getGrassColorAtPos(BlockPos pos) + { + return 0x5A935F; + } + + @Override + public int getFoliageColorAtPos(BlockPos pos) + { + return 0x4F9657; + } + + +} diff --git a/src/main/java/biomesoplenty/common/init/ModBiomes.java b/src/main/java/biomesoplenty/common/init/ModBiomes.java index 08aefbcc3..0f3e192b1 100644 --- a/src/main/java/biomesoplenty/common/init/ModBiomes.java +++ b/src/main/java/biomesoplenty/common/init/ModBiomes.java @@ -70,6 +70,7 @@ import static biomesoplenty.api.biome.BOPBiomes.swampland_extension; import static biomesoplenty.api.biome.BOPBiomes.taiga_extension; import static biomesoplenty.api.biome.BOPBiomes.thicket; import static biomesoplenty.api.biome.BOPBiomes.tundra; +import static biomesoplenty.api.biome.BOPBiomes.wetland; import static biomesoplenty.api.biome.BOPBiomes.woodland; import static biomesoplenty.api.biome.BOPBiomes.xeric_shrubland; @@ -136,6 +137,7 @@ import biomesoplenty.common.biome.overworld.BiomeGenSnowyConiferousForest; import biomesoplenty.common.biome.overworld.BiomeGenSteppe; import biomesoplenty.common.biome.overworld.BiomeGenThicket; import biomesoplenty.common.biome.overworld.BiomeGenTundra; +import biomesoplenty.common.biome.overworld.BiomeGenWetland; import biomesoplenty.common.biome.overworld.BiomeGenWoodland; import biomesoplenty.common.biome.overworld.BiomeGenXericShrubland; import biomesoplenty.common.biome.vanilla.BiomeExtBirchForest; @@ -355,6 +357,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry steppe = registerBOPBiome(new BiomeGenSteppe(), "Steppe"); thicket = registerBOPBiome(new BiomeGenThicket(), "Thicket"); tundra = registerBOPBiome(new BiomeGenTundra(), "Tundra"); + wetland = registerBOPBiome(new BiomeGenWetland(), "Wetland"); woodland = registerBOPBiome(new BiomeGenWoodland(), "Woodland"); xeric_shrubland = registerBOPBiome(new BiomeGenXericShrubland(), "Xeric Shrubland"); @@ -419,6 +422,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry 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); + registerBiomeToDictionary(BOPBiomes.wetland, Type.SWAMP, Type.FOREST, Type.WET, Type.LUSH); registerBiomeToDictionary(BOPBiomes.woodland, Type.FOREST, Type.DRY, Type.DENSE); registerBiomeToDictionary(BOPBiomes.xeric_shrubland, Type.PLAINS, Type.SPARSE, Type.DRY); diff --git a/src/main/resources/assets/biomesoplenty/lang/en_US.lang b/src/main/resources/assets/biomesoplenty/lang/en_US.lang index 8396b86d3..b00229927 100644 --- a/src/main/resources/assets/biomesoplenty/lang/en_US.lang +++ b/src/main/resources/assets/biomesoplenty/lang/en_US.lang @@ -11,7 +11,7 @@ achievement.eat_shroom_powder.desc=Ingest some magical shroom powder achievement.obtain_turnip=Stalk Market achievement.obtain_turnip.desc=Harvest a turnip achievement.grow_sacred_oak=Yggdrasil -achievement.grow_sacred_oak.desc=Grow a sacred oak tree from a sapling +achievement.grow_sacred_oak.desc=Plant a sacred oak sapling achievement.craft_flax_string=Flaxen Fun achievement.craft_flax_string.desc=Craft flax plants into flax string achievement.craft_dart_blower=Darts and Crafts