aboutsummaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
Diffstat (limited to 'target')
-rw-r--r--target/build.gradle.kts44
-rw-r--r--target/src/main/java/moe/nea/modernjava/target/Pack200Retransformer.java46
-rw-r--r--target/src/main/java/moe/nea/modernjava/target/RelaunchEntryPoint.java56
3 files changed, 0 insertions, 146 deletions
diff --git a/target/build.gradle.kts b/target/build.gradle.kts
deleted file mode 100644
index 7ffdde9..0000000
--- a/target/build.gradle.kts
+++ /dev/null
@@ -1,44 +0,0 @@
-plugins {
- java
- id("com.github.johnrengelman.shadow") version "7.1.2"
-}
-
-java {
- toolchain.languageVersion.set(JavaLanguageVersion.of(11))
-}
-
-
-val shadowOnly: Configuration by configurations.creating {
- attributes {
- this.attribute(org.gradle.api.attributes.java.TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 11)
- }
-}
-repositories {
- mavenCentral()
- maven("https://maven.architectury.dev/")
- maven("https://repository.ow2.org/nexus/content/repositories/releases/")
-}
-
-dependencies {
- shadowOnly(implementation("org.ow2.asm:asm:9.4")!!)
- shadowOnly(implementation("org.ow2.asm:asm-commons:9.4")!!)
- shadowOnly("dev.architectury:architectury-pack200:0.1.3")
-}
-tasks.withType(Jar::class) {
- manifest {
- attributes.apply {
- this["Premain-Class"] = "moe.nea.modernjava.target.Pack200Retransformer"
- }
- }
-}
-
-tasks.shadowJar {
- archiveClassifier.set("")
- configurations = listOf(shadowOnly)
- relocate("org.objectweb.asm", "moe.nea.modernjava.asm")
- // relocate("dev.architectury.pack200.java", "java.util.jar")
-}
-tasks.jar {
- archiveClassifier.set("thin")
-}
-tasks.assemble.get().dependsOn(tasks.shadowJar) \ No newline at end of file
diff --git a/target/src/main/java/moe/nea/modernjava/target/Pack200Retransformer.java b/target/src/main/java/moe/nea/modernjava/target/Pack200Retransformer.java
deleted file mode 100644
index 385e7ec..0000000
--- a/target/src/main/java/moe/nea/modernjava/target/Pack200Retransformer.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package moe.nea.modernjava.target;
-
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.commons.ClassRemapper;
-import org.objectweb.asm.commons.Remapper;
-
-import java.lang.instrument.ClassFileTransformer;
-import java.lang.instrument.IllegalClassFormatException;
-import java.lang.instrument.Instrumentation;
-import java.security.ProtectionDomain;
-import java.util.Arrays;
-import java.util.List;
-
-public class Pack200Retransformer implements ClassFileTransformer {
- // relocate("dev.architectury.pack200.java", "java.util.jar")
- List<String> classes = Arrays.asList("AdaptiveCoding", "Attribute", "BandStructure", "ClassReader", "ClassWriter", "Code", "Coding", "CodingChooser", "CodingMethod", "ConstantPool", "Constants", "Driver", "DriverResource", "DriverResource_ja", "DriverResource_zh_CN", "FixedList", "Fixups", "Histogram", "Instruction", "NativeUnpack", "Pack200", "Pack200Adapter", "Pack200Plugin", "Package", "PackageReader", "PackageWriter", "PackerImpl", "PopulationCoding", "PropMap", "TLGlobals", "UnpackerImpl", "Utils");
- String architecturyPackage = "dev/architectury/pack200/java/";
- String javaPackage = "java/util/jar/";
-
- public static void premain(String agentArgs, Instrumentation inst) {
- inst.addTransformer(new Pack200Retransformer());
- }
-
- @Override
- public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
- ClassReader reader = new ClassReader(classfileBuffer);
- ClassWriter writer = new ClassWriter(reader, 0);
- Remapper remapper = new Remapper() {
- @Override
- public String map(String internalName) {
- if (internalName.startsWith(javaPackage)) {
- for (String aClass : classes) {
- if (internalName.equals(javaPackage + aClass) || (internalName.startsWith(javaPackage + aClass + "$")))
- return internalName.replace(javaPackage, architecturyPackage);
- }
- }
- return internalName;
- }
- };
- ClassVisitor visitor = new ClassRemapper(writer, remapper);
- reader.accept(visitor, 0);
- return writer.toByteArray();
- }
-}
diff --git a/target/src/main/java/moe/nea/modernjava/target/RelaunchEntryPoint.java b/target/src/main/java/moe/nea/modernjava/target/RelaunchEntryPoint.java
deleted file mode 100644
index f30de3f..0000000
--- a/target/src/main/java/moe/nea/modernjava/target/RelaunchEntryPoint.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package moe.nea.modernjava.target;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Arrays;
-
-public class RelaunchEntryPoint {
- public static void log(String text) {
- System.out.println("[MODERNJAVA] " + text);
-
- }
-
- public static void main(String[] args) {
- log("This is modern java relaunch talking!");
- try {
- setupLaunch(args);
- } catch (Throwable t) {
- log("Encountered exception during relaunching");
- t.printStackTrace();
- }
- }
-
- private static void setupLaunch(String[] args) throws Exception {
- log("Original SQLException: " + Thread.currentThread().getContextClassLoader().loadClass("java.sql.SQLException"));
- log("Setting up fake launch class loader");
- ClassLoader urlClassLoader = new URLClassLoader(retrieveClassPath(), Thread.currentThread().getContextClassLoader());
- log("Created fake url class loader");
- Thread.currentThread().setContextClassLoader(urlClassLoader);
- log("Handing off to Launch");
- Class<?> launchClass = urlClassLoader.loadClass("net.minecraft.launchwrapper.Launch");
- log("LaunchClass: " + launchClass);
- log("LaunchClass ClassLoader: " + launchClass.getClassLoader());
-
- log("LaunchClass ClassLoader SQLException: " + urlClassLoader.loadClass("java.sql.SQLException"));
-
-
- Method main = launchClass.getMethod("main", String[].class);
- main.invoke(null, new Object[]{args});
- }
-
- private static URL[] retrieveClassPath() throws MalformedURLException {
- String property = System.getProperty("modernjava.relaunchclasspath");
- String[] split = property.split(File.pathSeparator);
- URL[] urls = new URL[split.length];
- for (int i = 0; i < split.length; i++) {
- urls[i] = new File(split[i]).toURI().toURL();
- }
- log("Retrieved classpath: " + Arrays.toString(urls));
- return urls;
- }
-
-
-}