diff --git a/src/main/java/codechicken/nei/SearchField.java b/src/main/java/codechicken/nei/SearchField.java index b35e0f33..62bf8790 100644 --- a/src/main/java/codechicken/nei/SearchField.java +++ b/src/main/java/codechicken/nei/SearchField.java @@ -315,6 +315,9 @@ public class SearchField extends TextField implements ItemFilterProvider { public static String getEscapedSearchText(String text) { text = EnumChatFormatting.getTextWithoutFormattingCodes(text); + boolean addQuotes = text.contains(" ") + && NEIClientConfig.getBooleanSetting("inventory.search.quoteDropItemName"); + switch (NEIClientConfig.getIntSetting("inventory.search.patternMode")) { case 1: text = text.replaceAll("[\\?|\\*]", "\\\\$0"); @@ -323,14 +326,19 @@ public class SearchField extends TextField implements ItemFilterProvider { text = text.replaceAll("[{}()\\[\\].+*?^$\\\\|]", "\\\\$0"); break; case 3: - text = text.replaceAll("\"", "\\\\$0"); - text = "\"" + text + "\""; - return text; + // In extended+ quotes require only quotes to be escaped + if (addQuotes) { + text = text.replaceAll("\"", "\\\\$0"); + } else { + String prefixes = searchParser.getPrefixes(); + text = text.replaceAll("[-<>^{}|/\\\\\"" + Pattern.quote(prefixes) + "]", "\\\\$0"); + } + break; default: break; } - if (text.contains(" ") && NEIClientConfig.getBooleanSetting("inventory.search.quoteDropItemName")) { + if (addQuotes) { text = "\"" + text + "\""; } diff --git a/src/main/java/codechicken/nei/SearchTokenParser.java b/src/main/java/codechicken/nei/SearchTokenParser.java index 9d60bb8e..43d485dd 100644 --- a/src/main/java/codechicken/nei/SearchTokenParser.java +++ b/src/main/java/codechicken/nei/SearchTokenParser.java @@ -468,7 +468,7 @@ public class SearchTokenParser { return tokens; } - private String getPrefixes() { + public String getPrefixes() { if (this.prefixes == null) { final StringBuilder builder = new StringBuilder();