Merge pull request #127 from runelite-extended/projtransformer
Re-adding getprojectile transformer -Lordzuku
This commit is contained in:
@@ -5,6 +5,9 @@ import javassist.CtClass;
|
|||||||
import javassist.CtMember;
|
import javassist.CtMember;
|
||||||
import javassist.CtMethod;
|
import javassist.CtMethod;
|
||||||
import javassist.CtNewMethod;
|
import javassist.CtNewMethod;
|
||||||
|
import javassist.bytecode.AnnotationsAttribute;
|
||||||
|
import javassist.bytecode.ClassFile;
|
||||||
|
import javassist.bytecode.ConstPool;
|
||||||
import javassist.bytecode.StackMapTable;
|
import javassist.bytecode.StackMapTable;
|
||||||
import net.runelite.client.rs.bytecode.ByteCodePatcher;
|
import net.runelite.client.rs.bytecode.ByteCodePatcher;
|
||||||
|
|
||||||
@@ -25,7 +28,7 @@ public class ClientTransform implements Transform {
|
|||||||
transformGetMenuEntries();
|
transformGetMenuEntries();
|
||||||
transformSetMenuEntries();
|
transformSetMenuEntries();
|
||||||
transformOnMenuOptionsChanged();
|
transformOnMenuOptionsChanged();
|
||||||
|
transformGetProjectile();
|
||||||
ByteCodePatcher.modifiedClasses.add(ct);
|
ByteCodePatcher.modifiedClasses.add(ct);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -44,6 +47,37 @@ public class ClientTransform implements Transform {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void transformGetProjectile() {
|
||||||
|
|
||||||
|
CtMethod getProjectiles;
|
||||||
|
try {
|
||||||
|
CtMethod protectedAnimation = ct.getDeclaredMethod("1protect$getProjectilesDeque");
|
||||||
|
ct.removeMethod(protectedAnimation);
|
||||||
|
protectedAnimation.setName("getProjectilesDeque");
|
||||||
|
ct.addMethod(protectedAnimation);
|
||||||
|
getProjectiles = ct.getDeclaredMethod("getProjectiles");
|
||||||
|
ct.removeMethod(getProjectiles);
|
||||||
|
getProjectiles = CtNewMethod.make("public java.util.List getProjectiles() { " +
|
||||||
|
" java.util.ArrayList localArrayList = new java.util.ArrayList();" +
|
||||||
|
" net.runelite.rs.api.RSDeque localRSDeque = getProjectilesDeque();" +
|
||||||
|
" net.runelite.rs.api.RSNode localRSNode = localRSDeque.getHead();" +
|
||||||
|
" for (net.runelite.api.Node localNode = localRSNode.getNext(); localNode != localRSNode; localNode = localNode.getNext()) {" +
|
||||||
|
" net.runelite.api.Projectile localProjectile = (net.runelite.api.Projectile)localNode;" +
|
||||||
|
" localArrayList.add(localProjectile); }" +
|
||||||
|
" return localArrayList; }", ct);
|
||||||
|
|
||||||
|
ct.addMethod(getProjectiles);
|
||||||
|
ClassFile classFile = ct.getClassFile();
|
||||||
|
ConstPool constPool = classFile.getConstPool();
|
||||||
|
AnnotationsAttribute attr = new AnnotationsAttribute(constPool, AnnotationsAttribute.visibleTag);
|
||||||
|
javassist.bytecode.annotation.Annotation annotation = new javassist.bytecode.annotation.Annotation("Override", constPool);
|
||||||
|
attr.setAnnotation(annotation);
|
||||||
|
getProjectiles.getMethodInfo().addAttribute(attr);
|
||||||
|
System.out.println("Added override annotation for getprojectiles");
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
public void transformProtectedGetMenuTargets() {
|
public void transformProtectedGetMenuTargets() {
|
||||||
CtMethod protectedGetMenuTargets;
|
CtMethod protectedGetMenuTargets;
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user