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 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(); + } }