From 2e9ca1345ccdec17cc4782b2c44df1750c43c2ef Mon Sep 17 00:00:00 2001
From: nanhuajiaren <49112307+nanhuajiaren@users.noreply.github.com>
Date: Thu, 13 Mar 2025 15:33:01 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=98=BE=E7=A4=BA=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AE=E5=8A=9F=E8=83=BD=EF=BC=8C=E9=80=9A=E8=BF=87=E5=86=99?=
=?UTF-8?q?=E5=85=A5=E6=B3=A8=E5=86=8C=E8=A1=A8=E5=B0=86MC=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AE=E4=B8=BA=E2=80=9C=E9=AB=98=E6=80=A7=E8=83=BD=E2=80=9D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Modules/Minecraft/ModLaunch.vb | 46 +++++++++++++++++++
.../Pages/PageSetup/ModSetup.vb | 1 +
.../Pages/PageSetup/PageSetupLaunch.xaml | 7 +++
.../Pages/PageSetup/PageSetupLaunch.xaml.vb | 6 ++-
4 files changed, 59 insertions(+), 1 deletion(-)
diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb
index 01b1bab..9d915ff 100644
--- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb
+++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb
@@ -128,6 +128,10 @@ Public Module ModLaunch
Loaders.Insert(3, New LoaderTask(Of Integer, Integer)("内存优化", AddressOf McLaunchMemoryOptimize) With {.ProgressWeight = 30})
Case 2 '关闭
End Select
+ '显示设置
+ If Setup.Get("LaunchGraphicSetup") Then
+ Loaders.Insert(3, New LoaderTask(Of Integer, Integer)("检查显示设置", AddressOf McLaunchCheckGraphicSettings) With {.ProgressWeight = 2})
+ End If
Dim LaunchLoader As New LoaderCombo(Of Object)("Minecraft 启动", Loaders) With {.Show = False}
If McLoginLoader.State = LoadState.Finished Then McLoginLoader.State = LoadState.Waiting '要求重启登录主加载器,它会自行决定是否启动副加载器
'等待加载器执行并更新 UI
@@ -203,6 +207,48 @@ NextInner:
#End Region
+#Region "显示设置"
+
+ Private Sub McLaunchCheckGraphicSettings(Loader As LoaderTask(Of Integer, Integer))
+ Const GPU_KEY As String = "Software\Microsoft\DirectX\UserGpuPreferences"
+ Const TARGET_SETUP As String = "GpuPreference=2;"
+ Dim javaPath As String = McLaunchJavaSelected.PathJavaw
+
+ McLaunchLog("显示设置开始")
+ '读取现行设置
+ Try
+ Dim parentKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser
+ Dim regKey As Microsoft.Win32.RegistryKey = parentKey.OpenSubKey(GPU_KEY, False)
+ If regKey IsNot Nothing Then
+ Dim currentSetting As Object = regKey.GetValue(javaPath)
+ If currentSetting IsNot Nothing And TARGET_SETUP.Equals(currentSetting.ToString()) Then
+ McLaunchLog("不需要调整显示设置")
+ Exit Sub
+ End If
+ regKey.Close()
+ End If
+ Catch ex As Exception
+ McLaunchLog("无法读取注册表,跳过显示设置")
+ Exit Sub
+ End Try
+ '更新设置
+ Try
+ If Not IsAdmin() Then RunAsAdmin("")
+ Dim parentKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser
+ Dim regKey As Microsoft.Win32.RegistryKey = parentKey.OpenSubKey(GPU_KEY, True)
+ If regKey Is Nothing Then
+ regKey = parentKey.CreateSubKey(GPU_KEY)
+ End If
+ regKey.SetValue(javaPath, TARGET_SETUP)
+ Catch ex As Exception
+ McLaunchLog("无法写入显示设置")
+ Exit Sub
+ End Try
+ McLaunchLog("已修改显示设置")
+ End Sub
+
+#End Region
+
#Region "预检测"
Private Sub McLaunchPrecheck()
diff --git a/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb b/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb
index b23290e..39a4181 100644
--- a/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb
+++ b/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb
@@ -103,6 +103,7 @@
{"LaunchAdvanceRunWait", New SetupEntry(True)},
{"LaunchAdvanceAssets", New SetupEntry(False)},
{"LaunchAdvanceJava", New SetupEntry(False)},
+ {"LaunchGraphicSetup", New SetupEntry(False)},
{"LaunchRamType", New SetupEntry(0)},
{"LaunchRamCustom", New SetupEntry(15)},
{"LinkEula", New SetupEntry(False, Source:=SetupSource.Registry)},
diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml
index 8b692a4..254aa50 100644
--- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml
+++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml
@@ -170,6 +170,13 @@
+
+
+
+
+
+
diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb
index c36c123..2b52e3a 100644
--- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb
+++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb
@@ -45,6 +45,9 @@
CType(FindName("RadioRamType" & Setup.Load("LaunchRamType")), MyRadioBox).Checked = True
SliderRamCustom.Value = Setup.Get("LaunchRamCustom")
+ '显示卡
+ CheckAdvanceGraphicSetup.Checked = Setup.Get("LaunchGraphicSetup")
+
'高级设置
TextAdvanceJvm.Text = Setup.Get("LaunchAdvanceJvm")
TextAdvanceGame.Text = Setup.Get("LaunchAdvanceGame")
@@ -83,6 +86,7 @@
Setup.Reset("LaunchAdvanceAssets")
Setup.Reset("LaunchAdvanceRun")
Setup.Reset("LaunchAdvanceRunWait")
+ Setup.Reset("LaunchGraphicSetup")
Setup.Reset("LaunchArgumentJavaAll")
Setup.Reset("LaunchArgumentJavaSelect")
@@ -110,7 +114,7 @@
Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboArgumentIndie.SelectionChanged, ComboArgumentVisibie.SelectionChanged, ComboArgumentWindowType.SelectionChanged, ComboArgumentPriority.SelectionChanged
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex)
End Sub
- Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceAssets.Change, CheckAdvanceJava.Change, CheckAdvanceRunWait.Change, CheckArgumentRam.Change
+ Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceAssets.Change, CheckAdvanceJava.Change, CheckAdvanceRunWait.Change, CheckArgumentRam.Change, CheckAdvanceGraphicSetup.Change
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked)
End Sub