From 7f299a6dec2c525e32b7053746305a233581bf99 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Tue, 18 Mar 2025 18:55:55 +0700 Subject: [PATCH 1/2] Provide Unit (singleton) codecs --- .../ru/dbotthepony/mc/otm/network/MatteryStreamCodec.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryStreamCodec.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryStreamCodec.kt index aff3394b6..a217ec302 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryStreamCodec.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryStreamCodec.kt @@ -35,6 +35,14 @@ interface MatteryStreamCodec : StreamCodec<@UnsafeVariance S, } } + class MUnit(val value: V) : MatteryStreamCodec { + override fun decode(stream: ByteBuf): V { + return value + } + + override fun encode(stream: ByteBuf, value: V) {} + } + abstract class AbstractPair(private val first: MatteryStreamCodec, private val second: MatteryStreamCodec) : MatteryStreamCodec { protected abstract fun getFirst(value: P): A protected abstract fun getSecond(value: P): B From 10f250b822d12fb49c6fd5ec1a2b167a0310b474 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Tue, 18 Mar 2025 18:56:23 +0700 Subject: [PATCH 2/2] Provide convenient unit packet registration --- .../kotlin/ru/dbotthepony/mc/otm/network/Ext.kt | 12 ++++++++++++ .../mc/otm/network/MatteryPlayerPackets.kt | 13 ------------- .../ru/dbotthepony/mc/otm/network/NetworkPackets.kt | 12 ++++++------ 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/Ext.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/Ext.kt index b9d4f2bad..fe32ada33 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/Ext.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/Ext.kt @@ -28,6 +28,18 @@ fun PayloadRegistrar.playToServer( handler: KFunction1 ): PayloadRegistrar = playToServer(type, codec) { _, context -> handler(context) } +fun PayloadRegistrar.playToClient( + type: CustomPacketPayload.Type, + value: T, + handler: KFunction1 +): PayloadRegistrar = playToClient(type, MatteryStreamCodec.MUnit(value)) { _, context -> handler(context) } + +fun PayloadRegistrar.playToServer( + type: CustomPacketPayload.Type, + value: T, + handler: KFunction1 +): PayloadRegistrar = playToServer(type, MatteryStreamCodec.MUnit(value)) { _, context -> handler(context) } + inline fun encodePayload(registry: RegistryAccess, block: (RegistryFriendlyByteBuf) -> Unit): ByteArrayList { val underlying = ByteBufAllocator.DEFAULT.buffer() val buf = RegistryFriendlyByteBuf(underlying, registry, ConnectionType.NEOFORGE) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryPlayerPackets.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryPlayerPackets.kt index 72b92aaf2..29bf837a9 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryPlayerPackets.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryPlayerPackets.kt @@ -245,9 +245,6 @@ object ExopackMenuOpen : CustomPacketPayload { "exopack_menu_open" ) ) - - val CODEC: StreamCodec = - StreamCodec.ofMember({ _, _ -> }, { ExopackMenuOpen }) } class PickItemFromInventoryPacket( @@ -347,8 +344,6 @@ object DisplayExopackPacket : CustomPacketPayload { "display_exopack" ) ) - val CODEC: StreamCodec = - StreamCodec.ofMember({ _, _ -> }, { DisplayExopackPacket }) } object HideExopackPacket : CustomPacketPayload { @@ -366,8 +361,6 @@ object HideExopackPacket : CustomPacketPayload { "hide_exopack" ) ) - val CODEC: StreamCodec = - StreamCodec.ofMember({ _, _ -> }, { HideExopackPacket }) } object EnableExopackGlowPacket : CustomPacketPayload { @@ -385,8 +378,6 @@ object EnableExopackGlowPacket : CustomPacketPayload { "enable_exopack_glow" ) ) - val CODEC: StreamCodec = - StreamCodec.ofMember({ _, _ -> }, { EnableExopackGlowPacket }) } object DisableExopackGlowPacket : CustomPacketPayload { @@ -404,8 +395,6 @@ object DisableExopackGlowPacket : CustomPacketPayload { "disable_exopack_glow" ) ) - val CODEC: StreamCodec = - StreamCodec.ofMember({ _, _ -> }, { DisableExopackGlowPacket }) } object ResetExopackColorPacket : CustomPacketPayload { @@ -423,8 +412,6 @@ object ResetExopackColorPacket : CustomPacketPayload { "reset_exopack_color" ) ) - val CODEC: StreamCodec = - StreamCodec.ofMember({ _, _ -> }, { ResetExopackColorPacket }) } class ExopackSmokePacket(val player: UUID) : CustomPacketPayload { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/NetworkPackets.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/NetworkPackets.kt index b97728212..07d715fc8 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/NetworkPackets.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/NetworkPackets.kt @@ -44,15 +44,15 @@ internal fun registerNetworkPackets(event: RegisterPayloadHandlersEvent) { .playToClient(ExopackSlotPacket.TYPE, ExopackSlotPacket.CODEC, ExopackSlotPacket::play) .playToClient(ExopackMenuInitPacket.TYPE, ExopackMenuInitPacket.CODEC, ExopackMenuInitPacket::play) .playToClient(ExopackSmokePacket.TYPE, ExopackSmokePacket.CODEC, ExopackSmokePacket::play) - .playToServer(ExopackMenuOpen.TYPE, ExopackMenuOpen.CODEC, ExopackMenuOpen::play) + .playToServer(ExopackMenuOpen.TYPE, ExopackMenuOpen, ExopackMenuOpen::play) .playToServer(PickItemFromInventoryPacket.TYPE, PickItemFromInventoryPacket.CODEC, PickItemFromInventoryPacket::play) - .playToServer(DisplayExopackPacket.TYPE, DisplayExopackPacket.CODEC, DisplayExopackPacket::play) - .playToServer(HideExopackPacket.TYPE, HideExopackPacket.CODEC, HideExopackPacket::play) - .playToServer(EnableExopackGlowPacket.TYPE, EnableExopackGlowPacket.CODEC, EnableExopackGlowPacket::play) - .playToServer(DisableExopackGlowPacket.TYPE, DisableExopackGlowPacket.CODEC, DisableExopackGlowPacket::play) - .playToServer(ResetExopackColorPacket.TYPE, ResetExopackColorPacket.CODEC, ResetExopackColorPacket::play) + .playToServer(DisplayExopackPacket.TYPE, DisplayExopackPacket, DisplayExopackPacket::play) + .playToServer(HideExopackPacket.TYPE, HideExopackPacket, HideExopackPacket::play) + .playToServer(EnableExopackGlowPacket.TYPE, EnableExopackGlowPacket, EnableExopackGlowPacket::play) + .playToServer(DisableExopackGlowPacket.TYPE, DisableExopackGlowPacket, DisableExopackGlowPacket::play) + .playToServer(ResetExopackColorPacket.TYPE, ResetExopackColorPacket, ResetExopackColorPacket::play) .playToServer(SetExopackColorPacket.TYPE, SetExopackColorPacket.CODEC, SetExopackColorPacket::play) // otm player general