|
70 | 70 |
|
71 | 71 | '修改皮肤
|
72 | 72 | Private IsChanging As Boolean = False
|
73 |
| - Private ResetSkin As Boolean = False |
74 | 73 | Public Sub BtnSkinEdit_Click(sender As Object, e As RoutedEventArgs)
|
75 | 74 | '检查条件,获取新皮肤
|
76 | 75 | If IsChanging Then
|
|
81 | 80 | Hint("登录失败,无法更改皮肤!", HintType.Critical)
|
82 | 81 | Return
|
83 | 82 | End If
|
84 |
| - Dim SkinInfo As McSkinInfo |
85 |
| - If ResetSkin |
86 |
| - Dim ImageSavePath As String = RequestTaskTempFolder() & "Steve.png" |
87 |
| - Dim Image = New MyBitmap(PathImage & "Skins\Steve.png") |
88 |
| - Image.Save(ImageSavePath) |
89 |
| - SkinInfo = New McSkinInfo() With {.IsSlim = False, .LocalFile = ImageSavePath, .IsVaild = True} |
90 |
| - Else |
91 |
| - SkinInfo = McSkinSelect() |
92 |
| - End If |
| 83 | + Dim SkinInfo As McSkinInfo = McSkinSelect() |
93 | 84 | If Not SkinInfo.IsVaild Then Return
|
94 | 85 | Hint("正在更改皮肤……")
|
95 | 86 | IsChanging = True
|
@@ -144,9 +135,57 @@ Retry:
|
144 | 135 |
|
145 | 136 | '恢复默认皮肤
|
146 | 137 | Public Sub BtnSkinReset_Click(sender As Object, e As RoutedEventArgs)
|
147 |
| - ResetSkin = True |
148 |
| - BtnSkinEdit_Click(sender, e) |
149 |
| - ResetSkin = False |
| 138 | + If IsChanging Then |
| 139 | + Hint("正在更改皮肤中,请稍候!") |
| 140 | + Return |
| 141 | + End If |
| 142 | + If McLoginLoader.State = LoadState.Failed Then |
| 143 | + Hint("登录失败,无法更改皮肤!", HintType.Critical) |
| 144 | + Return |
| 145 | + End If |
| 146 | + IsChanging = True |
| 147 | + RunInNewThread( |
| 148 | + Async Sub() |
| 149 | + Try |
| 150 | +Retry: |
| 151 | + If McLoginMsLoader.State = LoadState.Loading Then McLoginMsLoader.WaitForExit() '等待登录结束 |
| 152 | + Dim AccessToken As String = Setup.Get("CacheMsV2Access") |
| 153 | + Dim Uuid As String = Setup.Get("CacheMsV2Uuid") |
| 154 | + |
| 155 | + Dim Client As New Net.Http.HttpClient With {.Timeout = New TimeSpan(0, 0, 30)} |
| 156 | + Client.DefaultRequestHeaders.Authorization = New Net.Http.Headers.AuthenticationHeaderValue("Bearer", AccessToken) |
| 157 | + Client.DefaultRequestHeaders.Accept.Add(New Net.Http.Headers.MediaTypeWithQualityHeaderValue("*/*")) |
| 158 | + Client.DefaultRequestHeaders.UserAgent.Add(New Net.Http.Headers.ProductInfoHeaderValue("MojangSharp", "0.1")) |
| 159 | + Dim Result As String = Await (Await Client.DeleteAsync(New Uri("https://api.minecraftservices.com/minecraft/profile/skins/active"))).Content.ReadAsStringAsync |
| 160 | + If Result.Contains("request requires user authentication") Then |
| 161 | + Hint("正在登录,将在登录完成后继续更改皮肤……") |
| 162 | + McLoginMsLoader.Start(GetLoginData(), IsForceRestart:=True) |
| 163 | + GoTo Retry |
| 164 | + ElseIf Result.Contains("""error""") Then |
| 165 | + Hint("更改皮肤失败:" & GetJson(Result)("error"), HintType.Critical) |
| 166 | + Return |
| 167 | + End If |
| 168 | + '获取新皮肤地址 |
| 169 | + Log("[Skin] 皮肤更改返回值:" & vbCrLf & Result) |
| 170 | + Dim ResultJson As JObject = GetJson(Result) |
| 171 | + If ResultJson.ContainsKey("errorMessage") Then Throw New Exception(ResultJson("errorMessage").ToString) '#5309 |
| 172 | + For Each Skin As JObject In ResultJson("skins") |
| 173 | + If Skin("state").ToString = "ACTIVE" Then |
| 174 | + MySkin.ReloadCache(Skin("url")) |
| 175 | + Return |
| 176 | + End If |
| 177 | + Next |
| 178 | + Throw New Exception("未知错误(" & Result & ")") |
| 179 | + Catch ex As Exception |
| 180 | + If ex.GetType.Equals(GetType(Tasks.TaskCanceledException)) Then |
| 181 | + Hint("更改皮肤失败:与 Mojang 皮肤服务器的连接超时,请检查你的网络是否通畅!", HintType.Critical) |
| 182 | + Else |
| 183 | + Log(ex, "更改皮肤失败", LogLevel.Hint) |
| 184 | + End If |
| 185 | + Finally |
| 186 | + IsChanging = False |
| 187 | + End Try |
| 188 | + End Sub, "Ms Skin Reset") |
150 | 189 | End Sub
|
151 | 190 |
|
152 | 191 | '保存皮肤
|
|
0 commit comments