From 5b05f870674a58f1a6608a4ae69e6d9ed902f11e 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: Fri, 3 Jul 2026 15:07:59 +0800 Subject: [PATCH] 2.13.0.1 --- MeloongCore | 2 +- PCLCS/Java.cs | 19 ++++++++++++------- .../Controls/MyScrollViewer.vb | 3 ++- Plain Craft Launcher 2/FormMain.xaml.vb | 12 +++++++++++- .../Modules/Base/ModBase.vb | 4 ++-- .../Modules/Minecraft/ModCrash.vb | 8 ++++---- .../Modules/Minecraft/ModJava.vb | 8 +++----- .../My Project/AssemblyInfo.vb | 4 ++-- .../Pages/PageLaunch/PageLaunchRight.xaml.vb | 2 +- .../Pages/PageOther/PageOtherAbout.xaml | 2 ++ 10 files changed, 40 insertions(+), 24 deletions(-) diff --git a/MeloongCore b/MeloongCore index d3b9ccd..e5c8e65 160000 --- a/MeloongCore +++ b/MeloongCore @@ -1 +1 @@ -Subproject commit d3b9ccde9c212ccce552099ada11dad35f9551a4 +Subproject commit e5c8e65e2b4c4c7de5a6a6f56508edf2c0175aff diff --git a/PCLCS/Java.cs b/PCLCS/Java.cs index 9d667e5..1cd39b1 100644 --- a/PCLCS/Java.cs +++ b/PCLCS/Java.cs @@ -3,7 +3,7 @@ namespace PCLCS; /// /// 单个 Java 的实例。 /// -[Serializable] public class Java(string folder, Version? version = null) { +[Serializable] public class Java(string folder, Version? version = null) : IEquatable { /// /// java.exe 文件所在的文件夹路径,这通常是 bin 文件夹。以 \ 结尾。 @@ -63,6 +63,12 @@ namespace PCLCS; /// 若已进行过检查,表示该检查是否成功。若未检查,则为 null。 [JsonIgnore] internal bool? available = null; + // 相同检查 + public bool Equals(Java? other) + => other is not null && string.Equals(Folder, other.Folder, StringComparison.OrdinalIgnoreCase); + public override bool Equals(object? obj) => obj is Java other && Equals(other); + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Folder); + /// 用户友好的描述文本。 public override string ToString() => $"Java {Version?.Major.ToString() ?? "尚未检查"} ({Version}):{Folder}"; @@ -92,9 +98,9 @@ public static class JavaUtils { var isLeftInCandidateFolder = JavaUtils.CandidateFolders.Any(folder => PathUtils.IsParentOf(folder, left.Folder)); var isRightInCandidateFolder = JavaUtils.CandidateFolders.Any(folder => PathUtils.IsParentOf(folder, right.Folder)); if (isLeftInCandidateFolder != isRightInCandidateFolder) return isLeftInCandidateFolder ? -1 : 1; - // 其次优先使用主版本号接近 25 的 Java - var leftDistance = left.Version is null ? int.MaxValue : Math.Abs(left.Version.Major - 25); - var rightDistance = right.Version is null ? int.MaxValue : Math.Abs(right.Version.Major - 25); + // 其次优先使用主版本号接近 21 的 Java + var leftDistance = left.Version is null ? int.MaxValue : Math.Abs(left.Version.Major - 21); + var rightDistance = right.Version is null ? int.MaxValue : Math.Abs(right.Version.Major - 21); return leftDistance.CompareTo(rightDistance); }); return javas; @@ -138,11 +144,10 @@ public static class JavaUtils { // 将新发现的 Java 排在最前,原有列表保留既有顺序排在后面 var oldJavaList = Configs.JavaList.Get()!; oldJavaList = await JavaUtils.CheckAllAsync(oldJavaList, c, p?.SplitTo(0.9)).NoCapture(); // 检查原有列表中的 Java - HashSet oldJavaFolders = new(oldJavaList.Select(j => j.Folder), StringComparer.OrdinalIgnoreCase); - javaList.RemoveIf(j => oldJavaFolders.Contains(j.Folder)); // 此时 javaList 中只剩下新发现的 Java + javaList.RemoveAll(oldJavaList); // 此时 javaList 中只剩下新发现的 Java javaList = await JavaUtils.SortAsync(javaList, c).NoCapture(); // 将所有新发现的 Java 按优先级排序 javaList.AddRange(oldJavaList); - javaList = javaList.DistinctBy(j => j.Folder.Lower()).ToList(); + javaList = javaList.Distinct().ToList(); // 删掉已被移除的 Java javaList.RemoveIf(j => Configs.JavaRemovedList.Get()!.Contains(j.Folder, StringComparer.OrdinalIgnoreCase)); // 写入设置 diff --git a/Plain Craft Launcher 2/Controls/MyScrollViewer.vb b/Plain Craft Launcher 2/Controls/MyScrollViewer.vb index b8f476c..5ed2b5e 100644 --- a/Plain Craft Launcher 2/Controls/MyScrollViewer.vb +++ b/Plain Craft Launcher 2/Controls/MyScrollViewer.vb @@ -11,7 +11,8 @@ Public Class MyScrollViewer (GetType(ComboBox).IsAssignableFrom(SourceType) AndAlso CType(e.Source, ComboBox).IsDropDownOpen) OrElse (GetType(TextBox).IsAssignableFrom(SourceType) AndAlso CType(e.Source, TextBox).AcceptsReturn) OrElse GetType(ComboBoxItem).IsAssignableFrom(SourceType) OrElse - PresentationSource.FromVisual(e.Source)?.RootVisual?.GetType().FullName = "System.Windows.Controls.Primitives.PopupRoot") Then + (TypeOf e.Source Is Visual AndAlso + PresentationSource.FromVisual(e.Source)?.RootVisual?.GetType().FullName = "System.Windows.Controls.Primitives.PopupRoot")) Then '如果当前是在对有滚动条的下拉框或文本框执行,则不接管操作 Return End If diff --git a/Plain Craft Launcher 2/FormMain.xaml.vb b/Plain Craft Launcher 2/FormMain.xaml.vb index fd04ee7..bcf02d7 100644 --- a/Plain Craft Launcher 2/FormMain.xaml.vb +++ b/Plain Craft Launcher 2/FormMain.xaml.vb @@ -11,7 +11,7 @@ Public Class FormMain Dim FeatureList As New List(Of KeyValuePair(Of Integer, String)) '统计更新日志条目 If BuildType = BuildTypes.Release Then - If LastVersion < 406 Then 'Release 2.13.0.0 + If LastVersion < 406 Then 'Release 2.13.0.1 FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "新增:重做 Java 管理与相关设置,允许调整 Java 优先级、指定 Java 版本范围等")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:导出整合包时允许自动导出版本文件夹中的 Java")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:重做弹出提示的样式以及动画,以更符合现代 UI 审美")) @@ -87,6 +87,16 @@ Public Class FormMain '3:BUG+ IMP* FEAT- '2:BUG* IMP- '1:BUG- + If LastVersion < 407 Then 'Snapshot 2.13.0.1 + If LastVersion = 405 Then + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:使用部分主页预设时崩溃")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法删除部分文件夹")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:版本设置中指定的 Java 无法被保存")) + FeatureCount += 1 + BugCount += 3 + End If + FeatureCount += 2 + End If If LastVersion < 405 Then 'Snapshot 2.13.0.0 FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "新增:重做 Java 管理与相关设置,允许调整 Java 优先级、指定 Java 版本范围等")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:导出整合包时允许自动导出版本文件夹中的 Java")) diff --git a/Plain Craft Launcher 2/Modules/Base/ModBase.vb b/Plain Craft Launcher 2/Modules/Base/ModBase.vb index d8e51b2..32b4b5a 100644 --- a/Plain Craft Launcher 2/Modules/Base/ModBase.vb +++ b/Plain Craft Launcher 2/Modules/Base/ModBase.vb @@ -6,12 +6,12 @@ Public Module ModBase #Region "声明" '下列版本信息由更新器自动修改 - Public Const VersionBaseName As String = "2.13.0.0" '显示用版本名 + Public Const VersionBaseName As String = "2.13.0.1" '显示用版本名 Public Const CommitHash As String = "" 'Commit Hash,由 GitHub Workflow 自动替换 #If RELEASE Then Public Const VersionCode As Integer = 406 '正式版 #Else - Public Const VersionCode As Integer = 405 '快照版 + Public Const VersionCode As Integer = 407 '快照版 #End If '版本信息 diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModCrash.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModCrash.vb index 19fa681..ee0cb26 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModCrash.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModCrash.vb @@ -948,13 +948,13 @@ NextStack: Case CrashReason.内存不足 Results.Add("Minecraft 内存不足,导致其无法继续运行。\n这很可能是因为电脑内存不足、游戏分配的内存不足,或是配置要求过高。\n\n你可以尝试在 更多 → 百宝箱 中选择 内存优化,然后再启动游戏。\n如果还是不行,请在启动设置中增加为游戏分配的内存,并删除配置要求较高的材质、Mod、光影。\n如果依然不奏效,请在开始游戏前尽量关闭其他软件,或者……换台电脑?\h") Case CrashReason.使用OpenJ9 - Results.Add("游戏因为使用 OpenJ9 而崩溃了。\n请在启动设置的 Java 选择一项中改用非 OpenJ9 的 Java,然后再启动游戏。") + Results.Add("游戏因为使用 OpenJ9 而崩溃了。\n请在版本设置的 Java 选项中改用非 OpenJ9 的 Java,然后再启动游戏。") Case CrashReason.使用JDK - Results.Add("游戏似乎因为使用 JDK,或 Java 版本过高而崩溃了。\n请在启动设置的 Java 选择一项中改用 JRE 8(Java 8),然后再启动游戏。\n如果你没有安装 JRE 8,你可以从网络中下载、安装一个。") + Results.Add("游戏似乎因为使用 JDK,或 Java 版本过高而崩溃了。\n请在版本设置的 Java 选项中改用 Java 8,然后再启动游戏。\n如果你没有安装 Java 8,可以从网络中下载、安装一个。") Case CrashReason.Java版本过高 - Results.Add("游戏似乎因为你所使用的 Java 版本过高而崩溃了。\n请在启动设置的 Java 选择一项中改用较低版本的 Java,然后再启动游戏。\n如果没有,可以从网络中下载、安装一个。") + Results.Add("游戏似乎因为你所使用的 Java 版本过高而崩溃了。\n请在版本设置的 Java 选项中改用较低版本的 Java,然后再启动游戏。\n如果没有,可以从网络中下载、安装一个。") Case CrashReason.Java版本不兼容 - Results.Add("游戏不兼容你当前使用的 Java。\n如果没有合适的 Java,可以从网络中下载、安装一个。") + Results.Add("游戏不兼容你当前使用的 Java。\n请在版本设置的 Java 选项中改用合适版本的 Java,然后再启动游戏。\n如果你没有安装任何 Mod 并且因此崩溃,请向 PCL 提交反馈。") Case CrashReason.Mod名称包含特殊字符 Results.Add("由于有 Mod 的名称包含特殊字符,导致游戏崩溃。\n请尝试修改 Mod 文件名,让它只包含英文字母、数字、减号(-)、下划线(_)和小数点,然后再启动游戏。") Case CrashReason.MixinBootstrap缺失 diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb index ad09add..92a5c6b 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb @@ -82,7 +82,7 @@ Public Module ModJava '加入列表顶部 Configs.JavaList.Edit( Sub(ByRef List) - List.RemoveIf(Function(j) j.Folder.Equals(NewJava.Folder, StringComparison.OrdinalIgnoreCase)) + List.Remove(NewJava) List.Insert(0, NewJava) End Sub) Hint($"已将 Java 加入列表:{NewJavaPath}", HintType.Green) @@ -458,13 +458,11 @@ Public Module ModJava p?.Set(0.4) : GoTo NoForcedJava End If Logger.Info($"将版本独立设置改为老版本中强制指定的 Java:{ForcedJava}") - Dim Match = Configs.JavaList.Get().FirstOrDefault(Function(j) j.Folder.Equals(ForcedJava.Folder, StringComparison.OrdinalIgnoreCase)) - If Match Is Nothing Then + If Not Configs.JavaList.Get().Contains(ForcedJava) Then Configs.JavaList.Edit(Sub(ByRef List) List.Add(ForcedJava)) '加入列表底部 - Match = ForcedJava Logger.Info($"已将强制指定的 Java 加入 Java 列表底部:{ForcedJava}") End If - Configs.InstanceForcedJava.Set(Match, Instance.Config) + Configs.InstanceForcedJava.Set(ForcedJava, Instance.Config) Settings.Set("VersionArgumentJavaV2", 3, Instance) UpdateJavaLists() Configs.InstanceMigratedJava.Set(True, Instance.Config) '完成 diff --git a/Plain Craft Launcher 2/My Project/AssemblyInfo.vb b/Plain Craft Launcher 2/My Project/AssemblyInfo.vb index 710b712..67554fb 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/PageLaunch/PageLaunchRight.xaml.vb b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml.vb index 1d736b7..8574314 100644 --- a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml.vb @@ -107,7 +107,7 @@ Public Class PageLaunchRight Url = "https://qawsedrftgyhujiko.fun/pcl2/Custom.xaml" Case 17 Logger.Info("Bangumi 番剧主页") - Url = "https://pbp.kaphia.qzz.io" + Url = "https://bangumi.p.kaphia.qzz.io" End Select End Select '联网下载 diff --git a/Plain Craft Launcher 2/Pages/PageOther/PageOtherAbout.xaml b/Plain Craft Launcher 2/Pages/PageOther/PageOtherAbout.xaml index 2d58213..a4d465b 100644 --- a/Plain Craft Launcher 2/Pages/PageOther/PageOtherAbout.xaml +++ b/Plain Craft Launcher 2/Pages/PageOther/PageOtherAbout.xaml @@ -278,6 +278,7 @@ + @@ -351,6 +352,7 @@ +