diff --git a/src/main/java/net/minestom/server/inventory/Inventory.java b/src/main/java/net/minestom/server/inventory/Inventory.java index 728209009..203248a1e 100644 --- a/src/main/java/net/minestom/server/inventory/Inventory.java +++ b/src/main/java/net/minestom/server/inventory/Inventory.java @@ -352,6 +352,10 @@ public class Inventory extends AbstractInventory implements Viewable { playerInventory.setItemStack(clickSlot, clickResult.getClicked()); } + if(clickResult.doRefresh()){ + update(player); + } + refreshPlayerCursorItem(player, clickResult.getCursor()); return !clickResult.isCancel(); diff --git a/src/main/java/net/minestom/server/inventory/click/InventoryClickProcessor.java b/src/main/java/net/minestom/server/inventory/click/InventoryClickProcessor.java index f5c835010..df23a86bf 100644 --- a/src/main/java/net/minestom/server/inventory/click/InventoryClickProcessor.java +++ b/src/main/java/net/minestom/server/inventory/click/InventoryClickProcessor.java @@ -187,7 +187,11 @@ public class InventoryClickProcessor { var pair = TransactionType.ADD.process(targetInventory, clicked, (index, itemStack) -> { InventoryClickResult result = startCondition(targetInventory, player, index, ClickType.SHIFT_CLICK, itemStack, cursor); - return !result.isCancel(); + if(result.isCancel()){ + clickResult.setRefresh(true); + return false; + } + return true; }); ItemStack itemResult = TransactionOption.ALL.fill(targetInventory, pair.left(), pair.right()); @@ -210,7 +214,11 @@ public class InventoryClickProcessor { if (index == slot) // Prevent item lose/duplication return false; InventoryClickResult result = startCondition(targetInventory, player, index, ClickType.SHIFT_CLICK, itemStack, cursor); - return !result.isCancel(); + if(result.isCancel()){ + clickResult.setRefresh(true); + return false; + } + return true; }, start, end, step); ItemStack itemResult = TransactionOption.ALL.fill(targetInventory, pair.left(), pair.right());