From 0a0333faed19f518e75f132759e2f140f83e328d Mon Sep 17 00:00:00 2001 From: LiuEnder Date: Sun, 26 Apr 2026 20:24:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=8D=E5=8A=A1=E7=AB=AF?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E5=AE=A2=E6=88=B7=E7=AB=AF=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E7=B1=BB=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/le/teleportmirror/MirrorNetwork.java | 12 +++++++----- .../le/teleportmirror/MirrorNetworkClient.java | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/le/teleportmirror/MirrorNetworkClient.java diff --git a/src/main/java/com/le/teleportmirror/MirrorNetwork.java b/src/main/java/com/le/teleportmirror/MirrorNetwork.java index 2967607..042417f 100644 --- a/src/main/java/com/le/teleportmirror/MirrorNetwork.java +++ b/src/main/java/com/le/teleportmirror/MirrorNetwork.java @@ -1,7 +1,5 @@ package com.le.teleportmirror; -import com.le.teleportmirror.screen.PlayerSelectionScreen; -import net.minecraft.client.Minecraft; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; @@ -63,9 +61,13 @@ public class MirrorNetwork { private static void handleOpenSelection(OpenPlayerSelectionPayload payload, IPayloadContext context) { context.enqueueWork(() -> { - Minecraft client = Minecraft.getInstance(); - MirrorTier tier = MirrorTier.valueOf(payload.tierName.toUpperCase()); - client.setScreen(new PlayerSelectionScreen(payload.playerNames, payload.playerUuids, tier)); + try { + Class clientHandlerClass = Class.forName("com.le.teleportmirror.MirrorNetworkClient"); + clientHandlerClass.getMethod("openPlayerSelection", OpenPlayerSelectionPayload.class) + .invoke(null, payload); + } catch (ReflectiveOperationException e) { + throw new RuntimeException("Failed to open player selection screen", e); + } }); } diff --git a/src/main/java/com/le/teleportmirror/MirrorNetworkClient.java b/src/main/java/com/le/teleportmirror/MirrorNetworkClient.java new file mode 100644 index 0000000..c52a089 --- /dev/null +++ b/src/main/java/com/le/teleportmirror/MirrorNetworkClient.java @@ -0,0 +1,16 @@ +package com.le.teleportmirror; + +import com.le.teleportmirror.screen.PlayerSelectionScreen; +import net.minecraft.client.Minecraft; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public class MirrorNetworkClient { + + public static void openPlayerSelection(MirrorNetwork.OpenPlayerSelectionPayload payload) { + Minecraft client = Minecraft.getInstance(); + MirrorTier tier = MirrorTier.valueOf(payload.tierName().toUpperCase()); + client.setScreen(new PlayerSelectionScreen(payload.playerNames(), payload.playerUuids(), tier)); + } +}