From 146d218276527919be888ca87b90d26238b401e8 Mon Sep 17 00:00:00 2001 From: RaphiMC <50594595+RaphiMC@users.noreply.github.com> Date: Sat, 25 May 2024 19:32:18 +0200 Subject: [PATCH] Migrate to JvmDowngrader --- build.gradle | 41 +++++++++++-------- gradle.properties | 1 + settings.gradle | 4 +- .../MixinEntityPacketRewriter1_20_5.java | 2 +- .../viaproxy/plugins/PluginManager.java | 27 ++++++++---- .../viaproxy/plugins/ViaProxyPlugin.java | 9 ++-- 6 files changed, 52 insertions(+), 32 deletions(-) diff --git a/build.gradle b/build.gradle index 6411679..0ba14ac 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,10 @@ -import net.raphimc.javadowngrader.gradle.task.DowngradeJarTask - plugins { id "java" id "application" id "maven-publish" id "idea" id "net.raphimc.class-token-replacer" version "1.0.1" - id "net.raphimc.java-downgrader" version "1.1.2" + id "xyz.wagyourtail.jvmdowngrader" version "0.5.1" } base { @@ -20,6 +18,7 @@ base { configurations { include + includeJ8 implementation.extendsFrom include api.extendsFrom include @@ -79,9 +78,9 @@ dependencies { include("com.mojang:authlib:3.16.29") { exclude group: "org.slf4j", module: "slf4j-api" } - include "net.lenni0451.classtransform:mixinstranslator:1.13.1" - include "net.lenni0451.classtransform:mixinsdummy:1.13.1" - include "net.lenni0451.classtransform:additionalclassprovider:1.13.1" + include "net.lenni0451.classtransform:mixinstranslator:1.14.0-SNAPSHOT" + include "net.lenni0451.classtransform:mixinsdummy:1.14.0-SNAPSHOT" + include "net.lenni0451.classtransform:additionalclassprovider:1.14.0-SNAPSHOT" include "net.lenni0451:Reflect:1.3.4" include "net.lenni0451:LambdaEvents:2.4.2" include("net.lenni0451:MCPing:1.4.1") { @@ -95,14 +94,13 @@ dependencies { exclude group: "com.google.code.gson", module: "gson" exclude group: "org.slf4j", module: "slf4j-api" } - include("net.raphimc.javadowngrader:impl-classtransform:1.1.2") { - exclude group: "org.ow2.asm", module: "asm-commons" - exclude group: "net.lenni0451.classtransform", module: "additionalclassprovider" - } include("org.cloudburstmc.netty:netty-transport-raknet:1.0.0.CR3-SNAPSHOT") { exclude group: "io.netty" } include "gs.mclo:api:3.0.1" + + includeJ8(compileOnly("xyz.wagyourtail.jvmdowngrader:jvmdowngrader:0.5.1")) + includeJ8 "xyz.wagyourtail.jvmdowngrader:jvmdowngrader-java-api:0.5.1:downgraded-8" } sourceSets { @@ -199,13 +197,22 @@ idea { } } -tasks.register("java8Jar", DowngradeJarTask) { - input = tasks.jar.archiveFile.get().asFile - outputSuffix = "+java8" - compileClassPath = sourceSets.main.compileClasspath - copyRuntimeClasses = false -}.get().dependsOn("build") -build.finalizedBy("java8Jar") +downgradeJar { + dependsOn configurations.includeJ8 + from { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + configurations.includeJ8.collect { + zipTree(it) + } + } { + exclude "META-INF/*.RSA", "META-INF/*.SF", "META-INF/*.DSA" + } + + downgradeTo = JavaVersion.VERSION_1_8 + archiveClassifier = null + archiveVersion = project.version + "+java8" +} +build.finalizedBy("downgradeJar") String latestCommitHash() { def stdout = new ByteArrayOutputStream() diff --git a/gradle.properties b/gradle.properties index 7ebb31b..48070cf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,7 @@ org.gradle.daemon=true org.gradle.parallel=true org.gradle.configureondemand=true +org.gradle.jvmargs=-Xmx2G maven_group=net.raphimc maven_name=ViaProxy diff --git a/settings.gradle b/settings.gradle index 7189c0c..c7467db 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,8 +3,8 @@ pluginManagement { mavenCentral() gradlePluginPortal() maven { - name = "Lenni0451" - url "https://maven.lenni0451.net/everything" + name = "WagYourTail" + url = "https://maven.wagyourtail.xyz/releases" } } } diff --git a/src/main/java/net/raphimc/viaproxy/injection/mixins/MixinEntityPacketRewriter1_20_5.java b/src/main/java/net/raphimc/viaproxy/injection/mixins/MixinEntityPacketRewriter1_20_5.java index e7950f4..a8e303f 100644 --- a/src/main/java/net/raphimc/viaproxy/injection/mixins/MixinEntityPacketRewriter1_20_5.java +++ b/src/main/java/net/raphimc/viaproxy/injection/mixins/MixinEntityPacketRewriter1_20_5.java @@ -59,7 +59,7 @@ public abstract class MixinEntityPacketRewriter1_20_5 extends EntityRewriter yaml = this.yaml.load(viaproxyYml); if (!yaml.containsKey("name")) throw new IllegalStateException("Plugin '" + file.getName() + "' does not have a name attribute in the viaproxy.yml"); @@ -109,14 +122,14 @@ public class PluginManager { final String main = (String) yaml.get("main"); - final Class mainClass = loader.loadClass(main); + final Class mainClass = classLoader.loadClass(main); if (!ViaProxyPlugin.class.isAssignableFrom(mainClass)) { throw new IllegalStateException("Class '" + mainClass.getName() + "' from '" + file.getName() + "' does not extend ViaProxyPlugin"); } final Object instance = mainClass.getDeclaredConstructor().newInstance(); final ViaProxyPlugin plugin = (ViaProxyPlugin) instance; - plugin.init(loader, yaml); + plugin.init(classLoader, yaml); if (plugin.getDepends().size() > 1) { throw new IllegalStateException("Plugin '" + file.getName() + "' has more than one dependency. This is not supported yet."); @@ -137,7 +150,7 @@ public class PluginManager { this.enablePlugin(dependPlugin); } - RStream.of(plugin.getClassLoader()).fields().by("parent").set(dependPlugin.getClassLoader()); + RStream.of(plugin.getClassLoader()).withSuper().fields().by("parent").set(dependPlugin.getClassLoader()); } try { diff --git a/src/main/java/net/raphimc/viaproxy/plugins/ViaProxyPlugin.java b/src/main/java/net/raphimc/viaproxy/plugins/ViaProxyPlugin.java index b2b6d58..e658490 100644 --- a/src/main/java/net/raphimc/viaproxy/plugins/ViaProxyPlugin.java +++ b/src/main/java/net/raphimc/viaproxy/plugins/ViaProxyPlugin.java @@ -17,19 +17,18 @@ */ package net.raphimc.viaproxy.plugins; -import net.lenni0451.classtransform.utils.loader.InjectionClassLoader; - +import java.net.URLClassLoader; import java.util.Collections; import java.util.List; import java.util.Map; public abstract class ViaProxyPlugin { - private InjectionClassLoader classLoader; + private URLClassLoader classLoader; private Map viaProxyYaml; private boolean enabled; - final void init(final InjectionClassLoader classLoader, final Map viaProxyYaml) { + final void init(final URLClassLoader classLoader, final Map viaProxyYaml) { this.classLoader = classLoader; this.viaProxyYaml = viaProxyYaml; } @@ -68,7 +67,7 @@ public abstract class ViaProxyPlugin { return Collections.unmodifiableList((List) this.viaProxyYaml.getOrDefault("depends", Collections.emptyList())); } - public final InjectionClassLoader getClassLoader() { + public final URLClassLoader getClassLoader() { return this.classLoader; }