diff options
| author | unknown <james.jenour@protonmail.com> | 2020-07-02 00:53:17 +1000 |
|---|---|---|
| committer | unknown <james.jenour@protonmail.com> | 2020-07-02 00:53:17 +1000 |
| commit | bd6f658c6c53d160c40bc3b5fdead7b7b3dd20c4 (patch) | |
| tree | 8cf4a287369c94e377604561d937b7096c0abf50 /src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java | |
| parent | fa7be3a200f26d53eabfc58e509fd9c6d0a2fd10 (diff) | |
| download | notenoughupdates-bd6f658c6c53d160c40bc3b5fdead7b7b3dd20c4.tar.gz notenoughupdates-bd6f658c6c53d160c40bc3b5fdead7b7b3dd20c4.tar.bz2 notenoughupdates-bd6f658c6c53d160c40bc3b5fdead7b7b3dd20c4.zip | |
1.8
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java')
| -rw-r--r-- | src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java | 79 |
1 files changed, 57 insertions, 22 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java index bebd090c..e2c8d928 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java @@ -54,7 +54,7 @@ public class NEUManager { public String viewItemAttemptID = null; public long viewItemAttemptTime = 0; - public String currentProfile = ""; + public String currentProfile = "Papaya"; public final HypixelApi hypixelApi = new HypixelApi(); private ResourceLocation wkZip = new ResourceLocation("notenoughupdates:wkhtmltox.zip"); @@ -180,6 +180,25 @@ public class NEUManager { public float craftCost = -1; } + public boolean isVanillaItem(String internalname) { + //Removes trailing numbers and underscores, eg. LEAVES_2-3 -> LEAVES + String vanillaName = internalname.split("-")[0]; + int sub = 0; + for(int i=vanillaName.length()-1; i>1; i--) { + char c = vanillaName.charAt(i); + if((int)c >= 48 && (int)c <= 57) { //0-9 + sub++; + } else if(c == '_') { + sub++; + break; + } else { + break; + } + } + vanillaName = vanillaName.substring(0, vanillaName.length()-sub).toLowerCase(); + return Item.itemRegistry.getObject(new ResourceLocation(vanillaName)) != null; + } + /** * Recursively calculates the cost of crafting an item from raw materials. */ @@ -189,24 +208,7 @@ public class NEUManager { } else { CraftInfo ci = new CraftInfo(); - //Removes trailing numbers and underscores, eg. LEAVES_2-3 -> LEAVES - String vanillaName = internalname.split("-")[0]; - int sub = 0; - for(int i=vanillaName.length()-1; i>1; i--) { - char c = vanillaName.charAt(i); - if((int)c >= 48 && (int)c <= 57) { //0-9 - sub++; - } else if(c == '_') { - sub++; - break; - } else { - break; - } - } - vanillaName = vanillaName.substring(0, vanillaName.length()-sub); - if(Item.itemRegistry.getObject(new ResourceLocation(vanillaName)) != null) { - ci.vanillaItem = true; - } + ci.vanillaItem = isVanillaItem(internalname); JsonObject auctionInfo = getItemAuctionInfo(internalname); JsonObject bazaarInfo = getBazaarInfo(internalname); @@ -657,9 +659,29 @@ public class NEUManager { public Set<String> search(String query, boolean multi) { if(multi) { Set<String> result = new HashSet<>(); - for(String query2 : query.split("\\|")) { - result.addAll(search(query2)); + + StringBuilder query2 = new StringBuilder(); + char lastOp = '|'; + for(char c : query.toCharArray()) { + if(c == '|' || c == '&') { + if(lastOp == '|') { + result.addAll(search(query2.toString())); + } else if(lastOp == '&') { + result.retainAll(search(query2.toString())); + } + + query2 = new StringBuilder(); + lastOp = c; + } else { + query2.append(c); + } + } + if(lastOp == '|') { + result.addAll(search(query2.toString())); + } else if(lastOp == '&') { + result.retainAll(search(query2.toString())); } + return result; } else { return search(query); @@ -670,6 +692,10 @@ public class NEUManager { * Returns the name of items which match a certain search query. */ public Set<String> search(String query) { + query = query.trim(); + boolean negate = query.startsWith("!"); + if(negate) query = query.substring(1); + LinkedHashSet<String> results = new LinkedHashSet<>(); if(query.startsWith("title:")) { query = query.substring(6); @@ -691,7 +717,16 @@ public class NEUManager { results.addAll(new TreeSet<>(search(query, titleWordMap))); results.addAll(new TreeSet<>(search(query, loreWordMap))); } - return results; + if(!negate) { + return results; + } else { + Set<String> negatedResults = new HashSet<>(); + for(String internalname : itemMap.keySet()) { + negatedResults.add(internalname); + } + negatedResults.removeAll(results); + return negatedResults; + } } /** |
