@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;
 }