Procházet zdrojové kódy

Merge pull request #8648 from LuoYun-Team/fix/cape

fix(cape): 复用登录信息导致无法修改披风
龙腾猫跃 před 5 měsíci
rodič
revize
d95364c2d5

+ 14 - 2
Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb

@@ -535,10 +535,22 @@ NextInner:
         Data.Progress = 0.05
         Data.Progress = 0.05
         '检查是否已经登录完成
         '检查是否已经登录完成
         Dim ExpiresAt = Settings.Get(Of Long)("CacheMsV2Expires")
         Dim ExpiresAt = Settings.Get(Of Long)("CacheMsV2Expires")
+
         If Not Data.IsForceRestarting AndAlso '不要求强行重启
         If Not Data.IsForceRestarting AndAlso '不要求强行重启
            ExpiresAt > 0 AndAlso ExpiresAt > GetUnixTimestampUtc() Then 'AccessToken 尚未过期
            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 尚未过期")
             McLaunchLog("无需登录,AccessToken 尚未过期")
             GoTo SkipLogin
             GoTo SkipLogin
         End If
         End If

+ 1 - 1
Plain Craft Launcher 2/Pages/PageLaunch/MySkin.xaml.vb

@@ -256,7 +256,7 @@ Retry:
                         Next
                         Next
                         SelectedIndex = MyMsgBoxSelect(SelectionControl, "选择披风", "确定", "取消")
                         SelectedIndex = MyMsgBoxSelect(SelectionControl, "选择披风", "确定", "取消")
                     Catch ex As Exception
                     Catch ex As Exception
-                        Logger.Error(ex, "获取玩家皮肤列表失败")
+                        Logger.Error(ex, "获取玩家披风列表失败")
                     End Try
                     End Try
                 End Sub)
                 End Sub)
                 If SelectedIndex Is Nothing Then Return
                 If SelectedIndex Is Nothing Then Return

+ 2 - 2
Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMsSkin.xaml.vb

@@ -18,8 +18,8 @@
     ''' <summary>
     ''' <summary>
     ''' 获取当前页面的登录信息。
     ''' 获取当前页面的登录信息。
     ''' </summary>
     ''' </summary>
-    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")}
             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
         Else
             Return New McLoginMs With {.OAuthRefreshToken = Settings.Get(Of String)("CacheMsV2OAuthRefresh"), .UserName = Settings.Get(Of String)("CacheMsV2Name")}
             Return New McLoginMs With {.OAuthRefreshToken = Settings.Get(Of String)("CacheMsV2OAuthRefresh"), .UserName = Settings.Get(Of String)("CacheMsV2Name")}