From 0727fef6bbaa97a1ddae880d9f68602a60e962c8 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Wed, 30 Apr 2025 01:51:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BF=AB=E9=80=9F=E6=B3=A8?= =?UTF-8?q?=E5=85=A5=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- bukkit/loader/src/main/resources/config.yml | 2 ++ .../bukkit/plugin/injector/BukkitInjector.java | 9 +++++++-- .../craftengine/core/plugin/config/Config.java | 6 ++++++ readme/README_zh-CN.md | 4 ++-- readme/README_zh-TW.md | 4 ++-- 6 files changed, 21 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index f0b0d8a09..fefff6da4 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ repositories { ``` ```kotlin dependencies { - compileOnly("net.momirealms:craft-engine-core:0.0.49") - compileOnly("net.momirealms:craft-engine-bukkit:0.0.49") + compileOnly("net.momirealms:craft-engine-core:0.0.52") + compileOnly("net.momirealms:craft-engine-bukkit:0.0.52") } ``` \ No newline at end of file diff --git a/bukkit/loader/src/main/resources/config.yml b/bukkit/loader/src/main/resources/config.yml index eda56d932..da8cf0aa0 100644 --- a/bukkit/loader/src/main/resources/config.yml +++ b/bukkit/loader/src/main/resources/config.yml @@ -351,6 +351,8 @@ chunk-system: # 4 = LZ4 | Blazing-Fast Blazing-Fast Low Low | # 5 = ZSTD | Medium-Fast Fast High Medium | compression-method: 4 + # This might not work for some server forks that modify how Minecraft saves chunks. + fast-palette-injection: false # Auto-convert custom blocks -> vanilla blocks when unloading chunks # # - When ENABLED (true): diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BukkitInjector.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BukkitInjector.java index 585cd3be9..b68ef4a2d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BukkitInjector.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BukkitInjector.java @@ -392,8 +392,13 @@ public class BukkitInjector { try { Object container = FastNMS.INSTANCE.field$LevelChunkSection$states(targetSection); if (!clazz$InjectedPalettedContainer.isInstance(container)) { - InjectedPalettedContainerHolder injectedObject = (InjectedPalettedContainerHolder) Reflections.UNSAFE.allocateInstance(clazz$InjectedPalettedContainer); - varHandle$InjectedPalettedContainer$target.set(injectedObject, container); + InjectedPalettedContainerHolder injectedObject; + if (Config.fastPaletteInjection()) { + injectedObject = FastNMS.INSTANCE.createInjectedPalettedContainerHolder(container); + } else { + injectedObject = (InjectedPalettedContainerHolder) Reflections.UNSAFE.allocateInstance(clazz$InjectedPalettedContainer); + varHandle$InjectedPalettedContainer$target.set(injectedObject, container); + } injectedObject.ceWorld(ceWorld); injectedObject.ceChunk(chunk); injectedObject.ceSection(ceSection); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java index a3a733518..e823d35e4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java @@ -100,6 +100,7 @@ public class Config { protected boolean chunk_system$restore_custom_blocks_on_chunk_load; protected boolean chunk_system$sync_custom_blocks_on_chunk_load; protected int chunk_system$delay_serialization; + protected boolean chunk_system$fast_paletted_injection; protected boolean furniture$handle_invalid_furniture_on_chunk_load$enable; protected Map furniture$handle_invalid_furniture_on_chunk_load$mapping; @@ -271,6 +272,7 @@ public class Config { chunk_system$restore_custom_blocks_on_chunk_load = config.getBoolean("chunk-system.restore-custom-blocks-on-chunk-load", true); chunk_system$sync_custom_blocks_on_chunk_load = config.getBoolean("chunk-system.sync-custom-blocks-on-chunk-load", false); chunk_system$delay_serialization = config.getInt("chunk-system.delay-serialization", 20); + chunk_system$fast_paletted_injection = config.getBoolean("chunk-system.fast-palette-injection", false); // furniture furniture$handle_invalid_furniture_on_chunk_load$enable = config.getBoolean("furniture.handle-invalid-furniture-on-chunk-load.enable", false); @@ -693,6 +695,10 @@ public class Config { return instance.chunk_system$delay_serialization; } + public static boolean fastPaletteInjection() { + return instance.chunk_system$fast_paletted_injection; + } + public YamlDocument loadOrCreateYamlData(String fileName) { File file = new File(this.plugin.dataFolderFile(), fileName); if (!file.exists()) { diff --git a/readme/README_zh-CN.md b/readme/README_zh-CN.md index 54db64bf7..4cf9e7563 100644 --- a/readme/README_zh-CN.md +++ b/readme/README_zh-CN.md @@ -135,7 +135,7 @@ repositories { ``` ```kotlin dependencies { - compileOnly("net.momirealms:craft-engine-core:0.0.48") - compileOnly("net.momirealms:craft-engine-bukkit:0.0.48") + compileOnly("net.momirealms:craft-engine-core:0.0.52") + compileOnly("net.momirealms:craft-engine-bukkit:0.0.52") } ``` diff --git a/readme/README_zh-TW.md b/readme/README_zh-TW.md index a4281d278..a6dfbc189 100644 --- a/readme/README_zh-TW.md +++ b/readme/README_zh-TW.md @@ -135,7 +135,7 @@ repositories { ``` ```kotlin dependencies { - compileOnly("net.momirealms:craft-engine-core:0.0.48") - compileOnly("net.momirealms:craft-engine-bukkit:0.0.48") + compileOnly("net.momirealms:craft-engine-core:0.0.52") + compileOnly("net.momirealms:craft-engine-bukkit:0.0.52") } ```