banktags: add tag searching for ge search
This commit is contained in:
@@ -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:<br>" +
|
||||
"(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<Integer> 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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user