From 4bcdfa296839ae51d5b050dc4ce38af8a75e5ed8 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Fri, 30 May 2025 06:53:54 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20#194=20#196?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../craftengine/bukkit/plugin/network/PacketConsumers.java | 2 +- server-mod/v1_21_5/src/main/resources/mixins.craftengine.json | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java index 31acebdf2..eeabcac93 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java @@ -2290,7 +2290,7 @@ public class PacketConsumers { private static BukkitNetworkManager.Handlers simpleAddEntityHandler(EntityPacketHandler handler) { return (user, event) -> { FriendlyByteBuf buf = event.getBuffer(); - user.entityPacketHandlers().put(buf.readVarInt(), handler); + user.entityPacketHandlers().putIfAbsent(buf.readVarInt(), handler); }; } } diff --git a/server-mod/v1_21_5/src/main/resources/mixins.craftengine.json b/server-mod/v1_21_5/src/main/resources/mixins.craftengine.json index 288b6501f..69e19f9d0 100644 --- a/server-mod/v1_21_5/src/main/resources/mixins.craftengine.json +++ b/server-mod/v1_21_5/src/main/resources/mixins.craftengine.json @@ -6,7 +6,6 @@ "target": "@env(DEFAULT)", "compatibilityLevel": "JAVA_21", "server": [ - "BlocksMixin", - "ItemStackMixin" + "BlocksMixin" ] } From b346b15fd61025ee77689267f045f88ab29c16b0 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Fri, 30 May 2025 08:46:03 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20#198?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../net/momirealms/craftengine/bukkit/util/Reflections.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java index ede8f4f74..ea7173512 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java @@ -3604,7 +3604,7 @@ public class Reflections { public static final Field field$FallingBlockEntity$blockState = requireNonNull( ReflectionUtils.getDeclaredField( - clazz$FallingBlockEntity, clazz$BlockState, 0 + clazz$FallingBlockEntity, clazz$BlockState, VersionHelper.isOrAbove1_21_5() ? 1 : 0 ) ); From 78a3772eb33780a62bd9ef0e28a5fc2c39e6d468 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Fri, 30 May 2025 09:10:31 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E5=8C=85=EF=BC=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../craftengine/bukkit/plugin/network/PacketConsumers.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java index eeabcac93..9b2deba0c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java @@ -2083,9 +2083,9 @@ public class PacketConsumers { try { FriendlyByteBuf buf = event.getBuffer(); ItemBuildContext context = ItemBuildContext.of((BukkitServerPlayer) user); + int slot = buf.readVarInt(); Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); ItemStack itemStack = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf); - int slot = buf.readVarInt(); BukkitItemManager.instance().s2c(itemStack, context).ifPresent((newItemStack) -> { event.setChanged(true); buf.clear(); From d29900255dff9a3318768bcf61f790dda242ed3c Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Fri, 30 May 2025 10:11:42 +0800 Subject: [PATCH 4/5] =?UTF-8?q?feat(bukkit):=20=E6=B7=BB=E5=8A=A0=20FastAs?= =?UTF-8?q?yncWorldEdit=20=E5=85=BC=E5=AE=B9=E6=80=A7=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BukkitCompatibilityManager.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java index 4e00a179d..af6afe670 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java @@ -82,8 +82,12 @@ public class BukkitCompatibilityManager implements CompatibilityManager { } // WorldEdit if (this.isPluginEnabled("FastAsyncWorldEdit")) { - this.initFastAsyncWorldEditHook(); - logHook("FastAsyncWorldEdit"); + try { + this.initFastAsyncWorldEditHook(); + logHook("FastAsyncWorldEdit"); + } catch (Exception e) { + this.plugin.logger().warn("[Compatibility] Failed to initialize FastAsyncWorldEdit hook", e); + } } else if (this.isPluginEnabled("WorldEdit")) { this.initWorldEditHook(); logHook("WorldEdit"); @@ -172,10 +176,28 @@ public class BukkitCompatibilityManager implements CompatibilityManager { } } + @SuppressWarnings("all") private void initFastAsyncWorldEditHook() { + Plugin fastAsyncWorldEdit = Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit"); + String version = VersionHelper.isPaper() ? fastAsyncWorldEdit.getPluginMeta().getVersion() : fastAsyncWorldEdit.getDescription().getVersion(); + if (!this.fastAsyncWorldEditVersionCheck(new int[]{2, 13, 0}, version)) { + this.plugin.logger().warn("[Compatibility] FastAsyncWorldEdit version is too old, please update to 2.13.0 or newer"); + } new WorldEditBlockRegister(BukkitBlockManager.instance(), true); } + private boolean fastAsyncWorldEditVersionCheck(int[] target, String version) { + String cleanVersion = version.split("-")[0]; + String[] parts = cleanVersion.split("\\."); + for (int i = 0; i < target.length; i++) { + if (i >= parts.length) return false; + int currentPart = Integer.parseInt(parts[i]); + if (currentPart > target[i]) return true; + if (currentPart < target[i]) return false; + } + return true; + } + private void initWorldEditHook() { WorldEditBlockRegister weBlockRegister = new WorldEditBlockRegister(BukkitBlockManager.instance(), false); try { From 0c66b4038997bf048afd598e327c084c52fe8556 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Fri, 30 May 2025 14:34:19 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix(core):=20=E4=BF=AE=E5=A4=8DDropbox?= =?UTF-8?q?=E6=89=98=E7=AE=A1=E5=A4=B1=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../momirealms/craftengine/core/pack/host/impl/DropboxHost.java | 2 +- .../craftengine/core/pack/host/impl/OneDriveHost.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java index 091115e16..3c605ed84 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java @@ -225,7 +225,7 @@ public class DropboxHost implements ResourcePackHost { try (HttpClient client = HttpClient.newBuilder().proxy(this.proxy).build()) { HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create("https://alist.nn.ci/tool/dropbox/callback")) + .uri(URI.create("https://api.dropboxapi.com/oauth2/token")) .header("Content-Type", "application/x-www-form-urlencoded") .header("Authorization", authHeader) .POST(HttpRequest.BodyPublishers.ofString( diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java index de06dd2b3..9c413d5e0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java @@ -189,7 +189,6 @@ public class OneDriveHost implements ResourcePackHost { try (HttpClient client = HttpClient.newBuilder().proxy(this.proxy).build()) { String formData = "client_id=" + URLEncoder.encode(this.clientId, StandardCharsets.UTF_8) + "&client_secret=" + URLEncoder.encode(this.clientSecret, StandardCharsets.UTF_8) + - "&redirect_uri=" + URLEncoder.encode("https://alist.nn.ci/tool/onedrive/callback", StandardCharsets.UTF_8) + "&refresh_token=" + URLEncoder.encode(this.refreshToken.left(), StandardCharsets.UTF_8) + "&grant_type=refresh_token" + "&scope=Files.ReadWrite.All+offline_access";