From dd971b7f65ebd50918c716bcf7018607e7c289c0 Mon Sep 17 00:00:00 2001 From: Ganom Date: Tue, 7 Apr 2020 07:08:55 -0400 Subject: [PATCH 1/2] client: make actions follow menu entry params. --- .../src/main/java/net/runelite/api/Client.java | 12 +----------- .../main/java/net/runelite/mixins/RSClientMixin.java | 6 +++--- .../java/net/runelite/mixins/WorldHoppingMixin.java | 4 ++-- 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index 75ace64160..ecf5b705b6 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -1843,17 +1843,7 @@ public interface Client extends GameShell void setRenderSelf(boolean enabled); - /** - * @param param0 This is SceneX for gameObject, index for items, and 0 for npc. - * @param param1 This is SceneY for gameObject, static for items, and 0 for npc. - * @param opcode Menu entry Action opcode. - * @param id Targets ID - * @param menuEntry Do these actually matter? - * @param targetString Do these actually matter? - * @param canvasX Canvas X Point - * @param canvasY Canvas Y Point - */ - void invokeMenuAction(int param0, int param1, int opcode, int id, String menuEntry, String targetString, int canvasX, int canvasY); + void invokeMenuAction(String option, String target, int identifier, int opcode, int param0, int param1); MouseRecorder getMouseRecorder(); diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index 0a93258803..b3caf5c091 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -1435,9 +1435,9 @@ public abstract class RSClientMixin implements RSClient @Override @Inject - public void invokeMenuAction(int param0, int param1, int opcode, int id, String menuOption, String menuTarget, int canvasX, int canvasY) + public void invokeMenuAction(String option, String target, int identifier, int opcode, int param0, int param1) { - client.sendMenuAction(param0, param1, opcode, id, menuOption, "!AUTHENTIC" + menuTarget, canvasX, canvasY); + client.sendMenuAction(param0, param1, opcode, identifier, option, "!AUTHENTIC" + target, 658, 384); } @FieldHook("Login_username") @@ -1883,4 +1883,4 @@ public abstract class RSClientMixin implements RSClient return widgetClickMask; } -} \ No newline at end of file +} diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/WorldHoppingMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/WorldHoppingMixin.java index 3f7970b878..718d8ded15 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/WorldHoppingMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/WorldHoppingMixin.java @@ -15,7 +15,7 @@ public abstract class WorldHoppingMixin implements RSClient public void openWorldHopper() { // The clicked x & y coordinates (the last arguments) are not processed in the game or sent to Jagex, so they don't have to be real. - invokeMenuAction(-1, WidgetInfo.WORLD_SWITCHER_BUTTON.getId(), MenuOpcode.CC_OP.getId(), 1, "World Switcher", "", 658, 384); + invokeMenuAction("World Switcher", "", 1, MenuOpcode.CC_OP.getId(), -1, WidgetInfo.WORLD_SWITCHER_BUTTON.getId()); } @Inject @@ -23,6 +23,6 @@ public abstract class WorldHoppingMixin implements RSClient public void hopToWorld(World world) { final int worldId = world.getId(); - invokeMenuAction(worldId, WidgetInfo.WORLD_SWITCHER_LIST.getId(), MenuOpcode.CC_OP.getId(), 1, "Switch", "" + (worldId - 300) + "", 683, 244); + invokeMenuAction("Switch", "" + (worldId - 300) + "", 1, MenuOpcode.CC_OP.getId(), worldId, WidgetInfo.WORLD_SWITCHER_LIST.getId()); } } From c6e6ea7c991d2af347eb73639c30c4fbe07cab0d Mon Sep 17 00:00:00 2001 From: Ganom Date: Thu, 9 Apr 2020 10:12:09 -0400 Subject: [PATCH 2/2] client: refactor a bit more, and add assertion. --- .../java/net/runelite/mixins/RSClientMixin.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index b3caf5c091..4dca478105 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -1385,20 +1385,20 @@ public abstract class RSClientMixin implements RSClient } @Replace("menuAction") - static void rl$menuAction(int param0, int param1, int opcode, int id, String menuOption, String menuTarget, int canvasX, int canvasY) + static void rl$menuAction(int param0, int param1, int opcode, int id, String option, String target, int canvasX, int canvasY) { boolean authentic = true; - if (menuTarget != null && menuTarget.startsWith("!AUTHENTIC")) + if (target != null && target.startsWith("!AUTHENTIC")) { authentic = false; - menuTarget = menuTarget.substring(10); + target = target.substring(10); } if (printMenuActions && client.getLogger().isDebugEnabled()) { client.getLogger().debug( - "|MenuAction|: Param0={} Param1={} Opcode={} Id={} MenuOption={} MenuTarget={} CanvasX={} CanvasY={} Authentic={}", - param0, param1, opcode, id, menuOption, menuTarget, canvasX, canvasY, authentic + "|MenuAction|: MenuOption={} MenuTarget={} Id={} Opcode={} Param0={} Param1={} CanvasX={} CanvasY={} Authentic={}", + option, target, id, opcode, param0, param1, canvasX, canvasY, authentic ); } @@ -1411,8 +1411,8 @@ public abstract class RSClientMixin implements RSClient } final MenuOptionClicked menuOptionClicked = new MenuOptionClicked( - menuOption, - menuTarget, + option, + target, id, opcode, param0, @@ -1437,6 +1437,8 @@ public abstract class RSClientMixin implements RSClient @Inject public void invokeMenuAction(String option, String target, int identifier, int opcode, int param0, int param1) { + assert isClientThread(); + client.sendMenuAction(param0, param1, opcode, identifier, option, "!AUTHENTIC" + target, 658, 384); }