package codechicken.core.inventory; import codechicken.lib.inventory.InventoryUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; public class SlotDummy extends SlotHandleClicks { public final int stackLimit; public SlotDummy(IInventory inv, int slot, int x, int y) { this(inv, slot, x, y, 64); } public SlotDummy(IInventory inv, int slot, int x, int y, int limit) { super(inv, slot, x, y); stackLimit = limit; } @Override public ItemStack slotClick(ContainerExtended container, EntityPlayer player, int button, int modifier) { ItemStack held = player.inventory.getItemStack(); boolean shift = modifier == 1; slotClick(held, button, shift); return null; } public void slotClick(ItemStack held, int button, boolean shift) { ItemStack tstack = getStack(); if(held != null && (tstack == null || !InventoryUtils.canStack(held, tstack))) { int quantity = Math.min(held.stackSize, stackLimit); if(shift) quantity = Math.min(stackLimit, held.getMaxStackSize()*16); if(button == 1) quantity = 1; putStack(InventoryUtils.copyStack(held, quantity)); } else if(tstack != null) { int inc; if(held != null) { inc = button == 1 ? -held.stackSize : held.stackSize; if(shift) inc *= 16; } else { inc = button == 1 ? -1 : 1; if(shift) inc *= 16; } int quantity = tstack.stackSize+inc; if(quantity <= 0) putStack(null); else putStack(InventoryUtils.copyStack(tstack, quantity)); } } @Override public void putStack(ItemStack stack) { if(stack != null && stack.stackSize > stackLimit) stack = InventoryUtils.copyStack(stack, stackLimit); super.putStack(stack); } }