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 6a9ae945dd..20a6f71594 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -1409,11 +1409,14 @@ public abstract class RSClientMixin implements RSClient @Replace("menuAction") static void copy$menuAction(int param0, int param1, int opcode, int id, String option, String target, int canvasX, int canvasY) { - /* Along the way, the RuneScape client may change a menuAction by incrementing it with 2000. - * I have no idea why, but it does. Their code contains the same conditional statement. + /* + * The RuneScape client may deprioritize an action in the menu by incrementing the opcode with 2000, + * undo it here so we can get the correct opcode */ + boolean decremented = false; if (opcode >= 2000) { + decremented = true; opcode -= 2000; } @@ -1435,15 +1438,16 @@ public abstract class RSClientMixin implements RSClient if (printMenuActions) { client.getLogger().info( - "|MenuAction|: MenuOption={} MenuTarget={} Id={} Opcode={} Param0={} Param1={} CanvasX={} CanvasY={}", + "|MenuAction|: MenuOption={} MenuTarget={} Id={} Opcode={}/{} Param0={} Param1={} CanvasX={} CanvasY={}", menuOptionClicked.getMenuOption(), menuOptionClicked.getMenuTarget(), menuOptionClicked.getId(), - menuOptionClicked.getMenuAction(), menuOptionClicked.getActionParam(), menuOptionClicked.getWidgetId(), - canvasX, canvasY + menuOptionClicked.getMenuAction(), opcode + (decremented ? 2000 : 0), + menuOptionClicked.getActionParam(), menuOptionClicked.getWidgetId(), canvasX, canvasY ); } - copy$menuAction(menuOptionClicked.getActionParam(), menuOptionClicked.getWidgetId(), menuOptionClicked.getMenuAction().getId(), - menuOptionClicked.getId(), menuOptionClicked.getMenuOption(), menuOptionClicked.getMenuTarget(), canvasX, canvasY); + copy$menuAction(menuOptionClicked.getActionParam(), menuOptionClicked.getWidgetId(), + menuOptionClicked.getMenuAction().getId(), menuOptionClicked.getId(), + menuOptionClicked.getMenuOption(), menuOptionClicked.getMenuTarget(), canvasX, canvasY); } @Override diff --git a/runescape-client/src/main/java/PacketWriter.java b/runescape-client/src/main/java/PacketWriter.java index 56ef36adab..2a643ae248 100644 --- a/runescape-client/src/main/java/PacketWriter.java +++ b/runescape-client/src/main/java/PacketWriter.java @@ -502,10 +502,10 @@ public class PacketWriter { var37 = var30; // L: 7233 } - var17.field641 = var10 + var15; // L: 7235 - var17.field640 = var10 + var13; // L: 7236 - var17.field642 = var11 + var16; // L: 7237 - var17.field644 = var11 + var37; // L: 7238 + var17.minX = var10 + var15; // L: 7235 + var17.maxX = var10 + var13; // L: 7236 + var17.minY = var11 + var16; // L: 7237 + var17.maxY = var11 + var37; // L: 7238 } } } diff --git a/runescape-client/src/main/java/Player.java b/runescape-client/src/main/java/Player.java index ddf9b4efa2..a5d1ccffd5 100644 --- a/runescape-client/src/main/java/Player.java +++ b/runescape-client/src/main/java/Player.java @@ -90,22 +90,26 @@ public final class Player extends Actor { @ObfuscatedGetter( intValue = 123594343 ) - int field641; + @Export("minX") + int minX; @ObfuscatedName("x") @ObfuscatedGetter( intValue = 2053334325 ) - int field642; + @Export("minY") + int minY; @ObfuscatedName("f") @ObfuscatedGetter( intValue = 1294199975 ) - int field640; + @Export("maxX") + int maxX; @ObfuscatedName("g") @ObfuscatedGetter( intValue = -1259880177 ) - int field644; + @Export("maxY") + int maxY; @ObfuscatedName("u") @Export("isUnanimated") boolean isUnanimated; diff --git a/runescape-client/src/main/java/WorldMapScaleHandler.java b/runescape-client/src/main/java/WorldMapScaleHandler.java index 630dab649f..aa4293ba25 100644 --- a/runescape-client/src/main/java/WorldMapScaleHandler.java +++ b/runescape-client/src/main/java/WorldMapScaleHandler.java @@ -661,7 +661,7 @@ public class WorldMapScaleHandler { var0.isUnanimated = false; // L: 4274 var0.tileHeight = WorldMapRegion.getTileHeight(var0.x, var0.y, class90.Client_plane); // L: 4275 var0.playerCycle = Client.cycle; // L: 4276 - MilliClock.scene.addNullableObject(class90.Client_plane, var0.x, var0.y, var0.tileHeight, 60, var0, var0.rotation, var4, var0.field641, var0.field642, var0.field640, var0.field644); // L: 4277 + MilliClock.scene.addNullableObject(class90.Client_plane, var0.x, var0.y, var0.tileHeight, 60, var0, var0.rotation, var4, var0.minX, var0.minY, var0.maxX, var0.maxY); // L: 4277 } else { if ((var0.x & 127) == 64 && (var0.y & 127) == 64) { // L: 4280 if (Client.tileLastDrawnActor[var2][var3] == Client.viewportDrawCount) { // L: 4281