From 5367d225bfde4164ce9fc8e32a38ffecbe859b6e Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 23 May 2022 17:42:14 -0400 Subject: [PATCH] api: add player accessor to menuentry --- .../main/java/net/runelite/api/MenuEntry.java | 14 +++++++++++++ .../client/plugins/hiscore/HiscorePlugin.java | 4 +--- .../MenuEntrySwapperPlugin.java | 1 - .../runelite/client/menus/TestMenuEntry.java | 20 +++++++++++++++++-- .../MenuEntrySwapperPluginTest.java | 2 +- .../npchighlight/NpcIndicatorsPluginTest.java | 4 ++-- 6 files changed, 36 insertions(+), 9 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/MenuEntry.java b/runelite-api/src/main/java/net/runelite/api/MenuEntry.java index 0aa1af312a..648b9fa8ab 100644 --- a/runelite-api/src/main/java/net/runelite/api/MenuEntry.java +++ b/runelite-api/src/main/java/net/runelite/api/MenuEntry.java @@ -129,4 +129,18 @@ public interface MenuEntry */ @Nullable NPC getNpc(); + + /** + * Get the {@link Player} this menu entry is targeting, if any. + * @return + */ + @Nullable + Player getPlayer(); + + /** + * Get the {@link Actor} this menu entry is targeting, if any. + * @return + */ + @Nullable + Actor getActor(); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java index 693412bcb3..70952d3f37 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java @@ -185,9 +185,7 @@ public class HiscorePlugin extends Plugin { if (event.getMenuAction() == MenuAction.RUNELITE_PLAYER && event.getMenuOption().equals(LOOKUP)) { - // The player id is included in the event, so we can use that to get the player name, - // which avoids having to parse out the combat level and any icons preceding the name. - Player player = client.getCachedPlayers()[event.getId()]; + Player player = event.getMenuEntry().getPlayer(); if (player == null) { return; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java index 78bb701a23..d61486f27e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java @@ -713,7 +713,6 @@ public class MenuEntrySwapperPlugin extends Plugin { final MenuEntry entry = entries[idx]; final MenuAction type = entry.getType(); - final int id = entry.getIdentifier(); if (type == MenuAction.EXAMINE_NPC) { diff --git a/runelite-client/src/test/java/net/runelite/client/menus/TestMenuEntry.java b/runelite-client/src/test/java/net/runelite/client/menus/TestMenuEntry.java index 64164bc1df..fad74edb6c 100644 --- a/runelite-client/src/test/java/net/runelite/client/menus/TestMenuEntry.java +++ b/runelite-client/src/test/java/net/runelite/client/menus/TestMenuEntry.java @@ -28,9 +28,11 @@ import java.util.function.Consumer; import javax.annotation.Nullable; import lombok.EqualsAndHashCode; import lombok.Setter; +import net.runelite.api.Actor; import net.runelite.api.MenuAction; import net.runelite.api.MenuEntry; import net.runelite.api.NPC; +import net.runelite.api.Player; import net.runelite.api.widgets.Widget; @EqualsAndHashCode @@ -50,7 +52,7 @@ public class TestMenuEntry implements MenuEntry @Setter private Widget widget; @Setter - private NPC npc; + private Actor actor; @Override public String getOption() @@ -205,6 +207,20 @@ public class TestMenuEntry implements MenuEntry @Override public NPC getNpc() { - return npc; + return actor instanceof NPC ? (NPC) actor : null; + } + + @Nullable + @Override + public Player getPlayer() + { + return actor instanceof Player ? (Player) actor : null; + } + + @Nullable + @Override + public Actor getActor() + { + return actor; } } diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPluginTest.java index f8db7e8206..acbf5aea8b 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPluginTest.java @@ -129,7 +129,7 @@ public class MenuEntrySwapperPluginTest menuEntry.setTarget(target); menuEntry.setType(menuAction); menuEntry.setIdentifier(identifier); - menuEntry.setNpc(npc); + menuEntry.setActor(npc); return menuEntry; } diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPluginTest.java index 39e9d8faa5..b26acf2381 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPluginTest.java @@ -109,7 +109,7 @@ public class NpcIndicatorsPluginTest TestMenuEntry entry = new TestMenuEntry(); entry.setTarget("Goblin"); entry.setIdentifier(MenuAction.NPC_FIRST_OPTION.getId()); - entry.setNpc(npc); + entry.setActor(npc); MenuEntryAdded menuEntryAdded = new MenuEntryAdded(entry); npcIndicatorsPlugin.onMenuEntryAdded(menuEntryAdded); @@ -133,7 +133,7 @@ public class NpcIndicatorsPluginTest TestMenuEntry entry = new TestMenuEntry(); entry.setTarget("Goblin"); entry.setIdentifier(MenuAction.NPC_FIRST_OPTION.getId()); - entry.setNpc(npc); + entry.setActor(npc); MenuEntryAdded menuEntryAdded = new MenuEntryAdded(entry); npcIndicatorsPlugin.onMenuEntryAdded(menuEntryAdded);