修复服务端加载客户端界面类崩溃
Some checks failed
Build / build (push) Has been cancelled

This commit is contained in:
LiuEnder
2026-04-26 20:24:59 +08:00
parent a88ac00cde
commit 0a0333faed
2 changed files with 23 additions and 5 deletions

View File

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

View File

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