package net.tropicraft.world.worldgen; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import net.tropicraft.block.BlockTropicraftLog; import net.tropicraft.registry.TCBlockRegistry; public class WorldGenTropicraftLargePalmTrees extends WorldGenerator { private Block wood = TCBlockRegistry.logs; private Block tropicsLeaves = TCBlockRegistry.palmLeaves; protected Random rand; public WorldGenTropicraftLargePalmTrees() { super(); } public WorldGenTropicraftLargePalmTrees(boolean flag) { super(flag); } @Override public boolean generate(World world, Random random, int i, int j, int k) { int b = random.nextInt(2); byte height = (byte)(random.nextInt(4) + 7); boolean flag = true; if(j < 1 || j + height + 1 > 128) { return false; } for(int l = j; l <= j + 1 + height; l++) { byte byte1 = 1; if(l == j) { byte1 = 0; } if(l >= (j + 1 + height) - 2) { byte1 = 2; } for(int j1 = i - byte1; j1 <= i + byte1 && flag; j1++) { for(int k1 = k - byte1; k1 <= k + byte1 && flag; k1++) { if(l >= 0 && l < 128) { Block l1 = world.getBlock(j1, l, k1); if(l1 != Blocks.air && l1 != TCBlockRegistry.palmLeaves) { flag = false; } } else { flag = false; } } } } if(!flag) { return false; } Block i1 = world.getBlock(i, j - 1, k); if(i1 != Blocks.sand || j >= 128 - height - 1) { int ground = world.getHeightValue(i, k); i1 = world.getBlock(i, ground - 1, k); if(i1 != Blocks.sand || j >= 128 - height - 1) { return false; } j = ground; } for(int y = 0; y <= height; y++) { setBlockAndMetadata(world, i, (j + y), k, wood, 0); } // Wheeee, auto-generated code! setBlockAndMetadata(world, i + 0, j + height + 1, k + -7, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 1, k + -6, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 1, k + -6, tropicsLeaves, 0); setBlockAndMetadata(world, i + -5, j + height + 1, k + -5, tropicsLeaves, 0); setBlockAndMetadata(world, i + 5, j + height + 1, k + -5, tropicsLeaves, 0); setBlockAndMetadata(world, i + -6, j + height + 1, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 1, k + -1, wood, 0); setBlockAndMetadata(world, i + 6, j + height + 1, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -7, j + height + 1, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 1, k + 0, wood, 0); setBlockAndMetadata(world, i + 0, j + height + 1, k + 0, wood, 0); setBlockAndMetadata(world, i + 1, j + height + 1, k + 0, wood, 0); setBlockAndMetadata(world, i + 7, j + height + 1, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + -6, j + height + 1, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 1, k + 1, wood, 0); setBlockAndMetadata(world, i + 6, j + height + 1, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -5, j + height + 1, k + 5, tropicsLeaves, 0); setBlockAndMetadata(world, i + 5, j + height + 1, k + 5, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 1, k + 6, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 1, k + 6, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 1, k + 7, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 2, k + -6, tropicsLeaves, 0); setBlockAndMetadata(world, i + -4, j + height + 2, k + -5, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 2, k + -5, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 2, k + -5, tropicsLeaves, 0); setBlockAndMetadata(world, i + 4, j + height + 2, k + -5, tropicsLeaves, 0); setBlockAndMetadata(world, i + -5, j + height + 2, k + -4, tropicsLeaves, 0); setBlockAndMetadata(world, i + -3, j + height + 2, k + -4, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 2, k + -4, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 2, k + -4, tropicsLeaves, 0); setBlockAndMetadata(world, i + 3, j + height + 2, k + -4, tropicsLeaves, 0); setBlockAndMetadata(world, i + 5, j + height + 2, k + -4, tropicsLeaves, 0); setBlockAndMetadata(world, i + -4, j + height + 2, k + -3, tropicsLeaves, 0); setBlockAndMetadata(world, i + -2, j + height + 2, k + -3, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 2, k + -3, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 2, k + -3, tropicsLeaves, 0); setBlockAndMetadata(world, i + 2, j + height + 2, k + -3, tropicsLeaves, 0); setBlockAndMetadata(world, i + 4, j + height + 2, k + -3, tropicsLeaves, 0); setBlockAndMetadata(world, i + -3, j + height + 2, k + -2, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 2, k + -2, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 2, k + -2, tropicsLeaves, 0); setBlockAndMetadata(world, i + 3, j + height + 2, k + -2, tropicsLeaves, 0); setBlockAndMetadata(world, i + -5, j + height + 2, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -4, j + height + 2, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -3, j + height + 2, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -2, j + height + 2, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 2, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 2, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 2, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 2, j + height + 2, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 3, j + height + 2, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 4, j + height + 2, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 5, j + height + 2, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -6, j + height + 2, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 2, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 2, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 2, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + 6, j + height + 2, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + -5, j + height + 2, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -4, j + height + 2, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -3, j + height + 2, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -2, j + height + 2, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 2, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 2, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 2, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 2, j + height + 2, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 3, j + height + 2, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 4, j + height + 2, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 5, j + height + 2, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -3, j + height + 2, k + 2, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 2, k + 2, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 2, k + 2, tropicsLeaves, 0); setBlockAndMetadata(world, i + 3, j + height + 2, k + 2, tropicsLeaves, 0); setBlockAndMetadata(world, i + -4, j + height + 2, k + 3, tropicsLeaves, 0); setBlockAndMetadata(world, i + -2, j + height + 2, k + 3, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 2, k + 3, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 2, k + 3, tropicsLeaves, 0); setBlockAndMetadata(world, i + 2, j + height + 2, k + 3, tropicsLeaves, 0); setBlockAndMetadata(world, i + 4, j + height + 2, k + 3, tropicsLeaves, 0); setBlockAndMetadata(world, i + -5, j + height + 2, k + 4, tropicsLeaves, 0); setBlockAndMetadata(world, i + -3, j + height + 2, k + 4, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 2, k + 4, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 2, k + 4, tropicsLeaves, 0); setBlockAndMetadata(world, i + 3, j + height + 2, k + 4, tropicsLeaves, 0); setBlockAndMetadata(world, i + 5, j + height + 2, k + 4, tropicsLeaves, 0); setBlockAndMetadata(world, i + -4, j + height + 2, k + 5, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 2, k + 5, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 2, k + 5, tropicsLeaves, 0); setBlockAndMetadata(world, i + 4, j + height + 2, k + 5, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 2, k + 6, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 3, k + -5, tropicsLeaves, 0); setBlockAndMetadata(world, i + -4, j + height + 3, k + -4, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 3, k + -4, tropicsLeaves, 0); setBlockAndMetadata(world, i + 4, j + height + 3, k + -4, tropicsLeaves, 0); setBlockAndMetadata(world, i + -3, j + height + 3, k + -3, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 3, k + -3, tropicsLeaves, 0); setBlockAndMetadata(world, i + 3, j + height + 3, k + -3, tropicsLeaves, 0); setBlockAndMetadata(world, i + -2, j + height + 3, k + -2, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 3, k + -2, tropicsLeaves, 0); setBlockAndMetadata(world, i + 2, j + height + 3, k + -2, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 3, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 3, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 3, k + -1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -5, j + height + 3, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + -4, j + height + 3, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + -3, j + height + 3, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + -2, j + height + 3, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 3, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 3, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + 2, j + height + 3, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + 3, j + height + 3, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + 4, j + height + 3, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + 5, j + height + 3, k + 0, tropicsLeaves, 0); setBlockAndMetadata(world, i + -1, j + height + 3, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 3, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + 1, j + height + 3, k + 1, tropicsLeaves, 0); setBlockAndMetadata(world, i + -2, j + height + 3, k + 2, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 3, k + 2, tropicsLeaves, 0); setBlockAndMetadata(world, i + 2, j + height + 3, k + 2, tropicsLeaves, 0); setBlockAndMetadata(world, i + -3, j + height + 3, k + 3, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 3, k + 3, tropicsLeaves, 0); setBlockAndMetadata(world, i + 3, j + height + 3, k + 3, tropicsLeaves, 0); setBlockAndMetadata(world, i + -4, j + height + 3, k + 4, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 3, k + 4, tropicsLeaves, 0); setBlockAndMetadata(world, i + 4, j + height + 3, k + 4, tropicsLeaves, 0); setBlockAndMetadata(world, i + 0, j + height + 3, k + 5, tropicsLeaves, 0); for(int y = 0; y <= height; y++) { // TODO: Move this to a utils class? BlockTropicraftLog.spawnCoconuts(world, i, (j + y), k, random, 2); } return true; } /** * Sets the block in the world, notifying neighbors if enabled. */ public void setBlockAndMetadata(World par1World, int par2, int par3, int par4, Block par5, int par6) { par1World.setBlock(par2, par3, par4, par5, par6, 3); } }