From 8423eabc57aa31788a6425e0d4af13f8a6918551 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Wed, 11 Jan 2023 01:32:48 +0100 Subject: [PATCH] Fixes handling of preset replacement --- .../blacksmith/config/NPCSettings.java | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/src/main/java/net/knarcraft/blacksmith/config/NPCSettings.java b/src/main/java/net/knarcraft/blacksmith/config/NPCSettings.java index a20366e..2361f21 100644 --- a/src/main/java/net/knarcraft/blacksmith/config/NPCSettings.java +++ b/src/main/java/net/knarcraft/blacksmith/config/NPCSettings.java @@ -367,26 +367,20 @@ public class NPCSettings { /** * Replaces placeholders in the given reforge-able value * - * @param value

The value specified by a user

+ * @param stringList

The value specified by a user

* @return

The value with placeholders replaced

*/ - private static Object replaceReforgeAblePresets(Object value) { - if (value instanceof String string) { - String[] list = string.split(","); - List replaced = new ArrayList<>(list.length); - for (String item : list) { - replaced.add(SmithPreset.replacePreset(item)); + private static List replaceReforgeAblePresets(List stringList) { + List newStrings = new ArrayList<>(stringList); + for (String item : stringList) { + String replaced = SmithPreset.replacePreset(item); + if (!replaced.equals(item)) { + newStrings.addAll(List.of(replaced.split(","))); + } else { + newStrings.add(item); } - return String.join(",", replaced); - } else if (value instanceof String[] stringList) { - List replaced = new ArrayList<>(stringList.length); - for (String item : stringList) { - replaced.add(SmithPreset.replacePreset(item)); - } - return replaced.toArray(); - } else { - throw new IllegalArgumentException("Unexpected object type encountered!"); } + return newStrings; } /** @@ -444,8 +438,10 @@ public class NPCSettings { return null; } - Set blacklisted = new HashSet<>(); + //Convert any presets with a list of materials + itemList = replaceReforgeAblePresets(itemList); + Set blacklisted = new HashSet<>(); //Parse every material, and add to reforgeAble items for (String item : itemList) { //Ignore ,, @@ -453,9 +449,6 @@ public class NPCSettings { continue; } - //Convert any presets with a list of materials - item = (String) replaceReforgeAblePresets(item); - boolean blacklist = false; if (item.startsWith("-")) { blacklist = true;