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