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(); } }
@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; } } } }
@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"); }
@Override public void writeRestorableToNBT(NBTTagCompound tagCompound) { super.writeRestorableToNBT(tagCompound); tagCompound.setInteger("radius", radius.getValue()); }
public boolean isScanning() { return scanning.getValue(); }
public int getRadius() { return radius.getValue(); }