/** * Checks to see if its valid to put this block at the specified coordinates. Args: world, x, y, z */ public boolean canPlace(World var1, int var2, int var3, int var4) { int var5 = var1.getTypeId(var2, var3 - 1, var4); Block var6 = Block.byId[var5]; return var6 != null && (var6.isLeaves(var1, var2, var3 - 1, var4) || Block.byId[var5].c()) ? var1.getMaterial(var2, var3 - 1, var4).isSolid() : false; }
public boolean a(World var1, Random var2, int var3, int var4, int var5) { int var6 = var2.nextInt(3) + 5; boolean var7 = true; if (var4 >= 1 && var4 + var6 + 1 <= 256) { int var8; int var9; int var10; int var11; Block var13; for (var8 = var4; var8 <= var4 + 1 + var6; ++var8) { byte var12 = 1; if (var8 == var4) { var12 = 0; } if (var8 >= var4 + 1 + var6 - 2) { var12 = 2; } for (var9 = var3 - var12; var9 <= var3 + var12 && var7; ++var9) { for (var10 = var5 - var12; var10 <= var5 + var12 && var7; ++var10) { if (var8 >= 0 && var8 < 256) { var11 = var1.getTypeId(var9, var8, var10); var13 = Block.byId[var11]; if (var11 != 0 && var13 != null && !var13.isLeaves(var1, var9, var8, var10)) { var7 = false; } } else { var7 = false; } } } } if (!var7) { return false; } else { var8 = var1.getTypeId(var3, var4 - 1, var5); if ((var8 == Block.GRASS.id || var8 == Block.DIRT.id) && var4 < 256 - var6 - 1) { this.setType(var1, var3, var4 - 1, var5, Block.DIRT.id); int var17; for (var17 = var4 - 3 + var6; var17 <= var4 + var6; ++var17) { var9 = var17 - (var4 + var6); var10 = 1 - var9 / 2; for (var11 = var3 - var10; var11 <= var3 + var10; ++var11) { int var18 = var11 - var3; for (int var14 = var5 - var10; var14 <= var5 + var10; ++var14) { int var15 = var14 - var5; Block var16 = Block.byId[var1.getTypeId(var11, var17, var14)]; if ((Math.abs(var18) != var10 || Math.abs(var15) != var10 || var2.nextInt(2) != 0 && var9 != 0) && (var16 == null || var16.canBeReplacedByLeaves(var1, var11, var17, var14))) { this.setTypeAndData(var1, var11, var17, var14, Block.LEAVES.id, 2); } } } } for (var17 = 0; var17 < var6; ++var17) { var9 = var1.getTypeId(var3, var4 + var17, var5); var13 = Block.byId[var9]; if (var9 == 0 || var13 == null || var13.isLeaves(var1, var3, var4 + var17, var5)) { this.setTypeAndData(var1, var3, var4 + var17, var5, Block.LOG.id, 2); } } return true; } else { return false; } } } else { return false; } }
/** Ticks the block if it's been scheduled */ public void b(World var1, int var2, int var3, int var4, Random var5) { if (!var1.isStatic) { int var6 = var1.getData(var2, var3, var4); if ((var6 & 8) != 0 && (var6 & 4) == 0) { byte var7 = 4; int var8 = var7 + 1; byte var9 = 32; int var10 = var9 * var9; int var11 = var9 / 2; if (this.b == null) { this.b = new int[var9 * var9 * var9]; } int var12; if (var1.d(var2 - var8, var3 - var8, var4 - var8, var2 + var8, var3 + var8, var4 + var8)) { int var13; int var14; int var15; for (var12 = -var7; var12 <= var7; ++var12) { for (var13 = -var7; var13 <= var7; ++var13) { for (var14 = -var7; var14 <= var7; ++var14) { var15 = var1.getTypeId(var2 + var12, var3 + var13, var4 + var14); Block var16 = Block.byId[var15]; if (var16 != null && var16.canSustainLeaves(var1, var2 + var12, var3 + var13, var4 + var14)) { this.b[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0; } else if (var16 != null && var16.isLeaves(var1, var2 + var12, var3 + var13, var4 + var14)) { this.b[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2; } else { this.b[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -1; } } } } for (var12 = 1; var12 <= 4; ++var12) { for (var13 = -var7; var13 <= var7; ++var13) { for (var14 = -var7; var14 <= var7; ++var14) { for (var15 = -var7; var15 <= var7; ++var15) { if (this.b[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11] == var12 - 1) { if (this.b[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.b[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if (this.b[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.b[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if (this.b[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] == -2) { this.b[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] = var12; } if (this.b[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] == -2) { this.b[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] = var12; } if (this.b[ (var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] == -2) { this.b[ (var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] = var12; } if (this.b[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] == -2) { this.b[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] = var12; } } } } } } } var12 = this.b[var11 * var10 + var11 * var9 + var11]; if (var12 >= 0) { var1.setRawData(var2, var3, var4, var6 & -9); } else { this.l(var1, var2, var3, var4); } } } }