diff --git a/Plain Craft Launcher 2/FormMain.xaml.vb b/Plain Craft Launcher 2/FormMain.xaml.vb index 6f40513..941e7f6 100644 --- a/Plain Craft Launcher 2/FormMain.xaml.vb +++ b/Plain Craft Launcher 2/FormMain.xaml.vb @@ -10,6 +10,14 @@ Public Class FormMain Dim FeatureList As New List(Of KeyValuePair(Of Integer, String)) '统计更新日志条目 #If BETA Then + If LastVersion < 319 Then 'Release 2.7.0 + FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "支持更新 Mod")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持查看可更新的 Mod 的更新日志")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持滑动鼠标快速选中、取消选中多个 Mod")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复无法启动 MC 24w14a+ 的 Bug")) + FeatureCount += 10 + BugCount += 10 + End If If LastVersion < 317 Then 'Release 2.6.15 FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法安装 Forge 的 Bug")) FeatureCount += 2 @@ -82,71 +90,23 @@ Public Class FormMain FeatureCount += 35 BugCount += 36 End If - If LastVersion < 281 Then 'Release 2.4.9 - If LastVersion = 279 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复进入 Mod、整合包下载页时报错的 Bug")) - FeatureCount += 1 - BugCount += 5 - End If - If LastVersion < 279 Then 'Release 2.4.8 - FeatureCount += 1 - BugCount += 10 - End If - If LastVersion < 276 Then 'Release 2.4.7 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "增加 在游戏启动前执行命令 设置")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "在百宝箱添加了清理 MC 日志、崩溃报告的按钮")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化界面动画,修改部分配色")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化 Mod 中文搜索")) - FeatureCount += 25 - BugCount += 56 - End If - If LastVersion < 272 Then 'Release 2.4.4 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "支持在版本设置页导出启动脚本、打开存档文件夹等")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化 Mod、整合包下载的版本检查与显示")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修改部分配色,让整体边框变得更淡")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复无法从下载页安装最新 MC 版本的整合包的 Bug")) - If LastVersion <= 267 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复无法安装 LiteLoader 的 Bug")) - FeatureCount += 13 - BugCount += 23 - End If - 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 += 14 - BugCount += 33 - End If - If LastVersion < 265 Then 'Release 2.3.5 - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复部分情况下无法启动路径带有中文的游戏的 Bug")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复多个可能导致 OptiFine、Forge 安装失败的 Bug")) - FeatureCount += 13 - BugCount += 9 - End If - If LastVersion < 260 Then 'Release 2.3.2 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "解决了联机人数 ≥3 人时出现的频繁掉线或突发高延迟的问题")) - FeatureCount += 22 - BugCount += 4 - End If - If LastVersion < 257 Then 'Release 2.3.0 - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复下载部分 Mod、整合包的 Bug")) - FeatureCount += 4 - BugCount += 4 - End If #Else '5: FEAT+ '4: IMP+ FEAT* '3:BUG+ IMP* FEAT- '2:BUG* IMP- '1:BUG- + If LastVersion < 318 Then 'Snapshot 2.7.1 + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复启动部分整合包导致设置丢失的 Bug")) + BugCount += 1 + End If If LastVersion < 318 Then 'Snapshot 2.7.0 FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "支持更新 Mod")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持查看可更新的 Mod 的更新日志")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持滑动鼠标快速选中、取消选中多个 Mod")) FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复无法启动 MC 24w14a+ 的 Bug")) - FeatureCount += 2 - BugCount += 2 + FeatureCount += 10 + BugCount += 10 End If If LastVersion < 316 Then 'Snapshot 2.6.15 FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复无法安装 Forge 的 Bug")) @@ -259,116 +219,29 @@ Public Class FormMain FeatureCount += 5 BugCount += 5 End If - If LastVersion < 282 Then 'Snapshot 2.4.9 - FeatureCount += 1 - BugCount += 5 - If LastVersion = 280 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复进入 Mod、整合包下载页时报错的 Bug")) - End If - If LastVersion < 280 Then 'Snapshot 2.4.8 - FeatureCount += 1 - BugCount += 10 - End If - If LastVersion < 278 Then 'Snapshot 2.4.7 - If LastVersion = 277 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复设置背景音乐可能导致无法启动 PCL 的 Bug")) - BugCount += 2 - End If - If LastVersion < 277 Then 'Snapshot 2.4.6 - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "在百宝箱添加了清理 MC 日志、崩溃报告的按钮")) - FeatureCount += 8 - BugCount += 21 - End If - If LastVersion < 275 Then 'Snapshot 2.4.5 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "增加 在游戏启动前执行命令 设置")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化界面动画,修改部分配色")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化 Mod 中文搜索")) - FeatureCount += 17 - BugCount += 35 - End If - If LastVersion < 273 Then 'Snapshot 2.4.4 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "支持在版本设置页导出启动脚本、打开存档文件夹等")) - If LastVersion = 271 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复无法同时开启多个 Minecraft 客户端的 Bug")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复无法从下载页安装最新 MC 版本的整合包的 Bug")) - FeatureCount += 7 - BugCount += 8 - End If - If LastVersion < 271 Then 'Snapshot 2.4.3 - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化 Mod、整合包下载的版本检查与显示")) - If LastVersion <= 267 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复无法安装 LiteLoader 的 Bug")) - FeatureCount += 6 - BugCount += 15 - End If - 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 的具体版本需求")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化自动 Java 选择的准确度")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化 Mod 中文名的显示")) - FeatureCount += 12 - BugCount += 22 - End If - If LastVersion < 266 Then 'Snapshot 2.4.0 - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "游戏崩溃的弹窗添加了直接查看日志的选项")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "在更多分类下添加了新功能投票选项")) - FeatureCount += 3 - BugCount += 11 - 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")) - FeatureCount += 2 - BugCount += 3 - End If - If LastVersion < 263 Then 'Snapshot 2.3.4 - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复部分情况下无法启动路径带有中文的游戏的 Bug")) - FeatureCount += 11 - BugCount += 5 - End If - If LastVersion < 262 Then 'Snapshot 2.3.3 - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "修复无法使用 Mod、整合包搜索功能的 Bug")) - BugCount += 1 - End If - If LastVersion < 261 Then 'Snapshot 2.3.2 - FeatureCount += 8 - BugCount += 4 - End If - If LastVersion < 259 Then 'Snapshot 2.3.1 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "解决了联机人数 ≥3 人时出现的频繁掉线或突发高延迟的问题")) - FeatureCount += 14 - End If - If LastVersion < 258 Then 'Snapshot 2.3.0 - FeatureCount += 4 - BugCount += 4 - End If #End If '整理更新日志文本 Dim ContentList As New List(Of String) - Dim SortedFeatures = Sort(FeatureList, Function(Left As KeyValuePair(Of Integer, String), Right As KeyValuePair(Of Integer, String)) As Boolean - Return Left.Key > Right.Key - End Function) - If Not SortedFeatures.Any() AndAlso FeatureCount = 0 AndAlso BugCount = 0 Then - ContentList.Add("龙猫忘记写更新日志啦!可以去提醒他一下……") - End If + Dim SortedFeatures = Sort(FeatureList, Function(Left, Right) Left.Key > Right.Key) + If Not SortedFeatures.Any() AndAlso FeatureCount = 0 AndAlso BugCount = 0 Then ContentList.Add("龙猫忘记写更新日志啦!可以去提醒他一下……") For i = 0 To Math.Min(9, SortedFeatures.Count - 1) '最多取 10 项 ContentList.Add(SortedFeatures(i).Value) Next If SortedFeatures.Count > 10 Then FeatureCount += SortedFeatures.Count - 10 If FeatureCount > 0 OrElse BugCount > 0 Then ContentList.Add(If(FeatureCount > 0, "其他 " & FeatureCount & " 项小调整与修改", "") & - If(FeatureCount > 0 AndAlso BugCount > 0, ",", "") & - If(BugCount > 0, "修复了 " & BugCount & " 个 Bug", "") & - ",详见完整更新日志") + If(FeatureCount > 0 AndAlso BugCount > 0, ",", "") & + If(BugCount > 0, "修复了 " & BugCount & " 个 Bug", "") & + ",详见完整更新日志") End If Dim Content As String = "· " & Join(ContentList, vbCrLf & "· ") '输出更新日志 - RunInNewThread(Sub() - If MyMsgBox(Content, "PCL 已更新至 " & VersionDisplayName, "确定", "完整更新日志") = 2 Then - OpenWebsite("https://afdian.net/a/LTCat?tab=feed") - End If - End Sub, "UpdateLog Output") + RunInNewThread( + Sub() + If MyMsgBox(Content, "PCL 已更新至 " & VersionDisplayName, "确定", "完整更新日志") = 2 Then + OpenWebsite("https://afdian.net/a/LTCat?tab=feed") + End If + End Sub, "UpdateLog Output") End Sub '窗口加载 @@ -520,7 +393,6 @@ Public Class FormMain Log("[Start] 第三阶段加载用时:" & GetTimeTick() - ApplicationStartTick & " ms") End Sub - 'Private Declare Function ChangeWindowMessageFilter Lib "user32.dll" (message As Integer, action As Integer) As Boolean '根据打开次数触发的事件 Private Sub RunCountSub() Setup.Set("SystemCount", Setup.Get("SystemCount") + 1) diff --git a/Plain Craft Launcher 2/Modules/Base/ModBase.vb b/Plain Craft Launcher 2/Modules/Base/ModBase.vb index cc2460d..7ec28b6 100644 --- a/Plain Craft Launcher 2/Modules/Base/ModBase.vb +++ b/Plain Craft Launcher 2/Modules/Base/ModBase.vb @@ -11,12 +11,12 @@ Public Module ModBase #Region "声明" '下列版本信息由更新器自动修改 - Public Const VersionBaseName As String = "2.7.0" '不含分支前缀的显示用版本名 - Public Const VersionStandardCode As String = "2.7.0." & VersionBranchCode '标准格式的四段式版本号 + Public Const VersionBaseName As String = "2.7.1" '不含分支前缀的显示用版本名 + Public Const VersionStandardCode As String = "2.7.1." & VersionBranchCode '标准格式的四段式版本号 #If BETA Then Public Const VersionCode As Integer = 319 'Release #Else - Public Const VersionCode As Integer = 318 'Snapshot + Public Const VersionCode As Integer = 320 'Snapshot #End If '自动生成的版本信息 Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName @@ -647,7 +647,7 @@ Public Module ModBase Dim Ini As New Dictionary(Of String, String) For Each Line In ReadFile(FileName).Split(vbCrLf.ToArray(), StringSplitOptions.RemoveEmptyEntries) Dim Index As Integer = Line.IndexOfF(":") - If Index > 0 Then Ini.Add(Line.Substring(0, Index), Line.Substring(Index + 1)) + If Index > 0 Then Ini(Line.Substring(0, Index)) = Line.Substring(Index + 1) '可能会有重复键,见 #3616 Next IniCache(FileName) = Ini Return Ini diff --git a/Plain Craft Launcher 2/My Project/AssemblyInfo.vb b/Plain Craft Launcher 2/My Project/AssemblyInfo.vb index bc89a2a..49ea2bc 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/PageSetup/PageSetupLaunch.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml index adba6a5..8e9be7c 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml @@ -229,7 +229,7 @@ - diff --git a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionMod.xaml.vb b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionMod.xaml.vb index 361880f..ce03d0d 100644 --- a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionMod.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionMod.xaml.vb @@ -445,6 +445,13 @@ InstallLoaders.Add(New LoaderTask(Of Integer, Integer)("替换旧版 Mod 文件", Sub() Try + For Each Entry As McMod In ModList + If File.Exists(Entry.Path) Then + My.Computer.FileSystem.DeleteFile(Entry.Path, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin) + Else + Log($"[Mod] 未找到更新前的 Mod 文件,跳过对它的删除:{Entry.Path}", LogLevel.Debug) + End If + Next For Each Entry As KeyValuePair(Of String, String) In FileCopyList If File.Exists(Entry.Value) Then My.Computer.FileSystem.DeleteFile(Entry.Value, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin) @@ -457,13 +464,6 @@ Log($"[Mod] 更新后的目标文件夹已被删除:{Entry.Value}", LogLevel.Debug) End If Next - For Each Entry As McMod In ModList - If File.Exists(Entry.Path) Then - My.Computer.FileSystem.DeleteFile(Entry.Path, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin) - Else - Log($"[Mod] 未找到更新前的 Mod 文件,跳过对它的删除:{Entry.Path}", LogLevel.Debug) - End If - Next Catch ex As OperationCanceledException Log(ex, "替换旧版 Mod 文件时被主动取消") End Try diff --git a/最新正式版.zip b/最新正式版.zip index e209be0..5463128 100644 Binary files a/最新正式版.zip and b/最新正式版.zip differ