From 2d6836cc93313f7f8c5ed11b4d6cefd5a748694f Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 8 Oct 2021 10:50:47 +0100 Subject: [PATCH] Moved frames to only affect player inventories --- .../eco/spigot/display/PacketWindowItems.kt | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/display/PacketWindowItems.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/display/PacketWindowItems.kt index 10ac3659..61fab7c5 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/display/PacketWindowItems.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/display/PacketWindowItems.kt @@ -18,24 +18,33 @@ class PacketWindowItems(plugin: EcoPlugin) : AbstractPacketAdapter(plugin, Packe player: Player, event: PacketEvent ) { + val windowId = packet.integers.read(0) + packet.itemListModifier.modify(0) { itemStacks: List? -> if (itemStacks == null) { return@modify null } - val frameMap = mutableMapOf() - for (index in itemStacks.indices) { - frameMap[index.toByte()] = FastItemStack.wrap(itemStacks[index]).hashCode() - } + if (windowId == 0) { + val frameMap = mutableMapOf() - val newFrame = DisplayFrame(frameMap) + for (index in itemStacks.indices) { + frameMap[index.toByte()] = FastItemStack.wrap(itemStacks[index]).hashCode() + } - val changes = player.lastDisplayFrame.getChangedSlots(newFrame) + val newFrame = DisplayFrame(frameMap) - player.lastDisplayFrame = newFrame + val changes = player.lastDisplayFrame.getChangedSlots(newFrame) - for (index in changes) { - Display.display(itemStacks[index.toInt()], player) + player.lastDisplayFrame = newFrame + + for (index in changes) { + Display.display(itemStacks[index.toInt()], player) + } + } else { + itemStacks.forEach { + Display.display(it, player) + } } itemStacks }