Skip to content

Commit e34d079

Browse files
authored
Fix state ID issues by handling container click packets (#266)
2 parents b23479f + cf271ef commit e34d079

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
77
javaVersion=25
88
mcVersion=1.21.11
99
group=dev.slne.surf
10-
version=1.21.11-2.71.0
10+
version=1.21.11-2.71.1
1111
relocationPrefix=dev.slne.surf.surfapi.libs
1212
snapshot=false

surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/packet/lore/PacketLoreListener.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import it.unimi.dsi.fastutil.objects.ObjectLists
1515
import net.kyori.adventure.text.format.TextDecoration
1616
import net.minecraft.core.component.DataComponents
1717
import net.minecraft.network.protocol.game.*
18+
import net.minecraft.server.level.ServerPlayer
1819
import net.minecraft.world.item.ItemStack
1920
import net.minecraft.world.item.component.CustomData
2021
import net.minecraft.world.item.component.ItemLore
@@ -121,6 +122,35 @@ object PacketLoreListener : PacketListener {
121122
)
122123
}
123124

125+
@ServerboundListener
126+
fun onContainerClickPacket(
127+
event: ServerboundContainerClickPacket,
128+
player: ServerPlayer
129+
): ServerboundContainerClickPacket {
130+
if (!hasAnyHandlers()) return event
131+
132+
val container = player.containerMenu
133+
val currentStateId = container.stateId
134+
135+
val brokenStateId = if (event.stateId() == currentStateId) {
136+
currentStateId - 1
137+
} else {
138+
event.stateId()
139+
}
140+
141+
if (brokenStateId == event.stateId()) return event
142+
143+
return ServerboundContainerClickPacket(
144+
event.containerId(),
145+
brokenStateId,
146+
event.slotNum(),
147+
event.buttonNum(),
148+
event.clickType(),
149+
event.changedSlots(),
150+
event.carriedItem()
151+
)
152+
}
153+
124154
@ClientboundListener
125155
fun onSetCursorItemPacket(event: ClientboundSetCursorItemPacket): ClientboundSetCursorItemPacket {
126156
val original = event.contents

0 commit comments

Comments
 (0)