diff --git a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java index affc81159..106ae7bb5 100644 --- a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java +++ b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java @@ -54,6 +54,7 @@ public class BOPBiomes public static Optional outback = Optional.absent(); public static Optional prairie = Optional.absent(); public static Optional quagmire = Optional.absent(); + public static Optional rainforest = Optional.absent(); public static Optional sacred_springs = Optional.absent(); public static Optional seasonal_forest = Optional.absent(); public static Optional shrubland = Optional.absent(); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBorealForest.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBorealForest.java index 74a2f4f3d..5ebb19104 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBorealForest.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenBorealForest.java @@ -27,7 +27,6 @@ import biomesoplenty.common.world.feature.tree.GeneratorTaigaTree; public class BiomeGenBorealForest extends BOPBiome { - // TODO: this is very poorly named, boreal forests are cold, this is a mixed forest public BiomeGenBorealForest() { // terrain diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenRainforest.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenRainforest.java new file mode 100644 index 000000000..2dc2b7999 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenRainforest.java @@ -0,0 +1,98 @@ +package biomesoplenty.common.biome.overworld; + +import net.minecraft.block.BlockDoublePlant; +import net.minecraft.block.BlockPlanks; +import net.minecraft.block.BlockTallGrass; +import net.minecraft.block.BlockFlower.EnumFlowerType; +import net.minecraft.entity.passive.EntityOcelot; +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.common.block.BlockBOPDoublePlant; +import biomesoplenty.common.block.BlockBOPLilypad; +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.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.GeneratorMixedLily; +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.GeneratorBigTree; +import biomesoplenty.common.world.feature.tree.GeneratorBush; +import biomesoplenty.common.world.feature.tree.GeneratorTaigaTree; + +public class BiomeGenRainforest extends BOPBiome +{ + public BiomeGenRainforest() + { + // terrain + this.terrainSettings.avgHeight(80).heightVariation(50, 50).sidewaysNoise(1.5D); + + this.setColor(0x14E26F); + this.setTemperatureRainfall(1.0F, 1.0F); + this.addWeight(BOPClimates.TROPICAL, 10); + + this.spawnableCreatureList.add(new SpawnListEntry(EntityOcelot.class, 2, 1, 1)); + + // trees & logs + GeneratorWeighted treeGenerator = new GeneratorWeighted(20); + this.addGenerator("trees", GeneratorStage.TREE, treeGenerator); + treeGenerator.add("birch", 1, (new GeneratorBasicTree.Builder()).log(BlockPlanks.EnumType.BIRCH).leaves(BlockPlanks.EnumType.BIRCH).minHeight(5).maxHeight(8).create()); + treeGenerator.add("oak", 4, (new GeneratorBasicTree.Builder()).minHeight(8).maxHeight(12).create()); + treeGenerator.add("large_oak", 1, (new GeneratorBigTree.Builder()).log(BlockPlanks.EnumType.OAK).leaves(BlockPlanks.EnumType.OAK).create()); + + // grasses + GeneratorWeighted grassGenerator = new GeneratorWeighted(5.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("fern", 4, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.FERN).create()); + + // flowers + GeneratorWeighted flowerGenerator = new GeneratorWeighted(1.5F); + this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator); + flowerGenerator.add("pink_daffodil", 3, (new GeneratorFlora.Builder().with(BOPFlowers.PINK_DAFFODIL).create())); + flowerGenerator.add("orange_cosmos", 4, (new GeneratorFlora.Builder().with(BOPFlowers.ORANGE_COSMOS).create())); + flowerGenerator.add("blue_orchid", 2, (new GeneratorFlora.Builder().with(EnumFlowerType.BLUE_ORCHID).create())); + + // other plants + this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.SHRUB).create()); + this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BOPPlants.LEAFPILE).generationAttempts(64).create()); + this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.CLOVERPATCH).create()); + + // water plants + this.addGenerator("duckweed", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BlockBOPLilypad.LilypadType.DUCKWEED).generationAttempts(32).create()); + this.addGenerator("mixed_lily", GeneratorStage.LILYPAD, (new GeneratorMixedLily.Builder()).amountPerChunk(1.0F).generationAttempts(96).create()); + + // gem + this.addGenerator("topaz", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.TOPAZ).create()); + + } + + @Override + public void applySettings(BOPWorldSettings settings) + { + if (!settings.generateBopGems) {this.removeGenerator("topaz");} + } + + @Override + public int getGrassColorAtPos(BlockPos pos) + { + return 0x1AD86C; + } + + @Override + public int getFoliageColorAtPos(BlockPos pos) + { + return 0x14E26F; + } +} diff --git a/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtJungle.java b/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtJungle.java index 6fde2e8c2..9905ce0a5 100644 --- a/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtJungle.java +++ b/src/main/java/biomesoplenty/common/biome/vanilla/BiomeExtJungle.java @@ -35,7 +35,7 @@ public class BiomeExtJungle extends ExtendedBiomeWrapper // flowers GeneratorWeighted flowerGenerator = new GeneratorWeighted(1.5F); this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator); - flowerGenerator.add("orange_cosmos", 1, (new GeneratorFlora.Builder().with(BOPFlowers.ORANGE_COSMOS).create())); + flowerGenerator.add("orange_cosmos", 4, (new GeneratorFlora.Builder().with(BOPFlowers.ORANGE_COSMOS).create())); // gem this.addGenerator("topaz", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.TOPAZ).create()); diff --git a/src/main/java/biomesoplenty/common/init/ModBiomes.java b/src/main/java/biomesoplenty/common/init/ModBiomes.java index c75c15142..d03caef3a 100644 --- a/src/main/java/biomesoplenty/common/init/ModBiomes.java +++ b/src/main/java/biomesoplenty/common/init/ModBiomes.java @@ -57,6 +57,7 @@ import static biomesoplenty.api.biome.BOPBiomes.outback; import static biomesoplenty.api.biome.BOPBiomes.plains_extension; import static biomesoplenty.api.biome.BOPBiomes.prairie; import static biomesoplenty.api.biome.BOPBiomes.quagmire; +import static biomesoplenty.api.biome.BOPBiomes.rainforest; import static biomesoplenty.api.biome.BOPBiomes.roofed_forest_extension; import static biomesoplenty.api.biome.BOPBiomes.sacred_springs; import static biomesoplenty.api.biome.BOPBiomes.savanna_extension; @@ -125,6 +126,7 @@ import biomesoplenty.common.biome.overworld.BiomeGenOriginValley; import biomesoplenty.common.biome.overworld.BiomeGenOutback; import biomesoplenty.common.biome.overworld.BiomeGenPrairie; import biomesoplenty.common.biome.overworld.BiomeGenQuagmire; +import biomesoplenty.common.biome.overworld.BiomeGenRainforest; import biomesoplenty.common.biome.overworld.BiomeGenSacredSprings; import biomesoplenty.common.biome.overworld.BiomeGenSeasonalForest; import biomesoplenty.common.biome.overworld.BiomeGenShrubland; @@ -338,6 +340,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry outback = registerBOPBiome(new BiomeGenOutback(), "Outback"); prairie = registerBOPBiome(new BiomeGenPrairie(), "Prairie"); quagmire = registerBOPBiome(new BiomeGenQuagmire(), "Quagmire"); + rainforest = registerBOPBiome(new BiomeGenRainforest(), "Rainforest"); sacred_springs = registerBOPBiome(new BiomeGenSacredSprings(), "Sacred Springs"); seasonal_forest = registerBOPBiome(new BiomeGenSeasonalForest(), "Seasonal Forest"); shrubland = registerBOPBiome(new BiomeGenShrubland(), "Shrubland"); @@ -401,6 +404,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry registerBiomeToDictionary(BOPBiomes.outback, Type.SANDY, Type.PLAINS, Type.SAVANNA, Type.DRY, Type.HOT); registerBiomeToDictionary(BOPBiomes.prairie, Type.PLAINS, Type.DRY, Type.SPARSE); registerBiomeToDictionary(BOPBiomes.quagmire, Type.SWAMP, Type.WATER, Type.DEAD, Type.WET, Type.WASTELAND); + registerBiomeToDictionary(BOPBiomes.rainforest, Type.JUNGLE, Type.FOREST, Type.DENSE, Type.LUSH, Type.HILLS, Type.WET); 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);