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 @@