From c54ce3b6606bb9490f8a1712ada377461dfa72a8 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Wed, 20 Aug 2025 17:35:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=85=8D=E6=96=B9=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../item/recipe/BukkitRecipeManager.java | 24 ++++++++++++------- gradle.properties | 2 +- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java index 0fcba6c05..519734e35 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java @@ -403,7 +403,18 @@ public class BukkitRecipeManager extends AbstractRecipeManager { this.plugin.logger().warn("Failed to load datapack recipes", e); } } + + if (Config.disableAllVanillaRecipes()) { + this.recipesToUnregister.addAll(this.lastDatapackRecipes.keySet().stream().map(it -> Pair.of(it, false)).toList()); + return; + } + + boolean hasDisabledAny = !Config.disabledVanillaRecipes().isEmpty(); for (Map.Entry> entry : this.lastDatapackRecipes.entrySet()) { + if (hasDisabledAny && Config.disabledVanillaRecipes().contains(entry.getKey())) { + this.recipesToUnregister.add(Pair.of(entry.getKey(), false)); + continue; + } markAsDataPackRecipe(entry.getKey()); registerInternalRecipe(entry.getKey(), entry.getValue()); } @@ -420,19 +431,11 @@ public class BukkitRecipeManager extends AbstractRecipeManager { packResources.add(CoreReflections.methodHandle$Pack$open.invokeExact(pack)); } Map> recipes = new HashMap<>(); - boolean hasDisabledAny = !Config.disabledVanillaRecipes().isEmpty(); + try (AutoCloseable resourceManager = (AutoCloseable) CoreReflections.methodHandle$MultiPackResourceManagerConstructor.invokeExact(CoreReflections.instance$PackType$SERVER_DATA, packResources)) { Map scannedResources = (Map) CoreReflections.methodHandle$FileToIdConverter$listMatchingResources.invokeExact(fileToIdConverter, resourceManager); for (Map.Entry entry : scannedResources.entrySet()) { Key id = extractKeyFromResourceLocation(entry.getKey().toString()); - if (Config.disableAllVanillaRecipes()) { - this.recipesToUnregister.add(new Pair<>(id, false)); - continue; - } - if (hasDisabledAny && Config.disabledVanillaRecipes().contains(id)) { - this.recipesToUnregister.add(new Pair<>(id, false)); - continue; - } Reader reader = (Reader) CoreReflections.methodHandle$Resource$openAsReader.invokeExact(entry.getValue()); JsonObject jsonObject = JsonParser.parseReader(reader).getAsJsonObject(); Key serializerType = Key.of(jsonObject.get("type").getAsString()); @@ -470,6 +473,9 @@ public class BukkitRecipeManager extends AbstractRecipeManager { for (Pair pair : this.recipesToUnregister) { unregisterPlatformRecipeMainThread(pair.left(), pair.right()); } + + this.recipesToUnregister.clear(); + // 注册新的配方 for (Recipe recipe : this.byId.values()) { try { diff --git a/gradle.properties b/gradle.properties index db85c383c..564230f8d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx1G # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=0.0.61.9 +project_version=0.0.61.10 config_version=44 lang_version=24 project_group=net.momirealms