From 8ff1aacfd8805924e9256216cf62a5e8d2024a36 Mon Sep 17 00:00:00 2001 From: beaumitch Date: Tue, 30 Apr 2019 04:19:18 -0400 Subject: [PATCH] npcindicators: Add option to highlight NPC name in right click menu (#8673) Resolves #8667 --- .../npchighlight/NpcIndicatorsConfig.java | 11 +++++ .../npchighlight/NpcIndicatorsPlugin.java | 40 ++++++++++++++----- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsConfig.java index f5b7ac6757..1ef10c50d8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsConfig.java @@ -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") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java index 7e84798d2a..65bfb5bdbc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java @@ -66,6 +66,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; @@ -248,20 +249,37 @@ public class NpcIndicatorsPlugin extends Plugin @Subscribe public void onMenuEntryAdded(MenuEntryAdded event) { - if (!hotKeyPressed || event.getType() != MenuAction.EXAMINE_NPC.getId()) + MenuEntry[] menuEntries = client.getMenuEntries(); + String target = event.getTarget(); + final int identifier = event.getIdentifier(); + int type = event.getType(); + + if (type >= 2000) { - return; + type -= 2000; + } + + if (config.highlightMenuNames() && + NPC_MENU_ACTIONS.contains(MenuAction.of(type)) && + highlightedNpcs.stream().anyMatch(npc -> npc.getIndex() == identifier)) + { + final MenuEntry menuEntry = menuEntries[menuEntries.length - 1]; + target = ColorUtil.prependColorTag(Text.removeTags(target), config.getHighlightColor()); + menuEntry.setTarget(target); + } + + if (hotKeyPressed && type == MenuAction.EXAMINE_NPC.getId()) + { + menuEntries = Arrays.copyOf(menuEntries, menuEntries.length + 1); + final MenuEntry tagEntry = menuEntries[menuEntries.length - 1] = new MenuEntry(); + tagEntry.setOption(TAG); + tagEntry.setTarget(target); + tagEntry.setParam0(event.getActionParam0()); + tagEntry.setParam1(event.getActionParam1()); + tagEntry.setIdentifier(event.getIdentifier()); + tagEntry.setType(MenuAction.RUNELITE.getId()); } - 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); }