npcindicators: Add option to highlight NPC name in right click menu
Co-authored-by: beaumitch <bmitchell48@gatech.edu>
This commit is contained in:
@@ -89,6 +89,17 @@ public interface NpcIndicatorsConfig extends Config
|
||||
|
||||
@ConfigItem(
|
||||
position = 5,
|
||||
keyName = "highlightMenuNames",
|
||||
name = "Highlight menu names",
|
||||
description = "Highlight NPC names in right click menu"
|
||||
)
|
||||
default boolean highlightMenuNames()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 6,
|
||||
keyName = "showRespawnTimer",
|
||||
name = "Show respawn timer",
|
||||
description = "Show respawn timer of tagged NPCs")
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
package net.runelite.client.plugins.npchighlight;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.inject.Provides;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
@@ -47,6 +47,7 @@ import net.runelite.api.GameState;
|
||||
import net.runelite.api.GraphicID;
|
||||
import net.runelite.api.GraphicsObject;
|
||||
import net.runelite.api.MenuAction;
|
||||
import static net.runelite.api.MenuAction.MENU_ACTION_DEPRIORITIZE_OFFSET;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
@@ -66,6 +67,7 @@ import net.runelite.client.input.KeyManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
import net.runelite.client.util.ColorUtil;
|
||||
import net.runelite.client.util.Text;
|
||||
import net.runelite.client.util.WildcardMatcher;
|
||||
|
||||
@@ -82,7 +84,7 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
// Option added to NPC menu
|
||||
private static final String TAG = "Tag";
|
||||
|
||||
private static final List<MenuAction> NPC_MENU_ACTIONS = ImmutableList.of(MenuAction.NPC_FIRST_OPTION, MenuAction.NPC_SECOND_OPTION,
|
||||
private static final Set<MenuAction> NPC_MENU_ACTIONS = ImmutableSet.of(MenuAction.NPC_FIRST_OPTION, MenuAction.NPC_SECOND_OPTION,
|
||||
MenuAction.NPC_THIRD_OPTION, MenuAction.NPC_FOURTH_OPTION, MenuAction.NPC_FIFTH_OPTION);
|
||||
|
||||
@Inject
|
||||
@@ -248,21 +250,37 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
@Subscribe
|
||||
public void onMenuEntryAdded(MenuEntryAdded event)
|
||||
{
|
||||
if (!hotKeyPressed || event.getType() != MenuAction.EXAMINE_NPC.getId())
|
||||
int type = event.getType();
|
||||
|
||||
if (type >= MENU_ACTION_DEPRIORITIZE_OFFSET)
|
||||
{
|
||||
return;
|
||||
type -= MENU_ACTION_DEPRIORITIZE_OFFSET;
|
||||
}
|
||||
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
menuEntries = Arrays.copyOf(menuEntries, menuEntries.length + 1);
|
||||
MenuEntry menuEntry = menuEntries[menuEntries.length - 1] = new MenuEntry();
|
||||
menuEntry.setOption(TAG);
|
||||
menuEntry.setTarget(event.getTarget());
|
||||
menuEntry.setParam0(event.getActionParam0());
|
||||
menuEntry.setParam1(event.getActionParam1());
|
||||
menuEntry.setIdentifier(event.getIdentifier());
|
||||
menuEntry.setType(MenuAction.RUNELITE.getId());
|
||||
client.setMenuEntries(menuEntries);
|
||||
if (config.highlightMenuNames() &&
|
||||
NPC_MENU_ACTIONS.contains(MenuAction.of(type)) &&
|
||||
highlightedNpcs.stream().anyMatch(npc -> npc.getIndex() == event.getIdentifier()))
|
||||
{
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
final MenuEntry menuEntry = menuEntries[menuEntries.length - 1];
|
||||
final String target = ColorUtil.prependColorTag(Text.removeTags(event.getTarget()), config.getHighlightColor());
|
||||
menuEntry.setTarget(target);
|
||||
client.setMenuEntries(menuEntries);
|
||||
}
|
||||
else if (hotKeyPressed && type == MenuAction.EXAMINE_NPC.getId())
|
||||
{
|
||||
// Add tag option
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
menuEntries = Arrays.copyOf(menuEntries, menuEntries.length + 1);
|
||||
final MenuEntry tagEntry = menuEntries[menuEntries.length - 1] = new MenuEntry();
|
||||
tagEntry.setOption(TAG);
|
||||
tagEntry.setTarget(event.getTarget());
|
||||
tagEntry.setParam0(event.getActionParam0());
|
||||
tagEntry.setParam1(event.getActionParam1());
|
||||
tagEntry.setIdentifier(event.getIdentifier());
|
||||
tagEntry.setType(MenuAction.RUNELITE.getId());
|
||||
client.setMenuEntries(menuEntries);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
||||
Reference in New Issue
Block a user