From 2d01ea2fb7d9f0919bef356c2c566b2ac35666d4 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 26 Apr 2022 20:31:02 -0400 Subject: [PATCH] bank plugin: add quantity search Co-authored-by: EliasLahham --- .../client/plugins/bank/BankPlugin.java | 17 +++++++++++++++-- .../client/plugins/bank/BankPluginTest.java | 6 ++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankPlugin.java index de4bb16b82..1cf60144c2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankPlugin.java @@ -82,7 +82,7 @@ public class BankPlugin extends Plugin private static final String SEED_VAULT_TITLE = "Seed Vault"; private static final String NUMBER_REGEX = "[0-9]+(\\.[0-9]+)?[kmb]?"; - private static final Pattern VALUE_SEARCH_PATTERN = Pattern.compile("^(?ge|ha|alch)?" + + private static final Pattern VALUE_SEARCH_PATTERN = Pattern.compile("^(?qty|ge|ha|alch)?" + " *(((?[<>=]|>=|<=) *(?" + NUMBER_REGEX + "))|" + "((?" + NUMBER_REGEX + ") *- *(?" + NUMBER_REGEX + ")))$", Pattern.CASE_INSENSITIVE); @@ -413,13 +413,26 @@ public class BankPlugin extends Plugin final int qty = itemQuantities.count(itemId); final long gePrice = (long) itemManager.getItemPrice(itemId) * qty; final long haPrice = (long) itemComposition.getHaPrice() * qty; + final boolean isPlaceholder = itemComposition.getPlaceholderTemplateId() != -1; long value = Math.max(gePrice, haPrice); final String mode = matcher.group("mode"); if (mode != null) { - value = mode.toLowerCase().equals("ge") ? gePrice : haPrice; + switch (mode.toLowerCase()) + { + case "qty": + value = isPlaceholder ? 0 : qty; + break; + case "ge": + value = gePrice; + break; + case "ha": + case "alch": + value = haPrice; + break; + } } final String op = matcher.group("op"); diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/bank/BankPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/bank/BankPluginTest.java index ecc3c993c1..4795a91e4e 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/bank/BankPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/bank/BankPluginTest.java @@ -101,10 +101,16 @@ public class BankPluginTest assertTrue(bankPlugin.valueSearch(itemId, "ha 500k - 20.6m")); assertTrue(bankPlugin.valueSearch(itemId, "ha > 940k")); + assertTrue(bankPlugin.valueSearch(itemId, "qty=0")); + assertTrue(bankPlugin.valueSearch(itemId, "qty<600")); + assertFalse(bankPlugin.valueSearch(itemId, "<500k")); assertFalse(bankPlugin.valueSearch(itemId, "ha >2m")); assertFalse(bankPlugin.valueSearch(itemId, "ge > 0.02b")); + assertFalse(bankPlugin.valueSearch(itemId, "qty=1")); + assertFalse(bankPlugin.valueSearch(itemId, "qty>30")); + assertFalse(bankPlugin.valueSearch(itemId, "1000k")); }