From 18419fcd3a18abc1ac12b7129de82d2d0f43cd60 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Sun, 20 Apr 2025 14:09:12 +0700 Subject: [PATCH 1/8] [ANY] Update dependencies --- props.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/props.gradle b/props.gradle index 9238f268..7e9d8282 100644 --- a/props.gradle +++ b/props.gradle @@ -1,6 +1,6 @@ project.ext { verAsm = '9.7.1' - verNetty = '4.2.0.RC4' + verNetty = '4.2.0.Final' verOshiCore = '6.8.0' verJunit = '5.11.4' verJansi = '2.4.1' @@ -11,7 +11,7 @@ verSlf4j = '2.0.17' verLog4j = '2.24.3' verMySQLConn = '9.2.0' - verMariaDBConn = '3.5.1' + verMariaDBConn = '3.5.3' verPostgreSQLConn = '42.7.5' verH2Conn = '2.3.232' verProguard = '7.7.0' From e2e0ef6ea4015c6ca06717fd8d64c5b927aa9f7e Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Fri, 25 Apr 2025 14:49:51 +0700 Subject: [PATCH 2/8] [FEATURE] Support enableNativeAccess, fix libraries modularity --- LaunchServer/build.gradle | 4 +-- .../java/pro/gravit/launchserver/Main.java | 4 ++- .../gravit/utils/launch/LaunchOptions.java | 1 + .../pro/gravit/utils/launch/ModuleLaunch.java | 26 +++++++++++++++++++ 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/LaunchServer/build.gradle b/LaunchServer/build.gradle index c8836539..d65390bf 100644 --- a/LaunchServer/build.gradle +++ b/LaunchServer/build.gradle @@ -75,9 +75,9 @@ pack project(':LauncherAPI') bundle group: 'me.tongfei', name: 'progressbar', version: '0.10.1' bundle group: 'org.fusesource.jansi', name: 'jansi', version: rootProject['verJansi'] - bundle group: 'org.jline', name: 'jline', version: rootProject['verJline'] + bundle group: 'org.jline', name: 'jline-native', version: rootProject['verJline'] bundle group: 'org.jline', name: 'jline-reader', version: rootProject['verJline'] - bundle group: 'org.jline', name: 'jline-terminal', version: rootProject['verJline'] + bundle group: 'org.jline', name: 'jline-terminal-ffm', version: rootProject['verJline'] bundle group: 'org.bouncycastle', name: 'bcprov-jdk18on', version: rootProject['verBcpkix'] bundle group: 'org.bouncycastle', name: 'bcpkix-jdk18on', version: rootProject['verBcpkix'] bundle group: 'org.ow2.asm', name: 'asm-commons', version: rootProject['verAsm'] diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/Main.java b/LaunchServer/src/main/java/pro/gravit/launchserver/Main.java index f12ae900..86477420 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/Main.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/Main.java @@ -18,7 +18,7 @@ import java.util.stream.Stream; public class Main { - private static final List classpathOnly = List.of("proguard", "jline", "progressbar", "kotlin"); + private static final List classpathOnly = List.of("proguard", "progressbar", "kotlin"); private static final String LOG4J_PROPERTY = "log4j2.configurationFile"; private static final String DEBUG_PROPERTY = "launchserver.main.debug"; private static final String LIBRARIES_PROPERTY = "launchserver.dir.libraries"; @@ -74,6 +74,8 @@ public static void main(String[] args) throws Throwable { classpath.add(IOHelper.getCodeSource(LaunchServerStarter.class)); options.moduleConf.modulePath.addAll(modulepath); options.moduleConf.modules.add("ALL-MODULE-PATH"); + options.moduleConf.enableNativeAccess.add("org.fusesource.jansi"); + options.moduleConf.enableNativeAccess.add("io.netty.common"); ClassLoaderControl control = launch.init(classpath, "natives", options); control.clearLauncherPackages(); control.addLauncherPackage("pro.gravit.utils.launch"); diff --git a/LauncherCore/src/main/java/pro/gravit/utils/launch/LaunchOptions.java b/LauncherCore/src/main/java/pro/gravit/utils/launch/LaunchOptions.java index ddabd56c..f6913067 100644 --- a/LauncherCore/src/main/java/pro/gravit/utils/launch/LaunchOptions.java +++ b/LauncherCore/src/main/java/pro/gravit/utils/launch/LaunchOptions.java @@ -14,5 +14,6 @@ public static final class ModuleConf { public Map exports = new HashMap<>(); public Map opens = new HashMap<>(); public Map reads = new HashMap<>(); + public List enableNativeAccess = new ArrayList<>(); } } diff --git a/LauncherCore/src/main/java/pro/gravit/utils/launch/ModuleLaunch.java b/LauncherCore/src/main/java/pro/gravit/utils/launch/ModuleLaunch.java index ca1e8bb7..202383eb 100644 --- a/LauncherCore/src/main/java/pro/gravit/utils/launch/ModuleLaunch.java +++ b/LauncherCore/src/main/java/pro/gravit/utils/launch/ModuleLaunch.java @@ -29,6 +29,18 @@ public class ModuleLaunch implements Launch { private ModuleLayer layer; private MethodHandles.Lookup hackLookup; private boolean disablePackageDelegateSupport; + private static final MethodHandle ENABLE_NATIVE_ACCESS; + + static { + MethodHandle mh; + try { + mh = MethodHandles.lookup().findVirtual(ModuleLayer.Controller.class, "enableNativeAccess", MethodType.methodType(ModuleLayer.Controller.class, Module.class)); + } catch (NoSuchMethodException | IllegalAccessException e) { + mh = null; + } + ENABLE_NATIVE_ACCESS = mh; + } + @Override public ClassLoaderControl init(List files, String nativePath, LaunchOptions options) { this.disablePackageDelegateSupport = options.disablePackageDelegateSupport; @@ -120,6 +132,20 @@ public ClassLoaderControl init(List files, String nativePath, LaunchOption controller.addReads(source, target); } } + for(var e : options.moduleConf.enableNativeAccess) { + LogHelper.dev("Enable Native Access %s", e); + Module source = layer.findModule(e).orElse(null); + if(source == null) { + throw new RuntimeException(String.format("Module %s not found", e)); + } + if(ENABLE_NATIVE_ACCESS != null) { + try { + ENABLE_NATIVE_ACCESS.invoke(controller, source); + } catch (Throwable ex) { + throw new RuntimeException(ex); + } + } + } moduleClassLoader.initializeWithLayer(layer); } } From e67bb6a12f9d206a69d5563658e8e2c73ce8d8c8 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Fri, 25 Apr 2025 14:58:02 +0700 Subject: [PATCH 3/8] [FEATURE] Support /webapi/status endpoint for Docker --- .../socket/handlers/NettyWebAPIHandler.java | 2 ++ .../socket/severlet/StatusSeverlet.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 LaunchServer/src/main/java/pro/gravit/launchserver/socket/severlet/StatusSeverlet.java diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/socket/handlers/NettyWebAPIHandler.java b/LaunchServer/src/main/java/pro/gravit/launchserver/socket/handlers/NettyWebAPIHandler.java index ac4c0057..22297c49 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/socket/handlers/NettyWebAPIHandler.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/socket/handlers/NettyWebAPIHandler.java @@ -9,6 +9,7 @@ import org.apache.logging.log4j.Logger; import pro.gravit.launcher.base.Launcher; import pro.gravit.launchserver.socket.NettyConnectContext; +import pro.gravit.launchserver.socket.severlet.StatusSeverlet; import pro.gravit.utils.helper.IOHelper; import java.net.URLDecoder; @@ -34,6 +35,7 @@ public class NettyWebAPIHandler extends SimpleChannelInboundHandler Date: Fri, 25 Apr 2025 17:54:00 +0700 Subject: [PATCH 4/8] [FEATURE][EXPERIMENTAL] Usage Java modular system for start, change proguard libraries --- LaunchServer/build.gradle | 22 +++++-- .../pro/gravit/launchserver/LaunchServer.java | 8 ++- .../launchserver/asm/ClassMetadataReader.java | 65 +++++++++++++++++-- .../tasks/AdditionalFixesApplyTask.java | 2 +- .../binary/tasks/MainBuildTask.java | 6 +- .../components/ProGuardComponent.java | 2 +- modules | 2 +- 7 files changed, 90 insertions(+), 17 deletions(-) diff --git a/LaunchServer/build.gradle b/LaunchServer/build.gradle index d65390bf..6f4973fe 100644 --- a/LaunchServer/build.gradle +++ b/LaunchServer/build.gradle @@ -29,6 +29,7 @@ bundleOnly bundle pack + proguardPack bundleOnly.extendsFrom bundle api.extendsFrom bundle, pack } @@ -36,11 +37,13 @@ jar { dependsOn parent.childProjects.Launcher.tasks.assemble from { configurations.pack.collect { it.isDirectory() ? it : zipTree(it) } } + exclude("module-info.class") from(parent.childProjects.Launcher.tasks.shadowJar) from(parent.childProjects.Launcher.tasks.genRuntimeJS) manifest.attributes("Main-Class": mainClassName, "Premain-Class": mainAgentName, "Multi-Release": "true", + "Automatic-Module-Name": "launchserver" ) } @@ -72,7 +75,10 @@ dependencies { - pack project(':LauncherAPI') + pack(project(':LauncherAPI')) { + exclude group: "com.google.code.gson" + } + bundle group: 'com.google.code.gson', name: 'gson', version: rootProject['verGson'] bundle group: 'me.tongfei', name: 'progressbar', version: '0.10.1' bundle group: 'org.fusesource.jansi', name: 'jansi', version: rootProject['verJansi'] bundle group: 'org.jline', name: 'jline-native', version: rootProject['verJline'] @@ -84,10 +90,10 @@ pack project(':LauncherAPI') bundle group: 'io.netty', name: 'netty-codec-http', version: rootProject['verNetty'] bundle group: 'io.netty', name: 'netty-transport-classes-epoll', version: rootProject['verNetty'] bundle group: 'io.netty', name: 'netty-transport-native-epoll', version: rootProject['verNetty'], classifier: 'linux-x86_64' - bundle group: 'io.netty', name: 'netty-transport-native-epoll', version: rootProject['verNetty'], classifier: 'linux-aarch_64' + //bundle group: 'io.netty', name: 'netty-transport-native-epoll', version: rootProject['verNetty'], classifier: 'linux-aarch_64' bundle group: 'io.netty', name: 'netty-transport-classes-io_uring', version: rootProject['verNetty'] bundle group: 'io.netty', name: 'netty-transport-native-io_uring', version: rootProject['verNetty'], classifier: 'linux-x86_64' - bundle group: 'io.netty', name: 'netty-transport-native-io_uring', version: rootProject['verNetty'], classifier: 'linux-aarch_64' + //bundle group: 'io.netty', name: 'netty-transport-native-io_uring', version: rootProject['verNetty'], classifier: 'linux-aarch_64' // Netty bundle 'org.jboss.marshalling:jboss-marshalling:1.4.11.Final' bundle 'com.google.protobuf.nano:protobuf-javanano:3.1.0' @@ -97,7 +103,7 @@ pack project(':LauncherAPI') bundle group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: rootProject['verMariaDBConn'] bundle group: 'org.postgresql', name: 'postgresql', version: rootProject['verPostgreSQLConn'] bundle group: 'com.h2database', name: 'h2', version: rootProject['verH2Conn'] - bundle group: 'com.guardsquare', name: 'proguard-base', version: rootProject['verProguard'] + proguardPack group: 'com.guardsquare', name: 'proguard-base', version: rootProject['verProguard'] bundle group: 'org.apache.logging.log4j', name: 'log4j-core', version: rootProject['verLog4j'] bundle group: 'org.apache.logging.log4j', name: 'log4j-slf4j2-impl', version: rootProject['verLog4j'] bundle group: 'io.jsonwebtoken', name: 'jjwt-api', version: rootProject['verJwt'] @@ -121,6 +127,12 @@ pack project(':LauncherAPI') from configurations.bundleOnly } +tasks.register('dumpProguard', Copy) { + duplicatesStrategy = 'EXCLUDE' + into "$buildDir/libs/proguard" + from configurations.proguardPack +} + tasks.register('bundle', Zip) { duplicatesStrategy = 'EXCLUDE' dependsOn parent.childProjects.Launcher.tasks.build, tasks.dumpLibs, tasks.jar @@ -137,7 +149,7 @@ pack project(':LauncherAPI') from parent.childProjects.Launcher.tasks.dumpLibs } -assemble.dependsOn tasks.dumpLibs, tasks.dumpClientLibs, tasks.bundle, tasks.cleanjar +assemble.dependsOn tasks.dumpLibs, tasks.dumpClientLibs, tasks.bundle, tasks.cleanjar, tasks.dumpProguard publishing { diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServer.java b/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServer.java index 81246ff8..2d644ea7 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServer.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServer.java @@ -82,6 +82,7 @@ public final class LaunchServer implements Runnable, AutoCloseable, Reconfigurab public final Path launcherModulesDir; public final Path librariesDir; public final Path controlFile; + public final Path proguardDir; /** * This object contains runtime configuration */ @@ -138,6 +139,7 @@ public LaunchServer(LaunchServerDirectories directories, LaunchServerEnv env, La launcherModulesDir = directories.launcherModules; librariesDir = directories.librariesDir; controlFile = directories.controlFile; + proguardDir = directories.proguardDir; this.shardId = shardId; if(!Files.isDirectory(launcherPack)) { Files.createDirectories(launcherPack); @@ -462,13 +464,16 @@ public interface LaunchServerConfigManager { public static class LaunchServerDirectories { public static final String UPDATES_NAME = "updates", TRUSTSTORE_NAME = "truststore", LAUNCHERLIBRARIES_NAME = "launcher-libraries", - LAUNCHERLIBRARIESCOMPILE_NAME = "launcher-libraries-compile", LAUNCHERPACK_NAME = "launcher-pack", KEY_NAME = ".keys", MODULES = "modules", LAUNCHER_MODULES = "launcher-modules", LIBRARIES = "libraries", CONTROL_FILE = "control-file"; + LAUNCHERLIBRARIESCOMPILE_NAME = "launcher-libraries-compile", LAUNCHERPACK_NAME = "launcher-pack", + KEY_NAME = ".keys", MODULES = "modules", LAUNCHER_MODULES = "launcher-modules", + LIBRARIES = "libraries", CONTROL_FILE = "control-file", PROGUARD_DIR = "proguard-libraries"; public Path updatesDir; public Path librariesDir; public Path launcherLibrariesDir; public Path launcherLibrariesCompileDir; public Path launcherPackDir; public Path keyDirectory; + public Path proguardDir; public Path dir; public Path trustStore; public Path tmpDir; @@ -489,6 +494,7 @@ public void collect() { if (launcherModules == null) launcherModules = getPath(LAUNCHER_MODULES); if (librariesDir == null) librariesDir = getPath(LIBRARIES); if (controlFile == null) controlFile = getPath(CONTROL_FILE); + if (proguardDir == null) proguardDir = getPath(PROGUARD_DIR); if (tmpDir == null) tmpDir = Paths.get(System.getProperty("java.io.tmpdir")).resolve("launchserver-%s".formatted(SecurityHelper.randomStringToken())); } diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/asm/ClassMetadataReader.java b/LaunchServer/src/main/java/pro/gravit/launchserver/asm/ClassMetadataReader.java index 07ccbaa1..c5ccc0ff 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/asm/ClassMetadataReader.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/asm/ClassMetadataReader.java @@ -1,16 +1,17 @@ package pro.gravit.launchserver.asm; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.Opcodes; import pro.gravit.utils.helper.IOHelper; import java.io.Closeable; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.jar.JarFile; /** @@ -18,14 +19,32 @@ * чего угодно. Работает через поиск class-файлов в classpath. */ public class ClassMetadataReader implements Closeable { + private final Logger logger = LogManager.getLogger(ClassMetadataReader.class); private final List cp; + private final Map moduleClassFinder; public ClassMetadataReader(List cp) { this.cp = cp; + //var moduleLayer = ClassMetadataReader.class.getModule().getLayer() == null ? ModuleLayer.boot() : ClassMetadataReader.class.getModule().getLayer(); + var moduleLayer = ModuleLayer.boot(); + moduleClassFinder = collectModulePackages(moduleLayer); } public ClassMetadataReader() { this.cp = new ArrayList<>(); + //var moduleLayer = ClassMetadataReader.class.getModule().getLayer() == null ? ModuleLayer.boot() : ClassMetadataReader.class.getModule().getLayer(); + var moduleLayer = ModuleLayer.boot(); + moduleClassFinder = collectModulePackages(moduleLayer); + } + + private Map collectModulePackages(ModuleLayer layer) { + var map = new HashMap(); + for(var m : layer.modules()) { + for(var p : m.getPackages()) { + map.put(p, m); + } + } + return map; } public List getCp() { @@ -58,7 +77,42 @@ public byte[] getClassData(String className) throws IOException { return bytes; } } - return IOHelper.read(IOHelper.getResourceURL(className + ".class")); + if(ClassMetadataReader.class.getModule().isNamed()) { + String pkg = getClassPackage(className).replace('/', '.'); + var module = moduleClassFinder.get(pkg); + if(module != null) { + var cl = module.getClassLoader(); + if(cl == null) { + cl = ClassLoader.getPlatformClassLoader(); + } + var stream = cl.getResourceAsStream(className+".class"); + if(stream != null) { + try(stream) { + return IOHelper.read(stream); + } + } else { + throw new FileNotFoundException("Class "+className + ".class"); + } + } else { + throw new FileNotFoundException("Package "+pkg); + } + } + var stream = ClassLoader.getSystemClassLoader().getResourceAsStream(className+".class"); + if(stream != null) { + try(stream) { + return IOHelper.read(stream); + } + } else { + throw new FileNotFoundException(className + ".class"); + } + } + + private String getClassPackage(String type) { + int idx = type.lastIndexOf("/"); + if(idx <= 0) { + return type; + } + return type.substring(0, idx); } public String getSuperClass(String type) { @@ -66,6 +120,7 @@ public String getSuperClass(String type) { try { return getSuperClassASM(type); } catch (Exception e) { + logger.warn("getSuperClass: type {} not found ({}: {})", type, e.getClass().getName(), e.getMessage()); return "java/lang/Object"; } } @@ -100,7 +155,7 @@ private static class CheckSuperClassVisitor extends ClassVisitor { String superClassName; public CheckSuperClassVisitor() { - super(Opcodes.ASM7); + super(Opcodes.ASM9); } @Override diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/AdditionalFixesApplyTask.java b/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/AdditionalFixesApplyTask.java index fdb2c3ee..b21abd2c 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/AdditionalFixesApplyTask.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/AdditionalFixesApplyTask.java @@ -54,7 +54,7 @@ public static void apply(Path inputFile, Path addFile, ZipOutputStream output, L private static byte[] classFix(InputStream input, ClassMetadataReader reader, boolean stripNumbers) throws IOException { ClassReader cr = new ClassReader(input); ClassNode cn = new ClassNode(); - cr.accept(cn, stripNumbers ? (ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES) : ClassReader.SKIP_FRAMES); + cr.accept(cn, stripNumbers ? (ClassReader.SKIP_DEBUG) : 0); ClassWriter cw = new SafeClassWriter(reader, ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS); cn.accept(cw); return cw.toByteArray(); diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/MainBuildTask.java b/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/MainBuildTask.java index 9475456f..f6141e78 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/MainBuildTask.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/MainBuildTask.java @@ -146,7 +146,7 @@ public byte[] transformClass(byte[] bytes, String classname, BuildContext contex asmTransformer.transform(cn, classname, context); continue; } else if (cn != null) { - writer = new SafeClassWriter(reader, ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS); + writer = new SafeClassWriter(reader, 0); cn.accept(writer); result = writer.toByteArray(); } @@ -157,7 +157,7 @@ public byte[] transformClass(byte[] bytes, String classname, BuildContext contex } } if (cn != null) { - writer = new SafeClassWriter(reader, ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS); + writer = new SafeClassWriter(reader, 0); cn.accept(writer); result = writer.toByteArray(); } @@ -175,7 +175,7 @@ default byte[] transform(byte[] input, String classname, BuildContext context) { ClassNode cn = new ClassNode(); reader.accept(cn, 0); transform(cn, classname, context); - SafeClassWriter writer = new SafeClassWriter(context.task.reader, ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS); + SafeClassWriter writer = new SafeClassWriter(context.task.reader, 0); cn.accept(writer); return writer.toByteArray(); } diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/components/ProGuardComponent.java b/LaunchServer/src/main/java/pro/gravit/launchserver/components/ProGuardComponent.java index 47370210..cafea4f6 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/components/ProGuardComponent.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/components/ProGuardComponent.java @@ -213,7 +213,7 @@ public Path process(Path inputFile) throws IOException { args.add(IOHelper.resolveJavaBin(IOHelper.JVM_DIR).toAbsolutePath().toString()); args.addAll(component.jvmArgs); args.add("-cp"); - try(Stream files = Files.walk(server.librariesDir, FileVisitOption.FOLLOW_LINKS)) { + try(Stream files = Files.walk(server.proguardDir, FileVisitOption.FOLLOW_LINKS)) { args.add(files .filter(e -> e.getFileName().toString().endsWith(".jar")) .map(path -> path.toAbsolutePath().toString()) diff --git a/modules b/modules index eeea0709..03804a3a 160000 --- a/modules +++ b/modules @@ -1 +1 @@ -Subproject commit eeea07098281c5cc98feffaae9b5a01677ca2eb7 +Subproject commit 03804a3a0e638f05c9ce65c01dbdb2f6c9ae630c From d410533c8dfcb2297c98f142f1ca198fc00ff096 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Fri, 25 Apr 2025 18:04:16 +0700 Subject: [PATCH 5/8] [FEATURE][EXPERIMENTAL] Add javaargs.txt and java24args.txt --- .github/workflows/push.yml | 2 ++ java24args.txt | 2 ++ javaargs.txt | 4 ++++ 3 files changed, 8 insertions(+) create mode 100644 java24args.txt create mode 100644 javaargs.txt diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 813b58d3..aec14a00 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -42,6 +42,8 @@ jobs: cp LauncherAuthlib/build/libs/LauncherAuthlib.jar artifacts/LauncherAuthlib.jar || true cp modules/*_module/build/libs/*.jar artifacts/modules || true cp modules/*_lmodule/build/libs/*.jar artifacts/modules || true + cp javaargs.txt artifacts/javaargs.txt || true + cp java24args.txt artifacts/java24args.txt || true - name: Upload artifacts uses: actions/upload-artifact@v4 diff --git a/java24args.txt b/java24args.txt new file mode 100644 index 00000000..bf2c2669 --- /dev/null +++ b/java24args.txt @@ -0,0 +1,2 @@ +--enable-native-access=org.fusesource.jansi +--enable-native-access=io.netty.common \ No newline at end of file diff --git a/javaargs.txt b/javaargs.txt new file mode 100644 index 00000000..32246809 --- /dev/null +++ b/javaargs.txt @@ -0,0 +1,4 @@ +--add-opens java.base/java.lang.invoke=launchserver +--add-modules java.net.http +-Dlauncher.useSlf4j=true +-Dio.netty.noUnsafe=true \ No newline at end of file From 9027987b298e4fccade42096678fcf1a70752e78 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Sat, 3 May 2025 22:31:04 +0700 Subject: [PATCH 6/8] [FEATURE] Support multiple client types --- modules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules b/modules index 03804a3a..b0de6ae4 160000 --- a/modules +++ b/modules @@ -1 +1 @@ -Subproject commit 03804a3a0e638f05c9ce65c01dbdb2f6c9ae630c +Subproject commit b0de6ae44d247c372da93aad3358127ba656b05f From bb6c95ca12c23316cadcffcb0ff3f37c1c20520b Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Sat, 3 May 2025 22:43:06 +0700 Subject: [PATCH 7/8] [FEATURE] Support multiple lwjgl3 versions --- modules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules b/modules index b0de6ae4..4a8afc79 160000 --- a/modules +++ b/modules @@ -1 +1 @@ -Subproject commit b0de6ae44d247c372da93aad3358127ba656b05f +Subproject commit 4a8afc798cd5bca93c84f9130d0baaac00a22813 From d65fffade999b8efdb276012171dfcb68fc26323 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Sat, 3 May 2025 23:11:33 +0700 Subject: [PATCH 8/8] [ANY] 5.6.12 release --- LauncherCore/src/main/java/pro/gravit/utils/Version.java | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LauncherCore/src/main/java/pro/gravit/utils/Version.java b/LauncherCore/src/main/java/pro/gravit/utils/Version.java index 84bcd534..6ee8c5eb 100644 --- a/LauncherCore/src/main/java/pro/gravit/utils/Version.java +++ b/LauncherCore/src/main/java/pro/gravit/utils/Version.java @@ -6,7 +6,7 @@ public final class Version implements Comparable { public static final int MAJOR = 5; public static final int MINOR = 6; - public static final int PATCH = 11; + public static final int PATCH = 12; public static final int BUILD = 1; public static final Version.Type RELEASE = Type.STABLE; public final int major; diff --git a/build.gradle b/build.gradle index 39f409fa..0ee6fd7c 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ id 'org.openjfx.javafxplugin' version '0.1.0' apply false } group = 'pro.gravit.launcher' -version = '5.6.11' +version = '5.6.12' apply from: 'props.gradle'