diff --git a/Plain Craft Launcher 2/Controls/MyButton.xaml.vb b/Plain Craft Launcher 2/Controls/MyButton.xaml.vb index 686b855..370b399 100644 --- a/Plain Craft Launcher 2/Controls/MyButton.xaml.vb +++ b/Plain Craft Launcher 2/Controls/MyButton.xaml.vb @@ -1,7 +1,7 @@ Public Class MyButton '声明 - Public Event Click(sender As Object, e As EventArgs) '自定义事件 + Public Event Click(sender As Object, e As MouseButtonEventArgs) '自定义事件 '自定义属性 Public Uuid As Integer = GetUuid() diff --git a/Plain Craft Launcher 2/FormMain.xaml.vb b/Plain Craft Launcher 2/FormMain.xaml.vb index 15a7e73..2283842 100644 --- a/Plain Craft Launcher 2/FormMain.xaml.vb +++ b/Plain Craft Launcher 2/FormMain.xaml.vb @@ -10,15 +10,15 @@ Public Class FormMain Dim FeatureList As New List(Of KeyValuePair(Of Integer, String)) '统计更新日志条目 #If BETA Then - If LastVersion < 268 Then 'Release 2.4.1 + If LastVersion < 268 Then 'Release 2.4.2 FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "暂时关闭了联机功能")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "游戏崩溃的弹窗添加了直接查看日志的选项")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "在更多分类下添加了新功能投票选项")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "自动安装时支持检查 OptiFine 对 Forge 的具体版本需求")) FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化自动 Java 选择的准确度")) FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化 Mod 中文名的显示")) - FeatureCount += 12 - BugCount += 30 + FeatureCount += 14 + BugCount += 33 End If If LastVersion < 265 Then 'Release 2.3.5 FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复部分情况下无法启动路径带有中文的游戏的 Bug")) @@ -100,6 +100,11 @@ Public Class FormMain '3:BUG+ IMP* FEAT- '2:BUG* IMP- '1:BUG- + If LastVersion < 269 Then 'Snapshot 2.4.2 + If LastVersion = 267 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法下载 CurseForge 整合包的 Bug")) + FeatureCount += 2 + BugCount += 3 + End If If LastVersion < 267 Then 'Snapshot 2.4.1 FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "暂时关闭了联机功能")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "自动安装时支持检查 OptiFine 对 Forge 的具体版本需求")) diff --git a/Plain Craft Launcher 2/Images/Heads/noin.png b/Plain Craft Launcher 2/Images/Heads/noin.png deleted file mode 100644 index d0b9afd..0000000 Binary files a/Plain Craft Launcher 2/Images/Heads/noin.png and /dev/null differ diff --git a/Plain Craft Launcher 2/Modules/Base/ModBase.vb b/Plain Craft Launcher 2/Modules/Base/ModBase.vb index 97f6af3..f4bcd61 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.4.1" '不含分支前缀的显示用版本名 - Public Const VersionStandardCode As String = "2.4.1." & VersionBranchCode '标准格式的四段式版本号 + Public Const VersionBaseName As String = "2.4.2" '不含分支前缀的显示用版本名 + Public Const VersionStandardCode As String = "2.4.2." & VersionBranchCode '标准格式的四段式版本号 #If BETA Then Public Const VersionCode As Integer = 268 'Release #Else - Public Const VersionCode As Integer = 267 'Snapshot + Public Const VersionCode As Integer = 269 'Snapshot #End If '自动生成的版本信息 Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb index a3fb70b..6e81158 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb @@ -653,11 +653,14 @@ VersionCode = VersionCode.Substring(VersionCode.IndexOf("universal.zip")) MD5 = RegexSeek(VersionCode, "(?<=MD5: )[^<]+") Category = "universal" - Else + ElseIf VersionCode.Contains("client.zip") Then '类型为 client.zip,支持范围 182~ (1.3.2 部分 ~) VersionCode = VersionCode.Substring(VersionCode.IndexOf("client.zip")) MD5 = RegexSeek(VersionCode, "(?<=MD5: )[^<]+") Category = "client" + Else + '没有任何下载(1.6.4 有一部分这种情况) + Continue For End If '添加进列表 Versions.Add(New DlForgeVersionEntry With {.Category = Category, .Version = Name, .IsRecommended = IsRecommended, .Hash = MD5.Trim(vbCr, vbLf), .Inherit = Inherit, .ReleaseTime = ReleaseTime, .Branch = Branch}) diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb index b458f1a..9f5f63a 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb @@ -458,9 +458,6 @@ RetryGet: GoTo RetryGet End If - '若依然未找到适合的 Java,直接返回 - If AllowedJavaList.Count = 0 Then Return Nothing - '检查用户指定的 Java Dim UserSetup As String = Setup.Get("LaunchArgumentJavaSelect") If RelatedVersion IsNot Nothing Then @@ -495,17 +492,24 @@ RetryGet: Dim Right As String = MaxVersion.Minor & If(MaxVersion.MinorRevision < 99, "." & MaxVersion.MinorRevision & "." & MaxVersion.Revision, "") Requirement = "需要 Java " & If(Left = Right, Left, Left & " ~ " & Right) End If - If MyMsgBox("你在启动设置中指定了使用 Java " & UserJava.VersionCode & ",但当前版本" & Requirement & "。" & vbCrLf & - "如果强制使用该 Java,可能会导致游戏崩溃。" & vbCrLf & - vbCrLf & - " - 指定的 Java:" & UserJava.ToString, - "Java 兼容性警告", "让 PCL2 自动选择", "强制使用该 Java") = 2 Then + If Setup.Get("LaunchAdvanceJava") Then + '直接跳过弹窗 + Hint("设置中指定了使用 Java " & UserJava.VersionCode & ",但当前版本" & Requirement & ",这可能会导致游戏崩溃!", HintType.Critical) + AllowedJavaList = New List(Of JavaEntry) From {UserJava} + ElseIf MyMsgBox("你在启动设置中指定了使用 Java " & UserJava.VersionCode & ",但当前版本" & Requirement & "。" & vbCrLf & + "如果强制使用该 Java,可能会导致游戏崩溃。" & vbCrLf & + vbCrLf & + " - 指定的 Java:" & UserJava.ToString, + "Java 兼容性警告", "让 PCL2 自动选择", "强制使用该 Java") = 2 Then '强制使用指定的 Java Log("[Java] 已强制使用用户指定的不兼容 Java") AllowedJavaList = New List(Of JavaEntry) From {UserJava} End If End If + '若依然未找到适合的 Java,直接返回 + If AllowedJavaList.Count = 0 Then Return Nothing + '检查特定的 Java For Each Java In AllowedJavaList If TargetJavaList.Contains(Java) Then @@ -2508,24 +2512,26 @@ NextVersion: If Setup.Get("VersionServerLogin", Version:=Version) = 4 OrElse (PageLinkHiper.HiperState = LoadState.Finished AndAlso Setup.Get("LoginType") = McLoginType.Legacy) Then 'HiPer 登录转接 Dim TargetFile = PathAppdata & "authlib-injector.jar" - Dim DownloadInfo As JObject = Nothing - '获取下载信息 - Try - Log("[Minecraft] 开始获取 Authlib-Injector 下载信息") - DownloadInfo = GetJson(NetGetCodeByDownload({"https://download.mcbbs.net/mirrors/authlib-injector/artifact/latest.json", "https://bmclapi2.bangbang93.com/mirrors/authlib-injector/artifact/latest.json"}, IsJson:=True)) - Catch ex As Exception - Log(ex, "获取 Authlib-Injector 下载信息失败") - End Try - '校验文件 - If DownloadInfo IsNot Nothing Then - Dim Checker As New FileChecker(Hash:=DownloadInfo("checksums")("sha256").ToString) - If (IsSetupSkip AndAlso File.Exists(TargetFile)) OrElse Checker.Check(TargetFile) IsNot Nothing Then - '开始下载 - Dim DownloadAddress As String = DownloadInfo("download_url") - Log("[Minecraft] Authlib-Injector 需要更新:" & DownloadAddress) - Result.Add(New NetFile({ - DownloadAddress.Replace("bmclapi2.bangbang93.com", "download.mcbbs.net"), DownloadAddress - }, TargetFile, New FileChecker(Hash:=DownloadInfo("checksums")("sha256").ToString))) + If Not (IsSetupSkip AndAlso File.Exists(TargetFile)) Then + Dim DownloadInfo As JObject = Nothing + '获取下载信息 + Try + Log("[Minecraft] 开始获取 Authlib-Injector 下载信息") + DownloadInfo = GetJson(NetGetCodeByDownload({"https://download.mcbbs.net/mirrors/authlib-injector/artifact/latest.json", "https://bmclapi2.bangbang93.com/mirrors/authlib-injector/artifact/latest.json"}, IsJson:=True)) + Catch ex As Exception + Log(ex, "获取 Authlib-Injector 下载信息失败") + End Try + '校验文件 + If DownloadInfo IsNot Nothing Then + Dim Checker As New FileChecker(Hash:=DownloadInfo("checksums")("sha256").ToString) + If (IsSetupSkip AndAlso File.Exists(TargetFile)) OrElse Checker.Check(TargetFile) IsNot Nothing Then + '开始下载 + Dim DownloadAddress As String = DownloadInfo("download_url") + Log("[Minecraft] Authlib-Injector 需要更新:" & DownloadAddress) + Result.Add(New NetFile({ + DownloadAddress.Replace("bmclapi2.bangbang93.com", "download.mcbbs.net"), DownloadAddress + }, TargetFile, New FileChecker(Hash:=DownloadInfo("checksums")("sha256").ToString))) + End If End If End If End If diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb index 3780f92..a383530 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb @@ -276,6 +276,14 @@ Retry: Loaders.Add(New LoaderCombo(Of String)("整合包安装", InstallLoaders) With {.Show = False, .Block = False, .ProgressWeight = InstallExpectTime}) Loaders.Add(New LoaderCombo(Of String)("游戏安装", MergeLoaders) With {.Show = False, .ProgressWeight = MergeExpectTime}) Loaders.Add(New LoaderCombo(Of String)("下载游戏支持库文件", LoadersLib) With {.ProgressWeight = 8}) + Loaders.Add(New LoaderTask(Of String, String)("清理安装文件", + Sub(Task As LoaderTask(Of String, String)) + Dim Target As String = PathMcFolder & "versions\" & VersionName & "\原始整合包.zip" + If Not Setup.Get("ToolDownloadKeepModpack") AndAlso File.Exists(Target) Then + Log("[Download] 根据设置要求删除原始整合包文件:" & Target) + File.Delete(Target) + End If + End Sub) With {.ProgressWeight = 0.1, .Show = False}) '重复任务检查 Dim LoaderName As String = "CurseForge 整合包安装:" & VersionName & " " diff --git a/Plain Craft Launcher 2/My Project/AssemblyInfo.vb b/Plain Craft Launcher 2/My Project/AssemblyInfo.vb index b8bdb0a..af43c2a 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/Pages/PageDownload/ModDownloadLib.vb b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb index 5f0320a..2e05909 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb @@ -2074,20 +2074,23 @@ Public Module ModDownloadLib #Region "处理 Json 文件" '获取 minecraftArguments Dim AllArguments As String = - If(MinecraftJson("minecraftArguments"), " ").ToString & - If(OptiFineJson IsNot Nothing, If(OptiFineJson("minecraftArguments"), " ").ToString, " ") & - If(ForgeJson IsNot Nothing, If(ForgeJson("minecraftArguments"), " ").ToString, " ") & + If(MinecraftJson("minecraftArguments"), " ").ToString & " " & + If(OptiFineJson IsNot Nothing, If(OptiFineJson("minecraftArguments"), " ").ToString, " ") & " " & + If(ForgeJson IsNot Nothing, If(ForgeJson("minecraftArguments"), " ").ToString, " ") & " " & If(LiteLoaderJson IsNot Nothing, If(LiteLoaderJson("minecraftArguments"), " ").ToString, " ") + '分割参数字符串 + Dim RawArguments As List(Of String) = AllArguments.Split(" ").Where(Function(l) l <> "").Select(Function(l) l.Trim).ToList Dim SplitArguments As New List(Of String) - For Each Argument In AllArguments.Split("--") - Argument = Argument.Trim - If Argument <> "" Then SplitArguments.Add(Argument) + For i = 0 To RawArguments.Count - 1 + If RawArguments(i).StartsWith("-") Then + SplitArguments.Add(RawArguments(i)) + ElseIf SplitArguments.Count > 0 AndAlso SplitArguments.Last.StartsWith("-") AndAlso Not SplitArguments.Last.Contains(" ") Then + SplitArguments(SplitArguments.Count - 1) = SplitArguments.Last & " " & RawArguments(i) + Else + SplitArguments.Add(RawArguments(i)) + End If Next - SplitArguments = ArrayNoDouble(SplitArguments) - Dim RealArguments As String = Nothing - If SplitArguments.Count > 0 Then - RealArguments = If(AllArguments.StartsWith("--"), "--", "") & Join(SplitArguments, " --") - End If + Dim RealArguments As String = Join(ArrayNoDouble(SplitArguments), " ") '合并 OutputJson = MinecraftJson If HasOptiFine Then diff --git a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCfDetail.xaml.vb b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCfDetail.xaml.vb index c162eff..ea650e2 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCfDetail.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCfDetail.xaml.vb @@ -167,11 +167,7 @@ Loaders.Add(New LoaderDownload("下载整合包文件", New List(Of NetFile) From {File.GetDownloadFile(Target, True)}) With {.ProgressWeight = 10, .Block = True}) Loaders.Add(New LoaderTask(Of Integer, Integer)("准备安装整合包", Sub() - If Not ModpackInstall(Target, VersionName) Then Throw New Exception("整合包安装过程中出现异常!") - If Not Setup.Get("ToolDownloadKeepModpack") Then - Log("[Download] 根据设置要求删除原始整合包文件:" & Target) - IO.File.Delete(Target) - End If + If Not ModpackInstall(Target, VersionName) Then Throw New Exception("整合包安装出现异常!") End Sub) With {.ProgressWeight = 0.1}) '启动 diff --git a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadLeft.xaml b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadLeft.xaml index 4526793..600f861 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadLeft.xaml +++ b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadLeft.xaml @@ -15,7 +15,7 @@ - + diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml index 827e79e..1a060f8 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml @@ -211,24 +211,28 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb index e9fadeb..3a56605 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb @@ -48,6 +48,7 @@ TextAdvanceJvm.Text = Setup.Get("LaunchAdvanceJvm") TextAdvanceGame.Text = Setup.Get("LaunchAdvanceGame") CheckAdvanceAssets.Checked = Setup.Get("LaunchAdvanceAssets") + CheckAdvanceJava.Checked = Setup.Get("LaunchAdvanceJava") Catch ex As NullReferenceException Log(ex, "启动设置项存在异常,已被自动重置", LogLevel.Msgbox) @@ -74,6 +75,7 @@ Setup.Reset("LaunchSkinID") Setup.Reset("LaunchAdvanceJvm") Setup.Reset("LaunchAdvanceGame") + Setup.Reset("LaunchAdvanceJava") Setup.Reset("LaunchAdvanceAssets") Setup.Reset("LaunchArgumentJavaAll") @@ -102,7 +104,7 @@ Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboArgumentIndie.SelectionChanged, ComboArgumentVisibie.SelectionChanged, ComboArgumentWindowType.SelectionChanged, ComboArgumentPriority.SelectionChanged If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex) End Sub - Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceAssets.Change + Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceAssets.Change, CheckAdvanceJava.Change If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked) End Sub diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml.vb index 19dbfc6..891c259 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml.vb @@ -208,7 +208,7 @@ If MyMsgBox("若选择此项,即使在将来出现严重问题时,你也无法获取相关通知。" & vbCrLf & "例如,如果发现某个版本游戏存在严重 Bug,你可能就会因为无法得到通知而导致无法预知的后果。" & vbCrLf & vbCrLf & "一般选择 仅在有重要通知时显示公告 就可以让你尽量不受打扰了。" & vbCrLf & - "除非你在制作服务器整合包,或时常手动更新启动器,否则极度不推荐选择此项!", "警告", "继续", "取消") = 2 Then + "除非你在制作服务器整合包,或时常手动更新启动器,否则极度不推荐选择此项!", "警告", "我知道我在做什么", "取消", IsWarn:=True) = 2 Then ComboSystemActivity.SelectedItem = e.RemovedItems(0) End If End If @@ -219,7 +219,7 @@ If MyMsgBox("若选择此项,即使在启动器将来出现严重问题时,你也无法获取更新并获得修复。" & vbCrLf & "例如,如果官方修改了登录方式,从而导致现有启动器无法登录,你可能就会因为无法更新而无法开始游戏。" & vbCrLf & vbCrLf & "一般选择 仅在有重大漏洞更新时显示提示 就可以让你尽量不受打扰了。" & vbCrLf & - "除非你在制作服务器整合包,或时常手动更新启动器,否则极度不推荐选择此项!", "警告", "继续", "取消") = 2 Then + "除非你在制作服务器整合包,或时常手动更新启动器,否则极度不推荐选择此项!", "警告", "我知道我在做什么", "取消", IsWarn:=True) = 2 Then ComboSystemUpdate.SelectedItem = e.RemovedItems(0) End If End If diff --git a/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj b/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj index 0a7adc8..6560948 100644 --- a/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj +++ b/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj @@ -867,9 +867,6 @@ - - - diff --git a/Plain Craft Launcher 2/Resources/Help.zip b/Plain Craft Launcher 2/Resources/Help.zip index fbd7361..43e6c36 100644 Binary files a/Plain Craft Launcher 2/Resources/Help.zip and b/Plain Craft Launcher 2/Resources/Help.zip differ