예제 #1
0
  protected boolean isValidTable() {

    if (laserTarget == null || laserTarget.isInvalidTarget() || !laserTarget.requiresLaserEnergy())
      return false;

    return true;
  }
예제 #2
0
  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()));
  }