injector: move initialization to main

This commit is contained in:
TheRealNull
2021-01-02 03:53:43 -05:00
parent 99d3cacd22
commit 099f89f1d0
4 changed files with 32 additions and 47 deletions

View File

@@ -115,7 +115,7 @@ public class JarUtil
return group;
}
public static void saveJar(ClassGroup group, File jarfile) throws IOException
public static void saveJar(ClassGroup group, File jarfile)
{
try (JarOutputStream jout = new JarOutputStream(new FileOutputStream(jarfile)))
{
@@ -131,6 +131,10 @@ public class JarUtil
jout.closeEntry();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
public static byte[] writeClass(ClassGroup group, ClassFile cf)

View File

@@ -25,7 +25,7 @@ import com.openosrs.injector.rsapi.RSApi;
import com.openosrs.injector.transformers.InjectTransformer;
import com.openosrs.injector.transformers.SourceChanger;
import java.io.File;
import java.io.IOException;
import java.util.Objects;
import net.runelite.deob.util.JarUtil;
import org.gradle.api.logging.Logger;
import org.gradle.api.logging.Logging;
@@ -34,30 +34,28 @@ public class Injector extends InjectData implements InjectTaskHandler
{
private static final Logger log = Logging.getLogger(Injector.class);
public Injector(File vanilla, File rsclient, File mixins, File[] rsapi) throws IOException
{
super(
JarUtil.loadJar(vanilla),
JarUtil.loadJar(rsclient),
JarUtil.loadJar(mixins),
new RSApi(rsapi)
);
inject();
save(new File("../runelite-client/src/main/resources/net/runelite/client/injected-client.oprs"));
}
private static Injector injector;
static File injectedClientOutput = new File("../runelite-client/src/main/resources/net/runelite/client/injected-client.oprs");
public static void main(String[] args)
{
try
{
args = new String[]
{
args[0],
"../runescape-client/build/libs/runescape-client-" + args[1] + ".jar",
"../runelite-mixins/build/libs/runelite-mixins-" + args[1] + ".jar",
"../runescape-api/build/classes/java/main/net/runelite/rs/api/"
};
new Injector(new File(args[0]), new File(args[1]), new File(args[2]), new File(args[3]).listFiles());
File vanilla = new File(args[0]);
File rsClient = new File("../runescape-client/build/libs/runescape-client-" + args[1] + ".jar");
File mixins = new File("../runelite-mixins/build/libs/runelite-mixins-" + args[1] + ".jar");
RSApi rsApi = new RSApi(Objects.requireNonNull(
new File("../runescape-api/build/classes/java/main/net/runelite/rs/api/")
.listFiles()));
injector = new Injector();
injector.vanilla = JarUtil.loadJar(vanilla);
injector.deobfuscated = JarUtil.loadJar(rsClient);
injector.rsApi = rsApi;
injector.mixins = JarUtil.loadJar(mixins);
injector.initToVanilla();
injector.inject();
save(injectedClientOutput);
}
catch (Exception e)
{
@@ -106,11 +104,11 @@ public class Injector extends InjectData implements InjectTaskHandler
transform(new SourceChanger(this));
}
public void save(File outputJar) throws IOException
public static void save(File outputJar)
{
log.info("[INFO] Saving jar to {}", outputJar.toString());
JarUtil.saveJar(this.getVanilla(), outputJar);
JarUtil.saveJar(injector.getVanilla(), outputJar);
}
private void inject(com.openosrs.injector.injectors.Injector injector)

View File

@@ -31,21 +31,21 @@ public abstract class InjectData
public static final String CALLBACKS = "net/runelite/api/hooks/Callbacks";
@Getter
private final ClassGroup vanilla;
public ClassGroup vanilla;
@Getter
private final ClassGroup deobfuscated;
public ClassGroup deobfuscated;
@Getter
private final ClassGroup mixins;
public ClassGroup mixins;
@Getter
private final RSApi rsApi;
public RSApi rsApi;
/**
* Deobfuscated ClassFiles -> Vanilla ClassFiles
*/
private final Map<ClassFile, ClassFile> toVanilla;
public Map<ClassFile, ClassFile> toVanilla;
/**
* Strings -> Deobfuscated ClassFiles
@@ -55,18 +55,9 @@ public abstract class InjectData
*/
private final Map<String, ClassFile> toDeob = new HashMap<>();
public InjectData(ClassGroup vanilla, ClassGroup deobfuscated, ClassGroup mixins, RSApi rsApi)
{
this.vanilla = vanilla;
this.deobfuscated = deobfuscated;
this.rsApi = rsApi;
this.mixins = mixins;
this.toVanilla = initToVanilla();
}
public abstract void runChildInjector(Injector injector);
private Map<ClassFile, ClassFile> initToVanilla()
public void initToVanilla()
{
ImmutableMap.Builder<ClassFile, ClassFile> toVanillaB = ImmutableMap.builder();
@@ -88,7 +79,7 @@ public abstract class InjectData
}
}
return toVanillaB.build();
this.toVanilla = toVanillaB.build();
}
/**

View File

@@ -7,9 +7,6 @@
*/
package com.openosrs.injector.injection;
import java.io.File;
import java.io.IOException;
/**
* Interface containing all the methods gradle needs to know about
*/
@@ -19,9 +16,4 @@ public interface InjectTaskHandler
* The actual method that does all the work
*/
void inject();
/**
* Call this to save the injected jar to outputJar
*/
void save(File outputJar) throws IOException;
}