From 0b91062e9d6c0b2f256b39d24cd0a2ac7c6b282c Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Wed, 15 Dec 2021 17:15:19 +0100 Subject: [PATCH] project: Injector add CheckCast support for copy classes --- .../asm/attributes/code/instructions/CheckCast.java | 7 +++++++ .../injector/injectors/raw/CopyRuneLiteClasses.java | 6 ++++++ .../src/main/java/RuneLiteIterableLinkDeque.java | 4 ++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/CheckCast.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/CheckCast.java index 98326c0972..4fc7513a64 100644 --- a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/CheckCast.java +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/CheckCast.java @@ -47,6 +47,13 @@ public class CheckCast extends Instruction implements TypeInstruction super(instructions, InstructionType.CHECKCAST); } + public CheckCast(Instructions instructions, Type type) + { + super(instructions, InstructionType.CHECKCAST); + + this.type = type; + } + public CheckCast(Instructions instructions, InstructionType type) { super(instructions, type); diff --git a/injector/src/main/java/com/openosrs/injector/injectors/raw/CopyRuneLiteClasses.java b/injector/src/main/java/com/openosrs/injector/injectors/raw/CopyRuneLiteClasses.java index 6fd1546be2..43a1c46822 100644 --- a/injector/src/main/java/com/openosrs/injector/injectors/raw/CopyRuneLiteClasses.java +++ b/injector/src/main/java/com/openosrs/injector/injectors/raw/CopyRuneLiteClasses.java @@ -19,6 +19,7 @@ import net.runelite.asm.Type; import net.runelite.asm.attributes.Code; import net.runelite.asm.attributes.code.Instruction; import net.runelite.asm.attributes.code.Instructions; +import net.runelite.asm.attributes.code.instructions.CheckCast; import net.runelite.asm.attributes.code.instructions.GetField; import net.runelite.asm.attributes.code.instructions.GetStatic; import net.runelite.asm.attributes.code.instructions.InvokeSpecial; @@ -228,6 +229,11 @@ public class CopyRuneLiteClasses extends AbstractInjector iterator.set(new New(ins, inject.toVanilla(deobClass))); } } + else if (i instanceof CheckCast) + { + CheckCast clazz = ((CheckCast) i); + iterator.set(new CheckCast(ins, getObfuscatedSignature(clazz.getType_()))); + } } } } diff --git a/runescape-client/src/main/java/RuneLiteIterableLinkDeque.java b/runescape-client/src/main/java/RuneLiteIterableLinkDeque.java index 2b53c7a870..b315836771 100644 --- a/runescape-client/src/main/java/RuneLiteIterableLinkDeque.java +++ b/runescape-client/src/main/java/RuneLiteIterableLinkDeque.java @@ -19,7 +19,7 @@ public class RuneLiteIterableLinkDeque implements Iterator } @Override - public Link next() + public FriendLoginUpdate next() { if (this.link == this.linkDeque.sentinel) { @@ -27,7 +27,7 @@ public class RuneLiteIterableLinkDeque implements Iterator } else { - Link friendLoginUpdate = this.link; + FriendLoginUpdate friendLoginUpdate = (FriendLoginUpdate) this.link; this.link = this.link.previous; return friendLoginUpdate;