2.13.0.0
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
Public Class PageLaunchLeft
|
||||
Imports System.Windows.Threading
|
||||
|
||||
Public Class PageLaunchLeft
|
||||
|
||||
'加载当前版本
|
||||
Private IsLoad As Boolean = False
|
||||
@@ -23,8 +25,8 @@
|
||||
Sub()
|
||||
'自动整合包安装:准备
|
||||
Dim PackInstallPath As String = Nothing
|
||||
If FileUtils.Exists(PathExeFolder & "modpack.zip") Then PackInstallPath = PathExeFolder & "modpack.zip"
|
||||
If FileUtils.Exists(PathExeFolder & "modpack.mrpack") Then PackInstallPath = PathExeFolder & "modpack.mrpack"
|
||||
If FileUtils.Exists(Paths.Base & "modpack.zip") Then PackInstallPath = Paths.Base & "modpack.zip"
|
||||
If FileUtils.Exists(Paths.Base & "modpack.mrpack") Then PackInstallPath = Paths.Base & "modpack.mrpack"
|
||||
If PackInstallPath IsNot Nothing Then
|
||||
Logger.Warn($"需自动安装整合包:{PackInstallPath}")
|
||||
PageSelectLeft.CreateMcFolderInCurrentPath()
|
||||
@@ -52,10 +54,12 @@
|
||||
Logger.Info($"自动安装整合包成功,清理安装包:{PackInstallPath}")
|
||||
FileUtils.Delete(PackInstallPath)
|
||||
End If
|
||||
Catch ex As CancelledException
|
||||
Logger.Warn(ex, $"自动安装整合包被用户取消:{PackInstallPath}")
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex, $"自动安装整合包失败:{PackInstallPath}", LogBehavior.Alert)
|
||||
If ex.IsCanceled Then
|
||||
Logger.Info($"自动安装整合包已取消:{PackInstallPath}")
|
||||
Else
|
||||
Logger.Error(ex, $"自动安装整合包失败:{PackInstallPath}", LogBehavior.Alert)
|
||||
End If
|
||||
End Try
|
||||
End If
|
||||
'确认 Minecraft 版本存在
|
||||
@@ -80,7 +84,26 @@
|
||||
RefreshButtonsUI()
|
||||
RefreshPage(False, False) '有可能选择的版本变化了,需要重新刷新
|
||||
If McLoginAble() = "" Then McLoginLoader.Start() '自动登录
|
||||
If Environment.CommandLine.Contains("--test") Then FormMain.EndProgramForce(123) '用于更新器测试生成的程序是否可以正常运行
|
||||
'用于自动化测试生成的程序是否可以正常运行
|
||||
If Environment.CommandLine.Contains("--test") Then
|
||||
RunInThread(
|
||||
Sub()
|
||||
Thread.Sleep(500)
|
||||
RunInUi(Sub() FrmMain.PageChange(FormMain.PageType.Download))
|
||||
Thread.Sleep(500)
|
||||
RunInUi(Sub() FrmMain.PageChange(FormMain.PageType.Download, FormMain.PageSubType.DownloadMod))
|
||||
Thread.Sleep(500)
|
||||
RunInUi(Sub() FrmMain.PageChange(FormMain.PageType.Setup))
|
||||
Thread.Sleep(500)
|
||||
RunInUi(Sub() FrmMain.PageChange(FormMain.PageType.Other))
|
||||
Thread.Sleep(500)
|
||||
RunInUi(Sub() BtnVersion_Click())
|
||||
Thread.Sleep(500)
|
||||
RunInUi(Sub() BtnMore_Click())
|
||||
Thread.Sleep(500)
|
||||
FormMain.EndProgramForce(123)
|
||||
End Sub)
|
||||
End If
|
||||
End Sub)
|
||||
End Sub, "Version Check", ThreadPriority.AboveNormal)
|
||||
|
||||
@@ -244,7 +267,7 @@
|
||||
End Sub, 100),
|
||||
AaOpacity(PanLogin, 1, 100, 120, New AniEaseInFluent)
|
||||
}, "FrmLogin PageChange")
|
||||
End Sub, Threading.DispatcherPriority.Render)
|
||||
End Sub, DispatcherPriority.Render)
|
||||
Else
|
||||
'无动画
|
||||
AniControlEnabled += 1
|
||||
@@ -375,15 +398,15 @@ UnknownType:
|
||||
End If
|
||||
Try
|
||||
Dim Result As String = McSkinGetAddress(Uuid, "Ms")
|
||||
If Data.IsInterrupted Then Throw New ThreadInterruptedException("当前任务已取消:" & UserName)
|
||||
If Data.IsCanceled Then Throw New OperationCanceledException("当前任务已取消:" & UserName)
|
||||
Result = McSkinDownload(Result)
|
||||
If Data.IsInterrupted Then Throw New ThreadInterruptedException("当前任务已取消:" & UserName)
|
||||
If Data.IsCanceled Then Throw New OperationCanceledException("当前任务已取消:" & UserName)
|
||||
Data.Output = Result
|
||||
Catch ex As ThreadInterruptedException
|
||||
Data.Output = ""
|
||||
Return
|
||||
Catch ex As Exception
|
||||
If ex.GetDisplay(False).Contains("(429)") Then
|
||||
If ex.IsCanceled Then
|
||||
Data.Output = ""
|
||||
Return
|
||||
ElseIf ex.GetDisplay(False).Contains("(429)") Then
|
||||
Data.Output = PathImage & "Skins/" & McSkinSex(McLoginLegacyUuid(UserName)) & ".png"
|
||||
Logger.Error($"获取正版皮肤失败({UserName}):获取皮肤太过频繁,请 5 分钟后再试!", LogBehavior.Toast)
|
||||
ElseIf ex.GetDisplay(False).Contains("未设置自定义皮肤") Then
|
||||
@@ -398,7 +421,7 @@ Finish:
|
||||
'刷新显示
|
||||
If FrmLoginMsSkin IsNot Nothing Then
|
||||
RunInUi(AddressOf FrmLoginMsSkin.Skin.Load)
|
||||
ElseIf Not Data.IsInterrupted Then '如果已经中断,Input 也被清空,就不会再次刷新
|
||||
ElseIf Not Data.IsCanceled Then '如果已经中断,Input 也被清空,就不会再次刷新
|
||||
Data.Input = Nothing '清空输入,因为皮肤实际上没有被渲染,如果不清空切换到页面的 Start 会由于输入相同而不渲染
|
||||
End If
|
||||
End Sub
|
||||
@@ -442,18 +465,18 @@ UseDefault:
|
||||
Data.Output = PathImage & "Skins/Steve.png"
|
||||
Else
|
||||
Dim Result As String = McLoginMojangUuid(ID, True)
|
||||
If Data.IsInterrupted Then Throw New ThreadInterruptedException("当前任务已取消:" & ID)
|
||||
If Data.IsCanceled Then Throw New OperationCanceledException("当前任务已取消:" & ID)
|
||||
Result = McSkinGetAddress(Result, "Mojang")
|
||||
If Data.IsInterrupted Then Throw New ThreadInterruptedException("当前任务已取消:" & ID)
|
||||
If Data.IsCanceled Then Throw New OperationCanceledException("当前任务已取消:" & ID)
|
||||
Result = McSkinDownload(Result)
|
||||
If Data.IsInterrupted Then Throw New ThreadInterruptedException("当前任务已取消:" & ID)
|
||||
If Data.IsCanceled Then Throw New OperationCanceledException("当前任务已取消:" & ID)
|
||||
Data.Output = Result
|
||||
End If
|
||||
Catch ex As ThreadInterruptedException
|
||||
Data.Output = ""
|
||||
Return
|
||||
Catch ex As Exception
|
||||
If ex.GetDisplay(False).Contains("(429)") Then
|
||||
If ex.IsCanceled Then
|
||||
Data.Output = ""
|
||||
Return
|
||||
ElseIf ex.GetDisplay(False).Contains("(429)") Then
|
||||
Data.Output = PathImage & "Skins/" & McSkinSex(McLoginLegacyUuid(ID)) & ".png"
|
||||
Logger.Info($"获取离线登录使用的正版皮肤失败({ID}):获取皮肤太过频繁,请 5 分钟后再试!")
|
||||
Else
|
||||
@@ -462,17 +485,17 @@ UseDefault:
|
||||
End If
|
||||
End Try
|
||||
Case 4 '自定义
|
||||
If Not FileUtils.Exists(PathAppdata & "CustomSkin.png") Then
|
||||
If Not FileUtils.Exists(Paths.AppDataThenName & "CustomSkin.png") Then
|
||||
Hint("未找到离线皮肤自定义文件,可能它已被删除。PCL 将使用默认的 Steve 皮肤!")
|
||||
Settings.Set("LaunchSkinType", 1)
|
||||
GoTo UseDefault
|
||||
End If
|
||||
Data.Output = PathAppdata & "CustomSkin.png"
|
||||
Data.Output = Paths.AppDataThenName & "CustomSkin.png"
|
||||
End Select
|
||||
'刷新显示
|
||||
If FrmLoginLegacy IsNot Nothing Then
|
||||
RunInUi(AddressOf FrmLoginLegacy.Skin.Load)
|
||||
ElseIf Not Data.IsInterrupted Then '如果已经中断,Input 也被清空,就不会再次刷新
|
||||
ElseIf Not Data.IsCanceled Then '如果已经中断,Input 也被清空,就不会再次刷新
|
||||
Data.Input = Nothing '清空输入,因为皮肤实际上没有被渲染,如果不清空切换到页面的 Start 会由于输入相同而不渲染
|
||||
End If
|
||||
End Sub
|
||||
@@ -497,15 +520,15 @@ UseDefault:
|
||||
End If
|
||||
Try
|
||||
Dim Result As String = McSkinGetAddress(Uuid, "Nide")
|
||||
If Data.IsInterrupted Then Throw New ThreadInterruptedException("当前任务已取消:" & UserName)
|
||||
If Data.IsCanceled Then Throw New OperationCanceledException("当前任务已取消:" & UserName)
|
||||
Result = McSkinDownload(Result)
|
||||
If Data.IsInterrupted Then Throw New ThreadInterruptedException("当前任务已取消:" & UserName)
|
||||
If Data.IsCanceled Then Throw New OperationCanceledException("当前任务已取消:" & UserName)
|
||||
Data.Output = Result
|
||||
Catch ex As ThreadInterruptedException
|
||||
Data.Output = ""
|
||||
Return
|
||||
Catch ex As Exception
|
||||
If ex.GetDisplay(False).Contains("(429)") Then
|
||||
If ex.IsCanceled Then
|
||||
Data.Output = ""
|
||||
Return
|
||||
ElseIf ex.GetDisplay(False).Contains("(429)") Then
|
||||
Data.Output = PathImage & "Skins/Steve.png"
|
||||
Logger.Error($"获取统一通行证皮肤失败({UserName}):获取皮肤太过频繁,请 5 分钟后再试!", LogBehavior.Toast)
|
||||
ElseIf ex.GetDisplay(False).Contains("未设置自定义皮肤") Then
|
||||
@@ -520,7 +543,7 @@ Finish:
|
||||
'刷新显示
|
||||
If FrmLoginNideSkin IsNot Nothing Then
|
||||
RunInUi(AddressOf FrmLoginNideSkin.Skin.Load)
|
||||
ElseIf Not Data.IsInterrupted Then '如果已经中断,Input 也被清空,就不会再次刷新
|
||||
ElseIf Not Data.IsCanceled Then '如果已经中断,Input 也被清空,就不会再次刷新
|
||||
Data.Input = Nothing '清空输入,因为皮肤实际上没有被渲染,如果不清空切换到页面的 Start 会由于输入相同而不渲染
|
||||
End If
|
||||
End Sub
|
||||
@@ -545,15 +568,15 @@ Finish:
|
||||
End If
|
||||
Try
|
||||
Dim Result As String = McSkinGetAddress(UUID, "Auth")
|
||||
If Data.IsInterrupted Then Throw New ThreadInterruptedException("当前任务已取消:" & UserName)
|
||||
If Data.IsCanceled Then Throw New OperationCanceledException("当前任务已取消:" & UserName)
|
||||
Result = McSkinDownload(Result)
|
||||
If Data.IsInterrupted Then Throw New ThreadInterruptedException("当前任务已取消:" & UserName)
|
||||
If Data.IsCanceled Then Throw New OperationCanceledException("当前任务已取消:" & UserName)
|
||||
Data.Output = Result
|
||||
Catch ex As ThreadInterruptedException
|
||||
Data.Output = ""
|
||||
Return
|
||||
Catch ex As Exception
|
||||
If ex.GetDisplay(False).Contains("(429)") Then
|
||||
If ex.IsCanceled Then
|
||||
Data.Output = ""
|
||||
Return
|
||||
ElseIf ex.GetDisplay(False).Contains("(429)") Then
|
||||
Data.Output = PathImage & "Skins/Steve.png"
|
||||
Logger.Error($"获取 Authlib-Injector 皮肤失败({UserName}):获取皮肤太过频繁,请 5 分钟后再试!", LogBehavior.Toast)
|
||||
ElseIf ex.GetDisplay(False).Contains("未设置自定义皮肤") Then
|
||||
@@ -568,7 +591,7 @@ Finish:
|
||||
'刷新显示
|
||||
If FrmLoginAuthSkin IsNot Nothing Then
|
||||
RunInUi(AddressOf FrmLoginAuthSkin.Skin.Load)
|
||||
ElseIf Not Data.IsInterrupted Then '如果已经中断,Input 也被清空,就不会再次刷新
|
||||
ElseIf Not Data.IsCanceled Then '如果已经中断,Input 也被清空,就不会再次刷新
|
||||
Data.Input = Nothing '清空输入,因为皮肤实际上没有被渲染,如果不清空切换到页面的 Start 会由于输入相同而不渲染
|
||||
End If
|
||||
End Sub
|
||||
@@ -580,19 +603,19 @@ Finish:
|
||||
#End Region
|
||||
|
||||
'版本选择按钮
|
||||
Private Sub BtnVersion_Click(sender As Object, e As EventArgs) Handles BtnVersion.Click
|
||||
Private Sub BtnVersion_Click() Handles BtnVersion.Click
|
||||
If McLaunchLoader.State = LoadState.Loading Then Return
|
||||
FrmMain.PageChange(FormMain.PageType.InstanceSelect)
|
||||
End Sub
|
||||
'启动按钮
|
||||
Public Sub LaunchButtonClick() Handles BtnLaunch.Click
|
||||
If McLaunchLoader.State = LoadState.Loading OrElse Not BtnLaunch.IsEnabled OrElse
|
||||
(FrmMain.PageRight IsNot Nothing AndAlso FrmMain.PageRight.PageState <> MyPageRight.PageStates.ContentStay AndAlso FrmMain.PageRight.PageState <> MyPageRight.PageStates.ContentEnter) Then Return
|
||||
(FrmMain.PageRight IsNot Nothing AndAlso FrmMain.PageRight.PageState <> MyPageRight.PageStates.ContentStay AndAlso FrmMain.PageRight.PageState <> MyPageRight.PageStates.ContentEnter) Then Return
|
||||
'愚人节处理
|
||||
If IsAprilEnabled AndAlso Not IsAprilGiveup Then
|
||||
ThemeUnlock(12, False, "隐藏主题 滑稽彩 已解锁!")
|
||||
IsAprilGiveup = True
|
||||
Settings.Set("AprilDoneYear", Date.Now.Year)
|
||||
Settings.Set("AprilYear", Date.Now.Year)
|
||||
FrmLaunchLeft.AprilScaleTrans.ScaleX = 1
|
||||
FrmLaunchLeft.AprilScaleTrans.ScaleY = 1
|
||||
FrmLaunchLeft.AprilPosTrans.X = 0
|
||||
@@ -670,7 +693,7 @@ ExitRefresh:
|
||||
'取消按钮
|
||||
Private Sub BtnCancel_Click() Handles BtnCancel.Click
|
||||
If McLaunchLoaderReal IsNot Nothing Then
|
||||
McLaunchLoaderReal.Interrupt()
|
||||
McLaunchLoaderReal.Cancel()
|
||||
McLaunchLog("已取消启动")
|
||||
Try
|
||||
If McLaunchWatcher IsNot Nothing Then
|
||||
@@ -684,7 +707,7 @@ ExitRefresh:
|
||||
End If
|
||||
End Sub
|
||||
'版本设置按钮
|
||||
Private Sub BtnMore_Click(sender As Object, e As EventArgs) Handles BtnMore.Click
|
||||
Private Sub BtnMore_Click() Handles BtnMore.Click
|
||||
If McLaunchLoader.State = LoadState.Loading Then Return
|
||||
McInstanceSelected.Load()
|
||||
PageInstanceLeft.Instance = McInstanceSelected
|
||||
@@ -695,7 +718,7 @@ ExitRefresh:
|
||||
''' </summary>
|
||||
Public Sub LaunchingRefresh()
|
||||
Try
|
||||
If McLaunchLoaderReal.State = LoadState.Interrupted Then Return
|
||||
If McLaunchLoaderReal.State = LoadState.Canceled Then Return
|
||||
'阶段状态获取
|
||||
Dim IsLaunched As Boolean = False '是否已经启动游戏,只是在等待窗口
|
||||
Try
|
||||
@@ -736,7 +759,7 @@ ExitRefresh:
|
||||
Logger.Warn(ex, "获取 Minecraft 启动下载器失败,可能是因为启动被取消")
|
||||
HasLaunchDownloader = False
|
||||
End Try
|
||||
LabLaunchingDownload.Text = FormatFileSize(NetManager.Speed) & "/s"
|
||||
LabLaunchingDownload.Text = StringUtils.FormatByteSize(NetManager.Speed) & "/s"
|
||||
'进度改变动画
|
||||
Dim AnimList As New List(Of AniData) From {
|
||||
AaGridLengthWidth(ProgressLaunchingFinished, ShowProgress - ProgressLaunchingFinished.Width.Value, 130,, New AniEaseOutFluent),
|
||||
|
||||
Reference in New Issue
Block a user