From b286183151b9157de60607ff109307e218d44630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E8=BD=BB=E8=AF=AD?= Date: Sat, 16 May 2026 23:02:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(cape):=20=E5=A4=8D=E7=94=A8=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E4=BF=A1=E6=81=AF=E5=AF=BC=E8=87=B4=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8A=AB=E9=A3=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/Minecraft/ModLaunch.vb | 16 ++++++++++++++-- .../Pages/PageLaunch/MySkin.xaml.vb | 2 +- .../Pages/PageLaunch/PageLoginMsSkin.xaml.vb | 4 ++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 8b08ab6..ee40936 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -535,10 +535,22 @@ NextInner: Data.Progress = 0.05 '检查是否已经登录完成 Dim ExpiresAt = Settings.Get(Of Long)("CacheMsV2Expires") + If Not Data.IsForceRestarting AndAlso '不要求强行重启 ExpiresAt > 0 AndAlso ExpiresAt > GetUnixTimestampUtc() Then 'AccessToken 尚未过期 - Data.Output = New McLoginResult With - {.AccessToken = Input.AccessToken, .Name = Input.UserName, .Uuid = Input.Uuid, .Type = "Microsoft", .ClientToken = Input.Uuid, .ProfileJson = Input.ProfileJson} + 'https://github.com/Meloong-Git/PCL/issues/8638 + '如果是程序刚启动时调用的登录,此时加载器的状态为 Waiting,GetLoginData 函数会返回不带 ProfileJson 的数据作为输入 + If String.IsNullOrEmpty(Input.ProfileJson) Then + Input = PageLoginMsSkin.GetLoginData(True) + End If + Data.Output = New McLoginResult With { + .AccessToken = Input.AccessToken, + .Name = Input.UserName, + .Uuid = Input.Uuid, + .Type = "Microsoft", + .ClientToken = Input.Uuid, + .ProfileJson = Input.ProfileJson + } McLaunchLog("无需登录,AccessToken 尚未过期") GoTo SkipLogin End If diff --git a/Plain Craft Launcher 2/Pages/PageLaunch/MySkin.xaml.vb b/Plain Craft Launcher 2/Pages/PageLaunch/MySkin.xaml.vb index 25af47c..e35d3a4 100644 --- a/Plain Craft Launcher 2/Pages/PageLaunch/MySkin.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageLaunch/MySkin.xaml.vb @@ -256,7 +256,7 @@ Retry: Next SelectedIndex = MyMsgBoxSelect(SelectionControl, "选择披风", "确定", "取消") Catch ex As Exception - Logger.Error(ex, "获取玩家皮肤列表失败") + Logger.Error(ex, "获取玩家披风列表失败") End Try End Sub) If SelectedIndex Is Nothing Then Return diff --git a/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMsSkin.xaml.vb b/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMsSkin.xaml.vb index 7230cf4..441c74a 100644 --- a/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMsSkin.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMsSkin.xaml.vb @@ -18,8 +18,8 @@ ''' ''' 获取当前页面的登录信息。 ''' - Public Shared Function GetLoginData() As McLoginMs - If McLoginMsLoader.State = LoadState.Finished Then + Public Shared Function GetLoginData(Optional IgnoreState As Boolean = False) As McLoginMs + If IgnoreState OrElse McLoginMsLoader.State = LoadState.Finished Then Return New McLoginMs With {.OAuthRefreshToken = Settings.Get(Of String)("CacheMsV2OAuthRefresh"), .UserName = Settings.Get(Of String)("CacheMsV2Name"), .AccessToken = Settings.Get(Of String)("CacheMsV2Access"), .Uuid = Settings.Get(Of String)("CacheMsV2Uuid"), .ProfileJson = Settings.Get(Of String)("CacheMsV2ProfileJson")} Else Return New McLoginMs With {.OAuthRefreshToken = Settings.Get(Of String)("CacheMsV2OAuthRefresh"), .UserName = Settings.Get(Of String)("CacheMsV2Name")}