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)); + } +}