From 9786a447ca1ba55f90d58118acf4f6c4c1357e04 Mon Sep 17 00:00:00 2001 From: tangge233 Date: Sat, 26 Oct 2024 11:50:08 +0800 Subject: [PATCH 01/21] =?UTF-8?q?chore:=20=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plain Craft Launcher 2/Modules/ModMusic.vb | 80 +++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/Plain Craft Launcher 2/Modules/ModMusic.vb b/Plain Craft Launcher 2/Modules/ModMusic.vb index 52a87a8..da27e44 100644 --- a/Plain Craft Launcher 2/Modules/ModMusic.vb +++ b/Plain Craft Launcher 2/Modules/ModMusic.vb @@ -1,4 +1,7 @@ -Public Module ModMusic +Imports NAudio.CoreAudioApi +Imports NAudio.CoreAudioApi.Interfaces + +Public Module ModMusic #Region "播放列表" @@ -248,6 +251,8 @@ ''' Private MusicCurrent As String = "" + Dim deviceHandler As New AudioDeviceChangeHandler + ''' ''' 在 MusicUuid 不变的前提下,持续播放某地址的音乐,且在播放结束后随机播放下一曲。 ''' @@ -305,4 +310,77 @@ End Try End Sub + Public Class AudioDeviceChangeHandler + Implements Interfaces.IMMNotificationClient + Private deviceWatcher As MMDeviceEnumerator + Private callback As IMMNotificationClient + + Public Sub New() + ' 初始化音频设备枚举器 + deviceWatcher = New MMDeviceEnumerator() + ' 创建设备通知回调对象 + callback = New DeviceNotificationClient(Me) + ' 注册回调以接收音频设备更改通知 + deviceWatcher.RegisterEndpointNotificationCallback(callback) + End Sub + + ' 实现IMMNotificationClient接口的方法以处理设备更改事件 + Public Sub OnDefaultDeviceChanged(dataFlow As DataFlow, role As Role, defaultDeviceId As String) Implements IMMNotificationClient.OnDefaultDeviceChanged + ' 处理默认音频设备更改事件 + If MusicNAudio Is Nothing Then Exit Sub + CType(MusicNAudio, NAudio.Wave.WaveOut).DeviceNumber = 0 + End Sub + + Public Sub OnDeviceAdded(deviceId As String) Implements IMMNotificationClient.OnDeviceAdded + ' 处理音频设备添加事件 + If MusicNAudio Is Nothing Then Exit Sub + CType(MusicNAudio, NAudio.Wave.WaveOut).DeviceNumber = 0 + End Sub + + Public Sub OnDeviceRemoved(deviceId As String) Implements IMMNotificationClient.OnDeviceRemoved + ' 处理音频设备移除事件 + If MusicNAudio Is Nothing Then Exit Sub + CType(MusicNAudio, NAudio.Wave.WaveOut).DeviceNumber = 0 + End Sub + + Public Sub OnDeviceStateChanged(deviceId As String, newState As DeviceState) Implements IMMNotificationClient.OnDeviceStateChanged + ' 处理音频设备状态更改事件 + End Sub + + Public Sub OnPropertyValueChanged(deviceId As String, key As PropertyKey) Implements IMMNotificationClient.OnPropertyValueChanged + ' 处理音频设备属性值更改事件 + End Sub + End Class + + ' 实现IMMNotificationClient接口的类 + Friend Class DeviceNotificationClient + Implements IMMNotificationClient + + Private container As AudioDeviceChangeHandler + + Public Sub New(container As AudioDeviceChangeHandler) + Me.container = container + End Sub + + Public Sub OnDefaultDeviceChanged(dataFlow As DataFlow, role As Role, defaultDeviceId As String) Implements IMMNotificationClient.OnDefaultDeviceChanged + container.OnDefaultDeviceChanged(dataFlow, role, defaultDeviceId) + End Sub + + Public Sub OnDeviceAdded(deviceId As String) Implements IMMNotificationClient.OnDeviceAdded + container.OnDeviceAdded(deviceId) + End Sub + + Public Sub OnDeviceRemoved(deviceId As String) Implements IMMNotificationClient.OnDeviceRemoved + container.OnDeviceRemoved(deviceId) + End Sub + + Public Sub OnDeviceStateChanged(deviceId As String, newState As DeviceState) Implements IMMNotificationClient.OnDeviceStateChanged + container.OnDeviceStateChanged(deviceId, newState) + End Sub + + Public Sub OnPropertyValueChanged(deviceId As String, key As PropertyKey) Implements IMMNotificationClient.OnPropertyValueChanged + container.OnPropertyValueChanged(deviceId, key) + End Sub + End Class + End Module From 7dff62aebfc2f6405255f7c7682ce26b408295fa Mon Sep 17 00:00:00 2001 From: tangge233 Date: Mon, 13 Jan 2025 21:46:12 +0800 Subject: [PATCH 02/21] feat: output device change --- Plain Craft Launcher 2/Modules/ModMusic.vb | 93 ++++++++++++---------- 1 file changed, 50 insertions(+), 43 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/ModMusic.vb b/Plain Craft Launcher 2/Modules/ModMusic.vb index 12de669..b368691 100644 --- a/Plain Craft Launcher 2/Modules/ModMusic.vb +++ b/Plain Craft Launcher 2/Modules/ModMusic.vb @@ -69,44 +69,44 @@ Public Module ModMusic ''' Private Sub MusicRefreshUI() RunInUi( - Sub() - Try + Sub() + Try - If Not MusicAllList.Any() Then - '无背景音乐 - FrmMain.BtnExtraMusic.Show = False - Else - '有背景音乐 - FrmMain.BtnExtraMusic.Show = True - Dim ToolTipText As String - If MusicState = MusicStates.Pause Then - FrmMain.BtnExtraMusic.Logo = Logo.IconPlay - FrmMain.BtnExtraMusic.LogoScale = 0.8 - ToolTipText = "已暂停:" & GetFileNameWithoutExtentionFromPath(MusicCurrent) - If MusicAllList.Count > 1 Then - ToolTipText += vbCrLf & "左键恢复播放,右键播放下一曲。" - Else - ToolTipText += vbCrLf & "左键恢复播放,右键重新从头播放。" - End If + If Not MusicAllList.Any() Then + '无背景音乐 + FrmMain.BtnExtraMusic.Show = False Else - FrmMain.BtnExtraMusic.Logo = Logo.IconMusic - FrmMain.BtnExtraMusic.LogoScale = 1 - ToolTipText = "正在播放:" & GetFileNameWithoutExtentionFromPath(MusicCurrent) - If MusicAllList.Count > 1 Then - ToolTipText += vbCrLf & "左键暂停,右键播放下一曲。" + '有背景音乐 + FrmMain.BtnExtraMusic.Show = True + Dim ToolTipText As String + If MusicState = MusicStates.Pause Then + FrmMain.BtnExtraMusic.Logo = Logo.IconPlay + FrmMain.BtnExtraMusic.LogoScale = 0.8 + ToolTipText = "已暂停:" & GetFileNameWithoutExtentionFromPath(MusicCurrent) + If MusicAllList.Count > 1 Then + ToolTipText += vbCrLf & "左键恢复播放,右键播放下一曲。" + Else + ToolTipText += vbCrLf & "左键恢复播放,右键重新从头播放。" + End If Else - ToolTipText += vbCrLf & "左键暂停,右键重新从头播放。" + FrmMain.BtnExtraMusic.Logo = Logo.IconMusic + FrmMain.BtnExtraMusic.LogoScale = 1 + ToolTipText = "正在播放:" & GetFileNameWithoutExtentionFromPath(MusicCurrent) + If MusicAllList.Count > 1 Then + ToolTipText += vbCrLf & "左键暂停,右键播放下一曲。" + Else + ToolTipText += vbCrLf & "左键暂停,右键重新从头播放。" + End If End If + FrmMain.BtnExtraMusic.ToolTip = ToolTipText + ToolTipService.SetVerticalOffset(FrmMain.BtnExtraMusic, If(ToolTipText.Contains(vbLf), 10, 16)) End If - FrmMain.BtnExtraMusic.ToolTip = ToolTipText - ToolTipService.SetVerticalOffset(FrmMain.BtnExtraMusic, If(ToolTipText.Contains(vbLf), 10, 16)) - End If - If FrmSetupUI IsNot Nothing Then FrmSetupUI.MusicRefreshUI() + If FrmSetupUI IsNot Nothing Then FrmSetupUI.MusicRefreshUI() - Catch ex As Exception - Log(ex, "刷新背景音乐 UI 失败", LogLevel.Feedback) - End Try - End Sub) + Catch ex As Exception + Log(ex, "刷新背景音乐 UI 失败", LogLevel.Feedback) + End Try + End Sub) End Sub ''' @@ -226,11 +226,11 @@ Public Module ModMusic Public Function MusicPause() As Boolean If MusicState = MusicStates.Play Then RunInThread( - Sub() - Log("[Music] 已暂停播放") - MusicNAudio?.Pause() - MusicRefreshUI() - End Sub) + Sub() + Log("[Music] 已暂停播放") + MusicNAudio?.Pause() + MusicRefreshUI() + End Sub) Return True Else Log($"[Music] 无需暂停播放,当前状态为 {MusicState}") @@ -246,11 +246,11 @@ Public Module ModMusic Return False Else RunInThread( - Sub() - Log("[Music] 已恢复播放") - MusicNAudio?.Play() - MusicRefreshUI() - End Sub) + Sub() + Log("[Music] 已恢复播放") + MusicNAudio?.Play() + MusicRefreshUI() + End Sub) Return True End If End Function @@ -308,7 +308,7 @@ Public Module ModMusic If ex.Message.Contains("Got a frame at sample rate") OrElse ex.Message.Contains("does not support changes to") Then Hint("播放音乐失败(" & GetFileNameFromPath(MusicCurrent) & "):PCL 不支持播放音频属性在中途发生变化的音乐", HintType.Critical) ElseIf Not (MusicCurrent.EndsWithF(".wav", True) OrElse MusicCurrent.EndsWithF(".mp3", True) OrElse MusicCurrent.EndsWithF(".flac", True)) OrElse - ex.Message.Contains("0xC00D36C4") Then '#5096:不支持给定的 URL 的字节流类型。 (异常来自 HRESULT:0xC00D36C4) + ex.Message.Contains("0xC00D36C4") Then '#5096:不支持给定的 URL 的字节流类型。 (异常来自 HRESULT:0xC00D36C4) Hint("播放音乐失败(" & GetFileNameFromPath(MusicCurrent) & "):PCL 可能不支持此音乐格式,请将格式转换为 .wav、.mp3 或 .flac 后再试", HintType.Critical) Else Log(ex, "播放音乐失败(" & GetFileNameFromPath(MusicCurrent) & ")", LogLevel.Hint) @@ -385,6 +385,13 @@ Public Module ModMusic Public Sub OnDefaultDeviceChanged(dataFlow As DataFlow, role As Role, defaultDeviceId As String) Implements IMMNotificationClient.OnDefaultDeviceChanged container.OnDefaultDeviceChanged(dataFlow, role, defaultDeviceId) + ' 切换到系统默认输出设备 + If MusicNAudio IsNot Nothing Then + Dim target As NAudio.Wave.WaveOut = MusicNAudio + target.Stop() + target.DeviceNumber = 0 + target.Resume() + End If End Sub Public Sub OnDeviceAdded(deviceId As String) Implements IMMNotificationClient.OnDeviceAdded From e973b1174b019409bfd45d62cbb77f7e0a86de85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=84=E5=A5=9A=E6=A2=A6=E7=81=B5?= <188181427+shimoranla@users.noreply.github.com> Date: Tue, 4 Mar 2025 12:32:23 +0800 Subject: [PATCH 03/21] =?UTF-8?q?fix(McInstallLoader):=E5=A7=8B=E7=BB=88?= =?UTF-8?q?=E5=B0=86=20OptiFine=20=E4=BD=9C=E4=B8=BA=20Mod=20=E5=AE=89?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb index 2875dbd..c0883a6 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb @@ -2087,8 +2087,8 @@ Retry: '判断 OptiFine 是否作为 Mod 进行下载 Dim MinecraftCode As Integer = If(Request.MinecraftName.Contains("."), Val(Request.MinecraftName.Split(".")(1)), 0) Dim OptiFineAsMod As Boolean = Request.OptiFineEntry IsNot Nothing AndAlso '1. 选择了 OptiFine - (Request.FabricVersion IsNot Nothing OrElse '2. 选择了 Fabric... - (Request.ForgeEntry IsNot Nothing AndAlso MinecraftCode >= 14 AndAlso MinecraftCode <= 15)) '...或者 Forge 1.14~15(#4134) + Request.FabricVersion IsNot Nothing OrElse '2. 选择了 Mod 加载器 + Request.ForgeEntry IsNot Nothing Dim ModsFolder As String = New McVersion(OutputFolder).GetPathIndie(True) & "mods\" If OptiFineAsMod Then From 60d14e8594a21ad1baabc061ce40d07ded5cc9c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=84=E5=A5=9A=E6=A2=A6=E7=81=B5?= <188181427+shimoranla@users.noreply.github.com> Date: Wed, 5 Mar 2025 13:57:09 +0800 Subject: [PATCH 04/21] =?UTF-8?q?feat(setup):=E5=85=81=E8=AE=B8=E7=A6=81?= =?UTF-8?q?=E7=94=A8=20jlw?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/Minecraft/ModLaunch.vb | 54 ++++++++++++++++--- .../Pages/PageSetup/ModSetup.vb | 6 +++ .../Pages/PageSetup/PageSetupLaunch.xaml | 2 + .../Pages/PageSetup/PageSetupLaunch.xaml.vb | 4 +- .../PageVersion/PageVersionSetup.xaml.vb | 5 +- 5 files changed, 62 insertions(+), 9 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 01b1bab..fb2b431 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -735,6 +735,45 @@ LoginFinish: Try Dim NeedRefresh As Boolean = False McLaunchLog("登录开始(Login, " & Data.Input.Token & ")") + If Not Data.Input.BaseUrl = Setup.Get("DisableAuthWarningBaseUrl") Then + Setup.Set($"DisableAuthHttpWarning", False) + Setup.Set("DisableCertCheckWarning", False) + End If + If Data.Input.BaseUrl.StartsWithF("http://") AndAlso Setup.Get($"Disable{Data.Input.Token}HttpWarning") = "False" Then + Select Case MyMsgBox( + Caption:=$"当前正在使用不安全的 HTTP 协议,这将增加账号被盗的风险!{vbCrLf}如果没有特殊需求,建议使用更安全的 HTTPS 协议。", + Title:="账号安全警告", + IsWarn:=True, + Button2:="不再显示", + Button1:="取消登录", + Button3:="取消登录") + + Case 1 + RunInUi(AddressOf PageLoginAuthSkin.ExitLogin) + Return False + Case 2 + Setup.Set($"DisableAuthHttpWarning", True) + Setup.Set($"DisableAuthWarningBaseUrl", Data.Input.BaseUrl) + Case 3 + RunInUi(AddressOf PageLoginAuthSkin.ExitLogin) + Return False + End Select + ElseIf Data.Input.BaseUrl.StartsWithF("https://") AndAlso + Setup.Get("DisableCertCheckWarning") = False AndAlso + Setup.Get("ToolDownloadCert") = False Then + Select Case MyMsgBox( + Caption:=$"本次登录未启用 SSL 证书校验,这将增加账号被盗的风险!{vbCrLf}如果没有特殊需求,建议始终启用 SSL 证书校验。{vbCrLf}可在 [设置 → 启动器] 中勾选 [验证 SSL 证书]", + Title:="账号安全提示", + IsWarn:=False, + Button1:="不再显示", + Button2:="取消登录") + Case 1 + Setup.Set("DisableCertCheckWarning", True) + Case 2 + RunInUi(AddressOf PageLoginAuthSkin.ExitLogin) + Return False + End Select + End If Dim RequestData As New JObject( New JProperty("agent", New JObject(New JProperty("name", "Minecraft"), New JProperty("version", 1))), New JProperty("username", Data.Input.UserName), @@ -1421,9 +1460,11 @@ Retry: '添加 Java Wrapper 作为主 Jar If McLaunchJavaSelected.VersionCode >= 9 Then DataList.Add("--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED") - DataList.Add("-Doolloo.jlw.tmpdir=""" & PathPure.TrimEnd("\") & """") - DataList.Add("-jar """ & ExtractJavaWrapper() & """") - + If Setup.Get("VersionAdvanceUseLaunchWrapperV2", Version) OrElse Setup.Get("LaunchAdvanceUseLaunchWrapper") Then + DataList.Add("-Doolloo.jlw.tmpdir=""" & PathPure.TrimEnd("\") & """") + DataList.Add("-jar """ & ExtractJavaWrapper() & """") + End If + Log(DataList.ToString, LogLevel.Normal) '添加 MainClass If Version.JsonObject("mainClass") Is Nothing Then Throw New Exception("版本 json 中没有 mainClass 项!") @@ -1488,9 +1529,10 @@ NextVersion: '添加 Java Wrapper 作为主 Jar If McLaunchJavaSelected.VersionCode >= 9 Then DataList.Add("--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED") - DataList.Add("-Doolloo.jlw.tmpdir=""" & PathPure.TrimEnd("\") & """") - DataList.Add("-jar """ & ExtractJavaWrapper() & """") - + If Setup.Get("VersionAdvanceUseLaunchWrapperV2", Version) OrElse Setup.Get("LaunchAdvanceUseLaunchWrapper") Then + DataList.Add("-Doolloo.jlw.tmpdir=""" & PathPure.TrimEnd("\") & """") + DataList.Add("-jar """ & ExtractJavaWrapper() & """") + End If '将 "-XXX" 与后面 "XXX" 合并到一起 '如果不合并,会导致 Forge 1.17 启动无效,它有两个 --add-exports,进一步导致其中一个在后面被去重 Dim DeDuplicateDataList As New List(Of String) diff --git a/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb b/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb index b23290e..e8d5393 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb @@ -39,11 +39,15 @@ {"SystemSystemCache", New SetupEntry("", Source:=SetupSource.Registry)}, {"SystemSystemUpdate", New SetupEntry(0)}, {"SystemSystemActivity", New SetupEntry(0)}, + {"SystemCreateMojangPath", New SetupEntry(False, Source:=SetupSource.Registry)}, {"CacheExportConfig", New SetupEntry("", Source:=SetupSource.Registry)}, {"CacheSavedPageUrl", New SetupEntry("", Source:=SetupSource.Registry)}, {"CacheSavedPageVersion", New SetupEntry("", Source:=SetupSource.Registry)}, {"CacheMsOAuthRefresh", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, {"CacheMsAccess", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, + {"DisableAuthHttpWarning", New SetupEntry(False, Source:=SetupSource.Registry)}, + {"DisableAuthWarningBaseUrl", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, + {"DisableCertCheckWarning", New SetupEntry(False, Source:=SetupSource.Registry)}, {"CacheMsProfileJson", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, {"CacheMsUuid", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, {"CacheMsName", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, @@ -102,6 +106,7 @@ {"LaunchAdvanceRun", New SetupEntry("")}, {"LaunchAdvanceRunWait", New SetupEntry(True)}, {"LaunchAdvanceAssets", New SetupEntry(False)}, + {"LaunchAdvanceUseLaunchWrapper", New SetupEntry(True)}, {"LaunchAdvanceJava", New SetupEntry(False)}, {"LaunchRamType", New SetupEntry(0)}, {"LaunchRamCustom", New SetupEntry(15)}, @@ -171,6 +176,7 @@ {"VersionAdvanceGame", New SetupEntry("", Source:=SetupSource.Version)}, {"VersionAdvanceAssets", New SetupEntry(0, Source:=SetupSource.Version)}, {"VersionAdvanceAssetsV2", New SetupEntry(False, Source:=SetupSource.Version)}, + {"VersionAdvanceUseLaunchWrapperV2", New SetupEntry(True, Source:=SetupSource.Version)}, {"VersionAdvanceJava", New SetupEntry(False, Source:=SetupSource.Version)}, {"VersionAdvanceRun", New SetupEntry("", Source:=SetupSource.Version)}, {"VersionAdvanceRunWait", New SetupEntry(True, Source:=SetupSource.Version)}, diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml index 8b692a4..a2d8278 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml @@ -252,6 +252,8 @@ ToolTip="警告:强烈推荐在版本设置中关闭特定版本的警告,而不是在这里关闭所有版本的警告! 如果在设置中手动选择了与当前版本不兼容的 Java,则自动跳过兼容性警告弹窗,强制使用手动选择的 Java。" /> + diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb index c36c123..e751e2d 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb @@ -52,6 +52,7 @@ CheckAdvanceRunWait.Checked = Setup.Get("LaunchAdvanceRunWait") CheckAdvanceAssets.Checked = Setup.Get("LaunchAdvanceAssets") CheckAdvanceJava.Checked = Setup.Get("LaunchAdvanceJava") + CheckAdvanceUseLaunchWrapper.Checked = Setup.Get("LaunchAdvanceUseLaunchWrapper") Catch ex As NullReferenceException Log(ex, "启动设置项存在异常,已被自动重置", LogLevel.Msgbox) @@ -78,6 +79,7 @@ Setup.Reset("LaunchSkinType") Setup.Reset("LaunchSkinID") Setup.Reset("LaunchAdvanceJvm") + Setup.Reset("LaunchAdvanceUseLaunchWrapper") Setup.Reset("LaunchAdvanceGame") Setup.Reset("LaunchAdvanceJava") Setup.Reset("LaunchAdvanceAssets") @@ -110,7 +112,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, CheckAdvanceUseLaunchWrapper.Change If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked) End Sub diff --git a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb index f7a23c0..4521150 100644 --- a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb @@ -74,6 +74,7 @@ Setup.Set("VersionAdvanceAssetsV2", True, Version:=PageVersionLeft.Version) End If CheckAdvanceAssetsV2.Checked = Setup.Get("VersionAdvanceAssetsV2", Version:=PageVersionLeft.Version) + CheckAdvanceUseLaunchWrapperV2.Checked = Setup.Get("VersionAdvanceUseLaunchWrapperV2", Version:=PageVersionLeft.Version) CheckAdvanceJava.Checked = Setup.Get("VersionAdvanceJava", Version:=PageVersionLeft.Version) Catch ex As Exception @@ -104,7 +105,7 @@ Setup.Reset("VersionAdvanceJava", Version:=PageVersionLeft.Version) Setup.Reset("VersionAdvanceRun", Version:=PageVersionLeft.Version) Setup.Reset("VersionAdvanceRunWait", Version:=PageVersionLeft.Version) - + Setup.Reset("VersionAdvanceUseLaunchWrapperV2", Version:=PageVersionLeft.Version) Setup.Reset("VersionArgumentJavaSelect", Version:=PageVersionLeft.Version) JavaSearchLoader.Start(IsForceRestart:=True) @@ -135,7 +136,7 @@ Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboArgumentIndie.SelectionChanged, ComboRamOptimize.SelectionChanged If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex, Version:=PageVersionLeft.Version) End Sub - Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceRunWait.Change, CheckAdvanceAssetsV2.Change, CheckAdvanceJava.Change + Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceRunWait.Change, CheckAdvanceAssetsV2.Change, CheckAdvanceJava.Change, CheckAdvanceUseLaunchWrapperV2.Change If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked, Version:=PageVersionLeft.Version) End Sub From c24fb4ee6a9cf9f795357ced193fbc711a8bfa71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=84=E5=A5=9A=E6=A2=A6=E7=81=B5?= <188181427+shimoranla@users.noreply.github.com> Date: Wed, 5 Mar 2025 18:23:35 +0800 Subject: [PATCH 05/21] =?UTF-8?q?fix(ModLaunch):=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E5=AF=BC=E8=87=B4=E7=89=88=E6=9C=AC=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=E4=BD=BF=E7=94=A8=20JLW=20=E9=80=89=E9=A1=B9?= =?UTF-8?q?=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index fb2b431..7113826 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -1460,7 +1460,7 @@ Retry: '添加 Java Wrapper 作为主 Jar If McLaunchJavaSelected.VersionCode >= 9 Then DataList.Add("--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED") - If Setup.Get("VersionAdvanceUseLaunchWrapperV2", Version) OrElse Setup.Get("LaunchAdvanceUseLaunchWrapper") Then + If Setup.Get("VersionAdvanceUseLaunchWrapperV2", Version) AndAlso Setup.Get("LaunchAdvanceUseLaunchWrapper") Then DataList.Add("-Doolloo.jlw.tmpdir=""" & PathPure.TrimEnd("\") & """") DataList.Add("-jar """ & ExtractJavaWrapper() & """") End If @@ -1529,7 +1529,7 @@ NextVersion: '添加 Java Wrapper 作为主 Jar If McLaunchJavaSelected.VersionCode >= 9 Then DataList.Add("--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED") - If Setup.Get("VersionAdvanceUseLaunchWrapperV2", Version) OrElse Setup.Get("LaunchAdvanceUseLaunchWrapper") Then + If Setup.Get("VersionAdvanceUseLaunchWrapperV2", Version) AndAlso Setup.Get("LaunchAdvanceUseLaunchWrapper") Then DataList.Add("-Doolloo.jlw.tmpdir=""" & PathPure.TrimEnd("\") & """") DataList.Add("-jar """ & ExtractJavaWrapper() & """") End If From 013c64ba4fec11138081b66f9158944e00658d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=84=E5=A5=9A=E6=A2=A6=E7=81=B5?= <188181427+shimoranla@users.noreply.github.com> Date: Wed, 5 Mar 2025 18:29:12 +0800 Subject: [PATCH 06/21] =?UTF-8?q?fix(PageVersionSetup):=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E5=BA=94=E5=86=85=E5=AE=B9=20chore(?= =?UTF-8?q?Setup):=20=E4=BF=AE=E6=94=B9=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml | 2 +- Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml index a2d8278..d77f9a6 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml @@ -253,7 +253,7 @@ + ToolTip="警告:强烈推荐在版本设置中关闭特定版本的校验,而不是在这里关闭所有版本的校验! 在启动时额外加载 JLW 来处理中文目录。 如果服务器没有使用反作弊,请勿取消勾选此项。" /> diff --git a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml index 378e63e..8fdde32 100644 --- a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml +++ b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml @@ -221,6 +221,8 @@ ToolTip="如果在设置中手动选择了与当前版本不兼容的 Java,则自动跳过兼容性警告弹窗,强制使用手动选择的 Java。" /> + From 2f6b283e0d277dfb5f69e5d017d99e54e4a4c90b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=84=E5=A5=9A=E6=A2=A6=E7=81=B5?= <188181427+shimoranla@users.noreply.github.com> Date: Wed, 5 Mar 2025 18:37:13 +0800 Subject: [PATCH 07/21] =?UTF-8?q?Revert(Setup&Launch):=E6=92=A4=E9=94=80?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/Minecraft/ModLaunch.vb | 39 ------------------- .../Pages/PageSetup/ModSetup.vb | 4 -- 2 files changed, 43 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 7113826..2e23898 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -735,45 +735,6 @@ LoginFinish: Try Dim NeedRefresh As Boolean = False McLaunchLog("登录开始(Login, " & Data.Input.Token & ")") - If Not Data.Input.BaseUrl = Setup.Get("DisableAuthWarningBaseUrl") Then - Setup.Set($"DisableAuthHttpWarning", False) - Setup.Set("DisableCertCheckWarning", False) - End If - If Data.Input.BaseUrl.StartsWithF("http://") AndAlso Setup.Get($"Disable{Data.Input.Token}HttpWarning") = "False" Then - Select Case MyMsgBox( - Caption:=$"当前正在使用不安全的 HTTP 协议,这将增加账号被盗的风险!{vbCrLf}如果没有特殊需求,建议使用更安全的 HTTPS 协议。", - Title:="账号安全警告", - IsWarn:=True, - Button2:="不再显示", - Button1:="取消登录", - Button3:="取消登录") - - Case 1 - RunInUi(AddressOf PageLoginAuthSkin.ExitLogin) - Return False - Case 2 - Setup.Set($"DisableAuthHttpWarning", True) - Setup.Set($"DisableAuthWarningBaseUrl", Data.Input.BaseUrl) - Case 3 - RunInUi(AddressOf PageLoginAuthSkin.ExitLogin) - Return False - End Select - ElseIf Data.Input.BaseUrl.StartsWithF("https://") AndAlso - Setup.Get("DisableCertCheckWarning") = False AndAlso - Setup.Get("ToolDownloadCert") = False Then - Select Case MyMsgBox( - Caption:=$"本次登录未启用 SSL 证书校验,这将增加账号被盗的风险!{vbCrLf}如果没有特殊需求,建议始终启用 SSL 证书校验。{vbCrLf}可在 [设置 → 启动器] 中勾选 [验证 SSL 证书]", - Title:="账号安全提示", - IsWarn:=False, - Button1:="不再显示", - Button2:="取消登录") - Case 1 - Setup.Set("DisableCertCheckWarning", True) - Case 2 - RunInUi(AddressOf PageLoginAuthSkin.ExitLogin) - Return False - End Select - End If Dim RequestData As New JObject( New JProperty("agent", New JObject(New JProperty("name", "Minecraft"), New JProperty("version", 1))), New JProperty("username", Data.Input.UserName), diff --git a/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb b/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb index e8d5393..fa7f48d 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb @@ -39,15 +39,11 @@ {"SystemSystemCache", New SetupEntry("", Source:=SetupSource.Registry)}, {"SystemSystemUpdate", New SetupEntry(0)}, {"SystemSystemActivity", New SetupEntry(0)}, - {"SystemCreateMojangPath", New SetupEntry(False, Source:=SetupSource.Registry)}, {"CacheExportConfig", New SetupEntry("", Source:=SetupSource.Registry)}, {"CacheSavedPageUrl", New SetupEntry("", Source:=SetupSource.Registry)}, {"CacheSavedPageVersion", New SetupEntry("", Source:=SetupSource.Registry)}, {"CacheMsOAuthRefresh", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, {"CacheMsAccess", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, - {"DisableAuthHttpWarning", New SetupEntry(False, Source:=SetupSource.Registry)}, - {"DisableAuthWarningBaseUrl", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, - {"DisableCertCheckWarning", New SetupEntry(False, Source:=SetupSource.Registry)}, {"CacheMsProfileJson", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, {"CacheMsUuid", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, {"CacheMsName", New SetupEntry("", Source:=SetupSource.Registry, Encoded:=True)}, From d88509018d363e0841dc1c855d21f095bd8f68ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=84=E5=A5=9A=E6=A2=A6=E7=81=B5?= <188181427+shimoranla@users.noreply.github.com> Date: Wed, 5 Mar 2025 18:38:27 +0800 Subject: [PATCH 08/21] =?UTF-8?q?Revert(ModSetup):=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E7=97=95=E8=BF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb | 1 - 1 file changed, 1 deletion(-) diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 2e23898..1cb207c 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -1425,7 +1425,6 @@ Retry: DataList.Add("-Doolloo.jlw.tmpdir=""" & PathPure.TrimEnd("\") & """") DataList.Add("-jar """ & ExtractJavaWrapper() & """") End If - Log(DataList.ToString, LogLevel.Normal) '添加 MainClass If Version.JsonObject("mainClass") Is Nothing Then Throw New Exception("版本 json 中没有 mainClass 项!") From d0b6e54b293a13f2549d34fefca87473cb360a6d Mon Sep 17 00:00:00 2001 From: hadesanc1 Date: Fri, 7 Mar 2025 18:41:00 +0800 Subject: [PATCH 09/21] =?UTF-8?q?=E5=9C=A8=E7=89=B9=E5=AE=9A=E6=83=85?= =?UTF-8?q?=E5=86=B5=E4=B8=8B=EF=BC=8C=E5=8D=B3=E4=BD=BF=E5=8F=AF=E7=94=A8?= =?UTF-8?q?=E5=86=85=E5=AD=98=E5=A4=A7=E4=BA=8E=E9=A2=84=E8=AE=A1=E5=88=86?= =?UTF-8?q?=E9=85=8D=E7=9A=84=E5=86=85=E5=AD=98=EF=BC=8C=E4=BB=8D=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E2=80=9C=EF=BC=88=E5=8F=AF=E7=94=A8=20xx=20GB?= =?UTF-8?q?=EF=BC=89=E2=80=9C=E5=AD=97=E6=A0=B7=20Fixes=20#5721?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb | 2 +- .../Pages/PageVersion/PageVersionSetup.xaml.vb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb index c36c123..7d5b834 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb @@ -211,7 +211,7 @@ End If '设置文本 LabRamGame.Text = If(RamGame = Math.Floor(RamGame), RamGame & ".0", RamGame) & " GB" & - If(RamGame <> RamGameActual, " (可用 " & If(RamGameActual = Math.Floor(RamGameActual), RamGameActual & ".0", RamGameActual) & " GB)", "") + If(Math.Abs(RamGame - RamGameActual) > 0.05, " (可用 " & If(RamGameActual = Math.Floor(RamGameActual), RamGameActual & ".0", RamGameActual) & " GB)", "") LabRamUsed.Text = If(RamUsed = Math.Floor(RamUsed), RamUsed & ".0", RamUsed) & " GB" LabRamTotal.Text = " / " & If(RamTotal = Math.Floor(RamTotal), RamTotal & ".0", RamTotal) & " GB" LabRamWarn.Visibility = If(RamGame = 1 AndAlso Not JavaIs64Bit() AndAlso Not Is32BitSystem AndAlso JavaList.Any, Visibility.Visible, Visibility.Collapsed) diff --git a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb index f7a23c0..8c32207 100644 --- a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb @@ -170,7 +170,7 @@ End If '设置文本 LabRamGame.Text = If(RamGame = Math.Floor(RamGame), RamGame & ".0", RamGame) & " GB" & - If(RamGame <> RamGameActual, " (可用 " & If(RamGameActual = Math.Floor(RamGameActual), RamGameActual & ".0", RamGameActual) & " GB)", "") + If(Math.Abs(RamGame - RamGameActual) > 0.05, " (可用 " & If(RamGameActual = Math.Floor(RamGameActual), RamGameActual & ".0", RamGameActual) & " GB)", "") LabRamUsed.Text = If(RamUsed = Math.Floor(RamUsed), RamUsed & ".0", RamUsed) & " GB" LabRamTotal.Text = " / " & If(RamTotal = Math.Floor(RamTotal), RamTotal & ".0", RamTotal) & " GB" LabRamWarn.Visibility = If(RamGame = 1 AndAlso Not JavaIs64Bit(PageVersionLeft.Version) AndAlso Not Is32BitSystem AndAlso JavaList.Any, Visibility.Visible, Visibility.Collapsed) From 5c70a594b06fe6b53297477b25fae88737f1bac5 Mon Sep 17 00:00:00 2001 From: allMagic <116283787+allMagicNB@users.noreply.github.com> Date: Sun, 9 Mar 2025 14:32:03 +0800 Subject: [PATCH 10/21] Encoding Fixed --- Plain Craft Launcher 2/Modules/Base/ModBase.vb | 10 +++++----- Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb | 10 ++++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/Base/ModBase.vb b/Plain Craft Launcher 2/Modules/Base/ModBase.vb index 1e98911..916e6e0 100644 --- a/Plain Craft Launcher 2/Modules/Base/ModBase.vb +++ b/Plain Craft Launcher 2/Modules/Base/ModBase.vb @@ -838,16 +838,16 @@ Public Module ModBase '确保目录存在 Directory.CreateDirectory(GetPathFromFullPath(FilePath)) '写入文件 - If File.Exists(FilePath) Then - '如果文件存在,刷新目前文件 - Using writer As New StreamWriter(FilePath, Append, If(Encoding, GetEncoding(ReadFileBytes(FilePath)))) + If Append Then + '追加目前文件 + Using writer As New StreamWriter(FilePath, True, If(Encoding, GetEncoding(ReadFileBytes(FilePath)))) writer.Write(Text) writer.Flush() writer.Close() End Using Else - '如果文件不存在,则新建并写入 - File.WriteAllText(FilePath, Text, If(Encoding, New UTF8Encoding(False))) + '直接写入字节集 + File.WriteAllBytes(FilePath, If(Encoding Is Nothing, Encoding.UTF8.GetBytes(Text), Encoding.GetBytes(Text))) End If End Sub ''' diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 01b1bab..903cd19 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -1317,14 +1317,15 @@ Retry: McLaunchLog("开始获取 Minecraft 启动参数") '获取基准字符串与参数信息 Dim Arguments As String + Arguments = If(McLaunchJavaSelected.VersionCode > 8, "-Dfile.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8", Nothing) '#4700 If McVersionCurrent.JsonObject("arguments") IsNot Nothing AndAlso McVersionCurrent.JsonObject("arguments")("jvm") IsNot Nothing Then McLaunchLog("获取新版 JVM 参数") - Arguments = McLaunchArgumentsJvmNew(McVersionCurrent) + Arguments += " " & McLaunchArgumentsJvmNew(McVersionCurrent) McLaunchLog("新版 JVM 参数获取成功:") McLaunchLog(Arguments) Else McLaunchLog("获取旧版 JVM 参数") - Arguments = McLaunchArgumentsJvmOld(McVersionCurrent) + Arguments += " " & McLaunchArgumentsJvmOld(McVersionCurrent) McLaunchLog("旧版 JVM 参数获取成功:") McLaunchLog(Arguments) End If @@ -2050,6 +2051,7 @@ IgnoreCustomSkin: '输出 bat Try Dim CmdString As String = + $"{If(McLaunchJavaSelected.VersionCode > 8, "chcp 65001>nul" & vbCrLf, Nothing)}" & "@echo off" & vbCrLf & "title 启动 - " & McVersionCurrent.Name & vbCrLf & "echo 游戏正在启动,请稍候。" & vbCrLf & @@ -2142,8 +2144,8 @@ IgnoreCustomSkin: StartInfo.EnvironmentVariables("Path") = Join(Paths.Distinct.ToList, ";") '设置其他参数 - StartInfo.StandardErrorEncoding = Encoding.UTF8 - StartInfo.StandardOutputEncoding = Encoding.UTF8 + StartInfo.StandardErrorEncoding = If(McLaunchJavaSelected.VersionCode > 8, Encoding.UTF8, Nothing) + StartInfo.StandardOutputEncoding = If(McLaunchJavaSelected.VersionCode > 8, Encoding.UTF8, Nothing) StartInfo.WorkingDirectory = ShortenPath(McVersionCurrent.PathIndie) StartInfo.UseShellExecute = False StartInfo.RedirectStandardOutput = True From 49a1016da5cab5041e330e16dddc4764f14b201e Mon Sep 17 00:00:00 2001 From: allMagic <116283787+allMagicNB@users.noreply.github.com> Date: Sun, 9 Mar 2025 15:04:13 +0800 Subject: [PATCH 11/21] fix space --- Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 903cd19..f1bedc2 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -1317,15 +1317,15 @@ Retry: McLaunchLog("开始获取 Minecraft 启动参数") '获取基准字符串与参数信息 Dim Arguments As String - Arguments = If(McLaunchJavaSelected.VersionCode > 8, "-Dfile.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8", Nothing) '#4700 + Arguments = If(McLaunchJavaSelected.VersionCode > 8, "-Dfile.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 ", Nothing) '#4700 If McVersionCurrent.JsonObject("arguments") IsNot Nothing AndAlso McVersionCurrent.JsonObject("arguments")("jvm") IsNot Nothing Then McLaunchLog("获取新版 JVM 参数") - Arguments += " " & McLaunchArgumentsJvmNew(McVersionCurrent) + Arguments += McLaunchArgumentsJvmNew(McVersionCurrent) McLaunchLog("新版 JVM 参数获取成功:") McLaunchLog(Arguments) Else McLaunchLog("获取旧版 JVM 参数") - Arguments += " " & McLaunchArgumentsJvmOld(McVersionCurrent) + Arguments += McLaunchArgumentsJvmOld(McVersionCurrent) McLaunchLog("旧版 JVM 参数获取成功:") McLaunchLog(Arguments) End If 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 12/21] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD=EF=BC=8C=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E5=86=99=E5=85=A5=E6=B3=A8=E5=86=8C=E8=A1=A8=E5=B0=86MC?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=BA=E2=80=9C=E9=AB=98=E6=80=A7=E8=83=BD?= =?UTF-8?q?=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 From 482812ce85cb55a87242aded99a80192752d5f3e Mon Sep 17 00:00:00 2001 From: nanhuajiaren <49112307+nanhuajiaren@users.noreply.github.com> Date: Thu, 13 Mar 2025 15:39:27 +0800 Subject: [PATCH 13/21] =?UTF-8?q?Revert=20"=E6=96=B0=E5=A2=9E=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD=EF=BC=8C=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E5=86=99=E5=85=A5=E6=B3=A8=E5=86=8C=E8=A1=A8=E5=B0=86?= =?UTF-8?q?MC=E8=AE=BE=E7=BD=AE=E4=B8=BA=E2=80=9C=E9=AB=98=E6=80=A7?= =?UTF-8?q?=E8=83=BD=E2=80=9D"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 2e9ca1345ccdec17cc4782b2c44df1750c43c2ef. --- .../Modules/Minecraft/ModLaunch.vb | 46 ------------------- .../Pages/PageSetup/ModSetup.vb | 1 - .../Pages/PageSetup/PageSetupLaunch.xaml | 7 --- .../Pages/PageSetup/PageSetupLaunch.xaml.vb | 6 +-- 4 files changed, 1 insertion(+), 59 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 9d915ff..01b1bab 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -128,10 +128,6 @@ 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 @@ -207,48 +203,6 @@ 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 39a4181..b23290e 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb @@ -103,7 +103,6 @@ {"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 254aa50..8b692a4 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml @@ -170,13 +170,6 @@ - - - - - - diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb index 2b52e3a..c36c123 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb @@ -45,9 +45,6 @@ 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") @@ -86,7 +83,6 @@ Setup.Reset("LaunchAdvanceAssets") Setup.Reset("LaunchAdvanceRun") Setup.Reset("LaunchAdvanceRunWait") - Setup.Reset("LaunchGraphicSetup") Setup.Reset("LaunchArgumentJavaAll") Setup.Reset("LaunchArgumentJavaSelect") @@ -114,7 +110,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, CheckAdvanceGraphicSetup.Change + Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceAssets.Change, CheckAdvanceJava.Change, CheckAdvanceRunWait.Change, CheckArgumentRam.Change If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked) End Sub From 715c4666f3d0842f2c0cd7452e7d9282c08cab4b 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 14/21] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD=EF=BC=8C=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E5=86=99=E5=85=A5=E6=B3=A8=E5=86=8C=E8=A1=A8=E5=B0=86MC?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=BA=E2=80=9C=E9=AB=98=E6=80=A7=E8=83=BD?= =?UTF-8?q?=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 From bccb2901edf62f39a191c041b6dda69c336fdad6 Mon Sep 17 00:00:00 2001 From: Hill23333 Date: Thu, 13 Mar 2025 21:48:32 +0800 Subject: [PATCH 15/21] =?UTF-8?q?feat:=20Mod=E5=91=BD=E5=90=8D=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=80=BC=E5=A2=9E=E5=8A=A0=E2=80=9C=E3=80=90=E3=80=91?= =?UTF-8?q?xxx=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Pages/PageDownload/PageDownloadCompDetail.xaml.vb | 6 ++++-- Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml.vb b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml.vb index 7a9b417..df23d0f 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml.vb @@ -1,4 +1,4 @@ -Public Class PageDownloadCompDetail +Public Class PageDownloadCompDetail Private CompItem As MyCompItem = Nothing #Region "加载器" @@ -367,8 +367,10 @@ Case 0 FileName = $"[{ChineseName}] {File.FileName}" Case 1 - FileName = $"{ChineseName}-{File.FileName}" + FileName = $"【{ChineseName}】{File.FileName}" Case 2 + FileName = $"{ChineseName}-{File.FileName}" + Case 3 FileName = $"{File.FileName}-{ChineseName}" Case Else FileName = File.FileName diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml index 65022e5..300b678 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml @@ -1,4 +1,4 @@ - + From 39b84e8701a6febc951db5b1d3e6c75bd18c20d3 Mon Sep 17 00:00:00 2001 From: tangge233 Date: Sat, 15 Mar 2025 00:36:06 +0800 Subject: [PATCH 16/21] =?UTF-8?q?style:=20=E5=88=87=E6=8D=A2=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E7=A7=BB=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plain Craft Launcher 2/Modules/ModMusic.vb | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/ModMusic.vb b/Plain Craft Launcher 2/Modules/ModMusic.vb index b368691..9c09f89 100644 --- a/Plain Craft Launcher 2/Modules/ModMusic.vb +++ b/Plain Craft Launcher 2/Modules/ModMusic.vb @@ -349,7 +349,12 @@ Public Module ModMusic Public Sub OnDefaultDeviceChanged(dataFlow As DataFlow, role As Role, defaultDeviceId As String) Implements IMMNotificationClient.OnDefaultDeviceChanged ' 处理默认音频设备更改事件 If MusicNAudio Is Nothing Then Exit Sub - CType(MusicNAudio, NAudio.Wave.WaveOut).DeviceNumber = 0 + ' 切换到系统默认输出设备 + Log($"音频默认输出设备切换到 {defaultDeviceId}") + Dim target As NAudio.Wave.WaveOut = MusicNAudio + target.Stop() + target.DeviceNumber = 0 + target.Resume() End Sub Public Sub OnDeviceAdded(deviceId As String) Implements IMMNotificationClient.OnDeviceAdded @@ -385,13 +390,6 @@ Public Module ModMusic Public Sub OnDefaultDeviceChanged(dataFlow As DataFlow, role As Role, defaultDeviceId As String) Implements IMMNotificationClient.OnDefaultDeviceChanged container.OnDefaultDeviceChanged(dataFlow, role, defaultDeviceId) - ' 切换到系统默认输出设备 - If MusicNAudio IsNot Nothing Then - Dim target As NAudio.Wave.WaveOut = MusicNAudio - target.Stop() - target.DeviceNumber = 0 - target.Resume() - End If End Sub Public Sub OnDeviceAdded(deviceId As String) Implements IMMNotificationClient.OnDeviceAdded From bf86b0732ae84bdd0b355b0bdacf3f4fb10a97a3 Mon Sep 17 00:00:00 2001 From: tangge233 Date: Sat, 15 Mar 2025 01:07:23 +0800 Subject: [PATCH 17/21] =?UTF-8?q?fix:=20=E9=BB=98=E8=AE=A4=E9=9F=B3?= =?UTF-8?q?=E9=A2=91=E8=AE=BE=E5=A4=87=E7=9A=84=E4=BB=A3=E5=8F=B7=E5=BA=94?= =?UTF-8?q?=E8=AF=A5=E6=98=AF=20-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plain Craft Launcher 2/Modules/ModMusic.vb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/ModMusic.vb b/Plain Craft Launcher 2/Modules/ModMusic.vb index 9c09f89..3e24a0f 100644 --- a/Plain Craft Launcher 2/Modules/ModMusic.vb +++ b/Plain Craft Launcher 2/Modules/ModMusic.vb @@ -353,20 +353,20 @@ Public Module ModMusic Log($"音频默认输出设备切换到 {defaultDeviceId}") Dim target As NAudio.Wave.WaveOut = MusicNAudio target.Stop() - target.DeviceNumber = 0 + target.DeviceNumber = -1 target.Resume() End Sub Public Sub OnDeviceAdded(deviceId As String) Implements IMMNotificationClient.OnDeviceAdded ' 处理音频设备添加事件 If MusicNAudio Is Nothing Then Exit Sub - CType(MusicNAudio, NAudio.Wave.WaveOut).DeviceNumber = 0 + CType(MusicNAudio, NAudio.Wave.WaveOut).DeviceNumber = -1 End Sub Public Sub OnDeviceRemoved(deviceId As String) Implements IMMNotificationClient.OnDeviceRemoved ' 处理音频设备移除事件 If MusicNAudio Is Nothing Then Exit Sub - CType(MusicNAudio, NAudio.Wave.WaveOut).DeviceNumber = 0 + CType(MusicNAudio, NAudio.Wave.WaveOut).DeviceNumber = -1 End Sub Public Sub OnDeviceStateChanged(deviceId As String, newState As DeviceState) Implements IMMNotificationClient.OnDeviceStateChanged From 482d6f71fcbcb116faf4012268c616608a72e533 Mon Sep 17 00:00:00 2001 From: tangge233 Date: Sat, 15 Mar 2025 01:24:57 +0800 Subject: [PATCH 18/21] =?UTF-8?q?fix(ModMusic):=20=E5=8D=83=E5=B9=B4?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E8=80=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plain Craft Launcher 2/Modules/ModMusic.vb | 87 +--------------------- 1 file changed, 4 insertions(+), 83 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/ModMusic.vb b/Plain Craft Launcher 2/Modules/ModMusic.vb index 3e24a0f..0632b83 100644 --- a/Plain Craft Launcher 2/Modules/ModMusic.vb +++ b/Plain Craft Launcher 2/Modules/ModMusic.vb @@ -258,7 +258,7 @@ Public Module ModMusic #End Region ''' - ''' 当前正在播放的 NAudio.Wave.WaveOut。 + ''' 当前正在播放的 NAudio.Wave.WaveOutEvent。 ''' Public MusicNAudio = Nothing ''' @@ -266,18 +266,17 @@ Public Module ModMusic ''' Private MusicCurrent As String = "" - Dim deviceHandler As New AudioDeviceChangeHandler - ''' ''' 在 MusicUuid 不变的前提下,持续播放某地址的音乐,且在播放结束后随机播放下一曲。 ''' Private Sub MusicLoop(Optional IsFirstLoad As Boolean = False) - Dim CurrentWave As NAudio.Wave.WaveOut = Nothing + Dim CurrentWave As NAudio.Wave.WaveOutEvent = Nothing Dim Reader As NAudio.Wave.WaveStream = Nothing Try '开始播放 - CurrentWave = New NAudio.Wave.WaveOut() + CurrentWave = New NAudio.Wave.WaveOutEvent() MusicNAudio = CurrentWave + CurrentWave.DeviceNumber = -1 Reader = New NAudio.Wave.AudioFileReader(MusicCurrent) CurrentWave.Init(Reader) CurrentWave.Play() @@ -331,82 +330,4 @@ Public Module ModMusic End Try End Sub - Public Class AudioDeviceChangeHandler - Implements Interfaces.IMMNotificationClient - Private deviceWatcher As MMDeviceEnumerator - Private callback As IMMNotificationClient - - Public Sub New() - ' 初始化音频设备枚举器 - deviceWatcher = New MMDeviceEnumerator() - ' 创建设备通知回调对象 - callback = New DeviceNotificationClient(Me) - ' 注册回调以接收音频设备更改通知 - deviceWatcher.RegisterEndpointNotificationCallback(callback) - End Sub - - ' 实现IMMNotificationClient接口的方法以处理设备更改事件 - Public Sub OnDefaultDeviceChanged(dataFlow As DataFlow, role As Role, defaultDeviceId As String) Implements IMMNotificationClient.OnDefaultDeviceChanged - ' 处理默认音频设备更改事件 - If MusicNAudio Is Nothing Then Exit Sub - ' 切换到系统默认输出设备 - Log($"音频默认输出设备切换到 {defaultDeviceId}") - Dim target As NAudio.Wave.WaveOut = MusicNAudio - target.Stop() - target.DeviceNumber = -1 - target.Resume() - End Sub - - Public Sub OnDeviceAdded(deviceId As String) Implements IMMNotificationClient.OnDeviceAdded - ' 处理音频设备添加事件 - If MusicNAudio Is Nothing Then Exit Sub - CType(MusicNAudio, NAudio.Wave.WaveOut).DeviceNumber = -1 - End Sub - - Public Sub OnDeviceRemoved(deviceId As String) Implements IMMNotificationClient.OnDeviceRemoved - ' 处理音频设备移除事件 - If MusicNAudio Is Nothing Then Exit Sub - CType(MusicNAudio, NAudio.Wave.WaveOut).DeviceNumber = -1 - End Sub - - Public Sub OnDeviceStateChanged(deviceId As String, newState As DeviceState) Implements IMMNotificationClient.OnDeviceStateChanged - ' 处理音频设备状态更改事件 - End Sub - - Public Sub OnPropertyValueChanged(deviceId As String, key As PropertyKey) Implements IMMNotificationClient.OnPropertyValueChanged - ' 处理音频设备属性值更改事件 - End Sub - End Class - - ' 实现IMMNotificationClient接口的类 - Friend Class DeviceNotificationClient - Implements IMMNotificationClient - - Private container As AudioDeviceChangeHandler - - Public Sub New(container As AudioDeviceChangeHandler) - Me.container = container - End Sub - - Public Sub OnDefaultDeviceChanged(dataFlow As DataFlow, role As Role, defaultDeviceId As String) Implements IMMNotificationClient.OnDefaultDeviceChanged - container.OnDefaultDeviceChanged(dataFlow, role, defaultDeviceId) - End Sub - - Public Sub OnDeviceAdded(deviceId As String) Implements IMMNotificationClient.OnDeviceAdded - container.OnDeviceAdded(deviceId) - End Sub - - Public Sub OnDeviceRemoved(deviceId As String) Implements IMMNotificationClient.OnDeviceRemoved - container.OnDeviceRemoved(deviceId) - End Sub - - Public Sub OnDeviceStateChanged(deviceId As String, newState As DeviceState) Implements IMMNotificationClient.OnDeviceStateChanged - container.OnDeviceStateChanged(deviceId, newState) - End Sub - - Public Sub OnPropertyValueChanged(deviceId As String, key As PropertyKey) Implements IMMNotificationClient.OnPropertyValueChanged - container.OnPropertyValueChanged(deviceId, key) - End Sub - End Class - End Module From e6ba658e16706b1570b118d71329da08905b9b1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=84=E5=A5=9A=E6=A2=A6=E7=81=B5?= Date: Sun, 16 Mar 2025 10:58:02 +0800 Subject: [PATCH 19/21] =?UTF-8?q?fix(PageSetupLaunch):=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml index d77f9a6..d64607a 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml @@ -253,7 +253,7 @@ + ToolTip="警告:强烈推荐在版本设置中设置特定版本是否使用 JLW,而不是在这里关闭设置全部版本是否使用 JLW! 在启动时额外加载 JLW 来处理中文目录。 如果服务器没有使用反作弊,请勿取消勾选此项。" /> From 5e24f91029f6efe27fda1a1588f9a54ff0bd6082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=84=E5=A5=9A=E6=A2=A6=E7=81=B5?= Date: Sun, 16 Mar 2025 11:01:06 +0800 Subject: [PATCH 20/21] =?UTF-8?q?style(PageSetupLaunch):=E8=AF=AD=E6=B3=95?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml index d64607a..7e8101e 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml @@ -253,7 +253,7 @@ + ToolTip="警告:强烈推荐在版本设置中设置特定版本是否使用 JLW,而不是在这里设置全部版本是否使用 JLW! 在启动时额外加载 JLW 来处理中文目录。 如果服务器没有使用反作弊,请勿取消勾选此项。" /> From 2fd1235a991872d2d9646d3cce62b4d3f4d31f58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=84=E5=A5=9A=E6=A2=A6=E7=81=B5?= Date: Sun, 16 Mar 2025 11:55:33 +0800 Subject: [PATCH 21/21] =?UTF-8?q?Fix(PageVersionExport):=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Pages/PageVersion/PageVersionExport.xaml.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionExport.xaml.vb b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionExport.xaml.vb index e01176e..9714d6f 100644 --- a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionExport.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionExport.xaml.vb @@ -33,6 +33,7 @@ Public Class PageVersionExport TextExportName.HintText = PageVersionLeft.Version.Name TextExportVersion.Text = "" TextExportVersion.HintText = "1.0.0" + CheckAdvancedModrinth.Checked = False GetExportOption(CheckOptionsBasic).Description = PageVersionLeft.Version.GetDefaultDescription() ResetConfigOverrides() ReloadAllSubOptions()