Bladeren bron

Use --fml.modLists instead of --fml.mods to avoid potential cli length limit issues.

Daniel Scalzi 5 jaren geleden
bovenliggende
commit
cc86f2a257
3 gewijzigde bestanden met toevoegingen van 41 en 15 verwijderingen
  1. 37 11
      app/assets/js/processbuilder.js
  2. 3 3
      package-lock.json
  3. 1 1
      package.json

+ 37 - 11
app/assets/js/processbuilder.js

@@ -23,6 +23,7 @@ class ProcessBuilder {
         this.forgeData = forgeData
         this.authUser = authUser
         this.launcherVersion = launcherVersion
+        this.forgeModListFile = path.join(this.gameDir, 'forgeMods.list') // 1.13+
         this.fmlDir = path.join(this.gameDir, 'forgeModList.json')
         this.llDir = path.join(this.gameDir, 'liteloaderModList.json')
         this.libPath = path.join(this.commonDir, 'libraries')
@@ -44,9 +45,9 @@ class ProcessBuilder {
         
         // Mod list below 1.13
         if(!Util.mcVersionAtLeast('1.13', this.server.getMinecraftVersion())){
-            this.constructModList('forge', modObj.fMods, true)
+            this.constructJSONModList('forge', modObj.fMods, true)
             if(this.usingLiteLoader){
-                this.constructModList('liteloader', modObj.lMods, true)
+                this.constructJSONModList('liteloader', modObj.lMods, true)
             }
         }
         
@@ -54,7 +55,8 @@ class ProcessBuilder {
         let args = this.constructJVMArguments(uberModArr, tempNativePath)
 
         if(Util.mcVersionAtLeast('1.13', this.server.getMinecraftVersion())){
-            args = args.concat(this.constructModArguments(modObj.fMods))
+            //args = args.concat(this.constructModArguments(modObj.fMods))
+            args = args.concat(this.constructModList(modObj.fMods))
         }
 
         logger.log('Launch Arguments:', args)
@@ -224,7 +226,7 @@ class ProcessBuilder {
      * @param {Array.<Object>} mods An array of mods to add to the mod list.
      * @param {boolean} save Optional. Whether or not we should save the mod list file.
      */
-    constructModList(type, mods, save = false){
+    constructJSONModList(type, mods, save = false){
         const modList = {
             repositoryRoot: ((type === 'forge' && this._requiresAbsolute()) ? 'absolute:' : '') + path.join(this.commonDir, 'modstore')
         }
@@ -249,27 +251,51 @@ class ProcessBuilder {
         return modList
     }
 
+    // /**
+    //  * Construct the mod argument list for forge 1.13
+    //  * 
+    //  * @param {Array.<Object>} mods An array of mods to add to the mod list.
+    //  */
+    // constructModArguments(mods){
+    //     const argStr = mods.map(mod => {
+    //         return mod.getExtensionlessID()
+    //     }).join(',')
+
+    //     if(argStr){
+    //         return [
+    //             '--fml.mavenRoots',
+    //             path.join('..', '..', 'common', 'modstore'),
+    //             '--fml.mods',
+    //             argStr
+    //         ]
+    //     } else {
+    //         return []
+    //     }
+        
+    // }
+
     /**
      * Construct the mod argument list for forge 1.13
      * 
      * @param {Array.<Object>} mods An array of mods to add to the mod list.
      */
-    constructModArguments(mods){
-        const argStr = mods.map(mod => {
+    constructModList(mods) {
+        const writeBuffer = mods.map(mod => {
             return mod.getExtensionlessID()
-        }).join(',')
+        }).join('\n')
 
-        if(argStr){
+        if(writeBuffer) {
+            fs.writeFileSync(this.forgeModListFile, writeBuffer, 'UTF-8')
             return [
                 '--fml.mavenRoots',
                 path.join('..', '..', 'common', 'modstore'),
-                '--fml.mods',
-                argStr
+                '--fml.modLists',
+                this.forgeModListFile
             ]
         } else {
             return []
         }
-        
+
     }
 
     _processAutoConnectArg(args){

+ 3 - 3
package-lock.json

@@ -1000,9 +1000,9 @@
       }
     },
     "electron": {
-      "version": "9.2.1",
-      "resolved": "https://registry.npmjs.org/electron/-/electron-9.2.1.tgz",
-      "integrity": "sha512-ZsetaQjXB8+9/EFW1FnfK4ukpkwXCxMEaiKiUZhZ0ZLFlLnFCpe0Bg4vdDf7e4boWGcnlgN1jAJpBw7w0eXuqA==",
+      "version": "9.3.0",
+      "resolved": "https://registry.npmjs.org/electron/-/electron-9.3.0.tgz",
+      "integrity": "sha512-7zPLEZ+kOjVJqfawMQ0vVuZZRqvZIeiID3tbjjbVybbxXIlFMpZ2jogoh7PV3rLrtm+dKRfu7Qc4E7ob1d0FqQ==",
       "dev": true,
       "requires": {
         "@electron/get": "^1.0.1",

+ 1 - 1
package.json

@@ -41,7 +41,7 @@
   },
   "devDependencies": {
     "cross-env": "^7.0.2",
-    "electron": "^9.2.1",
+    "electron": "^9.3.0",
     "electron-builder": "^22.8.0",
     "eslint": "^7.8.1"
   },