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); } }