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