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(); } }
// Advance the 'cur' index to the next block. Return false when done. // When done 'scanning' will be set to false as well. private boolean advanceCurrent() { Coordinate c = cur.getCoordinate(); int cx = c.getX(); int cy = c.getY(); int cz = c.getZ(); cx++; Coordinate lo = c1.getCoordinate(); Coordinate up = c2.getCoordinate(); if (cx > up.getX()) { cx = lo.getX(); cy++; if (cy > up.getY()) { cy = lo.getY(); cz++; if (cz > up.getZ()) { scanning.setValue(false); notifyBlockUpdate(); return false; } } } cur.setCoordinate(new Coordinate(cx, cy, cz)); notifyBlockUpdate(); return true; }