Merge remote-tracking branch 'ext_upstream/master' into master3

# Conflicts:
#	deobfuscator/pom.xml
#	deobfuscator/src/main/java/net/runelite/asm/attributes/Exceptions.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/annotation/Element.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/InstructionType.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/FieldInstruction.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/LVTInstruction.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/PutField.java
#	deobfuscator/src/main/java/net/runelite/asm/pool/Class.java
#	deobfuscator/src/main/java/net/runelite/asm/pool/Field.java
#	deobfuscator/src/main/java/net/runelite/deob/Deob.java
#	deobfuscator/src/main/java/net/runelite/deob/DeobProperties.java
#	deobfuscator/src/main/java/net/runelite/deob/clientver/VersionClassVisitor.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/lvt/LVTType.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/lvt/MapKey.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ConstructorMapper.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ExecutionMapper.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/Mapper.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ParallelExecutorMapping.java
#	deobfuscator/src/main/java/net/runelite/deob/updater/ParameterRenamer.java
#	deobfuscator/src/test/java/net/runelite/asm/annotations/MyAnnotation.java
#	deobfuscator/src/test/java/net/runelite/asm/execution/mapper/StaticStepTest.java
#	deobfuscator/src/test/java/net/runelite/asm/execution/tests/TableSwitch.java
#	deobfuscator/src/test/java/net/runelite/asm/signature/SignatureTest.java
#	deobfuscator/src/test/java/net/runelite/asm/visitors/ClassFileVisitorTest.java
#	deobfuscator/src/test/java/net/runelite/deob/TemporyFolderLocation.java
#	deobfuscator/src/test/java/net/runelite/deob/clientver/ClientVersionTest.java
#	deobfuscator/src/test/java/net/runelite/deob/deobfuscators/transformers/buffer/RuneliteBufferTest.java
#	deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/ClassA.java
#	deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/EmptyClass.java
#	deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/EmptyInterface.java
#	deobfuscator/src/test/java/net/runelite/osb/inject/FieldHook.java
#	injected-client/pom.xml
#	injector-plugin/pom.xml
#	injector-plugin/src/main/java/net/runelite/injector/Inject.java
#	injector-plugin/src/main/java/net/runelite/injector/InjectMojo.java
#	injector-plugin/src/main/java/net/runelite/injector/InjectionException.java
#	injector-plugin/src/main/java/net/runelite/injector/MixinInjector.java
#	injector-plugin/src/main/java/net/runelite/injector/raw/ClearColorBuffer.java
#	injector-plugin/src/main/java/net/runelite/injector/raw/DrawAfterWidgets.java
#	injector-plugin/src/main/java/net/runelite/injector/raw/RasterizerHook.java
#	pom.xml
#	runelite-api/src/main/java/net/runelite/api/Actor.java
#	runelite-api/src/main/java/net/runelite/api/Client.java
#	runelite-api/src/main/java/net/runelite/api/CollisionData.java
#	runelite-api/src/main/java/net/runelite/api/EquipmentInventorySlot.java
#	runelite-api/src/main/java/net/runelite/api/NPCDefinition.java
#	runelite-api/src/main/java/net/runelite/api/Perspective.java
#	runelite-api/src/main/java/net/runelite/api/coords/WorldArea.java
#	runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java
#	runelite-api/src/main/java/net/runelite/api/events/GraphicChanged.java
#	runelite-api/src/main/java/net/runelite/api/events/MenuOptionClicked.java
#	runelite-api/src/main/java/net/runelite/api/events/NpcActionChanged.java
#	runelite-api/src/main/java/net/runelite/api/events/PostItemDefinition.java
#	runelite-api/src/main/java/net/runelite/api/events/SpotAnimationChanged.java
#	runelite-api/src/main/java/net/runelite/api/vars/AccountType.java
#	runelite-api/src/main/java/net/runelite/mapping/Construct.java
#	runelite-api/src/main/java/net/runelite/mapping/Hook.java
#	runelite-api/src/main/java/net/runelite/mapping/Implements.java
#	runelite-api/src/main/java/net/runelite/mapping/ObfuscatedSignature.java
#	runelite-client/src/main/java/net/runelite/client/game/ItemManager.java
#	runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsOverlay.java
#	runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java
#	runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java
#	runelite-client/src/main/java/net/runelite/client/plugins/cooking/CookingPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/EquipmentInspectorPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/highalchemy/HighAlchemyOverlay.java
#	runelite-client/src/main/java/net/runelite/client/plugins/instancemap/InstanceMapOverlay.java
#	runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/inventorysetups/InventorySetupPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerOverlay.java
#	runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/pyramidplunder/PyramidPlunderOverlay.java
#	runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/banked/CriticalItem.java
#	runelite-client/src/main/java/net/runelite/client/plugins/wiki/WikiPlugin.java
#	runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java
#	runelite-client/src/main/java/net/runelite/client/ui/overlay/arrow/ArrowUtil.java
#	runelite-client/src/main/java/net/runelite/client/util/PvPUtil.java
#	runelite-client/src/test/java/net/runelite/client/plugins/cooking/CookingPluginTest.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSAbstractIndexCacheMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSMessageMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerCompositionMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java
#	runescape-api/src/main/java/net/runelite/mapping/Implements.java
#	runescape-api/src/main/java/net/runelite/mapping/ObfuscatedSignature.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSBufferProvider.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSClient.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSCollisionData.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfo1.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfoListHolder.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSDecorativeObject.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSFriendContainer.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSGameShell.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSGroundObject.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSItem.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSItemLayer.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSIterableNodeDeque.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSJagexLoginType.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSKeyHandler.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSMainBufferProvider.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSMapElementConfig.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSMessage.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSMessageNode.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSModel.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSPlayerComposition.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSRasterProvider.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSSequenceDefinition.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSSpritePixels.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSWallObject.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSWorldMap.java
This commit is contained in:
Lucas
2019-06-08 23:06:59 +02:00
490 changed files with 740 additions and 38563 deletions

View File

@@ -36,6 +36,6 @@ public class DeobProperties
InputStream resourceAsStream = DeobProperties.class.getResourceAsStream("/deob.properties");
properties.load(resourceAsStream);
return properties.getProperty("git.commit.id");
return "420";
}
}

View File

@@ -31,5 +31,7 @@ public class TestClass
public int field1;
@MyAnnotation("method1")
public void method1() { }
public void method1()
{
}
}

View File

@@ -67,11 +67,12 @@ public class MultiplyOneDeobfuscatorTest
ins.addInstruction(i);
Label label = new Label(ins),
label2 = new Label(ins);
label2 = new Label(ins);
LDC one = new LDC(ins, 1);
Instruction body[] = {
Instruction body[] =
{
new SiPush(ins, (short) 256),
new ILoad(ins, 0),
@@ -122,7 +123,7 @@ public class MultiplyOneDeobfuscatorTest
ins.addInstruction(i);
Label label = new Label(ins),
label2 = new Label(ins);
label2 = new Label(ins);
LDC one = new LDC(ins, 1);
IMul mul = new IMul(ins);
@@ -204,8 +205,8 @@ public class MultiplyOneDeobfuscatorTest
ins.addInstruction(i);
Label label = new Label(ins),
label2 = new Label(ins),
label3 = new Label(ins);
label2 = new Label(ins),
label3 = new Label(ins);
LDC one = new LDC(ins, 1);
IMul mul = new IMul(ins);

View File

@@ -24,7 +24,6 @@
*/
package net.runelite.deob.deobfuscators.exprargorder;
import java.io.File;
import java.util.List;
import net.runelite.asm.ClassGroup;
import net.runelite.asm.attributes.Code;
@@ -48,7 +47,6 @@ import net.runelite.asm.attributes.code.instructions.Pop;
import net.runelite.asm.attributes.code.instructions.SiPush;
import net.runelite.asm.attributes.code.instructions.VReturn;
import net.runelite.deob.ClassGroupFactory;
import net.runelite.deob.util.JarUtil;
import static org.junit.Assert.assertEquals;
import org.junit.Test;

View File

@@ -31,7 +31,6 @@ import net.runelite.asm.ClassGroup;
import net.runelite.deob.TemporyFolderLocation;
import net.runelite.deob.util.JarUtil;
import org.junit.After;
import org.junit.Test;
import org.junit.Before;
import org.junit.Rule;
import org.junit.rules.TemporaryFolder;

View File

@@ -31,7 +31,6 @@ import net.runelite.asm.ClassGroup;
import net.runelite.deob.util.JarUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class AnnotationRenamerTest
{

View File

@@ -33,11 +33,11 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
import net.runelite.runeloader.inject.GetterInjectInstruction;
import net.runelite.runeloader.inject.InjectionModscript;
import net.runelite.mapping.Export;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.runeloader.inject.GetterInjectInstruction;
import net.runelite.runeloader.inject.Injection;
import net.runelite.runeloader.inject.InjectionModscript;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
@@ -46,17 +46,17 @@ import org.junit.Test;
public class CheckExports
{
private static final File CLIENT = new File("/Users/adam/w/rs/07/rs-client-1.0-SNAPSHOT.jar");
private final List<Class> classes = new ArrayList<>();
@Before
public void before() throws MalformedURLException, ClassNotFoundException
{
ClassLoader loader = new URLClassLoader(new URL[] { CLIENT.toURL() });
ClassLoader loader = new URLClassLoader(new URL[]{CLIENT.toURL()});
Class c = loader.loadClass("net.runelite.rs.client.client");
classes.add(c);
for (int i = 0; i < 230; ++i)
{
try
@@ -69,41 +69,51 @@ public class CheckExports
}
}
}
private Class<?> findClassWithObfuscatedName(String name)
{
for (Class c : classes)
{
if (c.getName().equals("net.runelite.rs.client.client") && name.equals("client"))
{
return c;
}
ObfuscatedName oc = (ObfuscatedName) c.getDeclaredAnnotation(ObfuscatedName.class);
if (oc == null)
{
continue;
}
if (oc.value().equals(name))
{
return c;
}
}
return null;
}
private Field findFieldWithObfuscatedName(Class c, String name)
{
for (Field f : c.getDeclaredFields())
{
ObfuscatedName oc = (ObfuscatedName) f.getDeclaredAnnotation(ObfuscatedName.class);
ObfuscatedName oc = f.getDeclaredAnnotation(ObfuscatedName.class);
if (oc == null)
{
continue;
}
if (oc.value().equals(name))
{
return f;
}
}
return null;
}
private boolean isExported(Field f)
{
Export export = (Export) f.getDeclaredAnnotation(Export.class);
Export export = f.getDeclaredAnnotation(Export.class);
return export != null;
}
@@ -112,17 +122,17 @@ public class CheckExports
public void checkMappings() throws IOException
{
InjectionModscript mod = Injection.load(MappingImporter.class.getResourceAsStream(MappingImporter.RL_INJECTION));
for (int i = 0; i < mod.getGetterInjects().size(); ++i)
{
GetterInjectInstruction gii = (GetterInjectInstruction) mod.getGetterInjects().get(i);
GetterInjectInstruction gii = mod.getGetterInjects().get(i);
Class c = this.findClassWithObfuscatedName(gii.getGetterClassName());
Assert.assertNotNull(c);
Field f = this.findFieldWithObfuscatedName(c, gii.getGetterFieldName());
Assert.assertNotNull(f);
Assert.assertTrue(this.isExported(f));
}
}

View File

@@ -33,12 +33,12 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
import net.runelite.runeloader.inject.GetterInjectInstruction;
import net.runelite.runeloader.inject.InjectionModscript;
import net.runelite.mapping.Export;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.runeloader.inject.GetterInjectInstruction;
import net.runelite.runeloader.inject.Injection;
import net.runelite.runeloader.inject.InjectionModscript;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
@@ -47,17 +47,17 @@ import org.junit.Test;
public class CheckMappings
{
private static final File CLIENT = new File("d:/rs/07/adamout.jar");
private final List<Class> classes = new ArrayList<>();
@Before
public void before() throws MalformedURLException, ClassNotFoundException
{
ClassLoader loader = new URLClassLoader(new URL[] { CLIENT.toURL() });
ClassLoader loader = new URLClassLoader(new URL[]{CLIENT.toURL()});
Class c = loader.loadClass("client");
classes.add(c);
for (int i = 0; i < 230; ++i)
{
try
@@ -70,51 +70,65 @@ public class CheckMappings
}
}
}
private Class<?> findClassWithObfuscatedName(String name)
{
for (Class c : classes)
{
if (c.getName().equals("net.runelite.rs.client.client") && name.equals("client"))
{
return c;
}
ObfuscatedName oc = (ObfuscatedName) c.getDeclaredAnnotation(ObfuscatedName.class);
if (oc == null)
{
continue;
}
if (oc.value().equals(name))
{
return c;
}
}
return null;
}
private Field findFieldWithObfuscatedName(Class c, String name)
{
for (Field f : c.getDeclaredFields())
{
ObfuscatedName oc = (ObfuscatedName) f.getDeclaredAnnotation(ObfuscatedName.class);
ObfuscatedName oc = f.getDeclaredAnnotation(ObfuscatedName.class);
if (oc == null)
{
continue;
}
if (oc.value().equals(name))
{
return f;
}
}
return null;
}
private Integer getIntegerMultiplier(Field f)
{
ObfuscatedGetter getter = (ObfuscatedGetter) f.getDeclaredAnnotation(ObfuscatedGetter.class);
ObfuscatedGetter getter = f.getDeclaredAnnotation(ObfuscatedGetter.class);
if (getter == null)
{
return null;
}
return getter.intValue() == 0 ? null : getter.intValue();
}
private String getExportedName(Field f)
{
Export e = (Export) f.getDeclaredAnnotation(Export.class);
Export e = f.getDeclaredAnnotation(Export.class);
if (e == null)
{
return null;
}
return e.value();
}
@@ -123,21 +137,21 @@ public class CheckMappings
public void checkMappings() throws IOException
{
InjectionModscript mod = Injection.load(MappingImporter.class.getResourceAsStream(MappingImporter.RL_INJECTION));
for (int i = 0; i < mod.getGetterInjects().size(); ++i)
{
GetterInjectInstruction gii = (GetterInjectInstruction) mod.getGetterInjects().get(i);
GetterInjectInstruction gii = mod.getGetterInjects().get(i);
Class c = this.findClassWithObfuscatedName(gii.getGetterClassName());
Assert.assertNotNull(c);
Field f = this.findFieldWithObfuscatedName(c, gii.getGetterFieldName());
Assert.assertNotNull(f);
String exportedName = this.getExportedName(f);
String attrName = gii.getGetterName();
attrName = Utils.toExportedName(attrName);
Integer mul = gii.getMultiplier(),
myMul = this.getIntegerMultiplier(f);

View File

@@ -33,11 +33,11 @@ import net.runelite.asm.Type;
import net.runelite.asm.attributes.Annotations;
import net.runelite.asm.attributes.annotation.Annotation;
import net.runelite.asm.attributes.annotation.Element;
import net.runelite.deob.util.JarUtil;
import net.runelite.runeloader.inject.AddInterfaceInstruction;
import net.runelite.runeloader.inject.GetterInjectInstruction;
import net.runelite.runeloader.inject.InjectionModscript;
import net.runelite.deob.util.JarUtil;
import net.runelite.runeloader.inject.Injection;
import net.runelite.runeloader.inject.InjectionModscript;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -138,7 +138,7 @@ public class MappingImporter
for (int i = 0; i < mod.getGetterInjects().size(); ++i)
{
GetterInjectInstruction gii = (GetterInjectInstruction) mod.getGetterInjects().get(i);
GetterInjectInstruction gii = mod.getGetterInjects().get(i);
ClassFile cf = this.findClassWithObfuscatedName(gii.getGetterClassName());
Assert.assertNotNull(cf);

View File

@@ -36,7 +36,9 @@ public class Utils
}
if (attrName.equalsIgnoreCase("fps"))
{
attrName = "FPS";
}
return attrName;
}

View File

@@ -6,59 +6,74 @@ import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.InsnList;
import org.objectweb.asm.tree.MethodNode;
public class MethodModInstruction {
private final int startIndex;
private final AbstractInsnNode[] nodes;
public final String owner;
public final String method;
public final String desc;
public class MethodModInstruction
{
private final int startIndex;
private final AbstractInsnNode[] nodes;
public final String owner;
public final String method;
public final String desc;
public MethodModInstruction(int var1, AbstractInsnNode[] var2, String var3, String var4, String var5) {
this.startIndex = var1;
this.nodes = var2;
this.owner = var3;
this.method = var4;
this.desc = var5;
}
public MethodModInstruction(int var1, AbstractInsnNode[] var2, String var3, String var4, String var5)
{
this.startIndex = var1;
this.nodes = var2;
this.owner = var3;
this.method = var4;
this.desc = var5;
}
public boolean valid(ClassNode var1) {
return var1.name.equalsIgnoreCase(this.owner);
}
public boolean valid(ClassNode var1)
{
return var1.name.equalsIgnoreCase(this.owner);
}
public void inject(ClassNode var1) {
Iterator var3 = var1.methods.iterator();
public void inject(ClassNode var1)
{
Iterator var3 = var1.methods.iterator();
while(true) {
MethodNode var2;
do {
do {
if(!var3.hasNext()) {
return;
}
while (true)
{
MethodNode var2;
do
{
do
{
if (!var3.hasNext())
{
return;
}
var2 = (MethodNode)var3.next();
} while(!var2.name.equalsIgnoreCase(this.method));
} while(!var2.desc.equalsIgnoreCase(this.desc));
var2 = (MethodNode) var3.next();
} while (!var2.name.equalsIgnoreCase(this.method));
} while (!var2.desc.equalsIgnoreCase(this.desc));
InsnList var4 = var2.instructions;
InsnList var4 = var2.instructions;
try {
AbstractInsnNode var5 = var4.get(this.startIndex);
AbstractInsnNode var6 = null;
try
{
AbstractInsnNode var5 = var4.get(this.startIndex);
AbstractInsnNode var6 = null;
for(int var7 = 0; var7 < this.nodes.length; ++var7) {
if(var6 == null) {
var4.insertBefore(var5, this.nodes[var7]);
} else {
var4.insert(var6, this.nodes[var7]);
}
for (int var7 = 0; var7 < this.nodes.length; ++var7)
{
if (var6 == null)
{
var4.insertBefore(var5, this.nodes[var7]);
}
else
{
var4.insert(var6, this.nodes[var7]);
}
var6 = this.nodes[var7];
}
} catch (Exception var8) {
System.err.println("Failed on " + this.startIndex + " @ " + this.owner + "." + this.method + " " + this.desc);
var8.printStackTrace();
}
}
}
var6 = this.nodes[var7];
}
}
catch (Exception var8)
{
System.err.println("Failed on " + this.startIndex + " @ " + this.owner + "." + this.method + " " + this.desc);
var8.printStackTrace();
}
}
}
}

View File

@@ -2,18 +2,20 @@ package net.runelite.runeloader.inject;
import org.objectweb.asm.tree.AbstractInsnNode;
public class ReplaceNodeInstruction {
public final String owner;
public final String method;
public final String desc;
public final int index;
public final AbstractInsnNode replaceWith;
public class ReplaceNodeInstruction
{
public final String owner;
public final String method;
public final String desc;
public final int index;
public final AbstractInsnNode replaceWith;
public ReplaceNodeInstruction(String var1, String var2, String var3, int var4, AbstractInsnNode var5) {
this.owner = var1;
this.method = var2;
this.desc = var3;
this.index = var4;
this.replaceWith = var5;
}
public ReplaceNodeInstruction(String var1, String var2, String var3, int var4, AbstractInsnNode var5)
{
this.owner = var1;
this.method = var2;
this.desc = var3;
this.index = var4;
this.replaceWith = var5;
}
}

View File

@@ -1,13 +1,6 @@
package net.runelite.runeloader.inject;
import java.util.Iterator;
import org.objectweb.asm.Label;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.InsnList;
import org.objectweb.asm.tree.JumpInsnNode;
import org.objectweb.asm.tree.LabelNode;
import org.objectweb.asm.tree.MethodNode;
public class TableJumpInstruction
{