@Override
 public void onPickupFromSlot(
     int slotNumber, IInventory inventory, EntityPlayer player, ItemStack stack) {
   if (slotNumber == 0 && tile.getStackInSlot(0) != null && tile.getStackInSlot(0).stackSize > 0) {
     tile.decrementCraftingField();
   }
 }
 @Override
 public void render(TileEntity tile, double x, double y, double z, float f) {
   super.render(tile, x, y, z, f);
   if (tile instanceof TileStructureCrafter) {
     TileStructureCrafter structureCrafter = (TileStructureCrafter) tile;
     ItemStack stack = structureCrafter.getStackInSlot(0);
     if (stack != null && stack.stackSize > 0) {
       // TODO render result on top
     }
   }
 }
 @Override
 public ItemStack transferStackInSlot(EntityPlayer player, int slotNumber) {
   ItemStack stack = null;
   Slot slot = (Slot) inventorySlots.get(slotNumber);
   if (slot != null && slot.getHasStack()) {
     ItemStack slotClicked = slot.getStack();
     stack = slotClicked.copy();
     if (slotNumber <= 36) {
       if (slotNumber == 0 && stack != null && stack.stackSize > 0) {
         tile.decrementCraftingField();
       }
       if (!mergeItemStack(slotClicked, 37, inventorySlots.size(), true)) {
         return null;
       }
     } else {
       stack = null;
     }
     if (slotClicked.stackSize == 0) {
       slot.putStack(null);
     } else {
       slot.onSlotChanged();
     }
   }
   return stack;
 }
 @Override
 public boolean canTakeStack(int slotNumber, IInventory inventory, EntityPlayer player) {
   return tile.canTakeSlot(slotNumber, player);
 }