龙腾猫跃 3 månader sedan
förälder
incheckning
5b05f87067

+ 1 - 1
MeloongCore

@@ -1 +1 @@
-Subproject commit d3b9ccde9c212ccce552099ada11dad35f9551a4
+Subproject commit e5c8e65e2b4c4c7de5a6a6f56508edf2c0175aff

+ 12 - 7
PCLCS/Java.cs

@@ -3,7 +3,7 @@ namespace PCLCS;
 /// <summary>
 /// 单个 Java 的实例。
 /// </summary>
-[Serializable] public class Java(string folder, Version? version = null) {
+[Serializable] public class Java(string folder, Version? version = null) : IEquatable<Java> {
 
     /// <summary>
     /// java.exe 文件所在的文件夹路径,这通常是 bin 文件夹。以 \ 结尾。
@@ -63,6 +63,12 @@ namespace PCLCS;
     /// <summary>若已进行过检查,表示该检查是否成功。若未检查,则为 null。</summary>
     [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);
+
     /// <summary>用户友好的描述文本。</summary>
     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<string> 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));
         // 写入设置

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

+ 11 - 1
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"))

+ 2 - 2
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
 
     '版本信息

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

+ 3 - 5
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) '完成

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

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

+ 1 - 1
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
         '联网下载

+ 2 - 0
Plain Craft Launcher 2/Pages/PageOther/PageOtherAbout.xaml

@@ -278,6 +278,7 @@
                         <TextBlock Margin="0,1.5,6,0" Text="李察维" />
                         <TextBlock Margin="0,1.5,6,0" Text="十六夜" />
                         <TextBlock Margin="0,1.5,6,0" Text="皮小风" />
+                        <TextBlock Margin="0,1.5,6,0" Text="陈知远" />
                         <TextBlock Margin="0,1.5,6,0" Text="TaLula" />
                         <TextBlock Margin="0,1.5,6,0" Text="N线🧵" />
                         <TextBlock Margin="0,1.5,6,0" Text="秋辞白." />
@@ -351,6 +352,7 @@
                         <TextBlock Margin="0,1.5,6,0" Text="星尘墨韵" />
                         <TextBlock Margin="0,1.5,6,0" Text="聆听冰风" />
                         <TextBlock Margin="0,1.5,6,0" Text="鸭梨山大" />
+                        <TextBlock Margin="0,1.5,6,0" Text="一条鱼瓯" />
                         <TextBlock Margin="0,1.5,6,0" Text="Kang_XL" />
                         <TextBlock Margin="0,1.5,6,0" Text="Crispykit" />
                         <TextBlock Margin="0,1.5,6,0" Text="vorinshe" />