public void onNeighborBlockChange(World world, int i, int j, int k, int l) { int dir = world.getBlockMetadata(i, j, k); if (dir == 0) { if (!world.isBlockOpaqueCube(i, j, k + 1)) { this.breakBlock(world, i, j, k, blockID, dir); world.setBlock(i, j, k, 0); } } else if (dir == 1) { if (!world.isBlockOpaqueCube(i - 1, j, k)) { this.breakBlock(world, i, j, k, blockID, dir); world.setBlock(i, j, k, 0); } } else if (dir == 2) { if (!world.isBlockOpaqueCube(i, j, k - 1)) { this.breakBlock(world, i, j, k, blockID, dir); world.setBlock(i, j, k, 0); } } else if (dir == 3) { if (!world.isBlockOpaqueCube(i + 1, j, k)) { this.breakBlock(world, i, j, k, blockID, dir); world.setBlock(i, j, k, 0); } } }
@Override public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int i, int j, int k) { if (world.getBlockId(i, j - 1, k) == this.blockID || world.isBlockOpaqueCube(i, j - 1, k)) { return AxisAlignedBB.getBoundingBox(i + 0.3, j, k + 0.3, i + 0.7, j + 1, k + 0.7); } return AxisAlignedBB.getBoundingBox(i, j + 0.4, k, i + 1, j + 0.6, k + 1); }
@Override public void updateTick(World world, int i, int j, int k, Random rand) { if (!world.isRemote) { if (!world.isBlockOpaqueCube(i, j - 1, k)) { if (world.getBlockId(i + 1, j, k) != blockID && world.getBlockId(i - 1, j, k) != blockID && world.getBlockId(i, j, k + 1) != blockID && world.getBlockId(i, j, k - 1) != blockID && world.getBlockId(i + 1, j, k + 1) != blockID && world.getBlockId(i + 1, j, k - 1) != blockID && world.getBlockId(i - 1, j, k + 1) != blockID && world.getBlockId(i - 1, j, k - 1) != blockID) { world.setBlock(i, j, k, 0); } } } }