diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java
index e0a795e1aa..26e2612955 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java
@@ -27,12 +27,15 @@
package net.runelite.client.plugins.banktags;
import com.google.common.collect.Lists;
+import com.google.common.primitives.Shorts;
import com.google.inject.Provides;
import java.awt.event.KeyEvent;
import java.awt.event.MouseWheelEvent;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Set;
+import java.util.TreeSet;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -50,6 +53,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.api.events.DraggingWidgetChanged;
import net.runelite.api.events.FocusChanged;
import net.runelite.api.events.GameTick;
+import net.runelite.api.events.GrandExchangeSearched;
import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.MenuOptionClicked;
import net.runelite.api.events.ScriptCallbackEvent;
@@ -62,6 +66,7 @@ import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.ItemManager;
+import net.runelite.client.game.ItemVariationMapping;
import net.runelite.client.game.SpriteManager;
import net.runelite.client.game.chatbox.ChatboxPanelManager;
import net.runelite.client.input.KeyListener;
@@ -93,6 +98,8 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener, KeyLis
public static final String TAG_TABS_CONFIG = "tagtabs";
public static final String VAR_TAG_SUFFIX = "*";
+ private static final int MAX_RESULT_COUNT = 250;
+
private static final String SEARCH_BANK_INPUT_TEXT =
"Show items whose names or tags contain the following text:
" +
"(To show only tagged items, start your search with 'tag:')";
@@ -248,6 +255,33 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener, KeyLis
shiftPressed = false;
}
+ @Subscribe
+ public void onGrandExchangeSearched(GrandExchangeSearched event)
+ {
+ final String input = client.getVar(VarClientStr.INPUT_TEXT);
+ if (!input.startsWith(TAG_SEARCH))
+ {
+ return;
+ }
+
+ event.consume();
+
+ final String tag = input.substring(TAG_SEARCH.length()).trim();
+ final Set ids = tagManager.getItemsForTag(tag)
+ .stream()
+ .mapToInt(Math::abs)
+ .mapToObj(ItemVariationMapping::getVariations)
+ .flatMap(Collection::stream)
+ .distinct()
+ .filter(i -> itemManager.getItemComposition(i).isTradeable())
+ .limit(MAX_RESULT_COUNT)
+ .collect(Collectors.toCollection(TreeSet::new));
+
+ client.setGeSearchResultIndex(0);
+ client.setGeSearchResultCount(ids.size());
+ client.setGeSearchResultIds(Shorts.toArray(ids));
+ }
+
@Subscribe
public void onScriptCallbackEvent(ScriptCallbackEvent event)
{