From a4dccaa53c46adb2f193f12360459f7bd0b63238 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Tue, 17 Jun 2025 03:56:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor(VersionHelper):=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E8=B7=A8=E5=B9=B3=E5=8F=B0=E7=89=88=E6=9C=AC=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../craftengine/core/util/VersionHelper.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/VersionHelper.java b/core/src/main/java/net/momirealms/craftengine/core/util/VersionHelper.java index 75b994cc9..70273c860 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/VersionHelper.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/VersionHelper.java @@ -1,14 +1,12 @@ package net.momirealms.craftengine.core.util; -import java.lang.reflect.Field; +import com.google.gson.JsonObject; -import static java.util.Objects.requireNonNull; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; public class VersionHelper { - // todo 在跨平台时候,将其设计到平台实现 - private static final Class clazz$SharedConstants = requireNonNull(ReflectionUtils.getClazz("net.minecraft.SharedConstants")); - private static final Field field$SharedConstants$VERSION_STRING = requireNonNull(ReflectionUtils.getDeclaredField(clazz$SharedConstants, String.class, 1)); - private static final int version; private static final int majorVersion; private static final int minorVersion; @@ -32,8 +30,12 @@ public class VersionHelper { private static final boolean v1_21_6; static { - try { - String versionString = (String) field$SharedConstants$VERSION_STRING.get(null); + try (InputStream inputStream = Class.forName("net.minecraft.obfuscate.DontObfuscate").getResourceAsStream("/version.json")) { + if (inputStream == null) { + throw new IOException("Failed to load version.json"); + } + JsonObject json = GsonHelper.parseJsonToJsonObject(new String(inputStream.readAllBytes(), StandardCharsets.UTF_8)); + String versionString = json.getAsJsonPrimitive("id").getAsString(); String[] split = versionString.split("\\."); int major = Integer.parseInt(split[1]); int minor = split.length == 3 ? Integer.parseInt(split[2].split("-", 2)[0]) : 0; @@ -63,7 +65,7 @@ public class VersionHelper { mojmap = checkMojMap(); folia = checkFolia(); paper = checkPaper(); - } catch (ReflectiveOperationException e) { + } catch (Exception e) { throw new RuntimeException("Failed to init VersionHelper", e); } }