@Override public void updateEntity() { if (!init) { init = true; AWLog.logDebug("scanning for controller..."); for (TileEntity te : WorldTools.getTileEntitiesInArea( worldObj, xCoord - 16, yCoord - 4, zCoord - 16, xCoord + 16, yCoord + 4, zCoord + 16)) { if (te instanceof WorkSiteWarehouse) { WorkSiteWarehouse warehouse = (WorkSiteWarehouse) te; BlockPosition min = warehouse.getWorkBoundsMin(); BlockPosition max = warehouse.getWorkBoundsMax(); if (xCoord >= min.x && xCoord <= max.x && yCoord >= min.y && yCoord <= max.y && zCoord >= min.z && zCoord <= max.z) { warehouse.addInputBlock(this); controllerPosition = new BlockPosition(warehouse.xCoord, warehouse.yCoord, warehouse.zCoord); warehouse.onInputInventoryUpdated(this); break; } } } } }
@Override public void markDirty() { super.markDirty(); if (this.controllerPosition != null) { TileEntity te = worldObj.getTileEntity(controllerPosition.x, controllerPosition.y, controllerPosition.z); if (te instanceof WorkSiteWarehouse) { ((WorkSiteWarehouse) te).onInputInventoryUpdated(this); } } }
@Override public void invalidate() { super.invalidate(); init = false; if (controllerPosition != null && worldObj.blockExists(controllerPosition.x, controllerPosition.y, controllerPosition.z)) { TileEntity te = worldObj.getTileEntity(controllerPosition.x, controllerPosition.y, controllerPosition.z); if (te instanceof WorkSiteWarehouse) { WorkSiteWarehouse warehouse = (WorkSiteWarehouse) te; BlockPosition min = warehouse.getWorkBoundsMin(); BlockPosition max = warehouse.getWorkBoundsMax(); if (xCoord >= min.x && xCoord <= max.x && yCoord >= min.y && yCoord <= max.y && zCoord >= min.z && zCoord <= max.z) { warehouse.removeInputBlock(this); } } } controllerPosition = null; }