From b93361cd07ba1466a5e2d5ff128593ea52735d89 Mon Sep 17 00:00:00 2001 From: Phoenix616 Date: Fri, 26 Mar 2021 15:55:29 +0100 Subject: [PATCH] Fix shortened item aliases not working (Fixes #425) --- .../Listeners/Modules/ItemAliasModule.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/java/com/Acrobot/ChestShop/Listeners/Modules/ItemAliasModule.java b/src/main/java/com/Acrobot/ChestShop/Listeners/Modules/ItemAliasModule.java index 6acd7ca..6684602 100644 --- a/src/main/java/com/Acrobot/ChestShop/Listeners/Modules/ItemAliasModule.java +++ b/src/main/java/com/Acrobot/ChestShop/Listeners/Modules/ItemAliasModule.java @@ -15,6 +15,7 @@ import org.bukkit.event.Listener; import java.io.File; import java.io.IOException; import java.util.Locale; +import java.util.Map; /** * @author Acrobot @@ -69,6 +70,31 @@ public class ItemAliasModule implements Listener { @EventHandler(priority = EventPriority.LOW) public void onItemParse(ItemParseEvent event) { String code = aliases.inverse().get(event.getItemString()); + if (code == null) { + String[] typeParts = event.getItemString().replaceAll("(? entry : aliases.entrySet()) { + if (entry.getValue().length() < length && entry.getValue().startsWith(event.getItemString())) { + length = (short) entry.getValue().length(); + code = entry.getKey(); + } else if (typeParts.length > 1) { + String[] nameParts = entry.getValue().split("[ _]"); + if (typeParts.length == nameParts.length) { + boolean matched = true; + for (int i = 0; i < nameParts.length; i++) { + if (!nameParts[i].startsWith(typeParts[i])) { + matched = false; + break; + } + } + if (matched) { + code = entry.getKey(); + break; + } + } + } + } + } if (code != null) { event.setItem(MaterialUtil.getItem(code)); }