Просмотр исходного кода

Merge pull request #5526 from Txt-Text/main

读取MMC整合包instance.cfg中的JvmArgs参数
龙腾猫跃 1 год назад
Родитель
Сommit
dbe09a3283
1 измененных файлов с 27 добавлено и 3 удалено
  1. 27 3
      Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb

+ 27 - 3
Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb

@@ -1,4 +1,4 @@
-Imports System.IO.Compression
+Imports System.IO.Compression
 Imports System.Linq.Expressions
 
 Public Module ModModpack
@@ -612,8 +612,21 @@ Retry:
             Try
                 Dim MMCSetupFile As String = InstallTemp & ArchiveBaseFolder & "instance.cfg"
                 If File.Exists(MMCSetupFile) Then
-                    '将其中的等号替换为冒号,以符合 ini 文件格式
-                    WriteFile(MMCSetupFile, ReadFile(MMCSetupFile).Replace("=", ":"))
+                    '部分等号替换为冒号,以符合 ini 文件格式
+                    '为JvmArgs添加排除项,防止参数中的等号被错误的替换
+                    Dim MMCSetupFileLines() As String = File.ReadAllLines(MMCSetupFile)
+                    For i As Integer = 0 To MMCSetupFileLines.Length - 1
+                        '按行读取,检查开头是否为"JvmArgs="
+                        If MMCSetupFileLines(i).StartsWith("JvmArgs=") Then
+                            '有则只替换这个等号,忽略参数部分
+                            MMCSetupFileLines(i) = "JvmArgs:" & MMCSetupFileLines(i).Substring("JvmArgs=".Length)
+                        Else
+                            '无则全部替换
+                            MMCSetupFileLines(i) = MMCSetupFileLines(i).Replace("=", ":")
+                        End If
+                    Next
+                    '修改后写回文件
+                    File.WriteAllLines(MMCSetupFile, MMCSetupFileLines)
                     If ReadIni(MMCSetupFile, "OverrideCommands", False) Then
                         Dim PreLaunchCommand As String = ReadIni(MMCSetupFile, "PreLaunchCommand")
                         If PreLaunchCommand <> "" Then
@@ -642,6 +655,17 @@ Retry:
                         CopyFile($"{InstallTemp}{ArchiveBaseFolder}{Logo}.png", $"{PathMcFolder}versions\{VersionName}\PCL\Logo.png")
                         Log($"[ModPack] 迁移 MultiMC 版本独立设置:版本图标({Logo}.png)")
                     End If
+                    'JvmArgs参数
+                    Dim JvmArgs As String = ReadIni(MMCSetupFile, "JvmArgs", "")
+                    If JvmArgs <> "" Then
+                        WriteIni(SetupFile, "VersionAdvanceJvm", JvmArgs)
+                        Log("[ModPack] 迁移 MultiMC 版本独立设置:JVM 参数:" & JvmArgs)
+                    End If
+                    '这段我看参数有就给加上了...
+                    If ReadIni(MMCSetupFile, "OverrideJavaArgs", False) Then
+                        WriteIni(SetupFile, "VersionAdvanceJavaArgs", True)
+                        Log("[ModPack] 迁移 MultiMC 版本独立设置:覆盖 JavaArgs")
+                    End If
                 End If
             Catch ex As Exception
                 Log(ex, $"读取 MMC 配置文件失败({InstallTemp}{ArchiveBaseFolder}instance.cfg)")