package net.minecraft.block; import java.util.Random; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.crafting.ItemStack; import net.minecraft.statistics.StatList; import net.minecraft.world.World; public class BlockLeaves extends BlockLeavesBase { private int baseIndexInPNG; int[] adjacentTreeBlocks; protected BlockLeaves(int var1, int var2) { super(var1, var2, Material.leaves, false); this.baseIndexInPNG = var2; this.setTickOnLoad(true); } public void onBlockRemoval(World var1, int var2, int var3, int var4) { byte var5 = 1; int var6 = var5 + 1; if(var1.checkChunksExist(var2 - var6, var3 - var6, var4 - var6, var2 + var6, var3 + var6, var4 + var6)) { for(int var7 = -var5; var7 <= var5; ++var7) { for(int var8 = -var5; var8 <= var5; ++var8) { for(int var9 = -var5; var9 <= var5; ++var9) { int var10 = var1.getBlockId(var2 + var7, var3 + var8, var4 + var9); if(var10 == Block.leaves.blockID) { int var11 = var1.getBlockMetadata(var2 + var7, var3 + var8, var4 + var9); var1.setBlockMetadata(var2 + var7, var3 + var8, var4 + var9, var11 | 8); } } } } } } public void updateTick(World var1, int var2, int var3, int var4, Random var5) { if(!var1.singleplayerWorld) { int var6 = var1.getBlockMetadata(var2, var3, var4); if((var6 & 8) != 0) { byte var7 = 4; int var8 = var7 + 1; byte var9 = 32; int var10 = var9 * var9; int var11 = var9 / 2; if(this.adjacentTreeBlocks == null) { this.adjacentTreeBlocks = new int[var9 * var9 * var9]; } int var12; if(var1.checkChunksExist(var2 - var8, var3 - var8, var4 - var8, var2 + var8, var3 + var8, var4 + var8)) { var12 = -var7; label111: while(true) { int var13; int var14; int var15; if(var12 > var7) { var12 = 1; while(true) { if(var12 > 4) { break label111; } for(var13 = -var7; var13 <= var7; ++var13) { for(var14 = -var7; var14 <= var7; ++var14) { for(var15 = -var7; var15 <= var7; ++var15) { if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11] == var12 - 1) { if(this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if(this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] = var12; } if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] = var12; } if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] = var12; } if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] = var12; } } } } } ++var12; } } for(var13 = -var7; var13 <= var7; ++var13) { for(var14 = -var7; var14 <= var7; ++var14) { var15 = var1.getBlockId(var2 + var12, var3 + var13, var4 + var14); if(var15 == Block.wood.blockID) { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0; } else if(var15 == Block.leaves.blockID) { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2; } else { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -1; } } } ++var12; } } var12 = this.adjacentTreeBlocks[var11 * var10 + var11 * var9 + var11]; if(var12 >= 0) { var1.setBlockMetadata(var2, var3, var4, var6 & -9); } else { this.removeLeaves(var1, var2, var3, var4); } } } } private void removeLeaves(World var1, int var2, int var3, int var4) { this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); var1.setBlockWithNotify(var2, var3, var4, 0); } public int quantityDropped(Random var1) { return var1.nextInt(20) == 0 ? 1 : 0; } public int idDropped(int var1, Random var2) { return Block.sapling.blockID; } public void harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) { if(!var1.singleplayerWorld && var2.getCurrentEquippedItem() != null && var2.getCurrentEquippedItem().itemID == Item.field_31022_bc.shiftedIndex) { var2.addStat(StatList.mineBlockStatArray[this.blockID], 1); this.dropBlockAsItem_do(var1, var3, var4, var5, new ItemStack(Block.leaves.blockID, 1, var6 & 3)); } else { super.harvestBlock(var1, var2, var3, var4, var5, var6); } } protected int damageDropped(int var1) { return var1 & 3; } public boolean isOpaqueCube() { return !this.graphicsLevel; } public int getBlockTextureFromSideAndMetadata(int var1, int var2) { return (var2 & 3) == 1 ? this.blockIndexInTexture + 80 : this.blockIndexInTexture; } public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) { super.onEntityWalking(var1, var2, var3, var4, var5); } }