diff --git a/gradle.properties b/gradle.properties index b0277016..ad8a879f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled javaVersion=25 mcVersion=1.21.11 group=dev.slne.surf -version=1.21.11-2.71.0 +version=1.21.11-2.71.1 relocationPrefix=dev.slne.surf.surfapi.libs snapshot=false diff --git a/surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/packet/lore/PacketLoreListener.kt b/surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/packet/lore/PacketLoreListener.kt index 758543ea..53513710 100644 --- a/surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/packet/lore/PacketLoreListener.kt +++ b/surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/packet/lore/PacketLoreListener.kt @@ -15,6 +15,7 @@ import it.unimi.dsi.fastutil.objects.ObjectLists import net.kyori.adventure.text.format.TextDecoration import net.minecraft.core.component.DataComponents import net.minecraft.network.protocol.game.* +import net.minecraft.server.level.ServerPlayer import net.minecraft.world.item.ItemStack import net.minecraft.world.item.component.CustomData import net.minecraft.world.item.component.ItemLore @@ -121,6 +122,35 @@ object PacketLoreListener : PacketListener { ) } + @ServerboundListener + fun onContainerClickPacket( + event: ServerboundContainerClickPacket, + player: ServerPlayer + ): ServerboundContainerClickPacket { + if (!hasAnyHandlers()) return event + + val container = player.containerMenu + val currentStateId = container.stateId + + val brokenStateId = if (event.stateId() == currentStateId) { + currentStateId - 1 + } else { + event.stateId() + } + + if (brokenStateId == event.stateId()) return event + + return ServerboundContainerClickPacket( + event.containerId(), + brokenStateId, + event.slotNum(), + event.buttonNum(), + event.clickType(), + event.changedSlots(), + event.carriedItem() + ) + } + @ClientboundListener fun onSetCursorItemPacket(event: ClientboundSetCursorItemPacket): ClientboundSetCursorItemPacket { val original = event.contents