From 8b23fd438343228c04d298523ea78723f45a094a Mon Sep 17 00:00:00 2001 From: RTAkland Date: Fri, 11 Sep 2026 01:27:03 +0800 Subject: [PATCH] Implemented 0x38-ServerboundSetCreativeModeSlotPacket --- README.md | 6 ++--- .../ServerboundSetCreativeModeSlotPacket.kt | 26 +++++++++++++++++++ .../registry/GamePacketsProtocolRegistry.kt | 2 +- 3 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundSetCreativeModeSlotPacket.kt diff --git a/README.md b/README.md index 5038784..613fe9b 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ A lightweight minecraft client-side protocol library for Kotlin Native and JVM - [ ] **Explosion Event Decoder**: Knockback vectors and destroyed block offsets array - [ ] **Debug Packets Parsing**: Debug subs, block/entity states, and game performance sample events - [ ] **Particle Parsing** -- [ ] **Slot Data Parsing** +- [x] **Slot Data Codec** --- @@ -142,9 +142,9 @@ A lightweight minecraft client-side protocol library for Kotlin Native and JVM - [x] `0x0F` Command Suggestions (`ClientboundCommandSuggestionsPacket`) - [x] `0x10` Commands (`ClientboundCommandsPacket`) - [x] `0x11` Container Close (`ClientboundContainerClosePacket`) -- [ ] `0x12` Container Set Content (`ClientboundContainerSetContentPacket`) +- [x] `0x12` Container Set Content (`ClientboundContainerSetContentPacket`) - [x] `0x13` Container Set Data (`ClientboundContainerSetDataPacket`) -- [ ] `0x14` Container Set Slot (`ClientboundContainerSetSlotPacket`) +- [x] `0x14` Container Set Slot (`ClientboundContainerSetSlotPacket`) - [x] `0x15` Cookie Request (`ClientboundCookieRequestPacket`) - [x] `0x16` Cooldown (`ClientboundCooldownPacket`) - [x] `0x17` Custom Chat Completions (`ClientboundCustomChatCompletionsPacket`) diff --git a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundSetCreativeModeSlotPacket.kt b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundSetCreativeModeSlotPacket.kt new file mode 100644 index 0000000..2e5d4f2 --- /dev/null +++ b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundSetCreativeModeSlotPacket.kt @@ -0,0 +1,26 @@ +/* + * Copyright © 2026 RTAkland + * Author: RTAkland + * Date: 2026/9/11 + */ + + +package cn.rtast.libmc.protocol.packet.play.serverbound + +import cn.rtast.libmc.network.BytesBuffer +import cn.rtast.libmc.packet.MinecraftPacket +import cn.rtast.libmc.packet.PacketCodec +import cn.rtast.libmc.protocol.protocol.game.item.slot.Slot +import cn.rtast.libmc.protocol.protocol.game.item.slot.writeSlot + +public data class ServerboundSetCreativeModeSlotPacket(val slot: Short, val clickedItem: Slot) : MinecraftPacket { + internal companion object Codec : PacketCodec { + override fun encode(buffer: BytesBuffer, value: ServerboundSetCreativeModeSlotPacket) { + buffer.writeShort(value.slot) + buffer.writeSlot(value.clickedItem) + } + + override fun decode(buffer: BytesBuffer): ServerboundSetCreativeModeSlotPacket = + throw UnsupportedOperationException() + } +} \ No newline at end of file diff --git a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/registry/GamePacketsProtocolRegistry.kt b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/registry/GamePacketsProtocolRegistry.kt index 6363452..d04193d 100644 --- a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/registry/GamePacketsProtocolRegistry.kt +++ b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/registry/GamePacketsProtocolRegistry.kt @@ -287,7 +287,7 @@ internal object GamePacketsProtocolRegistry { register(0x35, ServerboundSetCarriedItemPacket) register(0x36, ServerboundSetCommandBlockPacket) register(0x37, ServerboundSetCommandMinecartPacket) -// register(0x38, ServerboundSetCreativeModeSlotPacket) + register(0x38, ServerboundSetCreativeModeSlotPacket) register(0x39, ServerboundSetGameRulePacket) register(0x3A, ServerboundSetJigsawBlockPacket) register(0x3B, ServerboundSetStructureBlockPacket)