diff --git a/forge-game/src/main/java/forge/game/keyword/Keyword.java b/forge-game/src/main/java/forge/game/keyword/Keyword.java index c6f08b0130f..fec371ad8e4 100644 --- a/forge-game/src/main/java/forge/game/keyword/Keyword.java +++ b/forge-game/src/main/java/forge/game/keyword/Keyword.java @@ -278,10 +278,36 @@ public enum Keyword { return keywords; } - public static Keyword get(String key) { - if (key.isEmpty()) - return null; - return Arrays.stream(values()).filter(k -> key.equalsIgnoreCase(k.displayName)).findFirst().orElse(null); + public static Keyword get(String k) { + Keyword keyword = Keyword.UNDEFINED; + + if (k == null || k.isEmpty()) + return keyword; + + // try to get real part + if (k.contains(":")) { + final String[] x = k.split(":", 2); + keyword = smartValueOf(x[0]); + } else if (k.contains(" ")) { + // First strike + keyword = smartValueOf(k); + + // other keywords that contains other stuff like Enchant + if (keyword == Keyword.UNDEFINED) { + final String[] x = k.split(" ", 2); + + final Keyword k2 = smartValueOf(x[0]); + // Keywords that needs to be undefined + if (k2 != Keyword.UNDEFINED) { + keyword = k2; + } + } + } else { + // Simple Keyword + keyword = smartValueOf(k); + } + + return keyword; } private static final Map> cardKeywordSetLookup = new HashMap<>(); diff --git a/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java b/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java index da523205006..1952132cbbc 100644 --- a/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java +++ b/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java @@ -110,7 +110,7 @@ public class AdvancedSearch { if (input.getRules().getOtherPart().getKeywords() != null) { for (String key : input.getRules().getOtherPart().getKeywords()) { Keyword keyword = Keyword.get(key); - if (keyword != null) + if (!Keyword.UNDEFINED.equals(keyword)) keywords.add(keyword); } } @@ -119,7 +119,7 @@ public class AdvancedSearch { if (input.getRules().getMainPart().getKeywords() != null) { for (String key : input.getRules().getMainPart().getKeywords()) { Keyword keyword = Keyword.get(key); - if (keyword != null) + if (!Keyword.UNDEFINED.equals(keyword)) keywords.add(keyword); } }