Pārlūkot izejas kodu

Patches to get 1.17 working, need to revise into real solutions.

Daniel Scalzi 4 gadi atpakaļ
vecāks
revīzija
168b4431ae
2 mainītis faili ar 42 papildinājumiem un 9 dzēšanām
  1. 5 5
      app/assets/js/assetguard.js
  2. 37 4
      app/assets/js/processbuilder.js

+ 5 - 5
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.

+ 37 - 4
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){
@@ -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.