From c144740da9beb8f095abf536b52141c320536a7b Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Mon, 25 Apr 2022 13:54:27 +0200 Subject: [PATCH] project(mixins): Prevent gamecrash --- .../net/runelite/mixins/RSClientMixin.java | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 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 a17fc4b3d4..184882de85 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -939,7 +939,22 @@ public abstract class RSClientMixin implements RSClient @Override public MenuEntry[] getMenuEntries() { - return Arrays.copyOf(rl$menuEntries, client.getMenuOptionCount()); + RSRuneLiteMenuEntry[] menuEntries = Arrays.copyOf(rl$menuEntries, client.getMenuOptionCount()); + + for (RSRuneLiteMenuEntry menuEntry : menuEntries) + { + if (menuEntry.getOption() == null) + { + menuEntry.setOption("null"); + } + + if (menuEntry.getTarget() == null) + { + menuEntry.setTarget("null"); + } + } + + return menuEntries; } @Inject @@ -1057,6 +1072,16 @@ public abstract class RSClientMixin implements RSClient } else if (optionCount == tmpOptionsCount + 1) { + if (client.getMenuOptions()[tmpOptionsCount] == null) + { + client.getMenuOptions()[tmpOptionsCount] = "null"; + } + + if (client.getMenuTargets()[tmpOptionsCount] == null) + { + client.getMenuTargets()[tmpOptionsCount] = "null"; + } + String menuOption = client.getMenuOptions()[tmpOptionsCount]; String menuTarget = client.getMenuTargets()[tmpOptionsCount]; int menuOpcode = client.getMenuOpcodes()[tmpOptionsCount]; @@ -1073,18 +1098,6 @@ public abstract class RSClientMixin implements RSClient rl$menuEntries[tmpOptionsCount].setConsumer(null); } - if (menuOption == null || menuTarget == null) - { - client.getLogger().warn("We're probably about to crash: menu op {} targ {} action {} id {} p0 {} p1 {}", - menuOption, - menuTarget, - menuOpcode, - menuIdentifier, - menuArgument1, - menuArgument2 - ); - } - MenuEntryAdded menuEntryAdded = new MenuEntryAdded( menuOption, menuTarget,