project(injector): Add back swapMenuEntries
This commit is contained in:
@@ -8,11 +8,13 @@
|
||||
package com.openosrs.injector.injectors.raw;
|
||||
|
||||
//import com.openosrs.injector.InjectUtil;
|
||||
import com.openosrs.injector.InjectUtil;
|
||||
import com.openosrs.injector.injection.InjectData;
|
||||
import com.openosrs.injector.injectors.AbstractInjector;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import net.runelite.asm.ClassFile;
|
||||
import net.runelite.asm.Field;
|
||||
import net.runelite.asm.Method;
|
||||
import net.runelite.asm.attributes.Code;
|
||||
import net.runelite.asm.attributes.code.Instruction;
|
||||
@@ -20,6 +22,7 @@ import net.runelite.asm.attributes.code.InstructionType;
|
||||
import net.runelite.asm.attributes.code.Instructions;
|
||||
import net.runelite.asm.attributes.code.instructions.BAStore;
|
||||
import net.runelite.asm.attributes.code.instructions.Dup;
|
||||
import net.runelite.asm.attributes.code.instructions.GetStatic;
|
||||
import net.runelite.asm.attributes.code.instructions.ILoad;
|
||||
import net.runelite.asm.attributes.code.instructions.InvokeSpecial;
|
||||
import net.runelite.asm.attributes.code.instructions.InvokeStatic;
|
||||
@@ -40,7 +43,7 @@ public class RuneliteMenuEntry extends AbstractInjector
|
||||
{
|
||||
addInvoke("newRuneliteMenuEntry", true);
|
||||
addInvoke("newBareRuneliteMenuEntry", false);
|
||||
//addSwap(InjectUtil.findMethod(inject, "incrementMenuEntries"));
|
||||
addSwap(InjectUtil.findMethod(inject, "menu"), InjectUtil.findField(inject, "menuShiftClick", "Client"));
|
||||
}
|
||||
|
||||
private void addInvoke(String methodName, boolean iload)
|
||||
@@ -75,7 +78,7 @@ public class RuneliteMenuEntry extends AbstractInjector
|
||||
ins.add(new Return(instructions, InstructionType.ARETURN));
|
||||
}
|
||||
|
||||
private void addSwap(Method method)
|
||||
private void addSwap(Method method, Field field)
|
||||
{
|
||||
final ClassFile clientVanilla = inject.toVanilla(
|
||||
inject.getDeobfuscated()
|
||||
@@ -84,16 +87,33 @@ public class RuneliteMenuEntry extends AbstractInjector
|
||||
|
||||
Instructions ins = method.getCode().getInstructions();
|
||||
ListIterator<Instruction> iterator = ins.getInstructions().listIterator();
|
||||
|
||||
int found = 0;
|
||||
|
||||
while (iterator.hasNext())
|
||||
{
|
||||
Instruction i = iterator.next();
|
||||
|
||||
if (found < 4)
|
||||
{
|
||||
if (!(i instanceof GetStatic))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (((GetStatic) i).getField().getName().equals(field.getName()))
|
||||
{
|
||||
found += 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(i instanceof BAStore))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
ILoad i1 = new ILoad(ins, 2);
|
||||
ILoad i1 = new ILoad(ins, 3);
|
||||
InvokeStatic i2 = new InvokeStatic(ins, new net.runelite.asm.pool.Method(clientVanilla.getPoolClass(), "swapMenuEntries", new Signature("(I)V")));
|
||||
|
||||
iterator.add(i1);
|
||||
@@ -102,4 +122,5 @@ public class RuneliteMenuEntry extends AbstractInjector
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user