From 0b2c3f6ca9810ae2f6db936d8124682e7af774d0 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 30 Jun 2025 22:10:00 -0400 Subject: [PATCH] Implement shift-click support in bank container --- .../containers/ContainerNPCBankInterface.java | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/containers/ContainerNPCBankInterface.java b/src/main/java/noppes/npcs/containers/ContainerNPCBankInterface.java index 48017e13f..17cc83279 100644 --- a/src/main/java/noppes/npcs/containers/ContainerNPCBankInterface.java +++ b/src/main/java/noppes/npcs/containers/ContainerNPCBankInterface.java @@ -85,8 +85,41 @@ public class ContainerNPCBankInterface extends ContainerNpcInterface { } @Override - public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int i) { - return null; + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack returnedStack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + if (slot != null && slot.getHasStack()) { + ItemStack stackInSlot = slot.getStack(); + returnedStack = stackInSlot.copy(); + + int bankStart = (currency != null) ? 1 : 0; + int bankEnd = bankStart + getRowNumber() * 9; + + if (index >= bankStart && index < bankEnd) { + // Moving items from bank inventory to the player + if (!this.mergeItemStack(stackInSlot, bankEnd, this.inventorySlots.size(), true)) { + return null; + } + } else if (index >= bankEnd) { + // Moving items from the player inventory to the bank + if (!this.mergeItemStack(stackInSlot, bankStart, bankEnd, false)) { + return null; + } + } else { + // Currency slot + if (!this.mergeItemStack(stackInSlot, bankEnd, this.inventorySlots.size(), true)) { + return null; + } + } + + if (stackInSlot.stackSize == 0) { + slot.putStack(null); + } else { + slot.onSlotChanged(); + } + } + + return returnedStack; } @Override