diff --git a/.gitignore b/.gitignore
index 177b1d7858..51854a9d2e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@ runelite-client/src/main/resources/META-INF/MANIFEST.MF
git
classes/artifacts/client_jar/run.bat
classes/artifacts/client_jar/client.jar
+*.jar
diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml
index b0100d5042..c3f795ac32 100644
--- a/runelite-client/pom.xml
+++ b/runelite-client/pom.xml
@@ -194,9 +194,9 @@
${project.version}
- net.runelite
+ net.runelit
client-patch
- ${project.version}
+ 1.5.25.1
runtime
@@ -327,7 +327,14 @@
- net.runelite:*
+ net.runelite:api
+
+ **
+
+
+
+
+ net.runelite:client-patch
**
diff --git a/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java b/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java
index 61291c4e96..4e2eacdd8c 100644
--- a/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java
+++ b/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java
@@ -34,6 +34,8 @@ import io.sigpipe.jbsdiff.InvalidHeaderException;
import io.sigpipe.jbsdiff.Patch;
import java.applet.Applet;
import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -49,6 +51,7 @@ import java.util.Map;
import java.util.jar.Attributes;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
+import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
import javax.inject.Inject;
import javax.inject.Named;
@@ -181,6 +184,11 @@ public class ClientLoader
if (updateCheckMode == AUTO)
{
+ File injectedClientFile = new File("./InjectedClient.jar");
+ Manifest manifest2 = new Manifest();
+ manifest2.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
+ JarOutputStream target = new JarOutputStream(new FileOutputStream(injectedClientFile), manifest2);
+
ByteArrayOutputStream patchOs = new ByteArrayOutputStream(756 * 1024);
int patchCount = 0;
@@ -202,8 +210,12 @@ public class ClientLoader
file.setValue(patchOs.toByteArray());
++patchCount;
+ if (!file.getKey().startsWith("META"))
+ {
+ add(file.getValue(), file.getKey(), target);
+ }
}
-
+ target.close();
log.info("Patched {} classes", patchCount);
}
@@ -211,7 +223,6 @@ public class ClientLoader
if (updateCheckMode == AUTO)
{
-
HashMap patches = new HashMap<>();
for (Map.Entry file : zipFile.entrySet())
@@ -228,7 +239,6 @@ public class ClientLoader
}
patches.put(file.getKey(), patchClass);
-
}
new MixinRunner(zipFile, patches).run();
@@ -285,4 +295,12 @@ public class ClientLoader
Collection extends Certificate> certificates = certificateFactory.generateCertificates(ClientLoader.class.getResourceAsStream("jagex.crt"));
return certificates.toArray(new Certificate[0]);
}
+
+ private void add(byte[] bytes, String entryName, JarOutputStream target) throws IOException
+ {
+ JarEntry entry = new JarEntry(entryName);
+ target.putNextEntry(entry);
+ target.write(bytes);
+ target.closeEntry();
+ }
}