From d022087cd5a6dcf12fc42814fb0445495cb728d3 Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 6 Feb 2023 17:53:24 +0100 Subject: [PATCH] Add support for adding PacketTransformers to SimpleNetworkManager messages (#379) [ci skip] * Add support for adding PacketTransformers to SimpleNetworkManager messages * Mark new methods as experimental, add javadocs * Update common/src/main/java/dev/architectury/networking/simple/SimpleNetworkManager.java * Update common/src/main/java/dev/architectury/networking/simple/SimpleNetworkManager.java Co-authored-by: shedaniel --- .../simple/SimpleNetworkManager.java | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/dev/architectury/networking/simple/SimpleNetworkManager.java b/common/src/main/java/dev/architectury/networking/simple/SimpleNetworkManager.java index f349bb26..7fdc4537 100644 --- a/common/src/main/java/dev/architectury/networking/simple/SimpleNetworkManager.java +++ b/common/src/main/java/dev/architectury/networking/simple/SimpleNetworkManager.java @@ -20,9 +20,13 @@ package dev.architectury.networking.simple; import dev.architectury.networking.NetworkManager; +import dev.architectury.networking.transformers.PacketTransformer; import dev.architectury.platform.Platform; import dev.architectury.utils.Env; import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.ApiStatus; + +import java.util.List; /** * A simple wrapper for {@link NetworkManager} to make it easier to register messages and send them to clients/servers. @@ -49,34 +53,62 @@ public class SimpleNetworkManager { } /** - * Registers a server -> client message. + * Registers a server -> client message with no packet transformers. * * @param id a unique ID for the message, must be a valid value for {@link ResourceLocation#getPath} * @param decoder the message decoder for the message * @return a {@link MessageType} describing the registered message + * @see #registerS2C(String, MessageDecoder, List) */ public MessageType registerS2C(String id, MessageDecoder decoder) { + return registerS2C(id, decoder, List.of()); + } + + /** + * Registers a server -> client message using the given packet transformers. + * + * @param id a unique ID for the message, must be a valid value for {@link ResourceLocation#getPath} + * @param decoder the message decoder for the message + * @param transformers a list of packet transformers to apply to the message packet + * @return a {@link MessageType} describing the registered message + */ + @ApiStatus.Experimental + public MessageType registerS2C(String id, MessageDecoder decoder, List transformers) { MessageType messageType = new MessageType(this, new ResourceLocation(namespace, id), NetworkManager.s2c()); if (Platform.getEnvironment() == Env.CLIENT) { NetworkManager.NetworkReceiver receiver = decoder.createReceiver(); - NetworkManager.registerReceiver(NetworkManager.s2c(), messageType.getId(), receiver); + NetworkManager.registerReceiver(NetworkManager.s2c(), messageType.getId(), transformers, receiver); } return messageType; } /** - * Registers a client -> server message. + * Registers a client -> server message with no packet transformers. * * @param id a unique ID for the message, must be a valid value for {@link ResourceLocation#getPath} * @param decoder the message decoder for the message * @return a {@link MessageType} describing the registered message + * @see #registerC2S(String, MessageDecoder, List) */ public MessageType registerC2S(String id, MessageDecoder decoder) { + return registerC2S(id, decoder, List.of()); + } + + /** + * Registers a client -> server message using the given packet transformers. + * + * @param id a unique ID for the message, must be a valid value for {@link ResourceLocation#getPath} + * @param decoder the message decoder for the message + * @param transformers a list of packet transformers to apply to the message packet + * @return a {@link MessageType} describing the registered message + */ + @ApiStatus.Experimental + public MessageType registerC2S(String id, MessageDecoder decoder, List transformers) { MessageType messageType = new MessageType(this, new ResourceLocation(namespace, id), NetworkManager.c2s()); NetworkManager.NetworkReceiver receiver = decoder.createReceiver(); - NetworkManager.registerReceiver(NetworkManager.c2s(), messageType.getId(), receiver); + NetworkManager.registerReceiver(NetworkManager.c2s(), messageType.getId(), transformers, receiver); return messageType; } } \ No newline at end of file