瀏覽代碼

Add support for mod loading on Forge 1.13.

Daniel Scalzi 6 年之前
父節點
當前提交
e08c3a903a
共有 4 個文件被更改,包括 60 次插入6 次删除
  1. 20 0
      app/assets/distribution.json
  2. 38 4
      app/assets/js/processbuilder.js
  3. 1 1
      package-lock.json
  4. 1 1
      package.json

+ 20 - 0
app/assets/distribution.json

@@ -1547,6 +1547,26 @@
                         }
                         
                     ]
+                },
+                {
+                    "id": "squeek:appleskin:1.0.9",
+                    "name": "AppleSkin (test mod)",
+                    "type": "ForgeMod",
+                    "artifact": {
+                        "size": 26613,
+                         "MD5": "ada2e02e0cc3267f5d927805332c4c8b",
+                        "url": ""
+                    }
+                },
+                {
+                    "id": "com.blamejared:controlling:4.0.1",
+                    "name": "Controlling (Test Mod)",
+                    "type": "ForgeMod",
+                    "artifact": {
+                        "size": 34914,
+                         "MD5": "b4dc10b9039518ce00845ca962e6a136",
+                        "url": ""
+                    }
                 }
             ]
         }

+ 38 - 4
app/assets/js/processbuilder.js

@@ -41,12 +41,21 @@ class ProcessBuilder {
         this.setupLiteLoader()
         logger.log('Using liteloader:', this.usingLiteLoader)
         const modObj = this.resolveModConfiguration(ConfigManager.getModConfiguration(this.server.getID()).mods, this.server.getModules())
-        this.constructModList('forge', modObj.fMods, true)
-        if(this.usingLiteLoader){
-            this.constructModList('liteloader', modObj.lMods, true)
+        
+        // Mod list below 1.13
+        if(!AssetGuard.mcVersionAtLeast('1.13', this.server.getMinecraftVersion())){
+            this.constructModList('forge', modObj.fMods, true)
+            if(this.usingLiteLoader){
+                this.constructModList('liteloader', modObj.lMods, true)
+            }
         }
+        
         const uberModArr = modObj.fMods.concat(modObj.lMods)
-        const args = this.constructJVMArguments(uberModArr, tempNativePath)
+        let args = this.constructJVMArguments(uberModArr, tempNativePath)
+
+        if(AssetGuard.mcVersionAtLeast('1.13', this.server.getMinecraftVersion())){
+            args = args.concat(this.constructModArguments(modObj.fMods))
+        }
 
         logger.log('Launch Arguments:', args)
 
@@ -233,6 +242,29 @@ 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 argument array that will be passed to the JVM process.
      * 
@@ -300,6 +332,8 @@ class ProcessBuilder {
         // JVM Arguments First
         let args = this.versionData.arguments.jvm
 
+        //args.push('-Dlog4j.configurationFile=D:\\WesterosCraft\\game\\common\\assets\\log_configs\\client-1.12.xml')
+
         // Java Arguments
         if(process.platform === 'darwin'){
             args.push('-Xdock:name=WesterosCraft')

+ 1 - 1
package-lock.json

@@ -1,6 +1,6 @@
 {
   "name": "westeroscraftlauncher",
-  "version": "1.5.2",
+  "version": "1.6.0",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "westeroscraftlauncher",
-  "version": "1.5.2",
+  "version": "1.6.0",
   "productName": "WesterosCraft Launcher",
   "description": "Modded Minecraft Launcher",
   "author": "Daniel Scalzi (https://github.com/dscalzi/)",