protected boolean isValidTable() { if (laserTarget == null || laserTarget.isInvalidTarget() || !laserTarget.requiresLaserEnergy()) return false; return true; }
protected void findTable() { int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); int minX = xCoord - 5; int minY = yCoord - 5; int minZ = zCoord - 5; int maxX = xCoord + 5; int maxY = yCoord + 5; int maxZ = zCoord + 5; switch (ForgeDirection.values()[meta]) { case WEST: maxX = xCoord; break; case EAST: minX = xCoord; break; case DOWN: maxY = yCoord; break; case UP: minY = yCoord; break; case NORTH: maxZ = zCoord; break; default: case SOUTH: minZ = zCoord; break; } List<ILaserTarget> targets = new LinkedList<ILaserTarget>(); for (int x = minX; x <= maxX; ++x) { for (int y = minY; y <= maxY; ++y) { for (int z = minZ; z <= maxZ; ++z) { TileEntity tile = worldObj.getBlockTileEntity(x, y, z); if (tile instanceof ILaserTarget) { ILaserTarget table = (ILaserTarget) tile; if (table.requiresLaserEnergy()) { targets.add(table); } } } } } if (targets.isEmpty()) return; laserTarget = targets.get(worldObj.rand.nextInt(targets.size())); }