public static void updateSSOwnership(
      EntityPlayerMP player,
      String playerName,
      GCPlayerStats stats,
      int stationID,
      SpaceStationWorldData stationData) {
    if (stationData == null) {
      stationData = SpaceStationWorldData.getMPSpaceStationData(null, stationID, null);
    }

    if (stationData.owner.equals(playerName)) {
      // This player is the owner of the station - ensure stats data matches
      if (!(stats.spaceStationDimensionData.values().contains(stationID))) {
        GCLog.debug(
            "Player owns station: "
                + stationData.getSpaceStationName()
                + " with home planet "
                + stationData.getHomePlanet());
        stats.spaceStationDimensionData.put(stationData.getHomePlanet(), stationID);
      }
    } else {
      // This player is the owner of the station - remove from stats data
      Integer savedOwned = stats.spaceStationDimensionData.get(stationData.getHomePlanet());
      if (savedOwned != null && savedOwned == stationID) {
        GCLog.debug(
            "Player does not own station: "
                + stationData.getSpaceStationName()
                + " with home planet "
                + stationData.getHomePlanet());
        stats.spaceStationDimensionData.remove(savedOwned);
      }
    }
  }
Пример #2
0
  public boolean setFrequency() {
    if (!GalacticraftCore.isPlanetsLoaded) {
      return false;
    }

    for (int x = MathHelper.floor_double(this.posX) - 1;
        x <= MathHelper.floor_double(this.posX) + 1;
        x++) {
      for (int y = MathHelper.floor_double(this.posY) - 3;
          y <= MathHelper.floor_double(this.posY) + 1;
          y++) {
        for (int z = MathHelper.floor_double(this.posZ) - 1;
            z <= MathHelper.floor_double(this.posZ) + 1;
            z++) {
          BlockPos pos = new BlockPos(x, y, z);
          TileEntity tile = this.worldObj.getTileEntity(pos);

          if (tile instanceof IFuelDock) {
            IFuelDock dock = (IFuelDock) tile;

            try {
              TileEntity launchController = null;
              Class<?> controllerClass =
                  Class.forName(
                      "micdoodle8.mods.galacticraft.planets.mars.tile.TileEntityLaunchController");

              for (ILandingPadAttachable connectedTile : dock.getConnectedTiles()) {
                try {
                  controllerClass.cast(connectedTile);
                } catch (ClassCastException e) {
                  continue;
                }

                launchController = (TileEntity) connectedTile;
                if (launchController != null) {
                  TileEntity tile2 =
                      launchController.getWorld().getTileEntity(launchController.getPos());

                  try {
                    controllerClass.cast(tile2);
                  } catch (ClassCastException e) {
                    launchController = null;
                    continue;
                  }

                  launchController = tile2;
                }

                if (launchController != null) {
                  break;
                }
              }

              if (launchController != null) {
                Boolean b =
                    (Boolean) controllerClass.getMethod("validFrequency").invoke(launchController);

                if (b != null && b) {
                  int controllerFrequency =
                      controllerClass.getField("destFrequency").getInt(launchController);
                  boolean foundPad = this.setTarget(false, controllerFrequency);

                  if (foundPad) {
                    this.destinationFrequency = controllerFrequency;
                    GCLog.debug(
                        "Rocket under launch control: going to target frequency "
                            + controllerFrequency);
                    return true;
                  }
                }
              }
            } catch (ClassCastException e) {
            } catch (Exception e) {
              e.printStackTrace();
            }
          }
        }
      }
    }

    this.destinationFrequency = -1;
    return false;
  }