package com.lothrazar.cyclicmagic.component.beaconpotion;
import com.lothrazar.cyclicmagic.data.Const;
import com.lothrazar.cyclicmagic.gui.base.ContainerBaseMachine;
import com.lothrazar.cyclicmagic.gui.slot.SlotPotion;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IContainerListener;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class ContainerBeaconPotion extends ContainerBaseMachine {
  public static final int SLOTX_START = 8;
  public static final int SLOTY = 52;
  public ContainerBeaconPotion(InventoryPlayer inventoryPlayer, TileEntityBeaconPotion te) {
    this.setTile(te);
    for (int i = 0; i < 9; i++) {
      addSlotToContainer(new SlotPotion(tile, i, SLOTX_START + i * Const.SQ, SLOTY));
    }
    super.bindPlayerInventory(inventoryPlayer);
  }
  @Override
  @SideOnly(Side.CLIENT)
  public void updateProgressBar(int id, int data) {
    this.tile.setField(id, data);
  }
  @Override
  public void addListener(IContainerListener listener) {
    super.addListener(listener);
    listener.sendAllWindowProperties(this, this.tile);
  }
}

@@ -210,24 +210,73 @@
 SlotPotion;%0A
+import net.minecraft.entity.player.EntityPlayer;%0A
 import net.m
@@ -362,24 +362,98 @@
 erListener;%0A
+import net.minecraft.inventory.Slot;%0Aimport net.minecraft.item.ItemStack;%0A
 import net.m
@@ -1267,10 +1267,1237 @@
 e);%0A  %7D%0A
+  %0A%0A  @Override%0A  public ItemStack transferStackInSlot(EntityPlayer player, int slot) %7B%0A    ItemStack stack = ItemStack.EMPTY;%0A    Slot slotObject = (Slot) inventorySlots.get(slot);%0A    // null checks and checks if the item can be stacked (maxStackSize %3E 1)%0A    if (slotObject != null && slotObject.getHasStack()) %7B%0A      ItemStack stackInSlot = slotObject.getStack();%0A      stack = stackInSlot.copy();%0A      // merges the item into player inventory since its in the tileEntity%0A      if (slot %3C tile.getSizeInventory()) %7B%0A        if (!this.mergeItemStack(stackInSlot, tile.getSizeInventory(), 36 + tile.getSizeInventory(), true)) %7B%0A          return ItemStack.EMPTY;%0A        %7D%0A      %7D%0A      // places it into the tileEntity is possible since its in the player%0A      // inventory%0A      else if (!this.mergeItemStack(stackInSlot, 0, tile.getSizeInventory(), false)) %7B%0A        return ItemStack.EMPTY;%0A      %7D%0A      if (stackInSlot.getCount() == 0) %7B%0A        slotObject.putStack(ItemStack.EMPTY);%0A      %7D%0A      else %7B%0A        slotObject.onSlotChanged();%0A      %7D%0A      if (stackInSlot.getCount() == stack.getCount()) %7B%0A        return ItemStack.EMPTY;%0A      %7D%0A      slotObject.onTake(player, stackInSlot);%0A    %7D%0A    return stack;%0A  %7D%0A
 %7D%0A

add shift click to beacon gui