diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 14edb8a09..fc90ca1fd 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -119,10 +119,17 @@ Public Module ModLaunch '内存优化 Select Case Setup.Get("VersionRamOptimize", Version:=McVersionCurrent) Case 0 '全局 - If Setup.Get("LaunchArgumentRam") Then '使用全局设置 - CType(Loaders(2), LoaderCombo(Of String)).Block = False - Loaders.Insert(3, New LoaderTask(Of Integer, Integer)("内存优化", AddressOf McLaunchMemoryOptimize) With {.ProgressWeight = 30}) - End If + Select Case Setup.Get("LaunchArgumentRam") '使用全局设置 + Case 0 '关闭 + Case 1 '优化可安装 Mod 的版本 + If McVersionCurrent.Modable Then + CType(Loaders(2), LoaderCombo(Of String)).Block = False + Loaders.Insert(3, New LoaderTask(Of Integer, Integer)("内存优化", AddressOf McLaunchMemoryOptimize) With {.ProgressWeight = 30}) + End If + Case 2 '优化所有版本 + CType(Loaders(2), LoaderCombo(Of String)).Block = False + Loaders.Insert(3, New LoaderTask(Of Integer, Integer)("内存优化", AddressOf McLaunchMemoryOptimize) With {.ProgressWeight = 30}) + End Select Case 1 '开启 CType(Loaders(2), LoaderCombo(Of String)).Block = False Loaders.Insert(3, New LoaderTask(Of Integer, Integer)("内存优化", AddressOf McLaunchMemoryOptimize) With {.ProgressWeight = 30}) @@ -504,6 +511,7 @@ NextInner: End Sub #End Region + #Region "分方式登录模块" '各个登录方式的主对象与输入构造 diff --git a/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb b/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb index 28fcd3dff..a97b1a93b 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb @@ -100,7 +100,7 @@ {"LaunchArgumentWindowWidth", New SetupEntry(854)}, {"LaunchArgumentWindowHeight", New SetupEntry(480)}, {"LaunchArgumentWindowType", New SetupEntry(1)}, - {"LaunchArgumentRam", New SetupEntry(False, Source:=SetupSource.Registry)}, + {"LaunchArgumentRam", New SetupEntry(0, Source:=SetupSource.Registry)}, {"LaunchAdvanceJvm", New SetupEntry("-XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Djdk.lang.Process.allowAmbiguousCommands=true -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true")}, {"LaunchAdvanceGame", New SetupEntry("")}, {"LaunchAdvanceRun", New SetupEntry("")}, diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml index 1416b8395..93777e356 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml @@ -135,9 +135,12 @@ ToolTip="根据安装的 Mod 量与电脑剩余内存,动态调整为游戏分配的内存" ToolTipService.Placement="Right" ToolTipService.HorizontalOffset="-10" ToolTipService.VerticalOffset="-3" /> - + + + + + + diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb index cf7f5981e..44552bb54 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb @@ -43,7 +43,7 @@ ComboArgumentWindowType.SelectedIndex = Setup.Get("LaunchArgumentWindowType") TextArgumentWindowWidth.Text = Setup.Get("LaunchArgumentWindowWidth") TextArgumentWindowHeight.Text = Setup.Get("LaunchArgumentWindowHeight") - CheckArgumentRam.Checked = Setup.Get("LaunchArgumentRam") + ComboArgumentRam.SelectedIndex = Setup.Get("LaunchArgumentRam") RefreshJavaComboBox() '游戏内存 @@ -111,10 +111,10 @@ Private Shared Sub SliderChange(sender As MySlider, e As Object) Handles SliderRamCustom.Change If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Value) End Sub - Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboArgumentIndieV2.SelectionChanged, ComboArgumentVisibie.SelectionChanged, ComboArgumentWindowType.SelectionChanged, ComboArgumentPriority.SelectionChanged + Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboArgumentIndieV2.SelectionChanged, ComboArgumentVisibie.SelectionChanged, ComboArgumentWindowType.SelectionChanged, ComboArgumentPriority.SelectionChanged, ComboArgumentRam.SelectionChanged If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex) End Sub - Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceRunWait.Change, CheckArgumentRam.Change, CheckAdvanceDisableJLW.Change, CheckAdvanceGraphicCard.Change + Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceRunWait.Change, CheckAdvanceDisableJLW.Change, CheckAdvanceGraphicCard.Change If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked) End Sub @@ -542,14 +542,14 @@ PreFin: End Sub '开启自动内存优化的警告 - Private Sub CheckArgumentRam_Change() Handles CheckArgumentRam.Change + Private Sub ComboArgumentRam_Change() Handles ComboArgumentRam.SelectionChanged If AniControlEnabled <> 0 Then Return - If Not CheckArgumentRam.Checked Then Return + If ComboArgumentRam.SelectedIndex = 0 Then Return If MyMsgBox("内存优化会显著延长启动耗时,建议仅在内存不足时开启。" & vbCrLf & "如果你在使用机械硬盘,这还可能导致一小段时间的严重卡顿。" & If(IsAdmin(), "", $"{vbCrLf}{vbCrLf}每次启动游戏,PCL 都需要申请管理员权限以进行内存优化。{vbCrLf}若想自动授予权限,可以右键 PCL,打开 属性 → 兼容性 → 以管理员身份运行此程序。"), "提醒", "确定", "取消") = 2 Then - CheckArgumentRam.Checked = False + ComboArgumentRam.SelectedIndex = 0 End If End Sub