From b74853da42c9540518a64b47df0641451fc98502 Mon Sep 17 00:00:00 2001 From: Matt Caughey Date: Sun, 19 May 2013 13:34:19 -0400 Subject: [PATCH] More features added to the Undergarden. Fixed a bug with trees in the Jade Cliffs. --- Planned Features.txt | 8 +++ .../biomes/BiomeDecoratorBOP.java | 13 ++++ .../biomes/BiomeGenNetherGarden.java | 11 ++-- .../blocks/BlockBOPMushroom.java | 15 ++--- .../worldgen/WorldGenJadeTree.java | 2 +- .../worldgen/WorldGenNetherGrass.java | 63 +++++++++++++++++++ .../worldgen/WorldGenNetherMushroom.java | 2 +- 7 files changed, 98 insertions(+), 16 deletions(-) create mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenNetherGrass.java diff --git a/Planned Features.txt b/Planned Features.txt index 9e5f25437..004a3e4bf 100644 --- a/Planned Features.txt +++ b/Planned Features.txt @@ -28,6 +28,14 @@ Omega Essence: Mined from Omega Essence Ore. Used to turn Origin blocks bac --- +OVERWORLD BIOMES: + +Hot Springs: Geysers, pools of water and lava, and decaying spruce trees. + +Temperate Forest: Tall, decaying deciduous trees, thorns, and small bushes. + +--- + NETHER BIOMES: Undergarden: Vines, nether wart, giant/small mushrooms, hellstem plant. diff --git a/src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java b/src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java index 053d345ff..685e52d01 100644 --- a/src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java +++ b/src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java @@ -46,6 +46,7 @@ import biomesoplenty.worldgen.WorldGenMelon; import biomesoplenty.worldgen.WorldGenMesa; import biomesoplenty.worldgen.WorldGenMud; import biomesoplenty.worldgen.WorldGenMycelium; +import biomesoplenty.worldgen.WorldGenNetherGrass; import biomesoplenty.worldgen.WorldGenNetherVines; import biomesoplenty.worldgen.WorldGenNetherWart; import biomesoplenty.worldgen.WorldGenOasis; @@ -167,6 +168,7 @@ public class BiomeDecoratorBOP extends BiomeDecorator protected WorldGenerator highCattailGen; protected WorldGenerator outbackGen; protected WorldGenerator canyonGrassGen; + protected WorldGenerator netherGrassGen; protected WorldGenerator netherWartGen; protected WorldGenerator steppeGen; protected WorldGenerator thornGen; @@ -276,6 +278,7 @@ public class BiomeDecoratorBOP extends BiomeDecorator /** The amount of tall grass to generate per chunk. */ protected int grassPerChunk; protected int outbackPerChunk; + protected int netherGrassPerChunk; protected int netherWartPerChunk; protected int canyonGrassPerChunk; protected int steppePerChunk; @@ -427,6 +430,7 @@ public class BiomeDecoratorBOP extends BiomeDecorator this.highGrassGen = new WorldGenHighGrass(Blocks.foliage.get().blockID, 3); this.highCattailGen = new WorldGenHighCattail(Blocks.plants.get().blockID, 9); this.outbackGen = new WorldGenOutback(Blocks.foliage.get().blockID, 2); + this.netherGrassGen = new WorldGenNetherGrass(Block.tallGrass.blockID, 1); this.netherWartGen = new WorldGenNetherWart(Block.netherStalk.blockID, 0); this.canyonGrassGen = new WorldGenCanyonGrass(Blocks.foliage.get().blockID, 2); this.steppeGen = new WorldGenSteppe(Block.sand.blockID, 0); @@ -495,6 +499,7 @@ public class BiomeDecoratorBOP extends BiomeDecorator this.desertCactiPerChunk = 0; this.highGrassPerChunk = 0; this.outbackPerChunk = 0; + this.netherGrassPerChunk = 0; this.netherWartPerChunk = 0; this.canyonGrassPerChunk = 0; this.steppePerChunk = 0; @@ -1074,6 +1079,14 @@ public class BiomeDecoratorBOP extends BiomeDecorator this.outbackGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); } + for (var2 = 0; var2 < this.netherGrassPerChunk; ++var2) + { + var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; + var4 = this.randomGenerator.nextInt(128); + var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; + this.netherGrassGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); + } + for (var2 = 0; var2 < this.netherWartPerChunk; ++var2) { var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenNetherGarden.java b/src/minecraft/biomesoplenty/biomes/BiomeGenNetherGarden.java index b7af3b8fe..9780b39db 100644 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenNetherGarden.java +++ b/src/minecraft/biomesoplenty/biomes/BiomeGenNetherGarden.java @@ -24,11 +24,14 @@ public class BiomeGenNetherGarden extends BiomeGenBase this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; this.topBlock = (byte)Block.netherrack.blockID; this.fillerBlock = (byte)Block.netherrack.blockID; - this.customBiomeDecorator.treesPerChunk = 15; - this.customBiomeDecorator.netherVinesPerChunk = 80; - this.customBiomeDecorator.mushroomsPerChunk = 20; - this.customBiomeDecorator.bigMushroomsPerChunk = 10; + this.customBiomeDecorator.treesPerChunk = 60; + this.customBiomeDecorator.netherVinesPerChunk = 60; + this.customBiomeDecorator.mushroomsPerChunk = 30; + this.customBiomeDecorator.bigMushroomsPerChunk = 30; this.customBiomeDecorator.netherWartPerChunk = 3; + this.customBiomeDecorator.netherGrassPerChunk = 8; + this.customBiomeDecorator.glowshroomsPerChunk = 3; + this.customBiomeDecorator.toadstoolsPerChunk = 5; this.spawnableMonsterList.clear(); this.spawnableCreatureList.clear(); this.spawnableWaterCreatureList.clear(); diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPMushroom.java b/src/minecraft/biomesoplenty/blocks/BlockBOPMushroom.java index d293d6947..d190d7adc 100644 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPMushroom.java +++ b/src/minecraft/biomesoplenty/blocks/BlockBOPMushroom.java @@ -104,13 +104,13 @@ public class BlockBOPMushroom extends BlockFlower protected boolean canThisPlantGrowOnThisBlockID(int id, int metadata) { if (metadata == 0) //Toadstool - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID || id == Blocks.holyGrass.get().blockID; + return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID || id == Blocks.holyGrass.get().blockID || id == Block.netherrack.blockID; if (metadata == 1) //Portobello return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID | id == Blocks.holyGrass.get().blockID; if (metadata == 2) //Blue Milk Cap return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID || id == Blocks.holyGrass.get().blockID; if (metadata == 3) //Glowshroom - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID || id == Block.stone.blockID; + return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID || id == Block.stone.blockID || id == Block.netherrack.blockID; else return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID; } @@ -126,7 +126,7 @@ public class BlockBOPMushroom extends BlockFlower switch (meta) { case 0: // Toadstool - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID || id == Blocks.holyGrass.get().blockID; + return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID || id == Blocks.holyGrass.get().blockID || id == Block.netherrack.blockID; case 1: // Portobello return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID || id == Blocks.holyGrass.get().blockID; @@ -135,7 +135,7 @@ public class BlockBOPMushroom extends BlockFlower return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID || id == Blocks.holyGrass.get().blockID; case 3: // Glowshroom - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID || id == Block.stone.blockID; + return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID || id == Block.stone.blockID || id == Block.netherrack.blockID; default: return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID; @@ -147,12 +147,7 @@ public class BlockBOPMushroom extends BlockFlower @Override public boolean canBlockStay(World world, int x, int y, int z) { - if (world.getBlockId(x, y, z) != this.blockID) - return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) - && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z)); - else - return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) - && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z), world.getBlockMetadata(x, y, z)); + return this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z), world.getBlockMetadata(x, y, z)); } @Override diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenJadeTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenJadeTree.java index 76d3a4492..bb8ed065e 100644 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenJadeTree.java +++ b/src/minecraft/biomesoplenty/worldgen/WorldGenJadeTree.java @@ -93,7 +93,7 @@ public class WorldGenJadeTree extends WorldGenerator if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)]) { - this.setBlockAndMetadata(par1World, var17, var16, var19, Block.leaves.blockID, 4); + this.setBlockAndMetadata(par1World, var17, var16, var19, Block.leaves.blockID, 0); } } } diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenNetherGrass.java b/src/minecraft/biomesoplenty/worldgen/WorldGenNetherGrass.java new file mode 100644 index 000000000..f1e49c327 --- /dev/null +++ b/src/minecraft/biomesoplenty/worldgen/WorldGenNetherGrass.java @@ -0,0 +1,63 @@ +package biomesoplenty.worldgen; + +import java.util.Random; + +import biomesoplenty.api.Blocks; +import biomesoplenty.configuration.BOPBlocks; + +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenerator; + +public class WorldGenNetherGrass extends WorldGenerator +{ + /** Stores ID for WorldGenTallGrass */ + private int tallGrassID; + private int tallGrassMetadata; + + public WorldGenNetherGrass(int par1, int par2) + { + this.tallGrassID = par1; + this.tallGrassMetadata = par2; + } + + public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) + { + int var11; + + for (boolean var6 = false; ((var11 = par1World.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4) + { + ; + } + + for (int var7 = 0; var7 < 128; ++var7) + { + int var8 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); + int var9 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); + int var10 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); + int var99 = par2Random.nextInt(6); + + if (par1World.isAirBlock(var8, var9, var10) && par1World.getBlockId(var8, var9 - 1, var10) == Block.netherrack.blockID) + { + par1World.setBlock(var8, var9 - 1, var10, Block.grass.blockID, 0, 2); + + if (var99 == 0) + { + par1World.setBlock(var8, var9, var10, Block.mushroomRed.blockID, 0, 2); + } + + if (var99 == 1) + { + par1World.setBlock(var8, var9, var10, Block.mushroomBrown.blockID, 0, 2); + } + + if (var99 == 2) + { + par1World.setBlock(var8, var9, var10, Block.tallGrass.blockID, 0, 2); + } + } + } + + return true; + } +} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenNetherMushroom.java b/src/minecraft/biomesoplenty/worldgen/WorldGenNetherMushroom.java index d5d643bf0..5f048931b 100644 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenNetherMushroom.java +++ b/src/minecraft/biomesoplenty/worldgen/WorldGenNetherMushroom.java @@ -85,7 +85,7 @@ public class WorldGenNetherMushroom extends WorldGenerator { j1 = par1World.getBlockId(par3, par4 - 1, par5); - if (j1 != Block.netherrack.blockID) + if (j1 != Block.netherrack.blockID && j1 != Block.grass.blockID) { return false; }