From e00a803533c15690637013e214c13205af19eaeb Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Wed, 26 Nov 2025 19:46:59 +0800 Subject: [PATCH] =?UTF-8?q?=E9=81=BF=E5=85=8D=E5=9B=A0=E4=B8=BA=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=94=99=E8=AF=AF=E8=80=8C=E9=99=A4=E4=BB=A50?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/item/recipe/RecipeEventListener.java | 6 +++++- .../craftengine/core/item/ItemSettings.java | 11 ++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java index 6e2035f84..82467401f 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java @@ -407,8 +407,12 @@ public class RecipeEventListener implements Listener { } boolean hasResult = true; - + int realDurabilityPerItem = (int) (repairItem.amount() + repairItem.percent() * maxDamage); + if (realDurabilityPerItem == 0) { + return; + } + int consumeMaxAmount = damage / realDurabilityPerItem + 1; int actualConsumedAmount = Math.min(consumeMaxAmount, wrappedSecond.count()); int actualRepairAmount = actualConsumedAmount * realDurabilityPerItem; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java index 08e4310c5..186588e32 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java @@ -109,7 +109,7 @@ public class ItemSettings { newSettings.dyeColor = settings.dyeColor; newSettings.fireworkColor = settings.fireworkColor; newSettings.ingredientSubstitutes = settings.ingredientSubstitutes; - newSettings.customData = settings.customData; + newSettings.customData = new IdentityHashMap<>(settings.customData); return newSettings; } @@ -360,14 +360,11 @@ public class ItemSettings { return settings -> settings.renameable(bool); })); registerFactory("anvil-repair-item", (value -> { - @SuppressWarnings("unchecked") - List> materials = (List>) value; - List anvilRepairItemList = new ArrayList<>(); - for (Map material : materials) { + List anvilRepairItemList = ResourceConfigUtils.parseConfigAsList(value, material -> { int amount = ResourceConfigUtils.getAsInt(material.getOrDefault("amount", 0), "amount"); double percent = ResourceConfigUtils.getAsDouble(material.getOrDefault("percent", 0), "percent"); - anvilRepairItemList.add(new AnvilRepairItem(MiscUtils.getAsStringList(material.get("target")), amount, percent)); - } + return new AnvilRepairItem(MiscUtils.getAsStringList(material.get("target")), amount, percent); + }); return settings -> settings.repairItems(anvilRepairItemList); })); registerFactory("fuel-time", (value -> {