private void scanLogs( World world, int i, int j, int k, int l, boolean[][][] checkArray, int x, int y, int z) { if (y >= 0) { checkArray[x][y][z] = true; int offsetX = 0; int offsetY = 0; int offsetZ = 0; for (offsetY = 0; offsetY <= 1; offsetY++) { for (offsetX = -1; offsetX <= 1; offsetX++) { for (offsetZ = -1; offsetZ <= 1; offsetZ++) { if (x + offsetX < 11 && x + offsetX >= 0 && z + offsetZ < 11 && z + offsetZ >= 0 && y + offsetY < 50 && y + offsetY >= 0) { if (checkOut(world, i + offsetX, j + offsetY, k + offsetZ, l) && !checkArray[x + offsetX][y + offsetY][z + offsetZ]) { scanLogs( world, i + offsetX, j + offsetY, k + offsetZ, l, checkArray, x + offsetX, y + offsetY, z + offsetZ); } } } } } world.setBlockWithNotify(i, j, k, 0); world.markBlockForUpdate(i, j, k); } }
private boolean moveToBlock(World world, int x, int y, int z, int x2, int y2, int z2) { int blockID2 = world.getBlockId(x2, y2, z2); int originMeta = world.getBlockMetadata(x, y, z); int destMeta = world.getBlockMetadata(x2, y2, z2); if (blockID2 == this.blockID) { if (destMeta > originMeta || y > y2) { if (originMeta < 7 && destMeta > 0) { world.setBlockMetadata(x, y, z, originMeta + 1); world.markBlockForUpdate(x, y, z); world.setBlockMetadata(x2, y2, z2, destMeta - 1); world.markBlockForUpdate(x2, y2, z2); return true; } else if (destMeta > 0) { world.setBlockWithNotify(x, y, z, 0); world.markBlockForUpdate(x, y, z); world.setBlockMetadata(x2, y2, z2, destMeta - 1); world.markBlockForUpdate(x2, y2, z2); return true; } else { return false; } } else { return false; } } else if (liquidCanDisplaceBlock(world, x2, y2, z2)) { if (blockID2 > 0) { if (this.blockMaterial == Material.lava) { this.triggerLavaMixEffects(world, x2, y2, z2); } else if (blockID2 == Block.waterMoving.blockID || blockID2 == Block.waterStill.blockID) { if (originMeta < 7) { world.setBlockMetadataWithNotify(x, y, z, originMeta + 1); world.markBlockForUpdate(x, y, z); return true; } else { world.setBlockWithNotify(x, y, z, 0); world.markBlockForUpdate(x, y, z); return true; } } else { Block.blocksList[blockID2].dropBlockAsItem( world, x2, y2, z2, world.getBlockMetadata(x2, y2, z2), 0); } } if (y2 < y) { world.setBlockWithNotify(x, y, z, 0); world.markBlockForUpdate(x, y, z); world.setBlockAndMetadataWithNotify(x2, y2, z2, blockID, originMeta); world.markBlockForUpdate(x2, y2, z2); return true; } if (originMeta < 7) { world.setBlockMetadataWithNotify(x, y, z, originMeta + 1); world.markBlockForUpdate(x, y, z); world.setBlockAndMetadataWithNotify(x2, y2, z2, blockID, 7); world.markBlockForUpdate(x2, y2, z2); return true; } else if (world.getBlockId(x - 1, y, z) != this.blockID && world.getBlockId(x + 1, y, z) != this.blockID && world.getBlockId(x, y + 1, z) != this.blockID && world.getBlockId(x, y, z - 1) != this.blockID && world.getBlockId(x, y, z + 1) != this.blockID) { world.setBlockWithNotify(x, y, z, 0); return true; } else { world.setBlockWithNotify(x, y, z, 0); world.markBlockForUpdate(x, y, z); world.setBlockAndMetadataWithNotify(x2, y2, z2, blockID, 7); world.markBlockForUpdate(x2, y2, z2); return true; } } else { return false; } }