From d9f7e919ee1410c6b080b291ad4634b95af438be Mon Sep 17 00:00:00 2001 From: Matt Caughey Date: Sat, 18 May 2013 18:23:21 -0400 Subject: [PATCH] More Nether biome stuff --- Planned Features.txt | 34 ++-- .../biomes/BiomeDecoratorBOP.java | 13 ++ .../biomes/BiomeGenNetherAbyss.java | 3 + .../biomes/BiomeGenNetherDesert.java | 3 + .../biomes/BiomeGenNetherGarden.java | 9 +- .../biomes/BiomeGenNetherLava.java | 38 +++++ .../worldgen/WorldGenDeadlands.java | 2 +- .../worldgen/WorldGenLavaSpring.java | 81 +++++++++ .../worldgen/WorldGenNetherMushroom.java | 3 +- .../worldgen/WorldGenNetherVines.java | 160 ++++++++++++++++++ .../worldgen/WorldGenNetherWart.java | 48 ++++++ 11 files changed, 376 insertions(+), 18 deletions(-) create mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenLavaSpring.java create mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenNetherWart.java diff --git a/Planned Features.txt b/Planned Features.txt index 7251e7d01..9e5f25437 100644 --- a/Planned Features.txt +++ b/Planned Features.txt @@ -1,34 +1,40 @@ +GENERATION: + +Jacaranda Tree: Purple-leafed trees that generate in the Extreme Hills, Heathland, and Mystic Grove. + +Pine Tree: Pine trees that generate in the Canyon, Jade Cliffs, and Mountain. + +--- + BLOCKS: -Rock: Small rock that has a random size. Uses the vanilla stone texture. +Pebbles: Small rocks scattered around forest biomes. -Pinecone: Pinecone that grows under spruce and fir leaves. No use yet. +Pinecone: Pinecone that grows under spruce and fir leaves. -Origin Blocks: Planks, Gravel, Cobblestone, Mossy Cobblestone, Bricks, Block of Diamond, Block of Gold, Block of Iron, Lapis Lazuli Block - -Originator: Used to turn certain blocks into previous forms. Requires Origin Essence to use. +Origin Blocks: Planks, Gravel, Cobblestone, Mossy Cobblestone, Bricks, Block of Diamond, Block of Gold, Block of Iron, Lapis Lazuli Block. Alpha Essence Ore: Found in the Promised Land. Requires an Amethyst pickaxe to mine. -Omega Essence Ore: Found in the Nether. Requires and Amethyst pickaxe to mine. +Omega Essence Ore: Found in the Nether. Requires an Amethyst pickaxe to mine. --- ITEMS: -Alpha Essence: Mined from Alpha Essence Ore. +Alpha Essence: Mined from Alpha Essence Ore. Used to turn certain blocks into their Origin counterparts. -Omega Essence: Mined from Omega Essence Ore. +Omega Essence: Mined from Omega Essence Ore. Used to turn Origin blocks back to their normal counterparts. --- NETHER BIOMES: -Undergarden: Bramble, nether wart, giant/small mushrooms, hellstem plant, glowpines. +Undergarden: Vines, nether wart, giant/small mushrooms, hellstem plant. -Corrupted Sands: Soulsand, thorns, dead bushes. +Corrupted Sands: Soulsand, bramble, thorns. -Phantasmagoric Inferno: Lots of lavafalls and lava ponds. +Phantasmagoric Inferno: Lots of lavafalls and lava ponds. Aphotic Abyss: Large, empty pits that go into the void. Lots of mobs will spawn here. @@ -38,9 +44,9 @@ Parasitic Heap: A living, breathing biome where a parasitic block slowly eng BEACH BIOMES: -Gravel Beach: A beach covered in gravel +Gravel Beach: A beach covered in gravel. -Lush Beach: A beach with dune grass, and patches of leaves and grass +Lush Beach: A beach with dune grass, and patches of leaves and grass. Forested Beach: A beach with trees. @@ -50,7 +56,7 @@ Rocky Beach: A beach with jagged rocks. OCEAN BIOMES: -Coral Reef: Different types of coral, with reef stone on the ocean floor. +Coral Reef: Different types of coral, with reef stone on the ocean floor. Kelp Forest: Lots and lots of kelp with varying heights. diff --git a/src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java b/src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java index 21c515043..053d345ff 100644 --- a/src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java +++ b/src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java @@ -47,6 +47,7 @@ import biomesoplenty.worldgen.WorldGenMesa; import biomesoplenty.worldgen.WorldGenMud; import biomesoplenty.worldgen.WorldGenMycelium; import biomesoplenty.worldgen.WorldGenNetherVines; +import biomesoplenty.worldgen.WorldGenNetherWart; import biomesoplenty.worldgen.WorldGenOasis; import biomesoplenty.worldgen.WorldGenOutback; import biomesoplenty.worldgen.WorldGenPit; @@ -166,6 +167,7 @@ public class BiomeDecoratorBOP extends BiomeDecorator protected WorldGenerator highCattailGen; protected WorldGenerator outbackGen; protected WorldGenerator canyonGrassGen; + protected WorldGenerator netherWartGen; protected WorldGenerator steppeGen; protected WorldGenerator thornGen; protected WorldGenerator toadstoolGen; @@ -274,6 +276,7 @@ public class BiomeDecoratorBOP extends BiomeDecorator /** The amount of tall grass to generate per chunk. */ protected int grassPerChunk; protected int outbackPerChunk; + protected int netherWartPerChunk; protected int canyonGrassPerChunk; protected int steppePerChunk; protected int highGrassPerChunk; @@ -424,6 +427,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.netherWartGen = new WorldGenNetherWart(Block.netherStalk.blockID, 0); this.canyonGrassGen = new WorldGenCanyonGrass(Blocks.foliage.get().blockID, 2); this.steppeGen = new WorldGenSteppe(Block.sand.blockID, 0); this.carrotGen = new WorldGenCarrots(Block.tallGrass.blockID, 0); @@ -491,6 +495,7 @@ public class BiomeDecoratorBOP extends BiomeDecorator this.desertCactiPerChunk = 0; this.highGrassPerChunk = 0; this.outbackPerChunk = 0; + this.netherWartPerChunk = 0; this.canyonGrassPerChunk = 0; this.steppePerChunk = 0; this.promisedWillowPerChunk = 0; @@ -1069,6 +1074,14 @@ public class BiomeDecoratorBOP extends BiomeDecorator this.outbackGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); } + for (var2 = 0; var2 < this.netherWartPerChunk; ++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.netherWartGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); + } + for (var2 = 0; var2 < this.canyonGrassPerChunk; ++var2) { var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenNetherAbyss.java b/src/minecraft/biomesoplenty/biomes/BiomeGenNetherAbyss.java index 538065686..487e3e998 100644 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenNetherAbyss.java +++ b/src/minecraft/biomesoplenty/biomes/BiomeGenNetherAbyss.java @@ -2,6 +2,7 @@ package biomesoplenty.biomes; import biomesoplenty.configuration.BOPConfiguration; +import net.minecraft.block.Block; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.SpawnListEntry; import net.minecraft.entity.monster.EntityGhast; @@ -17,6 +18,8 @@ public class BiomeGenNetherAbyss extends BiomeGenBase super(par1); this.theBiomeDecorator = new BiomeDecoratorBOP(this); this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; + this.topBlock = (byte)Block.netherrack.blockID; + this.fillerBlock = (byte)Block.netherrack.blockID; this.spawnableMonsterList.clear(); this.spawnableCreatureList.clear(); this.spawnableWaterCreatureList.clear(); diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenNetherDesert.java b/src/minecraft/biomesoplenty/biomes/BiomeGenNetherDesert.java index 86d6542c8..c0b7bee26 100644 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenNetherDesert.java +++ b/src/minecraft/biomesoplenty/biomes/BiomeGenNetherDesert.java @@ -2,6 +2,7 @@ package biomesoplenty.biomes; import biomesoplenty.configuration.BOPConfiguration; +import net.minecraft.block.Block; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.SpawnListEntry; import net.minecraft.entity.monster.EntityGhast; @@ -17,6 +18,8 @@ public class BiomeGenNetherDesert extends BiomeGenBase super(par1); this.theBiomeDecorator = new BiomeDecoratorBOP(this); this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; + this.topBlock = (byte)Block.slowSand.blockID; + this.fillerBlock = (byte)Block.slowSand.blockID; this.spawnableMonsterList.clear(); this.spawnableCreatureList.clear(); this.spawnableWaterCreatureList.clear(); diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenNetherGarden.java b/src/minecraft/biomesoplenty/biomes/BiomeGenNetherGarden.java index 076ef5717..b7af3b8fe 100644 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenNetherGarden.java +++ b/src/minecraft/biomesoplenty/biomes/BiomeGenNetherGarden.java @@ -5,6 +5,7 @@ import java.util.Random; import biomesoplenty.configuration.BOPConfiguration; import biomesoplenty.worldgen.WorldGenNetherMushroom; +import net.minecraft.block.Block; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.SpawnListEntry; import net.minecraft.world.gen.feature.WorldGenerator; @@ -21,9 +22,13 @@ public class BiomeGenNetherGarden extends BiomeGenBase super(par1); this.theBiomeDecorator = new BiomeDecoratorBOP(this); this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 3; - this.customBiomeDecorator.netherVinesPerChunk = 40; + 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.netherWartPerChunk = 3; this.spawnableMonsterList.clear(); this.spawnableCreatureList.clear(); this.spawnableWaterCreatureList.clear(); diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenNetherLava.java b/src/minecraft/biomesoplenty/biomes/BiomeGenNetherLava.java index 6b0dccc88..655cf3eba 100644 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenNetherLava.java +++ b/src/minecraft/biomesoplenty/biomes/BiomeGenNetherLava.java @@ -1,15 +1,23 @@ package biomesoplenty.biomes; import biomesoplenty.configuration.BOPConfiguration; +import biomesoplenty.worldgen.WorldGenLavaSpring; +import biomesoplenty.worldgen.WorldGenDeadlands; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.SpawnListEntry; +import net.minecraft.world.gen.feature.WorldGenerator; import net.minecraft.entity.monster.EntityGhast; import net.minecraft.entity.monster.EntityMagmaCube; import net.minecraft.entity.monster.EntityPigZombie; public class BiomeGenNetherLava extends BiomeGenBase { + private WorldGenerator theWorldGenerator; private BiomeDecoratorBOP customBiomeDecorator; public BiomeGenNetherLava(int par1) @@ -17,6 +25,10 @@ public class BiomeGenNetherLava extends BiomeGenBase super(par1); this.theBiomeDecorator = new BiomeDecoratorBOP(this); this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; + this.topBlock = (byte)Block.netherrack.blockID; + this.fillerBlock = (byte)Block.netherrack.blockID; + this.customBiomeDecorator.grassPerChunk = 15; + this.customBiomeDecorator.lavaLakesPerChunk = 20; this.spawnableMonsterList.clear(); this.spawnableCreatureList.clear(); this.spawnableWaterCreatureList.clear(); @@ -24,5 +36,31 @@ public class BiomeGenNetherLava extends BiomeGenBase this.spawnableMonsterList.add(new SpawnListEntry(EntityGhast.class, 50, 4, 4)); this.spawnableMonsterList.add(new SpawnListEntry(EntityPigZombie.class, 100, 4, 4)); this.spawnableMonsterList.add(new SpawnListEntry(EntityMagmaCube.class, 1, 4, 4)); + this.theWorldGenerator = new WorldGenLavaSpring(Block.lavaMoving.blockID, 8); + } + + /** + * Gets a WorldGen appropriate for this biome. + */ + public WorldGenerator getRandomWorldGenForGrass(Random par1Random) + { + return new WorldGenDeadlands(); + } + + public void decorate(World par1World, Random par2Random, int par3, int par4) + { + super.decorate(par1World, par2Random, par3, par4); + int var5 = 100; + int var6; + int var7; + int var8; + + for (var5 = 0; var5 < 5; ++var5) + { + var6 = par3 + par2Random.nextInt(16); + var7 = 64 + par2Random.nextInt(64); + var8 = par4 + par2Random.nextInt(16); + this.theWorldGenerator.generate(par1World, par2Random, var6, var7, var8); + } } } diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenDeadlands.java b/src/minecraft/biomesoplenty/worldgen/WorldGenDeadlands.java index a94035141..ea09d705a 100644 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenDeadlands.java +++ b/src/minecraft/biomesoplenty/worldgen/WorldGenDeadlands.java @@ -19,7 +19,7 @@ public class WorldGenDeadlands extends WorldGenerator int var8 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); int var9 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - if (par1World.isAirBlock(var7, var8, var9) && par1World.getBlockId(var7, var8 - 1, var9) == Blocks.ash.get().blockID) + if (par1World.isAirBlock(var7, var8, var9) && par1World.getBlockId(var7, var8 - 1, var9) == Blocks.ash.get().blockID || par1World.getBlockId(var7, var8 - 1, var9) == Block.netherrack.blockID) { par1World.setBlock(var7, var8, var9, Block.fire.blockID); } diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenLavaSpring.java b/src/minecraft/biomesoplenty/worldgen/WorldGenLavaSpring.java new file mode 100644 index 000000000..503bddaec --- /dev/null +++ b/src/minecraft/biomesoplenty/worldgen/WorldGenLavaSpring.java @@ -0,0 +1,81 @@ +package biomesoplenty.worldgen; + +import java.util.Random; + +import biomesoplenty.api.Blocks; +import biomesoplenty.configuration.BOPBlocks; + +import net.minecraft.block.Block; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenerator; + +public class WorldGenLavaSpring extends WorldGenerator +{ + /** The block ID of the ore to be placed using this generator. */ + private int minableBlockId; + + /** The number of blocks to generate. */ + private int numberOfBlocks; + + public WorldGenLavaSpring(int par1, int par2) + { + this.minableBlockId = par1; + this.numberOfBlocks = par2; + } + + public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) + { + float var6 = par2Random.nextFloat() * (float)Math.PI; + double var7 = (double)((float)(par3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); + double var9 = (double)((float)(par3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); + double var11 = (double)((float)(par5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); + double var13 = (double)((float)(par5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); + double var15 = (double)(par4 + par2Random.nextInt(3) - 2); + double var17 = (double)(par4 + par2Random.nextInt(3) - 2); + + for (int var19 = 0; var19 <= this.numberOfBlocks; ++var19) + { + double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; + double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; + double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; + double var26 = par2Random.nextDouble() * (double)this.numberOfBlocks / 16.0D; + double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; + double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; + int var32 = MathHelper.floor_double(var20 - var28 / 2.0D); + int var33 = MathHelper.floor_double(var22 - var30 / 2.0D); + int var34 = MathHelper.floor_double(var24 - var28 / 2.0D); + int var35 = MathHelper.floor_double(var20 + var28 / 2.0D); + int var36 = MathHelper.floor_double(var22 + var30 / 2.0D); + int var37 = MathHelper.floor_double(var24 + var28 / 2.0D); + + for (int var38 = var32; var38 <= var35; ++var38) + { + double var39 = ((double)var38 + 0.5D - var20) / (var28 / 2.0D); + + if (var39 * var39 < 1.0D) + { + for (int var41 = var33; var41 <= var36; ++var41) + { + double var42 = ((double)var41 + 0.5D - var22) / (var30 / 2.0D); + + if (var39 * var39 + var42 * var42 < 1.0D) + { + for (int var44 = var34; var44 <= var37; ++var44) + { + double var45 = ((double)var44 + 0.5D - var24) / (var28 / 2.0D); + + if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && par1World.getBlockId(var38, var41, var44) == Block.netherrack.blockID) + { + par1World.setBlock(var38, var41, var44, this.minableBlockId); + } + } + } + } + } + } + } + + return true; + } +} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenNetherMushroom.java b/src/minecraft/biomesoplenty/worldgen/WorldGenNetherMushroom.java index dc6bb142a..d5d643bf0 100644 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenNetherMushroom.java +++ b/src/minecraft/biomesoplenty/worldgen/WorldGenNetherMushroom.java @@ -27,7 +27,8 @@ public class WorldGenNetherMushroom extends WorldGenerator public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) { - int l = par2Random.nextInt(2); + //int l = par2Random.nextInt(2); + int l = 1; if (this.mushroomType >= 0) { diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenNetherVines.java b/src/minecraft/biomesoplenty/worldgen/WorldGenNetherVines.java index 2e408d56a..568a8ac89 100644 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenNetherVines.java +++ b/src/minecraft/biomesoplenty/worldgen/WorldGenNetherVines.java @@ -61,6 +61,46 @@ public class WorldGenNetherVines extends WorldGenerator { var1.setBlock(var3 - 1, var4 - 5, var5, Block.vine.blockID, 8, 2); } + if (var1.isAirBlock(var3 - 1, var4 - 6, var5)) + { + var1.setBlock(var3 - 1, var4 - 6, var5, Block.vine.blockID, 8, 2); + } + if (var1.isAirBlock(var3 - 1, var4 - 7, var5)) + { + var1.setBlock(var3 - 1, var4 - 7, var5, Block.vine.blockID, 8, 2); + } + if (var1.isAirBlock(var3 - 1, var4 - 8, var5)) + { + var1.setBlock(var3 - 1, var4 - 8, var5, Block.vine.blockID, 8, 2); + } + if (var1.isAirBlock(var3 - 1, var4 - 9, var5)) + { + var1.setBlock(var3 - 1, var4 - 9, var5, Block.vine.blockID, 8, 2); + } + if (var1.isAirBlock(var3 - 1, var4 - 10, var5)) + { + var1.setBlock(var3 - 1, var4 - 10, var5, Block.vine.blockID, 8, 2); + } + if (var1.isAirBlock(var3 - 1, var4 - 11, var5)) + { + var1.setBlock(var3 - 1, var4 - 11, var5, Block.vine.blockID, 8, 2); + } + if (var1.isAirBlock(var3 - 1, var4 - 12, var5)) + { + var1.setBlock(var3 - 1, var4 - 12, var5, Block.vine.blockID, 8, 2); + } + if (var1.isAirBlock(var3 - 1, var4 - 13, var5)) + { + var1.setBlock(var3 - 1, var4 - 13, var5, Block.vine.blockID, 8, 2); + } + if (var1.isAirBlock(var3 - 1, var4 - 14, var5)) + { + var1.setBlock(var3 - 1, var4 - 14, var5, Block.vine.blockID, 8, 2); + } + if (var1.isAirBlock(var3 - 1, var4 - 15, var5)) + { + var1.setBlock(var3 - 1, var4 - 15, var5, Block.vine.blockID, 8, 2); + } if (var1.isAirBlock(var3 + 1, var4, var5)) { @@ -106,6 +146,46 @@ public class WorldGenNetherVines extends WorldGenerator { var1.setBlock(var3 + 1, var4 - 10, var5, Block.vine.blockID, 2, 2); } + if (var1.isAirBlock(var3 + 1, var4 - 11, var5)) + { + var1.setBlock(var3 + 1, var4 - 11, var5, Block.vine.blockID, 2, 2); + } + if (var1.isAirBlock(var3 + 1, var4 - 12, var5)) + { + var1.setBlock(var3 + 1, var4 - 12, var5, Block.vine.blockID, 2, 2); + } + if (var1.isAirBlock(var3 + 1, var4 - 13, var5)) + { + var1.setBlock(var3 + 1, var4 - 13, var5, Block.vine.blockID, 2, 2); + } + if (var1.isAirBlock(var3 + 1, var4 - 14, var5)) + { + var1.setBlock(var3 + 1, var4 - 14, var5, Block.vine.blockID, 2, 2); + } + if (var1.isAirBlock(var3 + 1, var4 - 15, var5)) + { + var1.setBlock(var3 + 1, var4 - 15, var5, Block.vine.blockID, 2, 2); + } + if (var1.isAirBlock(var3 + 1, var4 - 16, var5)) + { + var1.setBlock(var3 + 1, var4 - 16, var5, Block.vine.blockID, 2, 2); + } + if (var1.isAirBlock(var3 + 1, var4 - 17, var5)) + { + var1.setBlock(var3 + 1, var4 - 17, var5, Block.vine.blockID, 2, 2); + } + if (var1.isAirBlock(var3 + 1, var4 - 18, var5)) + { + var1.setBlock(var3 + 1, var4 - 18, var5, Block.vine.blockID, 2, 2); + } + if (var1.isAirBlock(var3 + 1, var4 - 19, var5)) + { + var1.setBlock(var3 + 1, var4 - 19, var5, Block.vine.blockID, 2, 2); + } + if (var1.isAirBlock(var3 + 1, var4 - 20, var5)) + { + var1.setBlock(var3 + 1, var4 - 20, var5, Block.vine.blockID, 2, 2); + } if (var1.isAirBlock(var3, var4, var5 - 1)) { @@ -171,6 +251,46 @@ public class WorldGenNetherVines extends WorldGenerator { var1.setBlock(var3, var4 - 15, var5 - 1, Block.vine.blockID, 1, 2); } + if (var1.isAirBlock(var3, var4 - 16, var5 - 1)) + { + var1.setBlock(var3, var4 - 16, var5 - 1, Block.vine.blockID, 1, 2); + } + if (var1.isAirBlock(var3, var4 - 17, var5 - 1)) + { + var1.setBlock(var3, var4 - 17, var5 - 1, Block.vine.blockID, 1, 2); + } + if (var1.isAirBlock(var3, var4 - 18, var5 - 1)) + { + var1.setBlock(var3, var4 - 18, var5 - 1, Block.vine.blockID, 1, 2); + } + if (var1.isAirBlock(var3, var4 - 19, var5 - 1)) + { + var1.setBlock(var3, var4 - 19, var5 - 1, Block.vine.blockID, 1, 2); + } + if (var1.isAirBlock(var3, var4 - 20, var5 - 1)) + { + var1.setBlock(var3, var4 - 20, var5 - 1, Block.vine.blockID, 1, 2); + } + if (var1.isAirBlock(var3, var4 - 21, var5 - 1)) + { + var1.setBlock(var3, var4 - 21, var5 - 1, Block.vine.blockID, 1, 2); + } + if (var1.isAirBlock(var3, var4 - 22, var5 - 1)) + { + var1.setBlock(var3, var4 - 22, var5 - 1, Block.vine.blockID, 1, 2); + } + if (var1.isAirBlock(var3, var4 - 23, var5 - 1)) + { + var1.setBlock(var3, var4 - 23, var5 - 1, Block.vine.blockID, 1, 2); + } + if (var1.isAirBlock(var3, var4 - 24, var5 - 1)) + { + var1.setBlock(var3, var4 - 24, var5 - 1, Block.vine.blockID, 1, 2); + } + if (var1.isAirBlock(var3, var4 - 25, var5 - 1)) + { + var1.setBlock(var3, var4 - 25, var5 - 1, Block.vine.blockID, 1, 2); + } if (var1.isAirBlock(var3, var4, var5 + 1)) { @@ -256,6 +376,46 @@ public class WorldGenNetherVines extends WorldGenerator { var1.setBlock(var3, var4 - 20, var5 + 1, Block.vine.blockID, 4, 2); } + if (var1.isAirBlock(var3, var4 - 21, var5 + 1)) + { + var1.setBlock(var3, var4 - 21, var5 + 1, Block.vine.blockID, 4, 2); + } + if (var1.isAirBlock(var3, var4 - 22, var5 + 1)) + { + var1.setBlock(var3, var4 - 22, var5 + 1, Block.vine.blockID, 4, 2); + } + if (var1.isAirBlock(var3, var4 - 23, var5 + 1)) + { + var1.setBlock(var3, var4 - 23, var5 + 1, Block.vine.blockID, 4, 2); + } + if (var1.isAirBlock(var3, var4 - 24, var5 + 1)) + { + var1.setBlock(var3, var4 - 24, var5 + 1, Block.vine.blockID, 4, 2); + } + if (var1.isAirBlock(var3, var4 - 25, var5 + 1)) + { + var1.setBlock(var3, var4 - 25, var5 + 1, Block.vine.blockID, 4, 2); + } + if (var1.isAirBlock(var3, var4 - 26, var5 + 1)) + { + var1.setBlock(var3, var4 - 26, var5 + 1, Block.vine.blockID, 4, 2); + } + if (var1.isAirBlock(var3, var4 - 27, var5 + 1)) + { + var1.setBlock(var3, var4 - 27, var5 + 1, Block.vine.blockID, 4, 2); + } + if (var1.isAirBlock(var3, var4 - 28, var5 + 1)) + { + var1.setBlock(var3, var4 - 28, var5 + 1, Block.vine.blockID, 4, 2); + } + if (var1.isAirBlock(var3, var4 - 29, var5 + 1)) + { + var1.setBlock(var3, var4 - 29, var5 + 1, Block.vine.blockID, 4, 2); + } + if (var1.isAirBlock(var3, var4 - 30, var5 + 1)) + { + var1.setBlock(var3, var4 - 30, var5 + 1, Block.vine.blockID, 4, 2); + } return true; } diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenNetherWart.java b/src/minecraft/biomesoplenty/worldgen/WorldGenNetherWart.java new file mode 100644 index 000000000..7df57ef6c --- /dev/null +++ b/src/minecraft/biomesoplenty/worldgen/WorldGenNetherWart.java @@ -0,0 +1,48 @@ +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 WorldGenNetherWart extends WorldGenerator +{ + /** Stores ID for WorldGenTallGrass */ + private int tallGrassID; + private int tallGrassMetadata; + + public WorldGenNetherWart(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); + + if (par1World.isAirBlock(var8, var9, var10) && par1World.getBlockId(var8, var9 - 1, var10) == Block.netherrack.blockID) + { + par1World.setBlock(var8, var9 - 1, var10, Block.slowSand.blockID, 0, 2); + par1World.setBlock(var8, var9, var10, Block.netherStalk.blockID, 0, 2); + } + } + + return true; + } +}