private void TryToFall(net.minecraft.src.World world, int i, int j, int k) { int l = i; int i1 = j; int j1 = k; if (CanFallBelow(world, l, i1 - 1, j1) && i1 >= 0) { byte byte0 = 32; if (fallInstantly || !world.CheckChunksExist(i - byte0, j - byte0, k - byte0, i + byte0, j + byte0, k + byte0)) { world.SetBlockWithNotify(i, j, k, 0); for (; CanFallBelow(world, i, j - 1, k) && j > 0; j--) { } if (j > 0) { world.SetBlockWithNotify(i, j, k, ID); } } else { net.minecraft.src.EntityFallingSand entityfallingsand = new net.minecraft.src.EntityFallingSand (world, (float)i + 0.5F, (float)j + 0.5F, (float)k + 0.5F, ID); world.AddEntity(entityfallingsand); } } }
public override void OnBlockRemoval(net.minecraft.src.World world, int i, int j, int k) { byte byte0 = 4; int l = byte0 + 1; if (world.CheckChunksExist(i - l, j - l, k - l, i + l, j + l, k + l)) { for (int i1 = -byte0; i1 <= byte0; i1++) { for (int j1 = -byte0; j1 <= byte0; j1++) { for (int k1 = -byte0; k1 <= byte0; k1++) { int l1 = world.GetBlockId(i + i1, j + j1, k + k1); if (l1 != net.minecraft.src.Block.LEAVES.ID) { continue; } int i2 = world.GetBlockMetadata(i + i1, j + j1, k + k1); if ((i2 & 8) == 0) { world.SetBlockMetadata(i + i1, j + j1, k + k1, i2 | 8); } } } } } }
public override void OnBlockRemoval(net.minecraft.src.World world, int i, int j, int k) { int l = 1; int i1 = l + 1; if (world.CheckChunksExist(i - i1, j - i1, k - i1, i + i1, j + i1, k + i1)) { for (int j1 = -l; j1 <= l; j1++) { for (int k1 = -l; k1 <= l; k1++) { for (int l1 = -l; l1 <= l; l1++) { int i2 = world.GetBlockId(i + j1, j + k1, k + l1); if (i2 == net.minecraft.src.Block.LEAVES.ID) { int j2 = world.GetBlockMetadata(i + j1, j + k1, k + l1); world.SetBlockMetadata(i + j1, j + k1, k + l1, j2 | 8); } } } } } }
public override void UpdateTick(net.minecraft.src.World world, int i, int j, int k, SharpBukkitLive.SharpBukkit.SharpRandom random) { if (world.singleplayerWorld) { return; } int l = world.GetBlockMetadata(i, j, k); if ((l & 8) != 0) { byte byte0 = 4; int i1 = byte0 + 1; byte byte1 = 32; int j1 = byte1 * byte1; int k1 = byte1 / 2; if (adjacentTreeBlocks == null) { adjacentTreeBlocks = new int[byte1 * byte1 * byte1]; } if (world.CheckChunksExist(i - i1, j - i1, k - i1, i + i1, j + i1, k + i1)) { for (int l1 = -byte0; l1 <= byte0; l1++) { for (int k2 = -byte0; k2 <= byte0; k2++) { for (int i3 = -byte0; i3 <= byte0; i3++) { int k3 = world.GetBlockId(i + l1, j + k2, k + i3); if (k3 == net.minecraft.src.Block.LOG.ID) { adjacentTreeBlocks[(l1 + k1) * j1 + (k2 + k1) * byte1 + (i3 + k1)] = 0; continue; } if (k3 == net.minecraft.src.Block.LEAVES.ID) { adjacentTreeBlocks[(l1 + k1) * j1 + (k2 + k1) * byte1 + (i3 + k1)] = -2; } else { adjacentTreeBlocks[(l1 + k1) * j1 + (k2 + k1) * byte1 + (i3 + k1)] = -1; } } } } for (int i2 = 1; i2 <= 4; i2++) { for (int l2 = -byte0; l2 <= byte0; l2++) { for (int j3 = -byte0; j3 <= byte0; j3++) { for (int l3 = -byte0; l3 <= byte0; l3++) { if (adjacentTreeBlocks[(l2 + k1) * j1 + (j3 + k1) * byte1 + (l3 + k1)] != i2 - 1) { continue; } if (adjacentTreeBlocks[((l2 + k1) - 1) * j1 + (j3 + k1) * byte1 + (l3 + k1)] == - 2) { adjacentTreeBlocks[((l2 + k1) - 1) * j1 + (j3 + k1) * byte1 + (l3 + k1)] = i2; } if (adjacentTreeBlocks[(l2 + k1 + 1) * j1 + (j3 + k1) * byte1 + (l3 + k1)] == -2) { adjacentTreeBlocks[(l2 + k1 + 1) * j1 + (j3 + k1) * byte1 + (l3 + k1)] = i2; } if (adjacentTreeBlocks[(l2 + k1) * j1 + ((j3 + k1) - 1) * byte1 + (l3 + k1)] == - 2) { adjacentTreeBlocks[(l2 + k1) * j1 + ((j3 + k1) - 1) * byte1 + (l3 + k1)] = i2; } if (adjacentTreeBlocks[(l2 + k1) * j1 + (j3 + k1 + 1) * byte1 + (l3 + k1)] == -2) { adjacentTreeBlocks[(l2 + k1) * j1 + (j3 + k1 + 1) * byte1 + (l3 + k1)] = i2; } if (adjacentTreeBlocks[(l2 + k1) * j1 + (j3 + k1) * byte1 + ((l3 + k1) - 1)] == - 2) { adjacentTreeBlocks[(l2 + k1) * j1 + (j3 + k1) * byte1 + ((l3 + k1) - 1)] = i2; } if (adjacentTreeBlocks[(l2 + k1) * j1 + (j3 + k1) * byte1 + (l3 + k1 + 1)] == -2) { adjacentTreeBlocks[(l2 + k1) * j1 + (j3 + k1) * byte1 + (l3 + k1 + 1)] = i2; } } } } } } int j2 = adjacentTreeBlocks[k1 * j1 + k1 * byte1 + k1]; if (j2 >= 0) { world.SetBlockMetadata(i, j, k, l & -9); } else { RemoveLeaves(world, i, j, k); } } }