mirror of
https://github.com/architectury/architectury-api.git
synced 2026-03-27 19:47:00 -05:00
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 <daniel@shedaniel.me>
This commit is contained in:
@@ -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<BaseS2CMessage> 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<BaseS2CMessage> decoder, List<PacketTransformer> 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<BaseC2SMessage> 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<BaseC2SMessage> decoder, List<PacketTransformer> 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user