diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/Data.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/Data.java deleted file mode 100644 index 5c3831807..000000000 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/Data.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.momirealms.craftengine.bukkit.plugin.network.payload; - -import io.netty.buffer.ByteBuf; -import net.momirealms.craftengine.bukkit.plugin.network.payload.codec.NetworkCodec; -import net.momirealms.craftengine.bukkit.plugin.network.payload.codec.NetworkDecoder; -import net.momirealms.craftengine.bukkit.plugin.network.payload.codec.NetworkMemberEncoder; -import net.momirealms.craftengine.core.plugin.network.NetWorkUser; - -public interface Data { - - default void handle(NetWorkUser user) { - } - - static NetworkCodec codec(NetworkMemberEncoder networkMemberEncoder, NetworkDecoder networkDecoder) { - return NetworkCodec.ofMember(networkMemberEncoder, networkDecoder); - } - -} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java index b3cb840f3..39542a4b7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java @@ -1,55 +1,44 @@ package net.momirealms.craftengine.bukkit.plugin.network.payload; import io.netty.buffer.Unpooled; -import net.momirealms.craftengine.bukkit.plugin.network.payload.codec.NetworkCodec; -import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.CancelBlockUpdateData; -import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientBlockStateSizeData; -import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientCustomBlockData; +import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.CancelBlockUpdatePacket; +import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientBlockStateSizePacket; +import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientCustomBlockPacket; import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.network.ModPacket; import net.momirealms.craftengine.core.plugin.network.NetWorkUser; import net.momirealms.craftengine.core.plugin.network.NetworkManager; +import net.momirealms.craftengine.core.plugin.network.codec.NetworkCodec; +import net.momirealms.craftengine.core.registry.BuiltInRegistries; +import net.momirealms.craftengine.core.registry.Holder; +import net.momirealms.craftengine.core.registry.WritableRegistry; import net.momirealms.craftengine.core.util.FriendlyByteBuf; +import net.momirealms.craftengine.core.util.ResourceKey; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; +import java.util.Optional; public class PayloadHelper { - private static final Map, Byte> classToType = new HashMap<>(); - private static final Map> typeToCodec = new HashMap<>(); - private static final AtomicInteger typeCounter = new AtomicInteger(0); public static void registerDataTypes() { - registerDataType(ClientCustomBlockData.class, ClientCustomBlockData.CODEC); - registerDataType(CancelBlockUpdateData.class, CancelBlockUpdateData.CODEC); - registerDataType(ClientBlockStateSizeData.class, ClientBlockStateSizeData.CODEC); + registerDataType(ClientCustomBlockPacket.TYPE, ClientCustomBlockPacket.CODEC); + registerDataType(CancelBlockUpdatePacket.TYPE, CancelBlockUpdatePacket.CODEC); + registerDataType(ClientBlockStateSizePacket.TYPE, ClientBlockStateSizePacket.CODEC); } - @SuppressWarnings("unchecked") - private static void registerDataType(Class dataClass, NetworkCodec codec) { - if (classToType.containsKey(dataClass)) { - CraftEngine.instance().logger().warn("Duplicate data type class: " + dataClass.getName()); - return; - } - int next = typeCounter.getAndIncrement(); - if (next > 255) { - throw new IllegalStateException("Too many data types registered, byte index overflow (max 256)"); - } - byte type = (byte) next; - classToType.put((Class) dataClass, type); - typeToCodec.put(type, (NetworkCodec) codec); + public static void registerDataType(ResourceKey> key, NetworkCodec codec) { + ((WritableRegistry>) BuiltInRegistries.MOD_PACKET).register(key, codec); } - public static void sendData(NetWorkUser user, Data data) { - Class dataClass = data.getClass(); - Byte type = classToType.get(dataClass); - if (type == null) { - CraftEngine.instance().logger().warn("Unknown data type class: " + dataClass.getName()); + public static void sendData(NetWorkUser user, ModPacket data) { + Optional>> optionalType = BuiltInRegistries.MOD_PACKET.get(data.type()); + if (optionalType.isEmpty()) { + CraftEngine.instance().logger().warn("Unknown data type class: " + data.getClass().getName()); return; } - NetworkCodec codec = typeToCodec.get(type); + @SuppressWarnings("unchecked") + NetworkCodec codec = (NetworkCodec) optionalType.get().value(); FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer()); - buf.writeByte(type); + buf.writeByte(BuiltInRegistries.MOD_PACKET.getId(codec)); codec.encode(buf, data); user.sendCustomPayload(NetworkManager.MOD_CHANNEL_KEY, buf.array()); } @@ -57,13 +46,14 @@ public class PayloadHelper { public static void handleReceiver(Payload payload, NetWorkUser user) { FriendlyByteBuf buf = payload.toBuffer(); byte type = buf.readByte(); - NetworkCodec codec = typeToCodec.get(type); + @SuppressWarnings("unchecked") + NetworkCodec codec = (NetworkCodec) BuiltInRegistries.MOD_PACKET.getValue(type); if (codec == null) { CraftEngine.instance().logger().warn("Unknown data type received: " + type); return; } - Data networkData = codec.decode(buf); + ModPacket networkData = codec.decode(buf); networkData.handle(user); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkDecoder.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkDecoder.java deleted file mode 100644 index 6116b6f62..000000000 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkDecoder.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.momirealms.craftengine.bukkit.plugin.network.payload.codec; - -public interface NetworkDecoder { - T decode(I in); -} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/CancelBlockUpdateData.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/CancelBlockUpdateData.java deleted file mode 100644 index 96fddb2c1..000000000 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/CancelBlockUpdateData.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.momirealms.craftengine.bukkit.plugin.network.payload.protocol; - -import net.momirealms.craftengine.bukkit.plugin.network.payload.Data; -import net.momirealms.craftengine.bukkit.plugin.network.payload.PayloadHelper; -import net.momirealms.craftengine.bukkit.plugin.network.payload.codec.NetworkCodec; -import net.momirealms.craftengine.core.plugin.network.NetWorkUser; -import net.momirealms.craftengine.core.util.FriendlyByteBuf; - -public record CancelBlockUpdateData(boolean enabled) implements Data { - public static final NetworkCodec CODEC = Data.codec( - CancelBlockUpdateData::encode, - CancelBlockUpdateData::new - ); - - private CancelBlockUpdateData(FriendlyByteBuf buf) { - this(buf.readBoolean()); - } - - private void encode(FriendlyByteBuf buf) { - buf.writeBoolean(this.enabled); - } - - @Override - public void handle(NetWorkUser user) { - if (!this.enabled) return; - PayloadHelper.sendData(user, this); - } -} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/CancelBlockUpdatePacket.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/CancelBlockUpdatePacket.java new file mode 100644 index 000000000..2ff964065 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/CancelBlockUpdatePacket.java @@ -0,0 +1,39 @@ +package net.momirealms.craftengine.bukkit.plugin.network.payload.protocol; + +import net.momirealms.craftengine.core.plugin.network.ModPacket; +import net.momirealms.craftengine.bukkit.plugin.network.payload.PayloadHelper; +import net.momirealms.craftengine.core.plugin.network.codec.NetworkCodec; +import net.momirealms.craftengine.core.plugin.network.NetWorkUser; +import net.momirealms.craftengine.core.registry.BuiltInRegistries; +import net.momirealms.craftengine.core.util.FriendlyByteBuf; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.ResourceKey; + +public record CancelBlockUpdatePacket(boolean enabled) implements ModPacket { + public static final ResourceKey> TYPE = ResourceKey.create( + BuiltInRegistries.MOD_PACKET.key().location(), Key.of("craftengine", "cancel_block_update") + ); + public static final NetworkCodec CODEC = ModPacket.codec( + CancelBlockUpdatePacket::encode, + CancelBlockUpdatePacket::new + ); + + private CancelBlockUpdatePacket(FriendlyByteBuf buf) { + this(buf.readBoolean()); + } + + private void encode(FriendlyByteBuf buf) { + buf.writeBoolean(this.enabled); + } + + @Override + public ResourceKey> type() { + return TYPE; + } + + @Override + public void handle(NetWorkUser user) { + if (!this.enabled) return; + PayloadHelper.sendData(user, this); + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientBlockStateSizeData.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientBlockStateSizeData.java deleted file mode 100644 index ff20e81e9..000000000 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientBlockStateSizeData.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.momirealms.craftengine.bukkit.plugin.network.payload.protocol; - - -import net.momirealms.craftengine.bukkit.plugin.network.payload.Data; -import net.momirealms.craftengine.bukkit.plugin.network.payload.codec.NetworkCodec; -import net.momirealms.craftengine.core.plugin.network.NetWorkUser; -import net.momirealms.craftengine.core.util.FriendlyByteBuf; -import net.momirealms.craftengine.core.util.IntIdentityList; - -public record ClientBlockStateSizeData(int blockStateSize) implements Data { - public static final NetworkCodec CODEC = Data.codec( - ClientBlockStateSizeData::encode, - ClientBlockStateSizeData::new - ); - - private ClientBlockStateSizeData(FriendlyByteBuf buf) { - this(buf.readInt()); - } - - private void encode(FriendlyByteBuf buf) { - buf.writeInt(this.blockStateSize); - } - - @Override - public void handle(NetWorkUser user) { - user.setClientBlockList(new IntIdentityList(this.blockStateSize)); - } - -} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientBlockStateSizePacket.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientBlockStateSizePacket.java new file mode 100644 index 000000000..7e87ee564 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientBlockStateSizePacket.java @@ -0,0 +1,40 @@ +package net.momirealms.craftengine.bukkit.plugin.network.payload.protocol; + + +import net.momirealms.craftengine.core.plugin.network.ModPacket; +import net.momirealms.craftengine.core.plugin.network.codec.NetworkCodec; +import net.momirealms.craftengine.core.plugin.network.NetWorkUser; +import net.momirealms.craftengine.core.registry.BuiltInRegistries; +import net.momirealms.craftengine.core.util.FriendlyByteBuf; +import net.momirealms.craftengine.core.util.IntIdentityList; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.ResourceKey; + +public record ClientBlockStateSizePacket(int blockStateSize) implements ModPacket { + public static final ResourceKey> TYPE = ResourceKey.create( + BuiltInRegistries.MOD_PACKET.key().location(), Key.of("craftengine", "client_block_state_size") + ); + public static final NetworkCodec CODEC = ModPacket.codec( + ClientBlockStateSizePacket::encode, + ClientBlockStateSizePacket::new + ); + + private ClientBlockStateSizePacket(FriendlyByteBuf buf) { + this(buf.readInt()); + } + + private void encode(FriendlyByteBuf buf) { + buf.writeInt(this.blockStateSize); + } + + @Override + public ResourceKey> type() { + return TYPE; + } + + @Override + public void handle(NetWorkUser user) { + user.setClientBlockList(new IntIdentityList(this.blockStateSize)); + } + +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockData.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockPacket.java similarity index 56% rename from bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockData.java rename to bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockPacket.java index c24d0f403..9bfe2a7f8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockData.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockPacket.java @@ -3,20 +3,26 @@ package net.momirealms.craftengine.bukkit.plugin.network.payload.protocol; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TranslationArgument; -import net.momirealms.craftengine.bukkit.plugin.network.payload.Data; -import net.momirealms.craftengine.bukkit.plugin.network.payload.codec.NetworkCodec; +import net.momirealms.craftengine.core.plugin.network.ModPacket; +import net.momirealms.craftengine.core.plugin.network.codec.NetworkCodec; import net.momirealms.craftengine.bukkit.util.RegistryUtils; import net.momirealms.craftengine.core.plugin.network.NetWorkUser; +import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.IntIdentityList; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.ResourceKey; -public record ClientCustomBlockData(int size) implements Data { - public static final NetworkCodec CODEC = Data.codec( - ClientCustomBlockData::encode, - ClientCustomBlockData::new +public record ClientCustomBlockPacket(int size) implements ModPacket { + public static final ResourceKey> TYPE = ResourceKey.create( + BuiltInRegistries.MOD_PACKET.key().location(), Key.of("craftengine", "client_custom_block") + ); + public static final NetworkCodec CODEC = ModPacket.codec( + ClientCustomBlockPacket::encode, + ClientCustomBlockPacket::new ); - private ClientCustomBlockData(FriendlyByteBuf buf) { + private ClientCustomBlockPacket(FriendlyByteBuf buf) { this(buf.readInt()); } @@ -24,6 +30,11 @@ public record ClientCustomBlockData(int size) implements Data { buf.writeInt(this.size); } + @Override + public ResourceKey> type() { + return TYPE; + } + @Override public void handle(NetWorkUser user) { int serverBlockRegistrySize = RegistryUtils.currentBlockRegistrySize(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/network/ModPacket.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/ModPacket.java new file mode 100644 index 000000000..9776a4fee --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/ModPacket.java @@ -0,0 +1,21 @@ +package net.momirealms.craftengine.core.plugin.network; + +import io.netty.buffer.ByteBuf; +import net.momirealms.craftengine.core.plugin.network.codec.NetworkCodec; +import net.momirealms.craftengine.core.plugin.network.codec.NetworkDecoder; +import net.momirealms.craftengine.core.plugin.network.codec.NetworkMemberEncoder; +import net.momirealms.craftengine.core.util.FriendlyByteBuf; +import net.momirealms.craftengine.core.util.ResourceKey; + +public interface ModPacket { + + ResourceKey> type(); + + default void handle(NetWorkUser user) { + } + + static NetworkCodec codec(NetworkMemberEncoder networkMemberEncoder, NetworkDecoder networkDecoder) { + return NetworkCodec.ofMember(networkMemberEncoder, networkDecoder); + } + +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkCodec.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkCodec.java similarity index 93% rename from bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkCodec.java rename to core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkCodec.java index 3b60ae459..356ee14f7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkCodec.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkCodec.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.bukkit.plugin.network.payload.codec; +package net.momirealms.craftengine.core.plugin.network.codec; import java.util.function.Function; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkCodecs.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkCodecs.java similarity index 99% rename from bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkCodecs.java rename to core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkCodecs.java index 0ff08bc1d..0589a2df5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkCodecs.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkCodecs.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.bukkit.plugin.network.payload.codec; +package net.momirealms.craftengine.core.plugin.network.codec; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufInputStream; diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkDecoder.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkDecoder.java new file mode 100644 index 000000000..b6e1bd5a8 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkDecoder.java @@ -0,0 +1,5 @@ +package net.momirealms.craftengine.core.plugin.network.codec; + +public interface NetworkDecoder { + T decode(I in); +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkEncoder.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkEncoder.java similarity index 51% rename from bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkEncoder.java rename to core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkEncoder.java index eb17f0476..0c79a9164 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkEncoder.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkEncoder.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.bukkit.plugin.network.payload.codec; +package net.momirealms.craftengine.core.plugin.network.codec; public interface NetworkEncoder { void encode(O out, T value); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkMemberEncoder.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkMemberEncoder.java similarity index 60% rename from bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkMemberEncoder.java rename to core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkMemberEncoder.java index 49a60707f..0b96c1b7a 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/codec/NetworkMemberEncoder.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/codec/NetworkMemberEncoder.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.bukkit.plugin.network.payload.codec; +package net.momirealms.craftengine.core.plugin.network.codec; @FunctionalInterface public interface NetworkMemberEncoder { diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java index 806b20c22..e90410cab 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java @@ -40,6 +40,9 @@ import net.momirealms.craftengine.core.plugin.context.condition.ConditionFactory import net.momirealms.craftengine.core.plugin.context.function.FunctionFactory; import net.momirealms.craftengine.core.plugin.context.number.NumberProviderFactory; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectorFactory; +import net.momirealms.craftengine.core.plugin.network.ModPacket; +import net.momirealms.craftengine.core.plugin.network.codec.NetworkCodec; +import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.ResourceKey; public class BuiltInRegistries { @@ -81,6 +84,7 @@ public class BuiltInRegistries { public static final Registry LEGACY_RECIPE_TYPE = createConstantBoundRegistry(Registries.LEGACY_RECIPE_TYPE); public static final Registry> RECIPE_POST_PROCESSOR_TYPE = createConstantBoundRegistry(Registries.RECIPE_POST_PROCESSOR_TYPE); public static final Registry> ITEM_UPDATER_TYPE = createConstantBoundRegistry(Registries.ITEM_UPDATER_TYPE); + public static final Registry> MOD_PACKET = createConstantBoundRegistry(Registries.MOD_PACKET); private static Registry createConstantBoundRegistry(ResourceKey> key) { return new ConstantBoundRegistry<>(key); diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java index d06a53394..8b8725e2d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java @@ -40,6 +40,9 @@ import net.momirealms.craftengine.core.plugin.context.condition.ConditionFactory import net.momirealms.craftengine.core.plugin.context.function.FunctionFactory; import net.momirealms.craftengine.core.plugin.context.number.NumberProviderFactory; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectorFactory; +import net.momirealms.craftengine.core.plugin.network.ModPacket; +import net.momirealms.craftengine.core.plugin.network.codec.NetworkCodec; +import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceKey; @@ -83,4 +86,5 @@ public class Registries { public static final ResourceKey> LEGACY_RECIPE_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("legacy_recipe_type")); public static final ResourceKey>> RECIPE_POST_PROCESSOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_post_processor_type")); public static final ResourceKey>> ITEM_UPDATER_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_updater_type")); + public static final ResourceKey>> MOD_PACKET = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("mod_packet")); }