From 4c1a416bfd55792e253052d3652d453ffc5ff7d8 Mon Sep 17 00:00:00 2001 From: hammy275 Date: Thu, 12 Sep 2024 18:26:38 -0400 Subject: [PATCH] Port to 1.21.1 --- .../net/blf02/vrapi/client/MessageClient.java | 5 ++-- .../java/net/blf02/fabric/BufferPacket.java | 2 +- .../java/net/blf02/fabric/VRAPIFabric.java | 24 +++++++++++++++---- .../java/net/blf02/forge/BufferPacket.java | 2 +- .../java/net/blf02/forge/PlatformImpl.java | 9 ++++--- gradle.properties | 8 +++---- .../java/net/blf02/neoforge/BufferPacket.java | 2 +- .../java/net/blf02/neoforge/PlatformImpl.java | 21 +++++++++------- .../net/blf02/neoforge/VRAPINeoForge.java | 2 +- 9 files changed, 50 insertions(+), 25 deletions(-) diff --git a/common/src/main/java/net/blf02/vrapi/client/MessageClient.java b/common/src/main/java/net/blf02/vrapi/client/MessageClient.java index 7fc85e6..c7f6295 100644 --- a/common/src/main/java/net/blf02/vrapi/client/MessageClient.java +++ b/common/src/main/java/net/blf02/vrapi/client/MessageClient.java @@ -3,6 +3,7 @@ import net.blf02.vrapi.common.network.Network; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.network.DisconnectionDetails; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Player; @@ -18,8 +19,8 @@ public static void msg(String message) { public static void versionMismatchDisconnect(String serverVersion) { ClientPacketListener packetListener = Minecraft.getInstance().getConnection(); if (packetListener != null) { - packetListener.onDisconnect(Component.translatable("message.vrapi.version_mismatch", - serverVersion, Network.PROTOCOL_VERSION)); + packetListener.onDisconnect(new DisconnectionDetails(Component.translatable("message.vrapi.version_mismatch", + serverVersion, Network.PROTOCOL_VERSION))); } } } diff --git a/fabric/src/main/java/net/blf02/fabric/BufferPacket.java b/fabric/src/main/java/net/blf02/fabric/BufferPacket.java index 01069ca..8521fdb 100644 --- a/fabric/src/main/java/net/blf02/fabric/BufferPacket.java +++ b/fabric/src/main/java/net/blf02/fabric/BufferPacket.java @@ -8,7 +8,7 @@ public record BufferPacket(RegistryFriendlyByteBuf buffer) implements CustomPacketPayload { - public static final Type ID = new Type<>(new ResourceLocation(VRAPIMod.MOD_ID, "network")); + public static final Type ID = new Type<>(ResourceLocation.fromNamespaceAndPath(VRAPIMod.MOD_ID, "network")); public static final StreamCodec CODEC = CustomPacketPayload.codec(BufferPacket::write, BufferPacket::read); diff --git a/fabric/src/main/java/net/blf02/fabric/VRAPIFabric.java b/fabric/src/main/java/net/blf02/fabric/VRAPIFabric.java index dbb9a2b..9889a9d 100644 --- a/fabric/src/main/java/net/blf02/fabric/VRAPIFabric.java +++ b/fabric/src/main/java/net/blf02/fabric/VRAPIFabric.java @@ -14,11 +14,27 @@ public void onInitialize() { Plat.INSTANCE = new PlatformImpl(); PayloadTypeRegistry.playS2C().register(BufferPacket.ID, BufferPacket.CODEC); PayloadTypeRegistry.playC2S().register(BufferPacket.ID, BufferPacket.CODEC); - ServerPlayNetworking.registerGlobalReceiver(BufferPacket.ID, ((payload, context) -> - context.server().execute(() -> Network.CHANNEL.doReceive(context.player(), payload.buffer())))); + ServerPlayNetworking.registerGlobalReceiver(BufferPacket.ID, ((payload, context) -> { + payload.buffer().retain(); + context.server().execute(() -> { + try { + Network.CHANNEL.doReceive(context.player(), payload.buffer()); + } finally { + payload.buffer().release(); + } + }); + })); if (Plat.INSTANCE.isClient()) { - ClientPlayNetworking.registerGlobalReceiver(BufferPacket.ID, (payload, context) -> - context.client().execute(() -> Network.CHANNEL.doReceive(null, payload.buffer()))); + ClientPlayNetworking.registerGlobalReceiver(BufferPacket.ID, (payload, context) -> { + payload.buffer().retain(); + context.client().execute(() -> { + try { + Network.CHANNEL.doReceive(null, payload.buffer()); + } finally { + payload.buffer().release(); + } + }); + }); } VRAPIMod.init(); } diff --git a/forge/src/main/java/net/blf02/forge/BufferPacket.java b/forge/src/main/java/net/blf02/forge/BufferPacket.java index 1cc2610..888bc72 100644 --- a/forge/src/main/java/net/blf02/forge/BufferPacket.java +++ b/forge/src/main/java/net/blf02/forge/BufferPacket.java @@ -8,7 +8,7 @@ public record BufferPacket(RegistryFriendlyByteBuf buffer) implements CustomPacketPayload { - public static final Type ID = new Type<>(new ResourceLocation(VRAPIMod.MOD_ID, "network")); + public static final Type ID = new Type<>(ResourceLocation.fromNamespaceAndPath(VRAPIMod.MOD_ID, "network")); public static final StreamCodec CODEC = CustomPacketPayload.codec(BufferPacket::write, BufferPacket::read); diff --git a/forge/src/main/java/net/blf02/forge/PlatformImpl.java b/forge/src/main/java/net/blf02/forge/PlatformImpl.java index ec828e2..99fed31 100644 --- a/forge/src/main/java/net/blf02/forge/PlatformImpl.java +++ b/forge/src/main/java/net/blf02/forge/PlatformImpl.java @@ -27,10 +27,13 @@ public class PlatformImpl implements Platform { public static final List keyMappingsToRegister = new ArrayList<>(); - public static final SimpleChannel NETWORK = ChannelBuilder.named(new ResourceLocation(VRAPIMod.MOD_ID, "network")) + public static final SimpleChannel NETWORK = ChannelBuilder.named(ResourceLocation.fromNamespaceAndPath(VRAPIMod.MOD_ID, "network")) + .optional() .simpleChannel() - .play().bidirectional().add(BufferPacket.class, BufferPacket.CODEC, (bufferPacket, context) -> - context.enqueueWork(() -> Network.CHANNEL.doReceive(context.getSender(), bufferPacket.buffer()))) + .play().bidirectional().add(BufferPacket.class, BufferPacket.CODEC, (bufferPacket, context) -> { + context.enqueueWork(() -> Network.CHANNEL.doReceive(context.getSender(), bufferPacket.buffer())); + context.setPacketHandled(true); + }) .build(); @Override diff --git a/gradle.properties b/gradle.properties index 5fb6731..73f4f64 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ org.gradle.jvmargs=-Xmx4G -minecraft_version=1.20.6 +minecraft_version=1.21.1 enabled_platforms=fabric,forge,neoforge archives_base_name=vrapi @@ -8,8 +8,8 @@ mod_version=3.0.10 maven_group=net.blf02.vrapi fabric_loader_version=0.16.5 -fabric_api_version=0.100.8+1.20.6 +fabric_api_version=0.104.0+1.21.1 -forge_version=1.20.6-50.1.0 +forge_version=1.21.1-52.0.15 -neoforge_version=20.6.115 +neoforge_version=21.1.51 diff --git a/neoforge/src/main/java/net/blf02/neoforge/BufferPacket.java b/neoforge/src/main/java/net/blf02/neoforge/BufferPacket.java index 3df0eed..aa5d3d9 100644 --- a/neoforge/src/main/java/net/blf02/neoforge/BufferPacket.java +++ b/neoforge/src/main/java/net/blf02/neoforge/BufferPacket.java @@ -9,7 +9,7 @@ public record BufferPacket(RegistryFriendlyByteBuf buffer) implements CustomPacketPayload { - public static final Type ID = new Type<>(new ResourceLocation(VRAPIMod.MOD_ID, "network")); + public static final Type ID = new Type<>(ResourceLocation.fromNamespaceAndPath(VRAPIMod.MOD_ID, "network")); public static final StreamCodec CODEC = CustomPacketPayload.codec(BufferPacket::write, BufferPacket::read); diff --git a/neoforge/src/main/java/net/blf02/neoforge/PlatformImpl.java b/neoforge/src/main/java/net/blf02/neoforge/PlatformImpl.java index 7d8bc85..514b899 100644 --- a/neoforge/src/main/java/net/blf02/neoforge/PlatformImpl.java +++ b/neoforge/src/main/java/net/blf02/neoforge/PlatformImpl.java @@ -42,18 +42,23 @@ public void registerKeyBinding(Object keyMapping) { @Override public void sendToServer(T message, NetworkChannel.NetworkRegistrationData data) { - RegistryFriendlyByteBuf buffer = new RegistryFriendlyByteBuf(Unpooled.buffer(), ClientRegistryAccess.get(), ConnectionType.NEOFORGE); - buffer.writeInt(data.id()); - data.encoder().accept(message, buffer); - PacketDistributor.sendToServer(new BufferPacket(buffer)); + try { + RegistryFriendlyByteBuf buffer = new RegistryFriendlyByteBuf(Unpooled.buffer(), ClientRegistryAccess.get(), ConnectionType.NEOFORGE); + buffer.writeInt(data.id()); + data.encoder().accept(message, buffer); + PacketDistributor.sendToServer(new BufferPacket(buffer)); + } catch (UnsupportedOperationException ignored) {} // Ignore errors from sending packets when the other side can't receive } @Override public void sendToPlayer(ServerPlayer player, T message, NetworkChannel.NetworkRegistrationData data) { - RegistryFriendlyByteBuf buffer = new RegistryFriendlyByteBuf(Unpooled.buffer(), player.registryAccess(), ConnectionType.NEOFORGE); - buffer.writeInt(data.id()); - data.encoder().accept(message, buffer); - PacketDistributor.sendToPlayer(player, new BufferPacket(buffer)); + try { + RegistryFriendlyByteBuf buffer = new RegistryFriendlyByteBuf(Unpooled.buffer(), player.registryAccess(), ConnectionType.NEOFORGE); + buffer.writeInt(data.id()); + data.encoder().accept(message, buffer); + PacketDistributor.sendToPlayer(player, new BufferPacket(buffer)); + } catch (UnsupportedOperationException ignored) {} // Ignore errors from sending packets when the other side can't receive + } @Override diff --git a/neoforge/src/main/java/net/blf02/neoforge/VRAPINeoForge.java b/neoforge/src/main/java/net/blf02/neoforge/VRAPINeoForge.java index 528f51c..bfc9142 100644 --- a/neoforge/src/main/java/net/blf02/neoforge/VRAPINeoForge.java +++ b/neoforge/src/main/java/net/blf02/neoforge/VRAPINeoForge.java @@ -24,7 +24,7 @@ public VRAPINeoForge(IEventBus modBus) { } modBus.addListener((RegisterPayloadHandlersEvent event) -> { PayloadRegistrar registrar = event.registrar(VRAPIMod.MOD_ID); - registrar.playBidirectional(BufferPacket.ID, BufferPacket.CODEC, + registrar.optional().playBidirectional(BufferPacket.ID, BufferPacket.CODEC, new DirectionalPayloadHandler<>( (packet, ctx) -> ctx.enqueueWork(() -> Network.CHANNEL.doReceive(null, packet.buffer())), (packet, ctx) -> ctx.enqueueWork(() -> Network.CHANNEL.doReceive((ServerPlayer) ctx.player(), packet.buffer()))