龙腾猫跃 2 лет назад
Родитель
Сommit
43b0acba08

+ 25 - 153
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)

+ 4 - 4
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

+ 2 - 2
Plain Craft Launcher 2/My Project/AssemblyInfo.vb

@@ -51,6 +51,6 @@ Imports System.Runtime.InteropServices
 ' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
 ' 方法是按如下所示使用“*”
 
-<Assembly: AssemblyVersion("2.7.0.0")>
-<Assembly: AssemblyFileVersion("2.7.0.0")>
+<Assembly: AssemblyVersion("2.7.1.0")>
+<Assembly: AssemblyFileVersion("2.7.1.0")>
 <Assembly: NeutralResourcesLanguage("")>

+ 1 - 1
Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml

@@ -229,7 +229,7 @@
                         <RowDefinition Height="Auto" />
                     </Grid.RowDefinitions>
                     <TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Left" Text="JVM 参数头" Margin="0,0,25,0" />
-                    <local:MyTextBox x:Name="TextAdvanceJvm" Grid.Row="0" Grid.ColumnSpan="2" Tag="LaunchAdvanceJvm" Grid.Column="1" ToolTip="启动 Minecraft 时使用的额外 JVM 参数,在没有确定把握的情况下请不要尝试修改。&#xa;你可以通过点击左侧选项卡的初始化按钮来恢复到默认设置。" MaxLength="4000" Text="-XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true -XX:MaxDirectMemorySize=256M" 
+                    <local:MyTextBox x:Name="TextAdvanceJvm" Grid.Row="0" Grid.ColumnSpan="2" Tag="LaunchAdvanceJvm" Grid.Column="1" ToolTip="启动 Minecraft 时使用的额外 JVM 参数,在没有确定把握的情况下请不要尝试修改。&#xa;你可以通过点击左侧选项卡的初始化按钮来恢复到默认设置。" MaxLength="4000" Text="-XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true" 
                                      Height="57" AcceptsReturn="True" TextWrapping="Wrap" VerticalContentAlignment="Top" Padding="0,5" />
                     <TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="JVM 参数尾" Margin="0,0,25,0" />
                     <local:MyTextBox x:Name="TextAdvanceGame" Grid.Row="2" Grid.ColumnSpan="2" Tag="LaunchAdvanceGame" Grid.Column="1" ToolTip="文本框中的内容将会被直接拼合在启动参数的末尾。&#xa;例如输入 --demo 则会以试玩模式启动游戏。" />

+ 7 - 7
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

BIN
最新正式版.zip