package shedar.mods.ic2.nuclearcontrol.containers;
import shedar.mods.ic2.nuclearcontrol.SlotFilter;
import shedar.mods.ic2.nuclearcontrol.tileentities.TileEntityRangeTrigger;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ContainerRangeTrigger extends Container
{
public TileEntityRangeTrigger trigger;
public EntityPlayer player;
public ContainerRangeTrigger(EntityPlayer player, TileEntityRangeTrigger trigger)
{
super();
this.trigger = trigger;
this.player = player;
//card
addSlotToContainer(new SlotFilter(trigger, 0, 8, 21));
//upgrade
addSlotToContainer(new SlotFilter(trigger, 1, 8, 39));
//inventory
for (int i = 0; i < 3; i++)
{
for (int k = 0; k < 9; k++)
{
addSlotToContainer(new Slot(player.inventory, k + i * 9 + 9, 8 + k * 18, 24 + 84 + i * 18));
}
}
for (int j = 0; j < 9; j++)
{
addSlotToContainer(new Slot(player.inventory, j, 8 + j * 18, 24 + 142));
}
}
@Override
public boolean canInteractWith(EntityPlayer var1)
{
return trigger.isUseableByPlayer(player);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer p, int slotId)
{
Slot slot = (Slot)this.inventorySlots.get(slotId);
if (slot != null)
{
ItemStack items = slot.getStack();
if (items != null)
{
int initialCount = items.stackSize;
if (slotId < trigger.getSizeInventory())//moving from panel to inventory
{
mergeItemStack(items, trigger.getSizeInventory(), inventorySlots.size(), false);
if (items.stackSize == 0)
{
slot.putStack((ItemStack)null);
}
else
{
slot.onSlotChanged();
if(initialCount!=items.stackSize)
return items;
}
}
else//moving from inventory to panel
{
for(int i = 0;i < trigger.getSizeInventory();i++)
{
if (!trigger.isItemValid(i, items))
{
continue;
}
ItemStack targetStack = trigger.getStackInSlot(i);
if (targetStack == null)
{
Slot targetSlot = (Slot)this.inventorySlots.get(i);
targetSlot.putStack(items);
slot.putStack((ItemStack)null);
break;
}
else if (items.isStackable() && items.isItemEqual(targetStack))
{
mergeItemStack(items, i, i + 1, false);
if (items.stackSize == 0)
{
slot.putStack((ItemStack)null);
}
else
{
slot.onSlotChanged();
if (initialCount != items.stackSize)
return items;
}
break;
}
}
}
}
}
return null;
}
}