|
|
@@ -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){
|
|
|
@@ -648,8 +671,9 @@ class ProcessBuilder {
|
|
|
let cpArgs = []
|
|
|
|
|
|
// Add the version.jar to the classpath.
|
|
|
- const version = this.versionData.id
|
|
|
- cpArgs.push(path.join(this.commonDir, 'versions', version, version + '.jar'))
|
|
|
+ // TODO Needs to be removed for 1.17+, need to test earlier versions.
|
|
|
+ // const version = this.versionData.id
|
|
|
+ // cpArgs.push(path.join(this.commonDir, 'versions', version, version + '.jar'))
|
|
|
|
|
|
if(this.usingLiteLoader){
|
|
|
cpArgs.push(this.llPath)
|
|
|
@@ -788,6 +812,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.
|