From 5b29c90457ca08aba883bfd34b138ad87d6ba8be Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 2 Dec 2021 14:49:29 +0000 Subject: [PATCH] Added PacketHeldWindowItems to hopefully fix display --- .../eco/internal/spigot/EcoSpigotPlugin.kt | 2 ++ .../spigot/display/PacketHeldWindowItems.kt | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/display/PacketHeldWindowItems.kt diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt index 0a2463d7..c27c35d1 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt @@ -26,6 +26,7 @@ import com.willfp.eco.internal.spigot.data.PlayerBlockListener import com.willfp.eco.internal.spigot.data.storage.ProfileSaver import com.willfp.eco.internal.spigot.display.PacketAutoRecipe import com.willfp.eco.internal.spigot.display.PacketChat +import com.willfp.eco.internal.spigot.display.PacketHeldWindowItems import com.willfp.eco.internal.spigot.display.PacketOpenWindowMerchant import com.willfp.eco.internal.spigot.display.PacketSetCreativeSlot import com.willfp.eco.internal.spigot.display.PacketSetSlot @@ -240,6 +241,7 @@ abstract class EcoSpigotPlugin : EcoPlugin( PacketSetCreativeSlot(this), PacketSetSlot(this), PacketWindowItems(this), + PacketHeldWindowItems(this), PacketOpenWindowMerchant(this) ) } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/display/PacketHeldWindowItems.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/display/PacketHeldWindowItems.kt new file mode 100644 index 00000000..9282ee20 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/display/PacketHeldWindowItems.kt @@ -0,0 +1,33 @@ +package com.willfp.eco.internal.spigot.display + +import com.comphenix.protocol.PacketType +import com.comphenix.protocol.events.PacketContainer +import com.comphenix.protocol.events.PacketEvent +import com.willfp.eco.core.AbstractPacketAdapter +import com.willfp.eco.core.EcoPlugin +import com.willfp.eco.core.Prerequisite +import com.willfp.eco.core.display.Display +import com.willfp.eco.internal.spigot.display.frame.DisplayFrame +import com.willfp.eco.internal.spigot.display.frame.lastDisplayFrame +import org.bukkit.entity.Player +import org.bukkit.inventory.ItemStack + +class PacketHeldWindowItems(plugin: EcoPlugin) : AbstractPacketAdapter(plugin, PacketType.Play.Server.WINDOW_ITEMS, false) { + override fun onSend( + packet: PacketContainer, + player: Player, + event: PacketEvent + ) { + if (!Prerequisite.HAS_1_17.isMet) { + return + } + + packet.itemModifier.modify(0) { item: ItemStack? -> + Display.display( + item!!, player + ) + } + + player.lastDisplayFrame = DisplayFrame.EMPTY + } +} \ No newline at end of file