From 6518a6a51d5bde68680d25f4f6b1ebf01f982ca3 Mon Sep 17 00:00:00 2001 From: Lotto Date: Thu, 28 May 2020 00:11:07 +0200 Subject: [PATCH] player-indicators: don't decorate non-player custom menu options Splits the RUNELITE menu action into two actions: RUNELITE - general menu items. RUNELITE_PLAYER - menu items which target a player and have its identifier set to a player index. Then the player indicators plugin is changed to only decorate RUNELITE_PLAYER menu items. --- .../src/main/java/net/runelite/api/MenuAction.java | 5 +++++ .../main/java/net/runelite/client/menus/MenuManager.java | 7 ++++--- .../plugins/playerindicators/PlayerIndicatorsPlugin.java | 2 +- .../java/net/runelite/client/menus/MenuManagerTest.java | 4 ++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/MenuAction.java b/runelite-api/src/main/java/net/runelite/api/MenuAction.java index 44bf09aa53..a00a1ce2f0 100644 --- a/runelite-api/src/main/java/net/runelite/api/MenuAction.java +++ b/runelite-api/src/main/java/net/runelite/api/MenuAction.java @@ -272,6 +272,11 @@ public enum MenuAction * Menu action for configuring runelite overlays. */ RUNELITE_OVERLAY_CONFIG(1502), + /** + * Menu action injected by runelite for menu items which target + * a player and have its identifier set to a player index. + */ + RUNELITE_PLAYER(1503), /** * Menu action triggered when the id is not defined in this class. diff --git a/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java b/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java index 5566e31247..51b20e0da9 100644 --- a/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java +++ b/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java @@ -253,9 +253,10 @@ public class MenuManager @Subscribe public void onMenuOptionClicked(MenuOptionClicked event) { - if (event.getMenuAction() != MenuAction.RUNELITE) + if (event.getMenuAction() != MenuAction.RUNELITE + && event.getMenuAction() != MenuAction.RUNELITE_PLAYER) { - return; // not a player menu + return; // not a managed widget option or custom player option } int widgetId = event.getWidgetId(); @@ -294,7 +295,7 @@ public class MenuManager { client.getPlayerOptions()[playerOptionIndex] = menuText; client.getPlayerOptionsPriorities()[playerOptionIndex] = true; - client.getPlayerMenuTypes()[playerOptionIndex] = MenuAction.RUNELITE.getId(); + client.getPlayerMenuTypes()[playerOptionIndex] = MenuAction.RUNELITE_PLAYER.getId(); playerMenuIndexMap.put(playerOptionIndex, menuText); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java index 3ae69f2551..2fceea3a69 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java @@ -124,7 +124,7 @@ public class PlayerIndicatorsPlugin extends Plugin || type == PLAYER_SIXTH_OPTION.getId() || type == PLAYER_SEVENTH_OPTION.getId() || type == PLAYER_EIGTH_OPTION.getId() - || type == RUNELITE.getId()) + || type == RUNELITE_PLAYER.getId()) { Player[] players = client.getCachedPlayers(); Player player = null; diff --git a/runelite-client/src/test/java/net/runelite/client/menus/MenuManagerTest.java b/runelite-client/src/test/java/net/runelite/client/menus/MenuManagerTest.java index f90cf99118..4c378d48ce 100644 --- a/runelite-client/src/test/java/net/runelite/client/menus/MenuManagerTest.java +++ b/runelite-client/src/test/java/net/runelite/client/menus/MenuManagerTest.java @@ -67,7 +67,7 @@ public class MenuManagerTest public void testPlayerMenuOptionClicked() { MenuOptionClicked event = new MenuOptionClicked(); - event.setMenuAction(MenuAction.RUNELITE); + event.setMenuAction(MenuAction.RUNELITE_PLAYER); event.setMenuTarget("username (level-42)"); menuManager.onMenuOptionClicked(event); @@ -82,7 +82,7 @@ public class MenuManagerTest public void testPlayerMenuOptionWithBountyHunterEmblemClicked() { MenuOptionClicked event = new MenuOptionClicked(); - event.setMenuAction(MenuAction.RUNELITE); + event.setMenuAction(MenuAction.RUNELITE_PLAYER); event.setMenuTarget("username5 (level-42)"); menuManager.onMenuOptionClicked(event);