From f94fb24608cd65af771b26ae703f5ba434bfbd9c Mon Sep 17 00:00:00 2001 From: Ceikry Date: Sun, 3 Jul 2022 07:23:47 +0000 Subject: [PATCH] Fixed bug that could cause bank to throw index out of bounds and vanish items when rearranging tabs with completely full bank --- .../main/java/core/net/packet/in/SlotSwitchPacket.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Server/src/main/java/core/net/packet/in/SlotSwitchPacket.java b/Server/src/main/java/core/net/packet/in/SlotSwitchPacket.java index 545a93a0a..11f69cf07 100644 --- a/Server/src/main/java/core/net/packet/in/SlotSwitchPacket.java +++ b/Server/src/main/java/core/net/packet/in/SlotSwitchPacket.java @@ -39,6 +39,14 @@ public class SlotSwitchPacket implements IncomingPacket { int tabIndex = BankContainer.getArrayIndex(withChildId); if (tabIndex > -1) { secondSlot = tabIndex == 10 ? player.getBank().freeSlot() : player.getBank().getTabStartSlot()[tabIndex] + player.getBank().getItemsInTab(tabIndex); + + Item inSlot = player.getBank().get(slot); + + if (secondSlot == -1 && player.getBank().remove(inSlot)) { + player.getBank().add(inSlot); + return; + } + childId = player.getBank().getTabByItemSlot(slot); if (secondSlot > slot) { player.getBank().insert(slot, secondSlot - 1);