@Override
 public ItemStack decrStackSize(int slot, int amount) {
   if (!formed) return null;
   TileEntityBottlingMachine master = master();
   if (master != null) return master.decrStackSize(slot, amount);
   ItemStack stack = getStackInSlot(slot);
   if (stack != null)
     if (stack.stackSize <= amount) setInventorySlotContents(slot, null);
     else {
       stack = stack.splitStack(amount);
       if (stack.stackSize == 0) setInventorySlotContents(slot, null);
     }
   this.markDirty();
   return stack;
 }
 @Override
 public ItemStack getStackInSlotOnClosing(int slot) {
   if (!formed) return null;
   TileEntityBottlingMachine master = master();
   if (master != null) return master.getStackInSlotOnClosing(slot);
   ItemStack stack = getStackInSlot(slot);
   if (stack != null) setInventorySlotContents(slot, null);
   return stack;
 }
 @Override
 public void setInventorySlotContents(int slot, ItemStack stack) {
   if (!formed || worldObj.isRemote) return;
   TileEntityBottlingMachine master = master();
   if (master != null) {
     master.setInventorySlotContents(slot, stack);
     return;
   }
   inventory[slot] = stack;
   if (stack != null && stack.stackSize > getInventoryStackLimit())
     stack.stackSize = getInventoryStackLimit();
   this.markDirty();
   worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
 }