Пример #1
0
  public void startScan(boolean start) {
    if (!worldObj.isRemote) {
      if (!start) {
        scanning.setValue(false);
        notifyBlockUpdate();
        return;
      }

      int r = radius.getValue();
      // Only on server
      int y1 = yCoord - r;
      if (y1 < 0) {
        y1 = 0;
      }
      c1.setCoordinate(new Coordinate(xCoord - r, y1, zCoord - r));
      int y2 = yCoord + r;
      if (y2 >= worldObj.getHeight()) {
        y2 = worldObj.getHeight() - 1;
      }
      c2.setCoordinate(new Coordinate(xCoord + r, y2, zCoord + r));

      scanning.setValue(true);
      cur.setCoordinate(c1.getCoordinate());

      inventories.clear();
      notifyBlockUpdate();
    }
  }
Пример #2
0
  @Override
  protected void checkStateServer() {
    super.checkStateServer();
    if (scanning.getValue()) {
      int rf = StorageScannerConfiguration.rfPerOperation;
      rf = (int) (rf * (2.0f - getInfusedFactor()) / 2.0f);

      if (getEnergyStored(ForgeDirection.DOWN) < rf) {
        return;
      }
      consumeEnergy(rf);

      int scans = StorageScannerConfiguration.scansPerOperation;

      scans = scans * (int) (getInfusedFactor() + 1.01f);

      for (int i = 0; i < scans; i++) {
        Coordinate c = cur.getCoordinate();
        checkInventoryStatus(c.getX(), c.getY(), c.getZ());
        if (!advanceCurrent()) {
          return;
        }
      }
    }
  }
Пример #3
0
 @Override
 public void writeToNBT(NBTTagCompound tagCompound) {
   super.writeToNBT(tagCompound);
   tagCompound.setBoolean("scanning", scanning.getValue());
   c1.writeToNBT(tagCompound, "c1");
   c2.writeToNBT(tagCompound, "c2");
   cur.writeToNBT(tagCompound, "cur");
   inventories.writeToNBT(tagCompound, "inv");
 }
Пример #4
0
 @Override
 public void writeRestorableToNBT(NBTTagCompound tagCompound) {
   super.writeRestorableToNBT(tagCompound);
   tagCompound.setInteger("radius", radius.getValue());
 }
Пример #5
0
 public boolean isScanning() {
   return scanning.getValue();
 }
Пример #6
0
 public int getRadius() {
   return radius.getValue();
 }