From 6c7b13a688abfc48f1689a1c986620e7b09c45d3 Mon Sep 17 00:00:00 2001 From: jhqwqmc Date: Thu, 6 Nov 2025 17:15:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E4=B8=8E=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E6=A8=A1=E7=BB=84=E7=9A=84=E5=85=BC=E5=AE=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../protocol/ClientCustomBlockPacket.java | 2 +- .../craftengine/core/util/VersionHelper.java | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockPacket.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockPacket.java index eee81789d..e63cfd630 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockPacket.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockPacket.java @@ -56,7 +56,7 @@ public record ClientCustomBlockPacket(int vanillaSize, int currentSize) implemen return; } int serverBlockRegistrySize = RegistryUtils.currentBlockRegistrySize(); - if (this.currentSize != serverBlockRegistrySize) { + if (this.currentSize < serverBlockRegistrySize) { user.kick(Component.translatable( "disconnect.craftengine.current_block_registry_mismatch", TranslationArgument.numeric(this.currentSize), 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 b0b7a6031..633dcba99 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 @@ -5,6 +5,7 @@ import com.google.gson.JsonObject; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; +import java.util.Objects; public class VersionHelper { public static final boolean PREMIUM = true; @@ -35,20 +36,30 @@ public class VersionHelper { private static final boolean v1_21_8; private static final boolean v1_21_9; private static final boolean v1_21_10; + private static final Class UNOBFUSCATED_CLAZZ = Objects.requireNonNull(ReflectionUtils.getClazz( + "net.minecraft.obfuscate.DontObfuscate", // 因为无混淆版本没有这个类所以说多写几个防止找不到了 + "net.minecraft.data.Main", + "net.minecraft.server.Main", + "net.minecraft.gametest.Main", + "net.minecraft.client.main.Main", + "net.minecraft.client.data.Main" + )); static { - try (InputStream inputStream = Class.forName("net.minecraft.obfuscate.DontObfuscate").getResourceAsStream("/version.json")) { + try (InputStream inputStream = UNOBFUSCATED_CLAZZ.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().split("-", 2)[0]; + String versionString = json.getAsJsonPrimitive("id").getAsString() + .split("-", 2)[0] // 1.21.10-rc1 -> 1.21.10 + .split("_", 2)[0]; // 1.21.11_unobfuscated -> 1.21.11 MINECRAFT_VERSION = new MinecraftVersion(versionString); String[] split = versionString.split("\\."); int major = Integer.parseInt(split[1]); - int minor = split.length == 3 ? Integer.parseInt(split[2].split("-", 2)[0]) : 0; + int minor = split.length == 3 ? Integer.parseInt(split[2]) : 0; // 12001 = 1.20.1 // 12104 = 1.21.4