From 0066d1b35ef2ce22296aa68c190d2f5d293e584b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BE=99=E8=85=BE=E7=8C=AB=E8=B7=83?= <1043137532@qq.com> Date: Sat, 15 Oct 2022 21:10:59 +0800 Subject: [PATCH] 2.4.0 --- Plain Craft Launcher 2/Application.xaml.vb | 12 +- Plain Craft Launcher 2/Controls/MyCard.vb | 4 +- .../Controls/MyIconButton.xaml.vb | 8 + .../Controls/MyPageRight.vb | 103 ++++--- Plain Craft Launcher 2/FormMain.xaml.vb | 263 +++++------------- .../Modules/Base/ModAnimation.vb | 4 +- .../Modules/Base/ModBase.vb | 104 +++++-- .../Modules/Base/ModLoader.vb | 3 +- Plain Craft Launcher 2/Modules/Base/ModNet.vb | 23 +- .../Modules/Base/ModValidate.vb | 4 +- .../Modules/Minecraft/ModCrash.vb | 26 +- .../Modules/Minecraft/ModDownload.vb | 21 +- .../Modules/Minecraft/ModLaunch.vb | 39 +-- .../Modules/Minecraft/ModMinecraft.vb | 25 +- .../My Project/AssemblyInfo.vb | 4 +- .../My Project/Resources.Designer.vb | 10 - .../My Project/Resources.resx | 3 - .../Pages/PageDownload/ModDownloadLib.vb | 24 +- .../PageDownload/PageDownloadCfDetail.xaml.vb | 4 +- .../Pages/PageLaunch/PageLaunchLeft.xaml.vb | 6 +- .../PageLaunch/PageLoginMojangSkin.xaml.vb | 2 +- .../Pages/PageLaunch/PageLoginMsSkin.xaml.vb | 3 +- .../Pages/PageLink/PageLinkFeedback.xaml | 54 ++-- .../Pages/PageLink/PageLinkFeedback.xaml.vb | 1 - .../Pages/PageLink/PageLinkHiper.xaml | 226 +++++++++++++++ .../Pages/PageLink/PageLinkIoi.xaml | 6 +- .../Pages/PageLink/PageLinkLeft.xaml | 26 +- .../Pages/PageLink/PageLinkLeft.xaml.vb | 192 +++++++++++++ .../Pages/PageSelectLeft.xaml.vb | 2 +- .../Pages/PageSetup/PageSetupLaunch.xaml.vb | 14 +- .../Pages/PageSetup/PageSetupLink.xaml | 12 +- .../Pages/PageSetup/PageSetupLink.xaml.vb | 18 +- .../Pages/PageSetup/PageSetupSystem.xaml.vb | 1 - .../Pages/PageVersion/PageVersionLeft.xaml.vb | 4 +- .../PageVersion/PageVersionOverall.xaml.vb | 4 + .../PageVersion/PageVersionSetup.xaml.vb | 2 +- .../Plain Craft Launcher 2.vbproj | 23 +- Plain Craft Launcher 2/Resources/Help.zip | Bin 71679 -> 72426 bytes Plain Craft Launcher 2/Resources/STUN.dll | Bin 18944 -> 0 bytes .../Resources/java-wrapper.jar | Bin 91342 -> 16757 bytes 40 files changed, 849 insertions(+), 431 deletions(-) create mode 100644 Plain Craft Launcher 2/Pages/PageLink/PageLinkHiper.xaml create mode 100644 Plain Craft Launcher 2/Pages/PageLink/PageLinkLeft.xaml.vb delete mode 100644 Plain Craft Launcher 2/Resources/STUN.dll diff --git a/Plain Craft Launcher 2/Application.xaml.vb b/Plain Craft Launcher 2/Application.xaml.vb index b7a5504..43d1698 100644 --- a/Plain Craft Launcher 2/Application.xaml.vb +++ b/Plain Craft Launcher 2/Application.xaml.vb @@ -30,7 +30,7 @@ Public Class Application UpdateReplace(e.Args(1), e.Args(2).Trim(""""), e.Args(3).Trim(""""), e.Args(4)) Environment.[Exit](Result.Cancel) Exit Sub - ElseIf e.Args(0) = "--link" Then + ElseIf e.Args(0).StartsWith("--link") Then '稍作等待后切换到联机页面 Thread.Sleep(1000) FormMain.IsLinkRestart = True @@ -142,11 +142,9 @@ Public Class Application End Sub '动态 DLL 调用 - Private Shared AssemblyStun As Assembly Private Shared AssemblyNAudio As Assembly Private Shared AssemblyJson As Assembly Private Shared AssemblyDialog As Assembly - Private Shared ReadOnly AssemblyStunLock As New Object Private Shared ReadOnly AssemblyNAudioLock As New Object Private Shared ReadOnly AssemblyJsonLock As New Object Private Shared ReadOnly AssemblyDialogLock As New Object @@ -175,14 +173,6 @@ Public Class Application End If Return AssemblyDialog End SyncLock - ElseIf args.Name.StartsWith("STUN") Then - SyncLock AssemblyStunLock - If AssemblyStun Is Nothing Then - Log("[Start] 加载 DLL:STUN") - AssemblyStun = Assembly.Load(GetResources("STUN")) - End If - Return AssemblyStun - End SyncLock Else Return Nothing End If diff --git a/Plain Craft Launcher 2/Controls/MyCard.vb b/Plain Craft Launcher 2/Controls/MyCard.vb index 72c2523..72c0cd3 100644 --- a/Plain Craft Launcher 2/Controls/MyCard.vb +++ b/Plain Craft Launcher 2/Controls/MyCard.vb @@ -25,9 +25,9 @@ Public Sub New() MainChrome = New SystemDropShadowChrome With {.Margin = New Thickness(-9.5, -9, 0.5, -0.5), .Opacity = 0.1, .CornerRadius = New CornerRadius(6)} MainChrome.SetResourceReference(SystemDropShadowChrome.ColorProperty, "ColorObject1") - Children.Add(MainChrome) + Children.Insert(0, MainChrome) MainBorder = New Border With {.Background = New SolidColorBrush(Color.FromArgb(205, 255, 255, 255)), .CornerRadius = New CornerRadius(6), .IsHitTestVisible = False} - Children.Add(MainBorder) + Children.Insert(1, MainBorder) MainGrid = New Grid Children.Add(MainGrid) End Sub diff --git a/Plain Craft Launcher 2/Controls/MyIconButton.xaml.vb b/Plain Craft Launcher 2/Controls/MyIconButton.xaml.vb index aba7e65..db8e038 100644 --- a/Plain Craft Launcher 2/Controls/MyIconButton.xaml.vb +++ b/Plain Craft Launcher 2/Controls/MyIconButton.xaml.vb @@ -30,6 +30,7 @@ Color White Black + Red Custom End Enum Public Property Theme As Themes = Themes.Color @@ -101,6 +102,8 @@ AnimList.Add(AaColor(Path, Shape.FillProperty, "ColorBrush2", AnimationColorIn)) Case Themes.White AnimList.Add(AaColor(PanBack, BackgroundProperty, New MyColor(50, 255, 255, 255) - PanBack.Background, AnimationColorIn)) + Case Themes.Red + AnimList.Add(AaColor(Path, Shape.FillProperty, New MyColor(255, 76, 76) - Path.Fill, AnimationColorIn)) Case Themes.Black AnimList.Add(AaColor(Path, Shape.FillProperty, New MyColor(230, 0, 0, 0) - Path.Fill, AnimationColorIn)) Case Themes.Custom @@ -117,6 +120,9 @@ Case Themes.White AnimList.Add(AaColor(Path, Shape.FillProperty, "ColorBrush8", AnimationColorOut)) AnimList.Add(AaColor(PanBack, BackgroundProperty, New MyColor(0, 255, 255, 255) - PanBack.Background, AnimationColorOut)) + Case Themes.Red + AnimList.Add(AaColor(Path, Shape.FillProperty, New MyColor(160, 255, 76, 76) - Path.Fill, AnimationColorOut)) + PanBack.Background = New MyColor(0, 255, 255, 255) Case Themes.Black AnimList.Add(AaColor(Path, Shape.FillProperty, New MyColor(160, 0, 0, 0) - Path.Fill, AnimationColorOut)) PanBack.Background = New MyColor(0, 255, 255, 255) @@ -135,6 +141,8 @@ Path.SetResourceReference(Shape.FillProperty, "ColorBrush5") Case Themes.White Path.SetResourceReference(Shape.FillProperty, "ColorBrush8") + Case Themes.Red + Path.Fill = New MyColor(160, 255, 76, 76) Case Themes.Black Path.Fill = New MyColor(160, 0, 0, 0) Case Themes.Custom diff --git a/Plain Craft Launcher 2/Controls/MyPageRight.vb b/Plain Craft Launcher 2/Controls/MyPageRight.vb index 50c2a6a..ab6c666 100644 --- a/Plain Craft Launcher 2/Controls/MyPageRight.vb +++ b/Plain Craft Launcher 2/Controls/MyPageRight.vb @@ -12,7 +12,7 @@ LoaderExit '加载环退出动画 ContentEnter '内容进入动画 ContentStay '内容正常显示 - ReloadExit '刷新导致的全部退出动画 + ContentExit '刷新导致的全部退出动画,或页面内容退出(子页面更改)导致的全部退出动画 PageExit '切换页面导致的全部退出动画 End Enum Private _PageState As PageStates = PageStates.Empty @@ -48,7 +48,8 @@ ''' 在工作线程执行的加载器。 ''' 当加载器执行完成,在 UI 线程触发的 UI 初始化事件。 Public Sub PageLoaderInit(LoaderUi As MyLoading, PanLoader As FrameworkElement, PanContent As FrameworkElement, PanAlways As FrameworkElement, - RealLoader As LoaderBase, FinishedInvoke As Action(Of LoaderBase), Optional InputInvoke As Func(Of Object) = Nothing, + RealLoader As LoaderBase, + Optional FinishedInvoke As Action(Of LoaderBase) = Nothing, Optional InputInvoke As Func(Of Object) = Nothing, Optional AutoRun As Boolean = True) '初始化参数 Me.PanLoader = PanLoader @@ -59,14 +60,16 @@ Me.PageLoaderInputInvoke = InputInvoke Me.PageLoaderAutoRun = AutoRun '添加结束 Invoke - AddHandler RealLoader.PreviewFinish, - Sub() - Do While PageState = MyPageRight.PageStates.PageExit OrElse PageState = MyPageRight.PageStates.ReloadExit - Thread.Sleep(10) '不在退出动画时执行 UI 线程操作,避免退出动画被重置 + If FinishedInvoke IsNot Nothing Then + AddHandler RealLoader.PreviewFinish, + Sub() + Do While PageState = MyPageRight.PageStates.PageExit OrElse PageState = MyPageRight.PageStates.ContentExit + Thread.Sleep(10) '不在退出动画时执行 UI 线程操作,避免退出动画被重置 Loop - RunInUiWait(Sub() FinishedInvoke(RealLoader)) - Thread.Sleep(20) '由于大量初始化控件会导致掉帧,延迟触发 State 改变事件 + RunInUiWait(Sub() FinishedInvoke(RealLoader)) + Thread.Sleep(20) '由于大量初始化控件会导致掉帧,延迟触发 State 改变事件 End Sub + End If AddHandler RealLoader.OnStateChangedUi, Sub(Loader As LoaderBase, NewState As LoadState, OldState As LoadState) RunInUi(Sub() PageLoaderState(Loader, NewState, OldState)) '隐藏 UI PanLoader.Visibility = Visibility.Collapsed @@ -82,14 +85,13 @@ PageLoader.Start(Input) End If End If - If PageLoader.State = LoadState.Finished Then + If PageLoader.State = LoadState.Finished AndAlso FinishedInvoke IsNot Nothing Then RunInUiWait(Sub() FinishedInvoke(RealLoader)) '加载器已提前完成,直接触发事件 End If '设置加载环 PageLoaderUi.State = RealLoader AddHandler PageLoaderUi.Click, Sub() If RealLoader.State = LoadState.Failed Then PageLoaderRestart() '点击重试事件 End Sub - '重试 Public Sub PageLoaderRestart(Optional Input As Object = Nothing, Optional IsForceRestart As Boolean = True) '由外部调用的重试 If Not PageLoaderAutoRun Then Exit Sub @@ -112,32 +114,38 @@ ''' Public Sub PageOnEnter() If ModeDebug Then Log("[UI] 已触发 PageOnEnter") - RaiseEvent OnPageEnter() - + RaiseEvent PageEnter() Select Case PageState Case PageStates.Empty - If PageLoader Is Nothing OrElse PageLoader.State = LoadState.Finished OrElse PageLoader.State = LoadState.Aborted Then + If PageLoader Is Nothing OrElse PageLoader.State = LoadState.Finished OrElse PageLoader.State = LoadState.Waiting OrElse PageLoader.State = LoadState.Aborted Then + '如果加载器在进入页面时不启动(例如 HiPer 联机),那么在此时就会有 State = Waiting PageState = PageStates.ContentEnter TriggerEnterAnimation(PanAlways, If(PanContent, Child)) ElseIf PageLoader.State = LoadState.Loading Then PageState = PageStates.LoaderWait AniStart(AaCode(AddressOf PageOnLoaderWaitFinished, 200), "PageRight PageChange " & PageUuid) - ElseIf PageLoader.State = LoadState.Failed Then + Else 'PageLoader.State = LoadState.Failed PageState = PageStates.LoaderEnter TriggerEnterAnimation(PanAlways, PanLoader) - ElseIf PageLoader.State = LoadState.Waiting Then - '由于 “页面加载器 Minecraft Version List 不应在 PageOnEnter 事件出现 Waiting 状态” 的神秘反馈添加的临时修复 + End If + Case PageStates.ContentExit + '和上面的一样,但是不管 PanAlways + If PageLoader Is Nothing OrElse PageLoader.State = LoadState.Finished OrElse PageLoader.State = LoadState.Waiting OrElse PageLoader.State = LoadState.Aborted Then + PageState = PageStates.ContentEnter + TriggerEnterAnimation(If(PanContent, Child)) + ElseIf PageLoader.State = LoadState.Loading Then PageState = PageStates.LoaderWait AniStart(AaCode(AddressOf PageOnLoaderWaitFinished, 200), "PageRight PageChange " & PageUuid) - Log("[Anim] 警告:页面加载器 " & PageLoader.Name & " 不应在 PageOnEnter 事件出现 " & GetStringFromEnum(PageLoader.State) & " 状态", LogLevel.Debug) - Else - Throw New Exception("页面加载器 " & PageLoader.Name & " 不应在 PageOnEnter 事件出现 " & GetStringFromEnum(PageLoader.State) & " 状态。") + Else 'PageLoader.State = LoadState.Failed + PageState = PageStates.LoaderEnter + TriggerEnterAnimation(PanLoader) End If + Case PageStates.ContentEnter '重复调用 PageOnEnter,直接忽略 Case Else Throw New Exception("在状态为 " & GetStringFromEnum(PageState) & " 时触发了 PageOnEnter 事件。") End Select End Sub - Public Event OnPageEnter() + Public Event PageEnter() ''' ''' 需要切换到其他页面。 ''' 需要立即切换至 PageExit 或 Empty。 @@ -154,7 +162,7 @@ Case PageStates.LoaderWait PageState = PageStates.PageExit TriggerExitAnimation(PanAlways) - Case PageStates.LoaderExit, PageStates.ReloadExit + Case PageStates.LoaderExit, PageStates.ContentExit PageState = PageStates.PageExit If PanAlways IsNot Nothing Then TriggerExitAnimation(PanAlways, If(PanContent, Child)) Case PageStates.PageExit, PageStates.Empty @@ -178,6 +186,29 @@ If PanAlways IsNot Nothing Then PanAlways.Visibility = Visibility.Collapsed End If End Sub + ''' + ''' PanContent 中的子页面改变,需要让当前内容退出,再显示新的内容。 + ''' 需要在 PageEnter 事件确认要显示的子页面有哪些。 + ''' + Public Sub PageOnContentExit() + If ModeDebug Then Log("[UI] 已触发 PageOnContentExit") + If PageLoader IsNot Nothing AndAlso PageLoader.State = LoadState.Loading Then + Throw New Exception("在调用 PageOnContentExit 时,加载器不能为 Loading 状态") + 'Loading 的加载器可能触发进一步变化,难以预测会触发子页面的动画还是加载器完成的动画 + End If + Select Case PageState + Case PageStates.ContentEnter, PageStates.ContentStay + PageState = PageStates.ContentExit + TriggerExitAnimation(PanContent) + Case PageStates.LoaderExit + PageState = PageStates.ContentExit + Case PageStates.LoaderEnter, PageStates.LoaderStayForce, PageStates.LoaderStay + PageState = PageStates.ContentExit + TriggerExitAnimation(PanLoader) + Case PageStates.LoaderWait, PageStates.Empty + PageOnEnter() + End Select + End Sub '内部触发的事件 ''' @@ -205,8 +236,7 @@ Select Case PageState Case PageStates.PageExit PageState = PageStates.Empty - Case PageStates.ReloadExit - PageState = PageStates.Empty + Case PageStates.ContentExit PageOnEnter() Case PageStates.LoaderExit PageState = PageStates.ContentEnter @@ -258,20 +288,20 @@ Private Sub PageLoaderState(sender As Object, NewState As LoadState, OldState As LoadState) Select Case NewState Case LoadState.Failed, LoadState.Loading - If Not OldState = LoadState.Finished Then Exit Sub - If ModeDebug Then Log("[UI] 已触发 PageLoaderState (Refresh)") - '重新开始运行 + If OldState = LoadState.Failed OrElse OldState = LoadState.Loading Then Exit Sub + If ModeDebug Then Log("[UI] 已触发 PageLoaderState (Start/Refresh)") + '(重新)开始运行 '需要从部分状态切换到 ReloadExit Select Case PageState Case PageStates.ContentEnter, PageStates.ContentStay - PageState = PageStates.ReloadExit + PageState = PageStates.ContentExit TriggerExitAnimation(PanContent) - Case PageStates.LoaderExit, PageStates.ReloadExit - PageState = PageStates.ReloadExit + Case PageStates.LoaderExit + PageState = PageStates.ContentExit End Select - Case LoadState.Finished - If Not OldState = LoadState.Loading Then Exit Sub - If ModeDebug Then Log("[UI] 已触发 PageLoaderState (Stop)") + Case LoadState.Finished, LoadState.Aborted, LoadState.Waiting + If Not (OldState = LoadState.Failed OrElse OldState = LoadState.Loading) Then Exit Sub + If ModeDebug Then Log("[UI] 已触发 PageLoaderState (Stop/Abort)") '运行结束 '需要从 LoaderWait 切换到 ContentEnter,或从 LoaderStay 切换到 LoaderExit Select Case PageState @@ -360,13 +390,14 @@ End Function Private Sub GetAllAnimControls(Element As FrameworkElement, ByRef AllControls As List(Of FrameworkElement), IgnoreInvisibility As Boolean) If Not IgnoreInvisibility AndAlso Element.Visibility = Visibility.Collapsed Then Exit Sub - If TypeOf Element Is MyCard OrElse TypeOf Element Is MyHint Then + If TypeOf Element Is MyCard OrElse TypeOf Element Is MyHint OrElse TypeOf Element Is TextBlock OrElse TypeOf Element Is MyTextButton Then AllControls.Add(Element) ElseIf TypeOf Element Is ContentControl Then - GetAllAnimControls(CType(Element, ContentControl).Content, AllControls, IgnoreInvisibility) + Dim Content = CType(Element, ContentControl).Content + If Content IsNot Nothing AndAlso TypeOf Content Is FrameworkElement Then GetAllAnimControls(Content, AllControls, IgnoreInvisibility) ElseIf TypeOf Element Is Panel Then - For Each Element2 As FrameworkElement In CType(Element, Panel).Children - GetAllAnimControls(Element2, AllControls, IgnoreInvisibility) + For Each Element2 In CType(Element, Panel).Children + If TypeOf Element2 Is FrameworkElement Then GetAllAnimControls(Element2, AllControls, IgnoreInvisibility) Next End If End Sub diff --git a/Plain Craft Launcher 2/FormMain.xaml.vb b/Plain Craft Launcher 2/FormMain.xaml.vb index a8bba2d..8d59064 100644 --- a/Plain Craft Launcher 2/FormMain.xaml.vb +++ b/Plain Craft Launcher 2/FormMain.xaml.vb @@ -17,7 +17,7 @@ Public Class FormMain BugCount += 9 End If If LastVersion < 260 Then 'Release 2.3.2 - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "解决了联机人数 ≥3 人时出现的频繁掉线或突发高延迟的问题")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "解决了联机人数 ≥3 人时出现的频繁掉线或突发高延迟的问题")) FeatureCount += 22 BugCount += 4 End If @@ -32,22 +32,21 @@ Public Class FormMain BugCount += 3 End If If LastVersion < 253 Then 'Release 2.2.13 - FeatureList.Add(New KeyValuePair(Of Integer, String)(7, "支持在安装菜单中直接安装 OptiFabric")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "支持调整 Mod 文件名中中文译名的位置")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "崩溃分析优化,支持分析更多 Forge 相关的崩溃")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "支持在安装菜单中直接安装 OptiFabric")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持调整 Mod 文件名中中文译名的位置")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "崩溃分析优化,支持分析更多 Forge 相关的崩溃")) FeatureCount += 13 BugCount += 27 End If If LastVersion < 250 Then 'Release 2.2.11 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "支持将 Mod 文件拖入窗口进行安装")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "支持将 Mod 文件拖入窗口进行安装")) If LastVersion = 246 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法使用中文搜索 Mod 的 Bug")) FeatureCount += 8 BugCount += 33 End If If LastVersion < 246 Then 'Release 2.2.9 - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "Mod 下载支持筛选 Forge Mod 与 Fabric Mod")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "大幅修改联机页面布局(作为联机优化的第二个阶段)")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "Mod、整合包下载的综合优化")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "Mod 下载支持筛选 Forge Mod 与 Fabric Mod")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "Mod、整合包下载的综合优化")) FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复使用离线登录进入 Forge 的存档可能导致游戏崩溃")) FeatureCount += 13 BugCount += 11 @@ -62,92 +61,41 @@ Public Class FormMain BugCount += 2 End If If LastVersion < 236 Then 'Release 2.2.5 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "网络状态检测支持检测 Windows 防火墙与网络延迟")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "重制右侧页面的切换动画,卡片与提示条将逐个进入退出,并具有独特的位移动画")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "添加 MC 1.18 中要求 Java 17 的检测与提醒")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "优化页面切换、下载的性能")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "允许拖拽按钮的设置第三方登录")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复网络状态检测的结果总为 A 级的 Bug")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法下载新版本的 Forge 的 Bug")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "网络状态检测支持检测 Windows 防火墙与网络延迟")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "重制右侧页面的切换动画,卡片与提示条将逐个进入退出,并具有独特的位移动画")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "添加 MC 1.18 中要求 Java 17 的检测与提醒")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "优化页面切换、下载的性能")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "允许拖拽按钮设置第三方登录")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "修复无法下载新版本的 Forge 的 Bug")) FeatureCount += 25 BugCount += 22 End If If LastVersion < 233 Then 'Release 2.2.3 - FeatureList.Add(New KeyValuePair(Of Integer, String)(7, "微软账号支持更换皮肤与披风")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "支持拖拽整合包文件到 PCL2 进行快捷安装")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "Mod 下载支持显示对应的 MC 版本与 Mod 加载器,且可以跳转到 MCBBS 介绍页")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "支持安装 1.17 OptiFine + Forge")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "使用 Mojang 账号登录将会显示迁移提醒")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "微软账号支持更换皮肤与披风")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "支持拖拽整合包文件到 PCL2 进行快捷安装")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "Mod 下载支持显示对应的 MC 版本与 Mod 加载器,且可以跳转到 MCBBS 介绍页")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持安装 1.17 OptiFine + Forge")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "使用 Mojang 账号登录将会显示迁移提醒")) FeatureCount += 12 BugCount += 26 End If If LastVersion < 231 Then 'Release 2.2.1, Also 229 - FeatureList.Add(New KeyValuePair(Of Integer, String)(9, "联机功能的早期测试(尚未完成,延迟很高,之后会优化的)")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "添加 1.18 实验性快照 5 的特供下载,且支持列表的联网更新")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "添加 1.18 实验性快照 5 的特供下载,且支持列表的联网更新")) FeatureCount += 11 BugCount += 3 End If - If LastVersion < 226 Then 'Release 2.1.4 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "支持 1.17.1 Forge、Fabric 的安装与启动")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "优化 Forge 下载与安装速度,提高安装稳定性")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "更新内置帮助库,添加数个指南页面与整合包、存档的安装教程")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持将游戏文件夹压缩包作为游戏整合包导入")) - FeatureCount += 12 - BugCount += 13 - End If - If LastVersion < 224 Then 'Release 2.1.3 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "界面与动画综合优化,重新制作主题配色")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "添加 1.18 实验性快照的特供下载")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "更新内置帮助库,添加光影、数据包、Mod 等资源的安装教程")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "游戏崩溃分析优化")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "若设置为自动更新,PCL2 会在关闭时才替换文件")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "追加大量千万████的可能性")) - 'FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持 1.17 Forge 的安装与启动")) - FeatureCount += 33 - BugCount += 20 - End If - If LastVersion < 217 Then 'Release 2.0.5 - FeatureList.Add(New KeyValuePair(Of Integer, String)(7, "可以根据游戏版本自动选择所需的 Java")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "允许在 Java 版本检测不通过时强制指定使用 Java")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "允许为不同版本独立设置 Java")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "Java 选择与搜索的综合优化")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法使用 Mod、整合包搜索功能的 Bug")) - FeatureCount += 8 - BugCount += 20 - End If - If LastVersion < 214 Then 'Release 2.0.2 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "添加一键关闭所有运行中的 Minecraft 的按钮")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "增加对 MC 1.17 需要 Java 16 的检测与说明")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "Minecraft 崩溃分析优化")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法修改部分个性化设置的严重 Bug")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复 Windows 7 可能无法登录微软账号的严重 Bug")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复网络不稳定时安装整合包极易失败的严重 Bug")) - FeatureCount += 10 - BugCount += 13 - End If - If LastVersion < 212 Then 'Release 2.0.0 - FeatureList.Add(New KeyValuePair(Of Integer, String)(9, "添加帮助页面,且可以自行添加、删除其中的内容")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "支持安装 MCBBS 格式的整合包")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "自定义主页/帮助页面的 XAML 功能扩展")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "同时安装 OptiFine 与 Forge 时,OptiFine 将作为 Mod 安装")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "优化 CurseForge 搜索")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化多个报错提示,更加人性化")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "适配适用于快照版 MC 的 OptiFine")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复进入 OptiFine 下载页面导致卡死的严重 Bug")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复无法启动部分 OptiFine+Forge 版本的 Bug")) - FeatureCount += 20 - BugCount += 42 - End If #Else - '9:大+ - '8:中大+ - '7:中+,大* - '6:中小型+,中大* - '5:小型+,中* - '4:中小* - '3:小* - '2:极度严重的 Bug - '1:严重的 Bug + '5: FEAT+ + '4: IMP+ FEAT* + '3:BUG+ IMP* FEAT- + '2:BUG* IMP- + '1:BUG- + If LastVersion < 266 Then 'Snapshot 2.4.0 + FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "追加新的联机方式(HiPer 联机模块)")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "游戏崩溃的弹窗添加了直接查看日志的选项")) + FeatureCount += 3 + BugCount += 8 + End If If LastVersion < 264 Then 'Snapshot 2.3.5 FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法启动部分 Forge 版本的 Bug")) FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复多个可能导致 OptiFine、Forge 安装失败的 Bug")) @@ -160,7 +108,7 @@ Public Class FormMain BugCount += 5 End If If LastVersion < 262 Then 'Snapshot 2.3.3 - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法使用 Mod、整合包搜索功能的 Bug")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "修复无法使用 Mod、整合包搜索功能的 Bug")) BugCount += 1 End If If LastVersion < 261 Then 'Snapshot 2.3.2 @@ -168,11 +116,10 @@ Public Class FormMain BugCount += 4 End If If LastVersion < 259 Then 'Snapshot 2.3.1 - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "解决了联机人数 ≥3 人时出现的频繁掉线或突发高延迟的问题")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "解决了联机人数 ≥3 人时出现的频繁掉线或突发高延迟的问题")) FeatureCount += 14 End If If LastVersion < 258 Then 'Snapshot 2.3.0 - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复下载部分 Mod、整合包的 Bug")) FeatureCount += 4 BugCount += 4 End If @@ -182,19 +129,19 @@ Public Class FormMain BugCount += 3 End If If LastVersion < 254 Then 'Snapshot 2.2.13 - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "支持调整 Mod 文件名中中文译名的位置")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持调整 Mod 文件名中中文译名的位置")) FeatureCount += 3 BugCount += 17 End If If LastVersion < 252 Then 'Snapshot 2.2.12 - FeatureList.Add(New KeyValuePair(Of Integer, String)(7, "支持在安装菜单中直接安装 OptiFabric")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "崩溃分析优化,支持分析更多 Forge 相关的崩溃")) - If LastVersion = 251 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复同时安装 Forge 和 OptiFine 时 OptiFine 无效的 Bug")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "支持在安装菜单中直接安装 OptiFabric")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "崩溃分析优化,支持分析更多 Forge 相关的崩溃")) + If LastVersion = 251 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复同时安装 Forge 和 OptiFine 时 OptiFine 无效的 Bug")) FeatureCount += 10 BugCount += 10 End If If LastVersion < 251 Then 'Snapshot 2.2.11 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "支持将 Mod 文件拖入窗口进行安装")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持将 Mod 文件拖入窗口进行安装")) FeatureCount += 2 BugCount += 16 End If @@ -204,14 +151,13 @@ Public Class FormMain BugCount += 17 End If If LastVersion < 247 Then 'Snapshot 2.2.9 - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "Mod 下载支持筛选 Forge Mod 与 Fabric Mod")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "Mod 下载支持筛选 Forge Mod 与 Fabric Mod")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "Mod、整合包下载的综合优化")) FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复使用离线登录进入 Forge 的存档可能导致游戏崩溃")) FeatureCount += 8 BugCount += 4 End If If LastVersion < 245 Then 'Snapshot 2.2.8 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "大幅修改联机页面布局(作为联机优化的第二个阶段)")) FeatureCount += 5 BugCount += 7 End If @@ -221,116 +167,48 @@ Public Class FormMain End If If LastVersion < 239 Then 'Snapshot 2.2.6 If LastVersion >= 235 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复自动更新由于路径错误失败的 Bug")) - If LastVersion = 237 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法使用联机模块的 Bug")) + If LastVersion = 237 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "修复无法使用联机模块的 Bug")) FeatureCount += 1 BugCount += 1 End If If LastVersion < 237 Then 'Snapshot 2.2.5 - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "允许拖拽按钮的设置第三方登录")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "允许拖拽按钮设置第三方登录")) If LastVersion = 235 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复在启动游戏时有可能卡死的 Bug")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法下载新版本的 Forge 的 Bug")) FeatureCount += 2 BugCount += 3 End If If LastVersion < 235 Then 'Snapshot 2.2.4 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "网络状态检测支持检测 Windows 防火墙与网络延迟")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "重制右侧页面的切换动画,卡片与提示条将逐个进入退出,并具有独特的位移动画")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "添加 MC 1.18 中要求 Java 17 的检测与提醒")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "优化页面切换、下载的性能")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复网络状态检测的结果总为 A 级的 Bug")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "网络状态检测支持检测 Windows 防火墙与网络延迟")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "重制右侧页面的切换动画,卡片与提示条将逐个进入退出,并具有独特的位移动画")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "添加 MC 1.18 中要求 Java 17 的检测与提醒")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "优化页面切换、下载的性能")) FeatureCount += 23 BugCount += 19 End If If LastVersion < 234 Then 'Snapshot 2.2.3 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "支持拖拽整合包文件到 PCL2 进行快捷安装")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "支持安装 1.17 OptiFine + Forge")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "Mod 详情页面支持跳转 MCBBS 介绍页")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "支持拖拽整合包文件到 PCL2 进行快捷安装")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "支持安装 1.17 OptiFine + Forge")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "Mod 详情页面支持跳转 MCBBS 介绍页")) FeatureCount += 10 BugCount += 17 End If If LastVersion < 232 Then 'Snapshot 2.2.2 - FeatureList.Add(New KeyValuePair(Of Integer, String)(7, "微软账号支持更换皮肤与披风")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "支持显示 Mod 与整合包对应的 MC 版本与 Mod 加载器名称")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "使用 Mojang 账号登录将会显示迁移提醒")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "微软账号支持更换皮肤与披风")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持显示 Mod 与整合包对应的 MC 版本与 Mod 加载器名称")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "使用 Mojang 账号登录将会显示迁移提醒")) FeatureCount += 2 BugCount += 9 End If If LastVersion < 230 Then 'Snapshot 2.2.1, Also 228 - If LastVersion = 227 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "联机功能的小优化")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "添加 1.18 实验性快照 5 的特供下载,且支持列表的联网更新")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复 Win7 上使用联机功能导致日志文件极大,占用硬盘空间的 Bug")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "添加 1.18 实验性快照 5 的特供下载,且支持列表的联网更新")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复 Win7 上 IOI 联机导致日志文件极大,占用硬盘空间的 Bug")) FeatureCount += 12 BugCount += 4 End If If LastVersion < 227 Then 'Snapshot 2.2.0 - FeatureList.Add(New KeyValuePair(Of Integer, String)(9, "新增联机功能的早期测试版本")) FeatureCount += 2 BugCount += 2 End If - If LastVersion < 225 Then 'Snapshot 2.1.4 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "支持 1.17.1 Forge、Fabric 的安装与启动")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "优化 Forge 下载与安装速度,提高安装稳定性")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "更新内置帮助库,添加数个指南页面与整合包、存档的安装教程")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持将游戏文件夹压缩包作为游戏整合包导入")) - FeatureCount += 12 - BugCount += 13 - End If - If LastVersion < 223 Then 'Snapshot 2.1.3 - BugCount += 4 - End If - If LastVersion < 222 Then 'Snapshot 2.1.2 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "更新内置帮助库,添加光影、数据包、Mod 的安装教程")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "游戏崩溃分析优化")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复登录微软账号启动游戏时报错的 Bug")) - FeatureCount += 8 - BugCount += 11 - End If - If LastVersion < 221 Then 'Snapshot 2.1.1 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "界面与动画综合优化,重新制作主题配色")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "若识别码不变,更新密钥在输入一次后会一直有效")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "若设置为自动更新,PCL2 会在关闭时才替换文件")) - FeatureCount += 10 - BugCount += 5 - End If - If LastVersion < 220 Then 'Snapshot 2.1.0 - 'FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "界面与动画综合优化")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "追加大量千万████的可能性")) - FeatureCount += 15 - End If - If LastVersion < 219 Then 'Snapshot 2.0.5 - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法使用 Mod、整合包搜索功能的 Bug")) - BugCount += 2 - End If - If LastVersion < 218 Then 'Snapshot 2.0.4 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "允许为不同版本独立设置 Java")) - BugCount += 12 - End If - If LastVersion < 216 Then 'Snapshot 2.0.3 - FeatureList.Add(New KeyValuePair(Of Integer, String)(7, "可以根据游戏版本自动选择所需的 Java")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "允许在 Java 版本检测不通过时强制指定使用 Java")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "Java 选择与搜索的综合优化")) - FeatureCount += 8 - BugCount += 7 - End If - If LastVersion < 215 Then 'Snapshot 2.0.2 - If LastVersion = 213 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复账号切换、版本选择下拉框无法展开的严重 Bug")) - If LastVersion = 213 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复误判部分客户端需要 Java 16,导致无法启动游戏的严重 Bug")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复 Windows 7 可能无法登录微软账号的严重 Bug")) - BugCount += 1 - End If - If LastVersion < 213 Then 'Snapshot 2.0.1 - FeatureList.Add(New KeyValuePair(Of Integer, String)(6, "添加一键关闭所有运行中的 Minecraft 的按钮")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "增加对 MC 1.17 需要 Java 16 的检测与说明")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "Minecraft 崩溃分析优化")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复网络不稳定时安装整合包极易失败的严重 Bug")) - FeatureCount += 10 - BugCount += 12 - End If - If LastVersion < 211 Then 'Snapshot 2.0.0 - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "适配适用于快照版 MC 的 OptiFine")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复进入 OptiFine 下载页面导致卡死的严重 Bug")) - BugCount += 3 - End If #End If '整理更新日志文本 Dim ContentList As New List(Of String) @@ -361,7 +239,10 @@ Public Class FormMain '窗口加载 Private IsWindowLoadFinished As Boolean = False - Public Shared IsLinkRestart As Boolean = False '是否为联机提权后自动重启 + ''' + ''' 是否为联机提权后自动重启。 + ''' + Public Shared IsLinkRestart As Boolean = False Public Sub New() ApplicationStartTick = GetTimeTick() '窗体参数初始化 @@ -392,7 +273,7 @@ Public Class FormMain PanMainLeft.Child = FrmLaunchLeft PanMainRight.Child = FrmLaunchRight FrmLaunchRight.PageState = MyPageRight.PageStates.ContentStay - If IsLinkRestart Then PageChange(PageType.Link) + If IsLinkRestart Then PageChange(PageType.Link, PageSubType.LinkIoi) '模式提醒 #If DEBUG Then Hint("[开发者模式] PCL 正以开发者模式运行,这可能会造成严重的性能下降,请务必立即向开发者反馈此问题!", HintType.Critical) @@ -469,7 +350,7 @@ Public Class FormMain RunInNewThread(Sub() If Not Setup.Get("SystemEula") Then Reopen: - Select Case MyMsgBox("在使用 PCL2 前,请同意 PCL2 的用户协议与免责声明。", "协议授权", "同意", "拒绝", "打开用户协议与免责声明页面") + Select Case MyMsgBox("在使用 PCL2 前,请同意 PCL2 的用户协议与免责声明。", "协议授权", "同意", "拒绝", "查看用户协议与免责声明") Case 1 Setup.Set("SystemEula", True) Case 2 @@ -481,7 +362,6 @@ Reopen: End If Try Thread.Sleep(200) - If Setup.Get("LinkAuto") Then PageLinkIoi.InitLoader.Start() DlClientListMojangLoader.Start(1) RunCountSub() ServerLoader.Start(1) @@ -558,9 +438,13 @@ Reopen: "多谢各位的理解啦!", "重新解锁提醒") End If '移动自定义皮肤 - If LastVersionCode <= 161 AndAlso File.Exists(Path & "PCL\CustomSkin.png") AndAlso Not File.Exists(PathTemp & "CustomSkin.png") Then - CopyFile(Path & "PCL\CustomSkin.png", PathTemp & "CustomSkin.png") - Log("[Start] 已移动离线自定义皮肤") + If LastVersionCode <= 161 AndAlso File.Exists(Path & "PCL\CustomSkin.png") AndAlso Not File.Exists(PathAppdata & "CustomSkin.png") Then + CopyFile(Path & "PCL\CustomSkin.png", PathAppdata & "CustomSkin.png") + Log("[Start] 已移动离线自定义皮肤 (162)") + End If + If LastVersionCode <= 263 AndAlso File.Exists(PathTemp & "CustomSkin.png") AndAlso Not File.Exists(PathAppdata & "CustomSkin.png") Then + CopyFile(PathTemp & "CustomSkin.png", PathAppdata & "CustomSkin.png") + Log("[Start] 已移动离线自定义皮肤 (264)") End If '解除帮助页面的隐藏 If LastVersionCode <= 205 Then @@ -632,13 +516,14 @@ Reopen: IsProgramEnded = True AniControlEnabled += 1 PageLinkIoi.IoiStop(False) + PageLinkHiper.HiperStop(False) If IsUpdateWaitingRestart Then UpdateRestart(False) If ReturnCode = Result.Exception Then If Not IsLogShown Then FeedbackInfo() Log("请在 https://jinshuju.net/f/rP4b6E?x_field_1=crash 提交错误报告,以便于作者解决此问题!") IsLogShown = True - ShellAndGetExitCode(Path & "PCL\Log1.txt") + ShellOnly(Path & "PCL\Log1.txt") End If Thread.Sleep(500) '防止 PCL 在记事本打开前就被掐掉 End If @@ -841,7 +726,7 @@ Reopen: '获取并检查目标版本 Dim TargetVersion As McVersion = McVersionCurrent If PageCurrent = PageType.VersionSetup Then TargetVersion = PageVersionLeft.Version - If PageCurrent = PageType.VersionSelect OrElse TargetVersion Is Nothing OrElse Not TargetVersion.Version.Modable Then + If PageCurrent = PageType.VersionSelect OrElse TargetVersion Is Nothing OrElse Not TargetVersion.Modable Then '正在选择版本,或当前版本不能安装 Mod Hint("若要安装 Mod,请先选择一个可以安装 Mod 的版本!") ElseIf Not (PageCurrent = PageType.VersionSetup AndAlso PageCurrentSub = PageSubType.VersionMod) Then @@ -1039,11 +924,11 @@ Install: SetupUI = 1 SetupSystem = 2 SetupLink = 3 - LinkCato = 2 - LinkIoi = 3 - LinkSetup = 5 - LinkHelp = 6 - LinkFeedback = 7 + LinkHiper = 1 + LinkIoi = 2 + LinkSetup = 4 + LinkHelp = 5 + LinkFeedback = 6 OtherHelp = 0 OtherAbout = 1 OtherTest = 2 @@ -1281,7 +1166,6 @@ Install: PageChangeAnim(FrmDownloadLeft, FrmDownloadLeft.PageGet(SubType)) Case PageType.Link '联机 If FrmLinkLeft Is Nothing Then FrmLinkLeft = New PageLinkLeft - If FrmLinkIoi Is Nothing Then FrmLinkIoi = New PageLinkIoi PageChangeAnim(FrmLinkLeft, FrmLinkLeft.PageGet(SubType)) Case PageType.Setup '设置 If FrmSetupLeft Is Nothing Then FrmSetupLeft = New PageSetupLeft @@ -1337,7 +1221,6 @@ Install: AniStart({ AaCode(Sub() AniControlEnabled += 1 - CType(PanMainRight.Child, MyPageRight).PageOnForceExit() '把新页面添加进容器 PanMainLeft.Child = PageLeft PageLeft.Opacity = 0 diff --git a/Plain Craft Launcher 2/Modules/Base/ModAnimation.vb b/Plain Craft Launcher 2/Modules/Base/ModAnimation.vb index b2b9f0e..eea7562 100644 --- a/Plain Craft Launcher 2/Modules/Base/ModAnimation.vb +++ b/Plain Craft Launcher 2/Modules/Base/ModAnimation.vb @@ -777,12 +777,12 @@ Public Module ModAnimation Log("[Animation] 动画线程开始") Do While True '两帧之间的间隔时间 - Dim DeltaTime As Long = MathRange(GetTimeTick() - AniLastTick, 0, 10000) + Dim DeltaTime As Long = MathRange(GetTimeTick() - AniLastTick, 0, 100000) If DeltaTime < 3 Then GoTo Sleeper AniLastTick = GetTimeTick() '记录 FPS If ModeDebug Then - If MathRange(AniLastTick - AniFPSTimer, 0, 10000) >= 500 Then + If MathRange(AniLastTick - AniFPSTimer, 0, 100000) >= 500 Then AniFPS = AniFPSCounter AniFPSCounter = 0 AniFPSTimer = AniLastTick diff --git a/Plain Craft Launcher 2/Modules/Base/ModBase.vb b/Plain Craft Launcher 2/Modules/Base/ModBase.vb index 9a41170..7d20b7a 100644 --- a/Plain Craft Launcher 2/Modules/Base/ModBase.vb +++ b/Plain Craft Launcher 2/Modules/Base/ModBase.vb @@ -10,12 +10,12 @@ Public Module ModBase #Region "声明" '下列版本信息由更新器自动修改 - Public Const VersionBaseName As String = "2.3.5" '不含分支前缀的显示用版本名 - Public Const VersionStandardCode As String = "2.3.5." & VersionBranchCode '标准格式的四段式版本号 + Public Const VersionBaseName As String = "2.4.0" '不含分支前缀的显示用版本名 + Public Const VersionStandardCode As String = "2.4.0." & VersionBranchCode '标准格式的四段式版本号 #If BETA Then Public Const VersionCode As Integer = 265 'Release #Else - Public Const VersionCode As Integer = 264 'Snapshot + Public Const VersionCode As Integer = 266 'Snapshot #End If '自动生成的版本信息 Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName @@ -82,6 +82,10 @@ Public Module ModBase ''' 程序的缓存文件夹路径,以“\”结尾。 ''' Public PathTemp As String = If(Setup.Get("SystemSystemCache") = "", IO.Path.GetTempPath() & "PCL\", Setup.Get("SystemSystemCache")).ToString.Replace("/", "\").TrimEnd("\") & "\" + ''' + ''' AppData 中的 PCL 文件夹路径,以“\”结尾。 + ''' + Public PathAppdata As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\PCL\" #End Region @@ -447,6 +451,32 @@ Public Module ModBase #Region "数学" + ''' + ''' 2~65 进制的转换。 + ''' + Public Function RadixConvert(Input As String, FromRadix As Integer, ToRadix As Integer) As String + Const Digits As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+=" + '零与负数的处理 + If String.IsNullOrEmpty(Input) Then Return "0" + Dim IsNegative As Boolean = Input.StartsWith("-") + If IsNegative Then Input = Input.TrimStart("-") + '转换为十进制 + Dim RealNum As Long = 0, Scale As Long = 1 + For Each Digit In Input.Reverse.Select(Function(l) Digits.IndexOf(l)) + RealNum += Digit * Scale + Scale *= FromRadix + Next + '转换为指定进制 + Dim Result = "" + While RealNum > 0 + Dim NewNum As Integer = RealNum Mod ToRadix + RealNum = (RealNum - NewNum) / ToRadix + Result = Digits(NewNum) & Result + End While + '负数的结束处理与返回 + Return If(IsNegative, "-", "") & Result + End Function + ''' ''' 计算二阶贝塞尔曲线。 ''' @@ -1039,14 +1069,14 @@ Re: Next Return Result.ToString Catch ex As Exception - If Not Retry Then + If Retry OrElse TypeOf ex Is FileNotFoundException Then + Log(ex, "获取文件 MD5 失败:" & FilePath) + Return "" + Else Retry = True Log(ex, "获取文件 MD5 可重试失败:" & FilePath, LogLevel.Normal) Thread.Sleep(RandomInteger(200, 500)) GoTo Re - Else - Log(ex, "获取文件 MD5 失败:" & FilePath) - Return "" End If End Try End Function @@ -1070,14 +1100,14 @@ Re: Next Return Result.ToString Catch ex As Exception - If Not Retry Then + If Retry OrElse TypeOf ex Is FileNotFoundException Then + Log(ex, "获取文件 SHA256 失败:" & FilePath) + Return "" + Else Retry = True Log(ex, "获取文件 SHA256 可重试失败:" & FilePath, LogLevel.Normal) Thread.Sleep(RandomInteger(200, 500)) GoTo Re - Else - Log(ex, "获取文件 SHA256 失败:" & FilePath) - Return "" End If End Try End Function @@ -1101,14 +1131,14 @@ Re: Next Return Result.ToString Catch ex As Exception - If Not Retry Then + If Retry OrElse TypeOf ex Is FileNotFoundException Then + Log(ex, "获取文件 SHA1 失败:" & FilePath) + Return "" + Else Retry = True Log(ex, "获取文件 SHA1 可重试失败:" & FilePath, LogLevel.Normal) Thread.Sleep(RandomInteger(200, 500)) GoTo Re - Else - Log(ex, "获取文件 SHA1 失败:" & FilePath) - Return "" End If End Try End Function @@ -1175,7 +1205,7 @@ Re: If Hash <> GetAuthMD5(LocalPath) Then Return "文件 MD5 应为 " & Hash & ",实际为 " & GetAuthMD5(LocalPath) ElseIf Hash.Length = 64 Then 'SHA256 If Hash <> GetAuthSHA256(LocalPath) Then Return "文件 SHA256 应为 " & Hash & ",实际为 " & GetAuthSHA256(LocalPath) - Else 'SHA1 + Else 'SHA1 (40) If Hash <> GetAuthSHA1(LocalPath) Then Return "文件 SHA1 应为 " & Hash & ",实际为 " & GetAuthSHA1(LocalPath) End If End If @@ -1803,28 +1833,36 @@ NextElement: End Sub End Class + ''' + ''' 前台运行文件。 + ''' + ''' 文件名。可以为“notepad”等缩写。 + ''' 运行参数。 + Public Sub ShellOnly(FileName As String, Optional Arguments As String = "") + Using Program As New Process + Program.StartInfo.Arguments = Arguments + Program.StartInfo.FileName = FileName + Log("[System] 执行外部命令:" & FileName & " " & Arguments) + Program.Start() + End Using + End Sub ''' ''' 前台运行文件并返回返回值。 ''' ''' 文件名。可以为“notepad”等缩写。 ''' 运行参数。 - ''' 是否等待该程序结束。默认为 False。 ''' 等待该程序结束的最长时间(毫秒)。超时会返回 Result.Timeout。 - Public Function ShellAndGetExitCode(FileName As String, Optional Arguments As String = "", Optional WaitForExit As Boolean = False, Optional Timeout As Integer = 1000000) As Result + Public Function ShellAndGetExitCode(FileName As String, Optional Arguments As String = "", Optional Timeout As Integer = 1000000) As Result Try Using Program As New Process Program.StartInfo.Arguments = Arguments Program.StartInfo.FileName = FileName Log("[System] 执行外部命令并等待返回码:" & FileName & " " & Arguments) Program.Start() - If WaitForExit Then - If Program.WaitForExit(Timeout) Then - Return Program.ExitCode - Else - Return Result.Timeout - End If + If Program.WaitForExit(Timeout) Then + Return Program.ExitCode Else - Return Result.Success + Return Result.Timeout End If End Using Catch ex As Exception @@ -1909,6 +1947,18 @@ NextElement: ''' 如果当前并非 UI 线程,则会阻断当前线程,直至 UI 线程执行完毕。 ''' 为防止线程互锁,请仅在开始加载动画、从 UI 获取输入时使用! ''' + Public Function RunInUiWait(Of Output)(Action As Func(Of Output)) As Output + If RunInUi() Then + Return Action() + Else + Return Application.Current.Dispatcher.Invoke(Action) + End If + End Function + ''' + ''' 确保在 UI 线程中执行代码。 + ''' 如果当前并非 UI 线程,则会阻断当前线程,直至 UI 线程执行完毕。 + ''' 为防止线程互锁,请仅在开始加载动画、从 UI 获取输入时使用! + ''' Public Sub RunInUiWait(Action As Action) If RunInUi() Then Action() @@ -2003,11 +2053,11 @@ NextElement: End Try End Sub ''' - ''' 打开 explorer。 + ''' 打开 explorer。注意参数中的路径要尽量加上双引号! ''' Public Sub OpenExplorer(Argument As String) Try - Process.Start("explorer.exe", Argument) + ShellOnly("explorer.exe", Argument) Catch ex As Exception Log(ex, "打开资源管理器失败,请尝试关闭安全软件(如 360 安全卫士)", LogLevel.Msgbox) End Try diff --git a/Plain Craft Launcher 2/Modules/Base/ModLoader.vb b/Plain Craft Launcher 2/Modules/Base/ModLoader.vb index f744460..e977f03 100644 --- a/Plain Craft Launcher 2/Modules/Base/ModLoader.vb +++ b/Plain Craft Launcher 2/Modules/Base/ModLoader.vb @@ -418,7 +418,7 @@ Loader.State = LoadState.Waiting Next End If - Update() + RunInThread(AddressOf Update) End Sub Public Overrides Sub Abort() '改变状态 @@ -484,7 +484,6 @@ Case LoadState.Finished '检查是否需要重启 If Loader.GetType.Name.StartsWith("LoaderTask") Then '类型名后面带有泛型,必须用 StartsWith - 'UNDONE: 这里的 IgnoreReloadTimeout 导致加载器不会重启,也就是微软登录不会自动重新登录 If CType(Loader, Object).ShouldStart(If(Input IsNot Nothing AndAlso Loader.GetType.GenericTypeArguments.First Is Input.GetType, Input, Nothing), IgnoreReloadTimeout:=True) Then If ModeDebug Then Log("[Loader] 由于输入条件变更,重启已完成的加载器 " & Loader.Name) GoTo Restart diff --git a/Plain Craft Launcher 2/Modules/Base/ModNet.vb b/Plain Craft Launcher 2/Modules/Base/ModNet.vb index a679ff8..586a6ed 100644 --- a/Plain Craft Launcher 2/Modules/Base/ModNet.vb +++ b/Plain Craft Launcher 2/Modules/Base/ModNet.vb @@ -1,9 +1,28 @@ Imports System.Net Public Module ModNet - Public Const NetDownloadEnd As String = ".PCLDownloading" + ''' + ''' 测试 Ping。失败则返回 -1。 + ''' + Public Function Ping(Ip As String, Optional Timeout As Integer = 10000, Optional MakeLog As Boolean = True) As Integer + Dim PingResult As NetworkInformation.PingReply + Try + PingResult = (New NetworkInformation.Ping).Send(Ip) + Catch ex As Exception + If MakeLog Then Log("[Net] Ping " & Ip & " 失败:" & ex.Message) + Return -1 + End Try + If PingResult.Status = NetworkInformation.IPStatus.Success Then + If MakeLog Then Log("[Net] Ping " & Ip & " 结束:" & PingResult.RoundtripTime & "ms") + Return PingResult.RoundtripTime + Else + If MakeLog Then Log("[Net] Ping " & Ip & " 失败") + Return -1 + End If + End Function + ''' ''' 以 WebClient 获取网页源代码。会进行至多 45 秒 3 次的尝试,允许最长 30s 的超时。 ''' @@ -940,7 +959,7 @@ Capture: Next '是否禁用多线程,以及规定碎片大小 Dim TargetUrl As String = GetSource().Url - If TargetUrl.Contains("pcl2-server") OrElse TargetUrl.Contains("gitcode.net") Then Return False + If TargetUrl.Contains("pcl2-server") OrElse TargetUrl.Contains("gitcode.net") OrElse TargetUrl.Contains("mcer.cn") Then Return False Dim RealFilePieceLimit = If(TargetUrl.Contains("download.mcbbs.net"), FilePieceLimit * 5, FilePieceLimit) '寻找最大碎片 Dim FilePieceMax As NetThread = Threads diff --git a/Plain Craft Launcher 2/Modules/Base/ModValidate.vb b/Plain Craft Launcher 2/Modules/Base/ModValidate.vb index 8d9b118..3e10a9f 100644 --- a/Plain Craft Launcher 2/Modules/Base/ModValidate.vb +++ b/Plain Craft Launcher 2/Modules/Base/ModValidate.vb @@ -49,10 +49,10 @@ End Class Public Class ValidateRegex Inherits Validate Public Property Regex As String - Public Property ErrorDescription As String = "" + Public Property ErrorDescription As String = "正则检查失败!" Public Sub New() End Sub '用于 XAML 初始化 - Public Sub New(Regex As String, Optional ErrorDescription As String = "") + Public Sub New(Regex As String, Optional ErrorDescription As String = "正则检查失败!") Me.Regex = Regex Me.ErrorDescription = ErrorDescription End Sub diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModCrash.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModCrash.vb index f43985b..ec52624 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModCrash.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModCrash.vb @@ -9,7 +9,7 @@ SyncLock IsAnalyzeCacheClearedLock If Not IsAnalyzeCacheCleared Then Try - DeleteDirectory(PathTemp & "CrashAnalyzer") + DeleteDirectory(PathTemp & "CrashAnalyzer\") Catch ex As Exception Log(ex, "清理崩溃分析缓存失败") End Try @@ -153,6 +153,7 @@ ExtraLog CrashReport End Enum + Private DirectFile As KeyValuePair(Of String, String())? = Nothing '在弹窗中选择直接打开的文件 ''' ''' 从 AnalyzeRawFiles 中提取实际有用的文本片段存储到 AnalyzeFiles,并整理可用于生成报告的文件。 ''' 返回找到的用于分析的项目数。 @@ -161,18 +162,22 @@ Log("[Crash] 步骤 2:准备日志文本") '对日志文件进行分类 + DirectFile = Nothing Dim TotalFiles As New List(Of KeyValuePair(Of AnalyzeFileType, KeyValuePair(Of String, String()))) For Each LogFile In AnalyzeRawFiles Dim FileName As String = GetFileNameFromPath(LogFile.Key) Dim TargetType As AnalyzeFileType If FileName.StartsWith("hs_err") Then TargetType = AnalyzeFileType.HsErr + DirectFile = LogFile ElseIf FileName.StartsWith("crash-") Then TargetType = AnalyzeFileType.CrashReport + DirectFile = LogFile ElseIf FileName = "latest.log" OrElse FileName = "latest log.txt" OrElse FileName = "debug.log" OrElse FileName = "debug log.txt" OrElse FileName = "游戏崩溃前的输出.txt" OrElse FileName = "rawoutput.log" OrElse FileName = "启动器日志.txt" OrElse FileName = "PCL2 启动器日志.txt" OrElse FileName = "log1.txt" Then TargetType = AnalyzeFileType.MinecraftLog + If DirectFile Is Nothing Then DirectFile = LogFile ElseIf FileName.EndsWith(".log") OrElse FileName.EndsWith(".txt") Then TargetType = AnalyzeFileType.ExtraLog Else @@ -689,8 +694,19 @@ NextStack: Public Sub Output(IsHandAnalyze As Boolean, Optional ExtraFiles As List(Of String) = Nothing) '弹窗提示 FrmMain.ShowWindowToTop() - Select Case MyMsgBox(GetAnalyzeResult(IsHandAnalyze), If(IsHandAnalyze, "错误报告分析结果", "Minecraft 出现错误"), "确定", If(IsHandAnalyze, "", "导出错误报告")) +Redo: + Select Case MyMsgBox(GetAnalyzeResult(IsHandAnalyze), If(IsHandAnalyze, "错误报告分析结果", "Minecraft 出现错误"), + "确定", If(IsHandAnalyze OrElse DirectFile Is Nothing, "", "查看日志"), If(IsHandAnalyze, "", "导出错误报告")) Case 2 + If File.Exists(DirectFile.Value.Key) Then + ShellOnly(DirectFile.Value.Key) + Else + Dim FilePath As String = PathTemp & "Crash.txt" + WriteFile(FilePath, Join(DirectFile.Value.Value, vbCrLf)) + ShellOnly(FilePath) + End If + GoTo Redo + Case 3 Dim FileAddress As String = Nothing Try '获取文件路径 @@ -723,11 +739,7 @@ NextStack: Log(ex, "导出错误报告失败", LogLevel.Feedback) Exit Sub End Try - Try - Process.Start("explorer", "/select," & FileAddress) - Catch ex As Exception - Log(ex, "打开错误报告的存放文件夹失败") - End Try + OpenExplorer("/select,""" & FileAddress & """") End Select End Sub ''' diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb index 78737e4..9c8d1a3 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb @@ -1217,7 +1217,7 @@ ''' CurseForge 工程列表获取事件。 ''' Public Sub DlCfProjectSub(Task As LoaderTask(Of DlCfProjectRequest, DlCfProjectResult)) - Dim RawFilter As String = If(Task.Input.SearchFilter, "") + Dim RawFilter As String = If(Task.Input.SearchFilter, "").Trim.ToLower Task.Input.SearchFilter = RawFilter Log("[Download] CurseForge 工程列表搜索原始文本:" & RawFilter) '中文请求关键字处理 @@ -1263,12 +1263,20 @@ Dim RightKeywords As New List(Of String) For Each Keyword In AllPossibleKeywords.Split(" ") If Keyword.Trim = "" Then Continue For + If Keyword = "forge" OrElse Keyword = "fabric" OrElse Keyword = "for" Then 'https://github.com/Hex-Dragon/PCL2/issues/208 + Log("[Download] 已跳过搜索关键词 " & Keyword, LogLevel.Developer) + Continue For + End If RightKeywords.Add(Keyword) Next - Task.Input.SearchFilter = Join(ArrayNoDouble(RightKeywords), " ").ToLower + If RawFilter.Length > 0 AndAlso RightKeywords.Count = 0 Then + Task.Input.SearchFilter = RawFilter '全都被过滤掉了 + Else + Task.Input.SearchFilter = Join(ArrayNoDouble(RightKeywords), " ").ToLower + End If '例外项:OptiForge、OptiFabric(拆词后因为包含 Forge/Fabric 导致无法搜到实际的 Mod) - If RawFilter.ToLower.Contains("optiforge") Then Task.Input.SearchFilter = "optiforge" - If RawFilter.ToLower.Contains("optifabric") Then Task.Input.SearchFilter = "optifabric" + If RawFilter.Replace(" ", "").ToLower.Contains("optiforge") Then Task.Input.SearchFilter = "optiforge" + If RawFilter.Replace(" ", "").ToLower.Contains("optifabric") Then Task.Input.SearchFilter = "optifabric" Log("[Download] CurseForge 工程列表搜索最终文本:" & Task.Input.SearchFilter, LogLevel.Developer) '正式获取 Dim Url = Task.Input.GetAddress() @@ -1505,7 +1513,6 @@ Json = NetGetCodeByRequestRetry("https://api.curseforge.com/v1/mods/" & ProjectId & "/files?pageSize=999", Accept:="application/json", IsJson:=True)("data") Else 'Mod 使用每个版本最新的文件 - 'TODO: 完整 Mod 文件列表支持 Json = GetJson(NetRequestRetry("https://api.curseforge.com/v1/mods/files", "POST", "{""fileIds"": [" & Join(TargetProject.FileIndexes, ",") & "]}", "application/json"))("data") End If Dim Files As New Dictionary(Of Integer, DlCfFile) @@ -1633,6 +1640,10 @@ ExitSub: If WaitCycle = 0 Then '启动第一个源 LoaderList(0).Key.Start(MainLoader.Input, IsForceRestart) + '将其他源标记为未启动,以确保可以切换下载源(#184) + For i = 1 To LoaderList.Count - 1 + LoaderList(i).Key.State = LoadState.Waiting + Next End If For i = 0 To LoaderList.Count - 1 If WaitCycle = LoaderList(i).Value * 100 Then diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 69371a2..e417841 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -15,7 +15,7 @@ Public Module ModLaunch End Sub '启动状态切换 - Public McLaunchLoader As New LoaderTask(Of String, Object)("Loader Launch", AddressOf McLaunchStart) With {.OnStateChanged = AddressOf McLaunchState, .ReloadTimeout = 1} + Public McLaunchLoader As New LoaderTask(Of String, Object)("Loader Launch", AddressOf McLaunchStart) With {.OnStateChanged = AddressOf McLaunchState} Public McLaunchLoaderReal As LoaderCombo(Of Object) Public McLaunchProcess As Process Public McLaunchWatcher As Watcher @@ -206,12 +206,13 @@ NextInner: Public AccessToken As String = "" Public Uuid As String = "" Public UserName As String = "" + Public ProfileJson As String = "" Public Sub New() Type = McLoginType.Ms End Sub Public Overrides Function GetHashCode() As Integer - Return GetHash(OAuthRefreshToken & AccessToken & Uuid & UserName) Mod Integer.MaxValue + Return GetHash(OAuthRefreshToken & AccessToken & Uuid & UserName & ProfileJson) Mod Integer.MaxValue End Function End Class Public Class McLoginLegacy @@ -419,7 +420,8 @@ NextInner: Data.Progress = 0.05 '检查是否已经登录完成 If Input.AccessToken <> "" AndAlso Not Data.IsForceRestarting Then - Data.Output = New McLoginResult With {.AccessToken = Input.AccessToken, .Name = Input.UserName, .Uuid = Input.Uuid, .Type = "Microsoft", .ClientToken = Input.Uuid} + Data.Output = New McLoginResult With + {.AccessToken = Input.AccessToken, .Name = Input.UserName, .Uuid = Input.Uuid, .Type = "Microsoft", .ClientToken = Input.Uuid, .ProfileJson = Input.ProfileJson} GoTo SkipLogin End If '尝试登录 @@ -456,6 +458,7 @@ Relogin: Setup.Set("CacheMsAccess", AccessToken) Setup.Set("CacheMsUuid", Result(0)) Setup.Set("CacheMsName", Result(1)) + Setup.Set("CacheMsProfileJson", Result(2)) Data.Output = New McLoginResult With {.AccessToken = AccessToken, .Name = Result(1), .Uuid = Result(0), .Type = "Microsoft", .ClientToken = Result(0), .ProfileJson = Result(2)} '解锁主题 SkipLogin: @@ -1076,6 +1079,18 @@ SystemBrowser: Private McLaunchArgument As String + ''' + ''' 释放 Java Wrapper 并返回文件路径。 + ''' + Public Function ExtractJavaWrapper() As String + Dim WrapperPath As String = PathAppdata & "JavaWrapper.jar" + If Not File.Exists(WrapperPath) OrElse New FileInfo(WrapperPath).Length > 20 * 1024 Then + WriteFile(WrapperPath, GetResources("JavaWrapper")) + McLaunchLog("已自动释放 Java Wrapper") + End If + Return WrapperPath + End Function + '主方法,合并 Jvm、Game、Replace 三部分的参数数据 Private Sub McLaunchArgumentMain(Loader As LoaderTask(Of String, List(Of McLibToken))) McLaunchLog("开始获取 Minecraft 启动参数") @@ -1175,12 +1190,7 @@ SystemBrowser: '添加 Java Wrapper 作为主 Jar If McLaunchJavaSelected.VersionCode >= 9 Then DataList.Add("--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED") - Dim WrapperPath As String = PathAppdata & "JavaWrapper.jar" - If Not File.Exists(WrapperPath) Then - WriteFile(WrapperPath, GetResources("JavaWrapper")) - McLaunchLog("已自动释放 Java Wrapper") - End If - DataList.Add("-jar """ & WrapperPath & """") + DataList.Add("-jar """ & ExtractJavaWrapper() & """") '添加 MainClass If Version.JsonObject("mainClass") Is Nothing Then @@ -1244,12 +1254,7 @@ NextVersion: '添加 Java Wrapper 作为主 Jar If McLaunchJavaSelected.VersionCode >= 9 Then DataList.Add("--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED") - Dim WrapperPath As String = PathAppdata & "JavaWrapper.jar" - If Not File.Exists(WrapperPath) Then - WriteFile(WrapperPath, GetResources("JavaWrapper")) - McLaunchLog("已自动释放 Java Wrapper") - End If - DataList.Add("-jar """ & WrapperPath & """") + DataList.Add("-jar """ & ExtractJavaWrapper() & """") '将 "-XXX" 与后面 "XXX" 合并到一起 '如果不合并,会导致 Forge 1.17 启动无效,它有两个 --add-exports,进一步导致其中一个在后面被去重 @@ -1619,7 +1624,7 @@ NextVersion: Directory.CreateDirectory(McVersionCurrent.PathIndie & "resourcepacks\") Dim ZipFileAddress As String = McVersionCurrent.PathIndie & "resourcepacks\PCL2 Skin.zip" Dim NewTypeSetup As Boolean = McVersionCurrent.Version.McCodeMain >= 13 OrElse McVersionCurrent.Version.McCodeMain < 6 - If McLoginLoader.Input.Type = McLoginType.Legacy AndAlso Setup.Get("LaunchSkinType") = 4 AndAlso File.Exists(PathTemp & "CustomSkin.png") Then + If McLoginLoader.Input.Type = McLoginType.Legacy AndAlso Setup.Get("LaunchSkinType") = 4 AndAlso File.Exists(PathAppdata & "CustomSkin.png") Then Directory.CreateDirectory(PathTemp) Dim MetaFileAddress As String = PathTemp & "pack.mcmeta" Dim PackPicAddress As String = PathTemp & "pack.png" @@ -1659,7 +1664,7 @@ NextVersion: Dim Bit As New MyBitmap(PathImage & "Heads/Logo.png") Bit.Save(PackPicAddress) WriteFile(MetaFileAddress, "{""pack"":{""pack_format"":" & PackFormat & ",""description"":""PCL2 自定义离线皮肤资源包""}}") - Dim Skin As New MyBitmap(PathTemp & "CustomSkin.png") + Dim Skin As New MyBitmap(PathAppdata & "CustomSkin.png") If (McVersionCurrent.Version.McCodeMain = 6 OrElse McVersionCurrent.Version.McCodeMain = 7) AndAlso Skin.Pic.Height = 64 Then McLaunchLog("该 Minecraft 版本不支持双层皮肤,已进行裁剪") Skin = Skin.Clip(New System.Drawing.Rectangle(0, 0, 64, 32)) diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb index b5cfcc3..72c3f81 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb @@ -404,7 +404,6 @@ Wait: Log(ex, "遍历查找 Java 时出错(" & OriginalPath.FullName & ")") End Try End Sub - Public PathAppdata As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\PCL\" '获取 @@ -837,7 +836,7 @@ UserPass: ''' Public ReadOnly Property PathIndie As String Get - Return GetPathIndie(Version.Modable) + Return GetPathIndie(Modable) End Get End Property ''' @@ -917,6 +916,15 @@ UserPass: ''' Public DisplayType As McVersionCardType = McVersionCardType.Auto ''' + ''' 该版本是否可以安装 Mod。 + ''' + Public ReadOnly Property Modable As Boolean + Get + Return Version.HasFabric OrElse Version.HasForge OrElse Version.HasLiteLoader OrElse + DisplayType = McVersionCardType.API '#223 + End Get + End Property + ''' ''' 版本信息。 ''' Public Property Version As McVersionInfo @@ -1009,7 +1017,7 @@ UserPass: _Version.McName = Regex GoTo VersionSearchFinish End If - 'TODO: [Quilt 支持] 从 Quilt 版本中获取版本号 + 'FUTURE: [Quilt 支持] 从 Quilt 版本中获取版本号 '从 jar 项中获取版本号 If JsonObject("jar") IsNot Nothing Then _Version.McName = JsonObject("jar").ToString @@ -1324,7 +1332,7 @@ Recheck: Version.HasLiteLoader = True End If 'Fabric、Forge - 'TODO: [Quilt 支持] 确认这里的玩意儿对不对 + 'FUTURE: [Quilt 支持] 确认这里的玩意儿对不对 If RealJson.Contains("net.fabricmc:fabric-loader") OrElse RealJson.Contains("org.quiltmc:quilt-loader") Then State = McVersionState.Fabric Version.FabricVersion = If(RegexSeek(RealJson, "(?<=(net.fabricmc:fabric-loader:)|(org.quiltmc:quilt-loader:))[0-9\.]+(\+build.[0-9]+)?"), "未知版本").Replace("+build", "") @@ -1511,15 +1519,6 @@ ExitDataLoad: 'API - ''' - ''' 该版本是否可以安装 Mod。 - ''' - Public ReadOnly Property Modable As Boolean - Get - Return HasFabric OrElse HasForge OrElse HasLiteLoader - End Get - End Property - ''' ''' 生成对此版本信息的用户友好的描述性字符串。 ''' diff --git a/Plain Craft Launcher 2/My Project/AssemblyInfo.vb b/Plain Craft Launcher 2/My Project/AssemblyInfo.vb index f426611..3f55573 100644 --- a/Plain Craft Launcher 2/My Project/AssemblyInfo.vb +++ b/Plain Craft Launcher 2/My Project/AssemblyInfo.vb @@ -51,6 +51,6 @@ Imports System.Runtime.InteropServices ' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 ' 方法是按如下所示使用“*” - - + + diff --git a/Plain Craft Launcher 2/My Project/Resources.Designer.vb b/Plain Craft Launcher 2/My Project/Resources.Designer.vb index ab2984a..033f910 100644 --- a/Plain Craft Launcher 2/My Project/Resources.Designer.vb +++ b/Plain Craft Launcher 2/My Project/Resources.Designer.vb @@ -140,16 +140,6 @@ Namespace My.Resources End Get End Property - ''' - ''' 查找 System.Byte[] 类型的本地化资源。 - ''' - Friend ReadOnly Property STUN() As Byte() - Get - Dim obj As Object = ResourceManager.GetObject("STUN", resourceCulture) - Return CType(obj,Byte()) - End Get - End Property - ''' ''' 查找 System.Byte[] 类型的本地化资源。 ''' diff --git a/Plain Craft Launcher 2/My Project/Resources.resx b/Plain Craft Launcher 2/My Project/Resources.resx index 1f4dccf..fb11c58 100644 --- a/Plain Craft Launcher 2/My Project/Resources.resx +++ b/Plain Craft Launcher 2/My Project/Resources.resx @@ -142,9 +142,6 @@ ..\Resources\NAudio.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\STUN.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - ..\Resources\transformer.jar;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 diff --git a/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb index 97b5104..2b710bd 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb @@ -378,12 +378,7 @@ Public Module ModDownloadLib Throw New Exception("未找到用于安装 OptiFine 的 Java") End If '添加 Java Wrapper 作为主 Jar - Dim WrapperPath As String = PathAppdata & "JavaWrapper.jar" - If Not File.Exists(WrapperPath) Then - WriteFile(WrapperPath, GetResources("JavaWrapper")) - McLaunchLog("已自动释放 Java Wrapper") - End If - Dim Arguments = "-Duser.home=""" & BaseMcFolderHome & """ -cp """ & Target & """ -jar """ & WrapperPath & """ optifine.Installer" + Dim Arguments = "-Duser.home=""" & BaseMcFolderHome & """ -cp """ & Target & """ -jar """ & ExtractJavaWrapper() & """ optifine.Installer" If Java.VersionCode >= 9 Then Arguments = "--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED " & Arguments '开始启动 SyncLock InstallSyncLock @@ -528,7 +523,10 @@ Public Module ModDownloadLib '等待原版文件下载完成 For Each Loader In ClientDownloadLoader.GetLoaderList If Loader.Name <> McDownloadClientLibName Then Continue For - Loader.WaitForExit() + If Loader.State = LoadState.Loading Then + Log("[Download] OptiFine 安装正在等待原版文件下载完成") + Loader.WaitForExit() + End If Exit For Next '拷贝原版文件 @@ -1094,12 +1092,7 @@ Public Module ModDownloadLib Throw New Exception("未找到用于安装 Forge 的 Java") End If '添加 Java Wrapper 作为主 Jar - Dim WrapperPath As String = PathAppdata & "JavaWrapper.jar" - If Not File.Exists(WrapperPath) Then - WriteFile(WrapperPath, GetResources("JavaWrapper")) - McLaunchLog("已自动释放 Java Wrapper") - End If - Dim Arguments = "-cp """ & PathTemp & "Cache\forge_installer.jar;" & Target & """ -jar """ & WrapperPath & """ com.bangbang93.ForgeInstaller """ & McFolder + Dim Arguments = "-cp """ & PathTemp & "Cache\forge_installer.jar;" & Target & """ -jar """ & ExtractJavaWrapper() & """ com.bangbang93.ForgeInstaller """ & McFolder If Java.VersionCode >= 9 Then Arguments = "--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED " & Arguments '开始启动 SyncLock InstallSyncLock @@ -1339,7 +1332,10 @@ Public Module ModDownloadLib '等待原版文件下载完成 For Each Loader In ClientDownloadLoader.GetLoaderList If Loader.Name <> McDownloadClientLibName Then Continue For - Loader.WaitForExit() + If Loader.State = LoadState.Loading Then + Log("[Download] Forge 安装正在等待原版文件下载完成") + Loader.WaitForExit() + End If Exit For Next '拷贝原版文件 diff --git a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCfDetail.xaml.vb b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCfDetail.xaml.vb index b18ea7b..bc08112 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCfDetail.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCfDetail.xaml.vb @@ -119,7 +119,7 @@ #End Region Private IsFirstInit As Boolean = True - Public Sub Init() Handles Me.OnPageEnter + Public Sub Init() Handles Me.PageEnter AniControlEnabled += 1 Project = FrmMain.PageCurrent.Additional PanBack.ScrollToHome() @@ -200,7 +200,7 @@ DefaultFolder = DownloadFolder If McVersionCurrent IsNot Nothing Then If Not McVersionCurrent.IsLoaded Then McVersionCurrent.Load() - If McVersionCurrent.Version.Modable Then + If McVersionCurrent.Modable Then DefaultFolder = McVersionCurrent.PathIndie & "mods\" Directory.CreateDirectory(DefaultFolder) End If diff --git a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb index 7f9b597..f7e8459 100644 --- a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb @@ -479,12 +479,12 @@ UseDefault: End If End Try Case 4 '自定义 - If Not File.Exists(PathTemp & "CustomSkin.png") Then + If Not File.Exists(PathAppdata & "CustomSkin.png") Then Hint("未找到离线皮肤自定义文件,可能它已被删除。PCL2 将使用默认的 Steve 皮肤!") Setup.Set("LaunchSkinType", 1) GoTo UseDefault End If - Data.Output = PathTemp & "CustomSkin.png" + Data.Output = PathAppdata & "CustomSkin.png" End Select '刷新显示 If FrmLoginLegacy IsNot Nothing Then @@ -607,7 +607,7 @@ Finish: Public Sub LaunchButtonClick(Optional ServerIp As String = "") If BtnLaunch.IsEnabled AndAlso BtnLaunch.Visibility = Visibility.Visible AndAlso BtnLaunch.IsHitTestVisible Then If BtnLaunch.Text = "启动游戏" Then - McLaunchLoader.Start(ServerIp) + McLaunchLoader.Start(ServerIp, IsForceRestart:=True) ElseIf BtnLaunch.Text = "下载游戏" Then FrmMain.PageChange(FormMain.PageType.Download, FormMain.PageSubType.DownloadInstall) End If diff --git a/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMojangSkin.xaml.vb b/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMojangSkin.xaml.vb index 129a104..b614822 100644 --- a/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMojangSkin.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMojangSkin.xaml.vb @@ -88,7 +88,7 @@ MySkin.ReloadCache("http://textures.minecraft.net/texture/" & Result, False) ElseIf Result.ToLower.Contains("ip not secured") Then If MyMsgBox("首次操作需要在官网验证密保问题。" & vbCrLf & "验证完成后,你即可使用 PCL 更改皮肤,且无需再次验证。", "验证密保问题", "开始验证", "取消") = 1 Then - OpenWebsite("https://www.minecraft.net/zh-hans/msaprofile/mygames/editskin") + OpenWebsite("https://www.minecraft.net/zh-hans/profile/skin") End If ElseIf Result.Contains("request requires user authentication") Then Hint("正在重新登录,请稍后再次尝试更改皮肤!") diff --git a/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMsSkin.xaml.vb b/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMsSkin.xaml.vb index 6682b29..823c5a4 100644 --- a/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMsSkin.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMsSkin.xaml.vb @@ -20,7 +20,7 @@ ''' Public Shared Function GetLoginData() As McLoginMs If McLoginMsLoader.State = LoadState.Finished Then - Return New McLoginMs With {.OAuthRefreshToken = Setup.Get("CacheMsOAuthRefresh"), .UserName = Setup.Get("CacheMsName"), .AccessToken = Setup.Get("CacheMsAccess"), .Uuid = Setup.Get("CacheMsUuid")} + Return New McLoginMs With {.OAuthRefreshToken = Setup.Get("CacheMsOAuthRefresh"), .UserName = Setup.Get("CacheMsName"), .AccessToken = Setup.Get("CacheMsAccess"), .Uuid = Setup.Get("CacheMsUuid"), .ProfileJson = Setup.Get("CacheMsProfileJson")} Else Return New McLoginMs With {.OAuthRefreshToken = Setup.Get("CacheMsOAuthRefresh"), .UserName = Setup.Get("CacheMsName")} End If @@ -51,6 +51,7 @@ Private Sub BtnExit_Click() Handles BtnExit.Click Setup.Set("CacheMsOAuthRefresh", "") Setup.Set("CacheMsAccess", "") + Setup.Set("CacheMsProfileJson", "") Setup.Set("CacheMsUuid", "") Setup.Set("CacheMsName", "") McLoginMsLoader.Abort() diff --git a/Plain Craft Launcher 2/Pages/PageLink/PageLinkFeedback.xaml b/Plain Craft Launcher 2/Pages/PageLink/PageLinkFeedback.xaml index 1d70083..fe74e5b 100644 --- a/Plain Craft Launcher 2/Pages/PageLink/PageLinkFeedback.xaml +++ b/Plain Craft Launcher 2/Pages/PageLink/PageLinkFeedback.xaml @@ -4,31 +4,35 @@ xmlns:local="clr-namespace:PCL" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="PageLinkFeedback" d:DesignWidth="800" d:DesignHeight="800"> - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + diff --git a/Plain Craft Launcher 2/Pages/PageLink/PageLinkFeedback.xaml.vb b/Plain Craft Launcher 2/Pages/PageLink/PageLinkFeedback.xaml.vb index 01d2504..304bb68 100644 --- a/Plain Craft Launcher 2/Pages/PageLink/PageLinkFeedback.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageLink/PageLinkFeedback.xaml.vb @@ -1,3 +1,2 @@ Public Class PageLinkFeedback - End Class diff --git a/Plain Craft Launcher 2/Pages/PageLink/PageLinkHiper.xaml b/Plain Craft Launcher 2/Pages/PageLink/PageLinkHiper.xaml new file mode 100644 index 0000000..deaca3f --- /dev/null +++ b/Plain Craft Launcher 2/Pages/PageLink/PageLinkHiper.xaml @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Plain Craft Launcher 2/Pages/PageLink/PageLinkIoi.xaml b/Plain Craft Launcher 2/Pages/PageLink/PageLinkIoi.xaml index 0ffc18d..fa912d0 100644 --- a/Plain Craft Launcher 2/Pages/PageLink/PageLinkIoi.xaml +++ b/Plain Craft Launcher 2/Pages/PageLink/PageLinkIoi.xaml @@ -8,7 +8,6 @@ - @@ -19,7 +18,7 @@ - + @@ -44,5 +43,8 @@ + + + diff --git a/Plain Craft Launcher 2/Pages/PageLink/PageLinkLeft.xaml b/Plain Craft Launcher 2/Pages/PageLink/PageLinkLeft.xaml index e20ed15..2ca0ad3 100644 --- a/Plain Craft Launcher 2/Pages/PageLink/PageLinkLeft.xaml +++ b/Plain Craft Launcher 2/Pages/PageLink/PageLinkLeft.xaml @@ -6,28 +6,18 @@ xmlns:local="clr-namespace:PCL" mc:Ignorable="d" AnimatedControl="{Binding ElementName=PanItem}" MinWidth="150"> - - - - - - - - - + - - @@ -37,8 +27,8 @@ - - + @@ -46,9 +36,9 @@ - - diff --git a/Plain Craft Launcher 2/Pages/PageLink/PageLinkLeft.xaml.vb b/Plain Craft Launcher 2/Pages/PageLink/PageLinkLeft.xaml.vb new file mode 100644 index 0000000..716e301 --- /dev/null +++ b/Plain Craft Launcher 2/Pages/PageLink/PageLinkLeft.xaml.vb @@ -0,0 +1,192 @@ +Imports NetFwTypeLib + +Public Class PageLinkLeft + + Private IsLoad As Boolean = False + Private IsPageSwitched As Boolean = False '如果在 Loaded 前切换到其他页面,会导致触发 Loaded 时再次切换一次 + Private Sub PageLinkLeft_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded + If IsLoad Then Exit Sub + IsLoad = True + '切换默认页面 + If IsPageSwitched Then Exit Sub + ItemHiper.SetChecked(True, False, False) + End Sub + Private Sub PageOtherLeft_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded + IsPageSwitched = False + End Sub + +#Region "Windows 防火墙" + + '为联机模块添加防火墙通行权限的函数库 + '不加防火墙权限你要我怎么办,这联机根本连都连不上,球球你们别看到防火墙就说是后门了,真的很恼火…… + + ''' + ''' 获取某个文件是否被 Windows 防火墙阻止。 + ''' + Public Shared Function FirewallIsBlock(FilePath As String) As Boolean + '获取配置 + If FirewallPolicy Is Nothing Then + Try + FirewallPolicy = FirewallPolicyGet() + Catch ex As Exception + Log(ex, "Windows 防火墙:可能关闭得太死了,根本检测不到,笑死", LogLevel.Normal) + Return False + End Try + End If + '检查是否开启 + If Not FirewallPolicy.CurrentProfile.FirewallEnabled Then + Log("[Link] Windows 防火墙:防火墙关闭") + Return False + End If + '检查是否允许例外 + If FirewallPolicy.CurrentProfile.ExceptionsNotAllowed Then + Log("[Link] Windows 防火墙:防火墙开启,不允许例外") + Return True + End If + '检查白名单 + Dim Target As String = FilePath.Replace(PathTemp.Split("\").First, "").ToLower + For Each App As INetFwAuthorizedApplication In FirewallPolicy.CurrentProfile.AuthorizedApplications + If ModeDebug Then Log("[Link] 防火墙白名单(" & App.Enabled & "):" & App.ProcessImageFileName) + If Not App.Enabled Then Continue For + '信标的奇妙盘符 E:0/xxxxx/xxx 导致误判…… + Dim FileNameTrimmed As String = App.ProcessImageFileName.Replace(App.ProcessImageFileName.Split("\").First, "") + If App.ProcessImageFileName.ToLower.Contains(FilePath) Then + Log("[Link] Windows 防火墙:开启,已在白名单中(" & FilePath & ")") + Return False + End If + Next + Log("[Link] Windows 防火墙:开启,未在白名单中(" & FilePath & ")") + Return True + End Function + ''' + ''' 添加防火墙通行权限。需要管理员权限。 + ''' + Public Shared Sub FirewallAddAuthorized(DisplayName As String, FilePath As String) + Log("[Link] Windows 防火墙:添加通行权限(" & FilePath & ")") + '获取配置 + If FirewallPolicy Is Nothing Then FirewallPolicy = FirewallPolicyGet() + '添加项目 + FirewallPolicy.GetProfileByType(NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_DOMAIN).AuthorizedApplications.Add(New FirewallApp(DisplayName, FilePath)) + FirewallPolicy.GetProfileByType(NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_STANDARD).AuthorizedApplications.Add(New FirewallApp(DisplayName, FilePath)) + FirewallPolicy.CurrentProfile.AuthorizedApplications.Add(New FirewallApp(DisplayName, FilePath)) + End Sub + Private Class FirewallApp + Implements INetFwAuthorizedApplication + Public Property Name As String Implements INetFwAuthorizedApplication.Name + Public Property ProcessImageFileName As String Implements INetFwAuthorizedApplication.ProcessImageFileName + Public Property IpVersion As NET_FW_IP_VERSION_ = NET_FW_IP_VERSION_.NET_FW_IP_VERSION_ANY Implements INetFwAuthorizedApplication.IpVersion + Public Property Scope As NET_FW_SCOPE_ = NET_FW_SCOPE_.NET_FW_SCOPE_ALL Implements INetFwAuthorizedApplication.Scope + Public Property RemoteAddresses As String = "*" Implements INetFwAuthorizedApplication.RemoteAddresses + Public Property Enabled As Boolean = True Implements INetFwAuthorizedApplication.Enabled + Public Sub New(DisplayName As String, FilePath As String) + Name = DisplayName + ProcessImageFileName = FilePath + End Sub + End Class + '获取防火墙配置 + Public Shared FirewallPolicy As INetFwPolicy = Nothing + Public Shared Function FirewallPolicyGet() As INetFwPolicy + Const CLSID_FIREWALL_MANAGER As String = "{304CE942-6E39-40D8-943A-B913C40C9CD4}" + Dim objType As Type = Type.GetTypeFromCLSID(New Guid(CLSID_FIREWALL_MANAGER)) + Return TryCast(Activator.CreateInstance(objType), INetFwMgr).LocalPolicy + End Function + +#End Region + +#Region "页面切换" + + ''' + ''' 当前页面的编号。 + ''' + Public PageID As FormMain.PageSubType = FormMain.PageSubType.LinkHiper + + ''' + ''' 勾选事件改变页面。 + ''' + Private Sub PageCheck(sender As MyListItem, e As RouteEventArgs) Handles ItemHiper.Check, ItemIoi.Check, ItemSetup.Check, ItemHelp.Check, ItemFeedback.Check + '尚未初始化控件属性时,sender.Tag 为 Nothing,会导致切换到页面 0 + '若使用 IsLoaded,则会导致模拟点击不被执行(模拟点击切换页面时,控件的 IsLoaded 为 False) + If sender.Tag IsNot Nothing Then PageChange(Val(sender.Tag)) + End Sub + + Public Function PageGet(Optional ID As FormMain.PageSubType = -1) + If ID = -1 Then ID = PageID + Select Case ID + Case 0, FormMain.PageSubType.LinkHiper + If FrmLinkHiper Is Nothing Then FrmLinkHiper = New PageLinkHiper + Return FrmLinkHiper + Case FormMain.PageSubType.LinkIoi + If FrmLinkIoi Is Nothing Then FrmLinkIoi = New PageLinkIoi + Return FrmLinkIoi + Case FormMain.PageSubType.LinkSetup + If FrmSetupLink Is Nothing Then FrmSetupLink = New PageSetupLink + Return FrmSetupLink + Case FormMain.PageSubType.LinkHelp + If FrmLinkHelp Is Nothing Then FrmLinkHelp = PageOtherHelp.GetHelpPage(PathTemp & "Help\启动器\联机.json") + Return FrmLinkHelp + Case FormMain.PageSubType.LinkFeedback + If FrmLinkFeedback Is Nothing Then FrmLinkFeedback = New PageLinkFeedback + Return FrmLinkFeedback + Case Else + Throw New Exception("未知的更多子页面种类:" & ID) + End Select + End Function + + ''' + ''' 切换现有页面。 + ''' + Public Sub PageChange(ID As FormMain.PageSubType) + If PageID = ID Then Exit Sub + AniControlEnabled += 1 + IsPageSwitched = True + Try + PageChangeRun(PageGet(ID)) + PageID = ID + Catch ex As Exception + Log(ex, "切换设置分页面失败(ID " & ID & ")", LogLevel.Feedback) + Finally + AniControlEnabled -= 1 + End Try + End Sub + Private Shared Sub PageChangeRun(Target As MyPageRight) + AniStop("FrmMain PageChangeRight") '停止主页面的右页面切换动画,防止它与本动画一起触发多次 PageOnEnter + If Target.Parent IsNot Nothing Then Target.SetValue(ContentPresenter.ContentProperty, Nothing) + FrmMain.PageRight = Target + CType(FrmMain.PanMainRight.Child, MyPageRight).PageOnExit() + AniStart({ + AaCode(Sub() + CType(FrmMain.PanMainRight.Child, MyPageRight).PageOnForceExit() + FrmMain.PanMainRight.Child = FrmMain.PageRight + FrmMain.PageRight.Opacity = 0 + End Sub, 130), + AaCode(Sub() + '延迟触发页面通用动画,以使得在 Loaded 事件中加载的控件得以处理 + FrmMain.PageRight.Opacity = 1 + FrmMain.PageRight.PageOnEnter() + End Sub, 30, True) + }, "PageLeft PageChange") + End Sub + +#End Region + + Public Sub Reset(sender As Object, e As EventArgs) + If MyMsgBox("是否要初始化联机页的所有设置?该操作不可撤销。", "初始化确认",, "取消", IsWarn:=True) = 1 Then + If IsNothing(FrmSetupLink) Then FrmSetupLink = New PageSetupLink + FrmSetupLink.Reset() + End If + End Sub + + Private Sub BtnHiperStop_Loaded(sender As Object, e As RoutedEventArgs) + sender.Visibility = If(PageLinkHiper.HiperState = LoadState.Finished OrElse PageLinkHiper.HiperState = LoadState.Loading, Visibility.Visible, Visibility.Collapsed) + End Sub + Private Sub BtnHiperStop_Click(sender As Object, e As EventArgs) + PageLinkHiper.ModuleStopManually() + End Sub + Private Sub BtnIoiStop_Loaded(sender As Object, e As RoutedEventArgs) + sender.Visibility = If(PageLinkIoi.InitLoader.State = LoadState.Finished, Visibility.Visible, Visibility.Collapsed) + End Sub + Private Sub BtnIoiStop_Click(sender As Object, e As EventArgs) + PageLinkIoi.ModuleStopManually() + End Sub + +End Class diff --git a/Plain Craft Launcher 2/Pages/PageSelectLeft.xaml.vb b/Plain Craft Launcher 2/Pages/PageSelectLeft.xaml.vb index b231dda..d7483ae 100644 --- a/Plain Craft Launcher 2/Pages/PageSelectLeft.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSelectLeft.xaml.vb @@ -238,7 +238,7 @@ For Each VersionPath In VersionFolder.EnumerateDirectories Dim Version As New McVersion(VersionPath.FullName) Version.Load() - If Not Version.Version.Modable Then Continue For + If Not Version.Modable Then Continue For '4. 该版本的隔离文件夹下不存在 mods Dim ModIndieFolder As New DirectoryInfo(Version.Path & "mods\") If ModIndieFolder.Exists AndAlso ModIndieFolder.EnumerateFiles.Count > 0 Then Exit Sub diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb index 88835b0..e9fadeb 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb @@ -114,8 +114,8 @@ '设置文件 Try '拷贝文件 - File.Delete(PathTemp & "CustomSkin.png") - CopyFile(SkinInfo.LocalFile, PathTemp & "CustomSkin.png") + File.Delete(PathAppdata & "CustomSkin.png") + CopyFile(SkinInfo.LocalFile, PathAppdata & "CustomSkin.png") '更新设置 Setup.Set("LaunchSkinSlim", SkinInfo.IsSlim) Catch ex As Exception @@ -129,7 +129,7 @@ If Not (AniControlEnabled = 0 AndAlso e.RaiseByMouse) Then Exit Sub Try '已有图片则不再选择 - If File.Exists(PathTemp & "CustomSkin.png") Then Exit Sub + If File.Exists(PathAppdata & "CustomSkin.png") Then Exit Sub '没有图片则要求选择 Dim SkinInfo As McSkinInfo = McSkinSelect(True) If Not SkinInfo.IsVaild Then @@ -137,8 +137,8 @@ Exit Sub End If '拷贝文件 - File.Delete(PathTemp & "CustomSkin.png") - CopyFile(SkinInfo.LocalFile, PathTemp & "CustomSkin.png") + File.Delete(PathAppdata & "CustomSkin.png") + CopyFile(SkinInfo.LocalFile, PathAppdata & "CustomSkin.png") '更新设置 Setup.Set("LaunchSkinSlim", SkinInfo.IsSlim) Catch ex As Exception @@ -151,7 +151,7 @@ End Sub Private Sub BtnSkinDelete_Click(sender As Object, e As EventArgs) Handles BtnSkinDelete.Click Try - File.Delete(PathTemp & "CustomSkin.png") + File.Delete(PathAppdata & "CustomSkin.png") RadioSkinType0.SetChecked(True, True, True) Hint("离线皮肤已清空!", HintType.Finish) Catch ex As Exception @@ -335,7 +335,7 @@ Dim RamTarget2 As Double '估计没啥问题了的内存 Dim RamTarget3 As Double '放一百万个材质和 Mod 和光影需要的内存 If Version IsNot Nothing AndAlso Not Version.IsLoaded Then Version.Load() - If Version IsNot Nothing AndAlso Version.Version.Modable Then + If Version IsNot Nothing AndAlso Version.Modable Then '可安装 Mod 的版本 Dim ModDir As New DirectoryInfo(Version.PathIndie & "mods\") Dim ModCount As Integer = If(ModDir.Exists, ModDir.GetFiles.Length, 0) diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLink.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLink.xaml index ae13c9b..c6c4a99 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLink.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLink.xaml @@ -6,8 +6,14 @@ d:DesignWidth="800" d:DesignHeight="800"> - - + + + + + + + + @@ -26,8 +32,6 @@ - diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLink.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLink.xaml.vb index ad23b2f..55e5b6a 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLink.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLink.xaml.vb @@ -17,15 +17,15 @@ End Sub Public Sub Reload() - CheckLinkAuto.Checked = Setup.Get("LinkAuto") TextLinkName.Text = Setup.Get("LinkName") + CheckHiperCertWarn.Checked = Setup.Get("LinkHiperCertWarn") End Sub '初始化 Public Sub Reset() Try - Setup.Reset("LinkAuto") Setup.Reset("LinkName") + Setup.Reset("LinkHiperCertWarn") Log("[Setup] 已初始化联机页设置") Hint("已初始化联机页设置!", HintType.Finish, False) @@ -37,11 +37,19 @@ End Sub '将控件改变路由到设置改变 - Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckLinkAuto.Change - If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked) - End Sub Private Shared Sub TextBoxChange(sender As MyTextBox, e As Object) Handles TextLinkName.ValidatedTextChanged If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Text) End Sub + Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckHiperCertWarn.Change + If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked) + End Sub + + Private Sub BtnHiperLog_Click(sender As Object, e As EventArgs) Handles BtnHiperLog.Click + If File.Exists(PageLinkHiper.PathHiper & "logs\hiper.log") Then + OpenExplorer("/select,""" & PageLinkHiper.PathHiper & "logs\hiper.log""") + Else + Hint("没有找到 HiPer 联机模块的日志!") + End If + End Sub End Class diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml.vb index eb1f338..60207fa 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml.vb @@ -183,7 +183,6 @@ Dim Temp As String() Temp = Directory.GetFiles(Path) For Each str As String In Temp - If str = PathTemp & "CustomSkin.png" OrElse str = PathTemp & "联机模块.exe" Then Continue For '不删除的文件 Try Dim Info As New FileInfo(str) Dim FileActualSize = Math.Ceiling(Info.Length / 4096) * 4096 diff --git a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionLeft.xaml.vb b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionLeft.xaml.vb index afcd0bc..c5d9f35 100644 --- a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionLeft.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionLeft.xaml.vb @@ -5,8 +5,8 @@ ''' Public Shared Version As McVersion - Private Sub PageVersionLeft_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded - If Version IsNot Nothing AndAlso Version.Version.Modable Then + Public Sub RefreshModDisabled() Handles Me.Loaded + If Version IsNot Nothing AndAlso Version.Modable Then ItemMod.Visibility = Visibility.Visible ItemModDisabled.Visibility = Visibility.Collapsed Else diff --git a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb index b7d7cb6..f14c5cb 100644 --- a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb @@ -57,7 +57,11 @@ If ComboDisplayType.SelectedIndex <> 1 Then '改为不隐藏 Try + '若设置分类为可安装 Mod,则显示正常的 Mod 管理页面 WriteIni(PageVersionLeft.Version.Path & "PCL\Setup.ini", "DisplayType", ComboDisplayType.SelectedIndex) + PageVersionLeft.Version.DisplayType = ReadIni(PageVersionLeft.Version.Path & "PCL\Setup.ini", "DisplayType", McVersionCardType.Auto) + FrmVersionLeft.RefreshModDisabled() + WriteIni(PathMcFolder & "PCL.ini", "VersionCache", "") '要求刷新缓存 LoaderFolderRun(McVersionListLoader, PathMcFolder, LoaderFolderRunType.ForceRun, MaxDepth:=1, ExtraPath:="versions\") Catch ex As Exception diff --git a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb index cd26a45..dba8492 100644 --- a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb @@ -275,7 +275,7 @@ Dim RamTarget2 As Double '估计没啥问题了的内存 Dim RamTarget3 As Double '安装过多附加组件需要的内存 If Version IsNot Nothing AndAlso Not Version.IsLoaded Then Version.Load() - If Version IsNot Nothing AndAlso Version.Version.Modable Then + If Version IsNot Nothing AndAlso Version.Modable Then '可安装 Mod 的版本 Dim ModDir As New DirectoryInfo(Version.PathIndie & "mods\") Dim ModCount As Integer = If(ModDir.Exists, ModDir.GetFiles.Length, 0) diff --git a/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj b/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj index 009c46e..53cb7b4 100644 --- a/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj +++ b/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj @@ -152,11 +152,6 @@ Resources\Ookii.Dialogs.Wpf.dll False - - False - Resources\STUN.dll - False - @@ -260,6 +255,9 @@ PageLinkFeedback.xaml + + PageLinkHiper.xaml + PageOtherHelpDetail.xaml @@ -517,6 +515,10 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + Designer MSBuild:Compile @@ -786,22 +788,22 @@ False - Exclude - True + Exclude + True Assembly False - Exclude - True + Exclude + True Assembly @@ -869,9 +871,6 @@ - - - diff --git a/Plain Craft Launcher 2/Resources/Help.zip b/Plain Craft Launcher 2/Resources/Help.zip index 82b277dd4d882f025941febec2dc00ef9251ae54..a82592dcf1c64521558855f397b74325654e3034 100644 GIT binary patch delta 41385 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 D$-a<2 delta 40564 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 EKi3bH{Qv*} diff --git a/Plain Craft Launcher 2/Resources/STUN.dll b/Plain Craft Launcher 2/Resources/STUN.dll deleted file mode 100644 index 082d2209094cd5e6523c46579bc318b74ec72687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18944 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 diff --git a/Plain Craft Launcher 2/Resources/java-wrapper.jar b/Plain Craft Launcher 2/Resources/java-wrapper.jar index eb17c58ea597874e0e4b0f30e65c2275581fb82f..498ace799ca4c0c2dd927b46d2f6355ff015e281 100644 GIT binary patch delta 13289 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 E55wa{UH||9 delta 88436 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 R2mlBG0RjL3w_*VR002CZ?xp|$