From a3602eb2fb682a9bb558c25826032a0e0d087574 Mon Sep 17 00:00:00 2001 From: luki39 Date: Wed, 18 May 2022 19:30:41 +0200 Subject: [PATCH] passage en 1.18.2 launcher --- app/assets/js/assetguard.js | 10 +++---- app/assets/js/processbuilder.js | 45 ++++++++++++++++++++++++++++---- app/assets/js/scripts/landing.js | 4 +-- app/settings.ejs | 6 ++--- index.js | 2 +- package-lock.json | 2 +- package.json | 2 +- 7 files changed, 53 insertions(+), 18 deletions(-) diff --git a/app/assets/js/assetguard.js b/app/assets/js/assetguard.js index 207faa1d..8c7ba661 100644 --- a/app/assets/js/assetguard.js +++ b/app/assets/js/assetguard.js @@ -468,15 +468,15 @@ class JavaGuard extends EventEmitter { break } } - } else { + } else if(verOb.major >= 16) { + // TODO Make this logic better. Make java 16 required. // Java 9+ - if(Util.mcVersionAtLeast('1.13', this.mcVersion)){ - //console.log('Java 9+ not yet tested.') - /* meta.version = verOb + if(Util.mcVersionAtLeast('1.17', this.mcVersion)){ + meta.version = verOb ++checksum if(checksum === goal){ break - } */ + } } } // Space included so we get only the vendor. diff --git a/app/assets/js/processbuilder.js b/app/assets/js/processbuilder.js index dfd761c4..7013ff82 100644 --- a/app/assets/js/processbuilder.js +++ b/app/assets/js/processbuilder.js @@ -96,6 +96,16 @@ class ProcessBuilder { return child } + /** + * Get the platform specific classpath separator. On windows, this is a semicolon. + * On Unix, this is a colon. + * + * @returns {string} The classpath separator for the current operating system. + */ + static getClasspathSeparator() { + return process.platform === 'win32' ? ';' : ':' + } + /** * Determine if an optional mod is enabled from its configuration value. If the * configuration value is null, the required object will be used to @@ -339,7 +349,7 @@ class ProcessBuilder { // Classpath Argument args.push('-cp') - args.push(this.classpathArg(mods, tempNativePath).join(process.platform === 'win32' ? ';' : ':')) + args.push(this.classpathArg(mods, tempNativePath).join(ProcessBuilder.getClasspathSeparator())) // Java Arguments if(process.platform === 'darwin'){ @@ -377,6 +387,19 @@ class ProcessBuilder { // JVM Arguments First let args = this.versionData.arguments.jvm + // Debug securejarhandler + // args.push('-Dbsl.debug=true') + + if(this.forgeData.arguments.jvm != null) { + for(const argStr of this.forgeData.arguments.jvm) { + args.push(argStr + .replaceAll('${library_directory}', this.libPath) + .replaceAll('${classpath_separator}', ProcessBuilder.getClasspathSeparator()) + .replaceAll('${version_name}', this.forgeData.id) + ) + } + } + //args.push('-Dlog4j.configurationFile=D:\\WesterosCraft\\game\\common\\assets\\log_configs\\client-1.12.xml') // Java Arguments @@ -489,7 +512,7 @@ class ProcessBuilder { val = args[i].replace(argDiscovery, this.launcherVersion) break case 'classpath': - val = this.classpathArg(mods, tempNativePath).join(process.platform === 'win32' ? ';' : ':') + val = this.classpathArg(mods, tempNativePath).join(ProcessBuilder.getClasspathSeparator()) break } if(val != null){ @@ -647,9 +670,12 @@ class ProcessBuilder { classpathArg(mods, tempNativePath){ let cpArgs = [] - // Add the version.jar to the classpath. - const version = this.versionData.id - cpArgs.push(path.join(this.commonDir, 'versions', version, version + '.jar')) + if(!Util.mcVersionAtLeast('1.17', this.server.getMinecraftVersion())) { + // Add the version.jar to the classpath. + // Must not be added to the classpath for Forge 1.17+. + const version = this.versionData.id + cpArgs.push(path.join(this.commonDir, 'versions', version, version + '.jar')) + } if(this.usingLiteLoader){ cpArgs.push(this.llPath) @@ -788,6 +814,15 @@ class ProcessBuilder { let libs = [] for(let sm of mdl.getSubModules()){ if(sm.getType() === DistroManager.Types.Library){ + + // TODO Add as file or something. + const x = sm.getIdentifier() + console.log(x) + if(x.includes(':universal') || x.includes(':slim') || x.includes(':extra') || x.includes(':srg') || x.includes(':client')) { + console.log('SKIPPING ' + x) + continue + } + libs.push(sm.getArtifact().getPath()) } // If this module has submodules, we need to resolve the libraries for those. diff --git a/app/assets/js/scripts/landing.js b/app/assets/js/scripts/landing.js index 30c426ae..bc80c8b7 100644 --- a/app/assets/js/scripts/landing.js +++ b/app/assets/js/scripts/landing.js @@ -265,7 +265,7 @@ function asyncSystemScan(mcVersion, launchAfter = true){ // Show this information to the user. setOverlayContent( `Aucune installation
Java compatible n'a été trouvée`, - `Vous avez besoin d'une installation 64 bits de Java 8. Souhaitez-vous que nous en installions une copie ?`, + `Vous avez besoin d'une installation 64 bits de Java 17. Souhaitez-vous que nous en installions une copie ?`, 'Installer Java', 'Installer manuellement' ) @@ -280,7 +280,7 @@ function asyncSystemScan(mcVersion, launchAfter = true){ //$('#overlayDismiss').toggle(false) setOverlayContent( 'Java est requis
pour lancer', - `Une installation x64 valide de Java 8 est requise pour le lancement.

Veuillez vous référer à notre Guide de gestion Java pour obtenir des instructions sur l'installation manuelle de Java.`, + `Une installation x64 valide de Java 17 est requise pour le lancement.

Veuillez vous référer à notre Guide de gestion Java pour obtenir des instructions sur l'installation manuelle de Java.`, 'Je comprends', 'Retour' ) diff --git a/app/settings.ejs b/app/settings.ejs index 93faff27..c03da189 100644 --- a/app/settings.ejs +++ b/app/settings.ejs @@ -215,7 +215,7 @@
Exécutable Java
-
Sélectionné : Java 8 mise à jour 172 (x64)
+
Sélectionné : Java 17 (x64)
@@ -235,7 +235,7 @@
-
L'exécutable Java est validé avant le lancement du jeu. Nécessite Java 8 x64.
Le chemin doit se terminer par bin<%= process.platform === 'win32' ? '\\javaw.exe' : '/java' %>.
+
L'exécutable Java est validé avant le lancement du jeu. Nécessite Java 17 x64.
Le chemin doit se terminer par bin<%= process.platform === 'win32' ? '\\javaw.exe' : '/java' %>.
Options JVM supplémentaires
@@ -256,7 +256,7 @@
-
Options à fournir à la JVM lors de l'exécution. -Xms et -Xmx ne devrait pas être inclus.
Options disponibles pour Java 8.
+
Options à fournir à la JVM lors de l'exécution. -Xms et -Xmx ne devrait pas être inclus.
Options disponibles pour Java 17.