From 9e5fadaa0ef1b24d09e98dc4914beb9caf1bd46a Mon Sep 17 00:00:00 2001 From: Moulberry Date: Wed, 8 Sep 2021 21:50:14 +0800 Subject: [PATCH] Fix broken cursor with window items packet --- .../java/net/minestom/server/inventory/Inventory.java | 10 ++++++---- .../network/packet/server/play/SetSlotPacket.java | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/minestom/server/inventory/Inventory.java b/src/main/java/net/minestom/server/inventory/Inventory.java index 1172e4085..9e3d94dd0 100644 --- a/src/main/java/net/minestom/server/inventory/Inventory.java +++ b/src/main/java/net/minestom/server/inventory/Inventory.java @@ -130,7 +130,9 @@ public class Inventory extends AbstractInventory implements Viewable { */ @Override public void update() { - sendPacketToViewers(createNewWindowItemsPacket()); + for(Player player : viewers) { + player.getPlayerConnection().sendPacket(createNewWindowItemsPacket(player)); + } } /** @@ -145,7 +147,7 @@ public class Inventory extends AbstractInventory implements Viewable { return; final PlayerConnection playerConnection = player.getPlayerConnection(); - playerConnection.sendPacket(createNewWindowItemsPacket()); + playerConnection.sendPacket(createNewWindowItemsPacket(player)); } @NotNull @@ -227,8 +229,8 @@ public class Inventory extends AbstractInventory implements Viewable { * * @return a new {@link WindowItemsPacket} packet */ - private @NotNull WindowItemsPacket createNewWindowItemsPacket() { - return new WindowItemsPacket(getWindowId(), 0, getItemStacks(), ItemStack.AIR); + private @NotNull WindowItemsPacket createNewWindowItemsPacket(Player player) { + return new WindowItemsPacket(getWindowId(), 0, getItemStacks(), cursorPlayersItem.getOrDefault(player, ItemStack.AIR)); } /** diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java index 75b91b0cd..75b79da98 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java @@ -53,6 +53,6 @@ public class SetSlotPacket implements ServerPacket { * @return a set slot packet to change a player cursor item */ public static @NotNull SetSlotPacket createCursorPacket(@NotNull ItemStack cursorItem) { - return new SetSlotPacket((byte) -1, -1, (short) 0, cursorItem); + return new SetSlotPacket((byte) -1, 0, (short) -1, cursorItem); } }