龙腾猫跃 il y a 3 ans
Parent
commit
ce164dd6fd
44 fichiers modifiés avec 399 ajouts et 288 suppressions
  1. 8 3
      Plain Craft Launcher 2/Application.xaml
  2. 32 12
      Plain Craft Launcher 2/Application.xaml.vb
  3. 6 1
      Plain Craft Launcher 2/FormMain.xaml.vb
  4. 26 19
      Plain Craft Launcher 2/Modules/Base/ModBase.vb
  5. 1 1
      Plain Craft Launcher 2/Modules/Base/ModNet.vb
  6. 43 13
      Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb
  7. 6 1
      Plain Craft Launcher 2/Modules/Minecraft/ModCrash.vb
  8. 1 0
      Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb
  9. 25 16
      Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb
  10. 10 2
      Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb
  11. 2 0
      Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb
  12. 6 2
      Plain Craft Launcher 2/Modules/Minecraft/ModWatcher.vb
  13. 3 2
      Plain Craft Launcher 2/Modules/Minecraft/MyCompItem.xaml
  14. 3 0
      Plain Craft Launcher 2/Modules/ModEvent.vb
  15. 2 2
      Plain Craft Launcher 2/My Project/AssemblyInfo.vb
  16. 4 0
      Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb
  17. 17 13
      Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml.vb
  18. 1 1
      Plain Craft Launcher 2/Pages/PageDownload/PageDownloadInstall.xaml
  19. 10 4
      Plain Craft Launcher 2/Pages/PageDownload/PageDownloadInstall.xaml.vb
  20. 4 4
      Plain Craft Launcher 2/Pages/PageDownload/PageDownloadLeft.xaml
  21. 1 1
      Plain Craft Launcher 2/Pages/PageDownload/PageDownloadMod.xaml.vb
  22. 3 2
      Plain Craft Launcher 2/Pages/PageDownload/PageDownloadPack.xaml
  23. 1 1
      Plain Craft Launcher 2/Pages/PageDownload/PageDownloadPack.xaml.vb
  24. 1 1
      Plain Craft Launcher 2/Pages/PageLaunch/MySkin.xaml
  25. 2 2
      Plain Craft Launcher 2/Pages/PageLaunch/PageLoginAuthSkin.xaml
  26. 3 3
      Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMsSkin.xaml
  27. 2 2
      Plain Craft Launcher 2/Pages/PageLaunch/PageLoginNideSkin.xaml
  28. 1 5
      Plain Craft Launcher 2/Pages/PageLink/PageLinkIoi.xaml.vb
  29. 1 1
      Plain Craft Launcher 2/Pages/PageLink/PageLinkLeft.xaml
  30. 1 1
      Plain Craft Launcher 2/Pages/PageOther/PageOtherLeft.xaml
  31. 3 6
      Plain Craft Launcher 2/Pages/PageSelectLeft.xaml.vb
  32. 14 13
      Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml
  33. 3 4
      Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb
  34. 0 0
      Plain Craft Launcher 2/Pages/PageSetup/PageSetupLeft.xaml
  35. 6 6
      Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml
  36. 2 4
      Plain Craft Launcher 2/Pages/PageSpeedLeft.xaml.vb
  37. 2 2
      Plain Craft Launcher 2/Pages/PageVersion/PageVersionLeft.xaml
  38. 2 1
      Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml
  39. 11 6
      Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml
  40. 4 5
      Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb
  41. 1 1
      Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj
  42. 2 2
      Plain Craft Launcher 2/Resources/Custom.xaml
  43. BIN
      Plain Craft Launcher 2/Resources/Help.zip
  44. 123 123
      Plain Craft Launcher 2/Resources/ModData.txt

+ 8 - 3
Plain Craft Launcher 2/Application.xaml

@@ -67,7 +67,7 @@
                 <Setter Property="Template">
                     <Setter.Value>
                         <ControlTemplate TargetType="{x:Type Window}">
-                            <ContentPresenter/>
+                            <ContentPresenter />
                         </ControlTemplate>
                     </Setter.Value>
                 </Setter>
@@ -133,9 +133,9 @@
                 <Setter Property="Template">
                     <Setter.Value>
                         <ControlTemplate>
-                            <Border BorderBrush="{DynamicResource ColorBrush1}" BorderThickness="1.5" CornerRadius="3" MaxWidth="500" Background="White" Margin="0,0,4,4" SnapsToDevicePixels="True">
+                            <Border BorderBrush="{DynamicResource ColorBrush1}" BorderThickness="1.5" CornerRadius="4" MaxWidth="500" Background="#E5FFFFFF" Margin="0,0,4,4" SnapsToDevicePixels="True">
                                 <Border.Effect>
-                                    <DropShadowEffect Opacity="0.4" BlurRadius="4" ShadowDepth="2" />
+                                    <DropShadowEffect Opacity="0.3" BlurRadius="4" ShadowDepth="2" Color="{DynamicResource ColorObject1}" />
                                 </Border.Effect>
                                 <TextBlock Text="{TemplateBinding ContentControl.Content}" TextWrapping="Wrap" Foreground="{DynamicResource ColorBrush1}" Margin="7,5" FontSize="12"/>
                             </Border>
@@ -466,6 +466,11 @@
             </Style>
             <Style TargetType="ComboBoxItem" x:Key="MyComboBoxItem">
                 <Setter Property="OverridesDefaultStyle" Value="True" />
+                <Setter Property="ToolTipService.Placement" Value="Right" />
+                <Setter Property="ToolTipService.VerticalOffset" Value="-2" />
+                <Setter Property="ToolTipService.HorizontalOffset" Value="-250" />
+                <Setter Property="ToolTipService.InitialShowDelay" Value="150" />
+                <Setter Property="ToolTipService.BetweenShowDelay" Value="150" />
                 <Setter Property="FocusVisualStyle" Value="{x:Null}" />
                 <Setter Property="Background" Value="{StaticResource ColorBrushTransparent}" />
                 <Setter Property="Template">

+ 32 - 12
Plain Craft Launcher 2/Application.xaml.vb

@@ -27,18 +27,27 @@ Public Class Application
                 If e.Args(0) = "--update" Then
                     '自动更新
                     UpdateReplace(e.Args(1), e.Args(2).Trim(""""), e.Args(3).Trim(""""), e.Args(4))
-                    Environment.[Exit](Result.Cancel)
-                    Exit Sub
-                ElseIf e.Args(0).StartsWith("--link") Then
-                    '稍作等待后切换到联机页面
-                    Thread.Sleep(1000)
-                    'FormMain.IsLinkRestart = True
+                    Environment.Exit(Result.Cancel)
+                    'ElseIf e.Args(0).StartsWith("--link") Then
+                    '    '稍作等待后切换到联机页面
+                    '    Thread.Sleep(1000)
+                    '    FormMain.IsLinkRestart = True
+                ElseIf e.Args(0).StartsWith("--memory") Then
+                    '内存优化
+                    Dim Ram = My.Computer.Info.AvailablePhysicalMemory
+                    Try
+                        PageOtherTest.MemoryOptimizeInternal()
+                    Catch ex As Exception
+                        MsgBox(ex.Message, MsgBoxStyle.Critical, "内存优化失败")
+                        Environment.Exit(-1)
+                    End Try
+                    Ram = My.Computer.Info.AvailablePhysicalMemory - Ram
+                    Environment.Exit(Math.Max(0, Ram / 1024)) '返回清理的内存量(K)
 #If DEBUG Then
                 ElseIf e.Args(0) = "--make" Then
                     '制作更新包
                     UpdateMake(e.Args(1))
-                    Environment.[Exit](Result.Cancel)
-                    Exit Sub
+                    Environment.Exit(Result.Cancel)
 #End If
                 End If
             End If
@@ -49,12 +58,17 @@ Public Class Application
                 Directory.CreateDirectory(PathTemp)
                 If Not CheckPermission(PathTemp) Then Throw New Exception("PCL 没有对 " & PathTemp & " 的访问权限")
             Catch ex As Exception
-                MyMsgBox("手动设置的缓存文件夹不可用,PCL 将使用默认缓存文件夹。" & vbCrLf & "错误原因:" & GetExceptionDetail(ex), "缓存文件夹不可用")
-                Setup.Set("SystemSystemCache", "")
-                PathTemp = IO.Path.GetTempPath() & "PCL\"
+                If PathTemp = IO.Path.GetTempPath() & "PCL\" Then
+                    MyMsgBox("PCL 无法访问缓存文件夹,可能导致程序出错或无法正常使用!" & vbCrLf & "错误原因:" & GetExceptionDetail(ex), "缓存文件夹不可用")
+                Else
+                    MyMsgBox("手动设置的缓存文件夹不可用,PCL 将使用默认缓存文件夹。" & vbCrLf & "错误原因:" & GetExceptionDetail(ex), "缓存文件夹不可用")
+                    Setup.Set("SystemSystemCache", "")
+                    PathTemp = IO.Path.GetTempPath() & "PCL\"
+                End If
             End Try
             Directory.CreateDirectory(PathTemp & "Cache")
             Directory.CreateDirectory(PathTemp & "Download")
+            Directory.CreateDirectory(PathAppdata)
             '检测单例
 #If Not DEBUG Then
             Dim WindowHwnd As IntPtr = FindWindow(Nothing, "Plain Craft Launcher 2 ")
@@ -64,9 +78,15 @@ Public Class Application
                 '播放提示音并退出
                 Beep()
                 Environment.[Exit](Result.Cancel)
-                Exit Sub
             End If
 #End If
+            '设置 ToolTipService 默认值
+            ToolTipService.InitialShowDelayProperty.OverrideMetadata(GetType(DependencyObject), New FrameworkPropertyMetadata(300))
+            ToolTipService.BetweenShowDelayProperty.OverrideMetadata(GetType(DependencyObject), New FrameworkPropertyMetadata(400))
+            ToolTipService.ShowDurationProperty.OverrideMetadata(GetType(DependencyObject), New FrameworkPropertyMetadata(9999999))
+            ToolTipService.PlacementProperty.OverrideMetadata(GetType(DependencyObject), New FrameworkPropertyMetadata(Primitives.PlacementMode.Bottom))
+            ToolTipService.HorizontalOffsetProperty.OverrideMetadata(GetType(DependencyObject), New FrameworkPropertyMetadata(8.0))
+            ToolTipService.VerticalOffsetProperty.OverrideMetadata(GetType(DependencyObject), New FrameworkPropertyMetadata(4.0))
             '设置初始窗口
             If Setup.Get("UiLauncherLogo") AndAlso Not FormMain.IsLinkRestart Then
                 FrmStart = New SplashScreen("Images\icon.ico")

+ 6 - 1
Plain Craft Launcher 2/FormMain.xaml.vb

@@ -109,6 +109,12 @@ Public Class FormMain
         '3:BUG+ IMP* FEAT-
         '2:BUG* IMP-
         '1:BUG-
+        If LastVersion < 294 Then 'Snapshot 2.6.2
+            FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "新增内存优化功能,可以将所有程序的物理内存占用降低约 1/3"))
+            FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "在选择 OptiFine 与 Fabric 后会自动选择 OptiFabric"))
+            FeatureCount += 9
+            BugCount += 16
+        End If
         If LastVersion < 291 Then 'Snapshot 2.6.0
             FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "支持在多个正版账号间切换"))
             FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "Mod / 整合包下载会单独列出筛选的版本"))
@@ -293,7 +299,6 @@ Public Class FormMain
         FrmMain = Me
         FrmLaunchLeft = New PageLaunchLeft
         FrmLaunchRight = New PageLaunchRight
-        ToolTipService.ShowDurationProperty.OverrideMetadata(GetType(DependencyObject), New FrameworkPropertyMetadata(2333333))
         '版本号改变
         Dim LastVersion As Integer = Setup.Get("SystemLastVersionReg")
         If LastVersion < VersionCode Then

+ 26 - 19
Plain Craft Launcher 2/Modules/Base/ModBase.vb

@@ -11,12 +11,12 @@ Public Module ModBase
 #Region "声明"
 
     '下列版本信息由更新器自动修改
-    Public Const VersionBaseName As String = "2.6.1" '不含分支前缀的显示用版本名
-    Public Const VersionStandardCode As String = "2.6.1." & VersionBranchCode '标准格式的四段式版本号
+    Public Const VersionBaseName As String = "2.6.2" '不含分支前缀的显示用版本名
+    Public Const VersionStandardCode As String = "2.6.2." & VersionBranchCode '标准格式的四段式版本号
 #If BETA Then
     Public Const VersionCode As Integer = 293 'Release
 #Else
-    Public Const VersionCode As Integer = 291 'Snapshot
+    Public Const VersionCode As Integer = 294 'Snapshot
 #End If
     '自动生成的版本信息
     Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName
@@ -1210,11 +1210,11 @@ Re:
                 If MinSize >= 0 AndAlso MinSize > FileSize Then Return "文件大小应大于 " & MinSize & " B,实际为 " & FileSize & " B"
                 If Not String.IsNullOrEmpty(Hash) Then
                     If Hash.Length < 35 Then 'MD5
-                        If Hash <> GetAuthMD5(LocalPath) Then Return "文件 MD5 应为 " & Hash & ",实际为 " & GetAuthMD5(LocalPath)
+                        If Hash.ToLowerInvariant <> GetAuthMD5(LocalPath) Then Return "文件 MD5 应为 " & Hash & ",实际为 " & GetAuthMD5(LocalPath)
                     ElseIf Hash.Length = 64 Then 'SHA256
-                        If Hash <> GetAuthSHA256(LocalPath) Then Return "文件 SHA256 应为 " & Hash & ",实际为 " & GetAuthSHA256(LocalPath)
+                        If Hash.ToLowerInvariant <> GetAuthSHA256(LocalPath) Then Return "文件 SHA256 应为 " & Hash & ",实际为 " & GetAuthSHA256(LocalPath)
                     Else 'SHA1 (40)
-                        If Hash <> GetAuthSHA1(LocalPath) Then Return "文件 SHA1 应为 " & Hash & ",实际为 " & GetAuthSHA1(LocalPath)
+                        If Hash.ToLowerInvariant <> GetAuthSHA1(LocalPath) Then Return "文件 SHA1 应为 " & Hash & ",实际为 " & GetAuthSHA1(LocalPath)
                     End If
                 End If
                 If IsJson Then
@@ -1452,21 +1452,23 @@ Re:
     ''' </summary>
     ''' <param name="FileSize">以字节为单位的大小表示。</param>
     Public Function GetString(FileSize As Long) As String
+        Dim IsNegative = FileSize < 0
+        If IsNegative Then FileSize *= -1
         If FileSize < 1000 Then
             'B 级
-            Return FileSize & " B"
+            Return If(IsNegative, "-", "") & FileSize & " B"
         ElseIf FileSize < 1024 * 1000 Then
             'K 级
             Dim RoundResult As String = Math.Round(FileSize / 1024)
-            Return Math.Round(FileSize / 1024, CInt(MathRange(3 - RoundResult.Length, 0, 2))) & " K"
+            Return If(IsNegative, "-", "") & Math.Round(FileSize / 1024, CInt(MathRange(3 - RoundResult.Length, 0, 2))) & " K"
         ElseIf FileSize < 1024 * 1024 * 1000 Then
             'M 级
             Dim RoundResult As String = Math.Round(FileSize / 1024 / 1024)
-            Return Math.Round(FileSize / 1024 / 1024, CInt(MathRange(3 - RoundResult.Length, 0, 2))) & " M"
+            Return If(IsNegative, "-", "") & Math.Round(FileSize / 1024 / 1024, CInt(MathRange(3 - RoundResult.Length, 0, 2))) & " M"
         Else
             'G 级
             Dim RoundResult As String = Math.Round(FileSize / 1024 / 1024 / 1024)
-            Return Math.Round(FileSize / 1024 / 1024 / 1024, CInt(MathRange(3 - RoundResult.Length, 0, 2))) & " G"
+            Return If(IsNegative, "-", "") & Math.Round(FileSize / 1024 / 1024 / 1024, CInt(MathRange(3 - RoundResult.Length, 0, 2))) & " G"
         End If
     End Function
 
@@ -1481,6 +1483,14 @@ Re:
         End Try
     End Function
 
+    ''' <summary>
+    ''' 将第一个字符转换为大写,其余字符转换为小写。
+    ''' </summary>
+    <Extension> Public Function Capitalize(word As String) As String
+        If String.IsNullOrEmpty(word) Then Return word
+        Return word.Substring(0, 1).ToUpperInvariant() & word.Substring(1).ToLowerInvariant()
+    End Function
+
     ''' <summary>
     ''' 将字符串统一至某个长度,过短则以 Code 将其右侧填充,过长则截取靠左的指定长度。
     ''' </summary>
@@ -1748,16 +1758,13 @@ Re:
         Return principal.IsInRole(WindowsBuiltInRole.Administrator)
     End Function
     ''' <summary>
-    ''' 以管理员权限重新运行当前程序。返回是否成功。
+    ''' 以管理员权限运行当前程序,并等待程序运行结束。
+    ''' 返回程序的返回代码,如果运行失败将抛出异常。
     ''' </summary>
-    Public Function RerunAsAdmin(Argument As String) As Boolean
-        Try
-            Process.Start(New ProcessStartInfo(PathWithName) With {.Verb = "runas", .Arguments = Argument})
-            Return True
-        Catch ex As Exception
-            Log(ex, "以管理员权限运行程序失败")
-            Return False
-        End Try
+    Public Function RunAsAdmin(Argument As String) As Integer
+        Dim NewProcess = Process.Start(New ProcessStartInfo(PathWithName) With {.Verb = "runas", .Arguments = Argument})
+        NewProcess.WaitForExit()
+        Return NewProcess.ExitCode
     End Function
 
     Private Uuid As Integer = 1

+ 1 - 1
Plain Craft Launcher 2/Modules/Base/ModNet.vb

@@ -1203,7 +1203,7 @@ SourceBreak:
                 'End SyncLock
                 Info.Source.Ex = ex
                 '根据情况判断,是否在多线程下禁用下载源(连续错误过多,或不支持断点续传)
-                If ex.Message.Contains("该下载源不支持") OrElse ex.Message.Contains("(404)") OrElse ex.Message.Contains("(403)") OrElse ex.Message.Contains("(502)") OrElse ex.Message.Contains("无返回数据") OrElse ex.Message.Contains("空间不足") OrElse
+                If ex.Message.Contains("该下载源不支持") OrElse ex.Message.Contains("未能解析") OrElse ex.Message.Contains("(404)") OrElse ex.Message.Contains("(403)") OrElse ex.Message.Contains("(502)") OrElse ex.Message.Contains("无返回数据") OrElse ex.Message.Contains("空间不足") OrElse
                     (Info.Source.FailCount >= MathRange(NetTaskThreadLimit, 5, 40) AndAlso DownloadDone < 1) OrElse
                     Info.Source.FailCount > NetTaskThreadLimit Then
                     Dim IsThisFail As Boolean = False

+ 43 - 13
Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb

@@ -418,17 +418,46 @@
             End If
             '实例化 UI
             Dim NewItem As New MyCompItem With {.Tag = Me}
-            '标题
-            Dim FinalName As String = TranslatedName.Split(" | ").First.Split(" - ").First.Split("(").First.Split("[").First
-            Dim ExNameList As List(Of String) = TranslatedName.Split({" | ", " - ", "(", ")", "[", "]", "{", "}"}, StringSplitOptions.RemoveEmptyEntries).
-                Select(Function(s) s.Trim(" /".ToCharArray)).Where(Function(w) Not String.IsNullOrEmpty(w)).ToList
-            ExNameList.RemoveAt(0)
-            If TranslatedName = RawName AndAlso '没有中文翻译
-               Not ExNameList.Any(Function(s) s.Contains("orge") OrElse s.Contains("abric") OrElse s.Contains("uilt")) AndAlso '不是标注 XX 版
-               Not (ExNameList.Count = 1 AndAlso ExNameList.First.ToUpper <> ExNameList.First) Then '不是缩写
-                FinalName = RawName '使用原名
-                ExNameList.Clear()
+            '整理 FinalName 与 ExNameList
+            '检查下列代码时可以参考 #1567 的测试例
+            Dim FinalName As String
+            Dim ExNameList As List(Of String)
+            If TranslatedName = RawName Then
+                '没有中文翻译
+                FinalName = TranslatedName.Split(" | ").First.Split(" - ").First.Split("(").First.Split("[").First
+                ExNameList = TranslatedName.Split({" | ", " - ", "(", ")", "[", "]", "{", "}"}, StringSplitOptions.RemoveEmptyEntries).
+                    Select(Function(s) s.Trim(" /".ToCharArray)).Where(Function(w) Not String.IsNullOrEmpty(w)).ToList
+                ExNameList.RemoveAt(0)
+                If Not ExNameList.Any(Function(s) s.ToLower.Contains("forge") OrElse s.ToLower.Contains("fabric") OrElse s.ToLower.Contains("quilt")) AndAlso '不是标注 XX 版
+                   Not (ExNameList.Count = 1 AndAlso ExNameList.First.ToUpper = ExNameList.First) Then '不是缩写
+                    FinalName = RawName '使用原名
+                    ExNameList.Clear()
+                End If
+            Else
+                '有中文翻译
+                '尝试将文本分为三段:FinalName (EnglishName) - Suffix
+                '检查时注意 Carpet:它没有中文译名,但有 Suffix
+                FinalName = TranslatedName.Split(" (").First.Split(" - ").First
+                Dim Suffix As String = ""
+                If TranslatedName.Split(")").Last.Contains(" - ") Then Suffix = TranslatedName.Split(")").Last.Split(" - ").Last
+                Dim EnglishName As String = TranslatedName
+                If Suffix <> "" Then EnglishName = EnglishName.Replace(" - " & Suffix, "")
+                EnglishName = EnglishName.Replace(FinalName, "").Trim("("c, ")"c, " "c)
+                '中段的额外信息截取
+                ExNameList = EnglishName.Split({" | ", " - ", "(", ")", "[", "]", "{", "}"}, StringSplitOptions.RemoveEmptyEntries).
+                        Select(Function(s) s.Trim(" /".ToCharArray)).Where(Function(w) Not String.IsNullOrEmpty(w)).ToList
+                If ExNameList.Count > 1 AndAlso
+                   Not ExNameList.Any(Function(s) s.ToLower.Contains("forge") OrElse s.ToLower.Contains("fabric") OrElse s.ToLower.Contains("quilt")) AndAlso '不是标注 XX 版
+                   Not (ExNameList.Count = 2 AndAlso ExNameList.Last.ToUpper = ExNameList.Last) Then '不是缩写
+                    ExNameList = New List(Of String) From {EnglishName} '使用原名
+                End If
+                '添加后缀
+                If Suffix <> "" Then
+                    ExNameList.Add(Suffix)
+                    ExNameList = ExNameList.Distinct().ToList()
+                End If
             End If
+            '显示 FinalName 与 ExNameList
             NewItem.LabTitle.Text = FinalName
             If ExNameList.Count = 0 Then
 NoExName:
@@ -440,7 +469,7 @@ NoExName:
                     If Ex.Length < 19 AndAlso Ex.ToLower.Contains("fabric") AndAlso Ex.ToLower.Contains("forge") Then Continue For
                     '将 “Forge” 等提示改为 “Forge 版”
                     If (Ex.ToLower.Contains("forge") OrElse Ex.ToLower.Contains("fabric") OrElse Ex.ToLower.Contains("quilt")) AndAlso
-                       Not Ex.Contains("版") AndAlso Ex.Length < 19 Then Ex = Ex.Replace("Edition", "").Trim & " 版"
+                       Not Ex.Contains("版") AndAlso Ex.Length < 19 Then Ex = Ex.Replace("Edition", "").Trim.Capitalize & " 版"
                     ExName &= "  |  " & Ex.Trim
                 Next
                 If ExName = "" Then GoTo NoExName
@@ -789,7 +818,7 @@ NoExName:
             '去除常见连接词
             Dim RealFilter As String = ""
             For Each Word In SearchResult.Split(" ")
-                If {"the", "of", "a", "mod"}.Contains(Word.ToLower) OrElse Val(Word) > 0 Then Continue For
+                If {"the", "of", "a", "mod", "and"}.Contains(Word.ToLower) OrElse Val(Word) > 0 Then Continue For
                 If SearchResult.Split(" ").Count > 3 AndAlso {"ftb"}.Contains(Word.ToLower) Then Continue For
                 RealFilter += Word.TrimStart("{[(").TrimEnd("}])") & " "
             Next
@@ -805,7 +834,8 @@ NoExName:
         '最终处理关键字:分割、去重
         Dim RightKeywords As New List(Of String)
         For Each Keyword In AllPossibleKeywords.Split(" ")
-            If Keyword.Trim = "" Then Continue For
+            Keyword = Keyword.Trim("["c, "]"c)
+            If Keyword = "" Then Continue For
             If {"forge", "fabric", "for", "mod",
                 "forge/fabric", "fabric/forge", "fabric/quilt", "quilt/fabric"}.Contains(Keyword) Then '#208
                 Log("[Comp] 已跳过搜索关键词:" & Keyword)

+ 6 - 1
Plain Craft Launcher 2/Modules/Minecraft/ModCrash.vb

@@ -505,7 +505,8 @@ Done:
             If LogMc.Contains("Found a duplicate mod") Then AppendReason(CrashReason.Mod重复安装, RegexSearch(If(RegexSeek(LogMc, "Found a duplicate mod[^\n]+"), ""), "[^\\/]+.jar", RegularExpressions.RegexOptions.IgnoreCase))
             If LogMc.Contains("ModResolutionException: Duplicate") Then AppendReason(CrashReason.Mod重复安装, RegexSearch(If(RegexSeek(LogMc, "ModResolutionException: Duplicate[^\n]+"), ""), "[^\\/]+.jar", RegularExpressions.RegexOptions.IgnoreCase))
             'Mod 导致的崩溃
-            If LogMc.Contains("Mixin prepare failed ") OrElse LogMc.Contains("Mixin apply failed ") OrElse LogMc.Contains("mixin.injection.throwables.") OrElse LogMc.Contains(".mixins.json] FAILED during )") Then
+            If LogMc.Contains("Mixin prepare failed ") OrElse LogMc.Contains("Mixin apply failed ") OrElse
+                LogMc.Contains("mixin.injection.throwables.") OrElse LogMc.Contains(".mixins.json] FAILED during )") Then
                 Dim ModId As String = RegexSeek(LogMc, "(?<=in )[^./ ]+(?=.mixins.json.+failed injection check)")
                 If ModId Is Nothing Then ModId = RegexSeek(LogMc, "(?<=in mixins.)[^./ ]+(?=.json.+failed injection check)")
                 If ModId Is Nothing Then ModId = RegexSeek(LogMc, "(?<= failed .+ in )[^./ ]+(?=.mixins.json)")
@@ -514,6 +515,10 @@ Done:
                 If ModId Is Nothing Then ModId = RegexSeek(LogMc, "(?<= in config \[mixins.)[^./ ]+(?=.json\] FAILED during )")
                 If ModId Is Nothing Then ModId = RegexSeek(LogMc, "(?<= in callback )[^./ ]+(?=.mixins.json:)")
                 If ModId Is Nothing Then ModId = RegexSeek(LogMc, "(?<=from mod )[^\] ]+(?=\] from phase)")
+                If ModId Is Nothing Then ModId = RegexSeek(LogMc, "(?<=for mod )[^./ ]+(?= failed)")
+                '兜底名称判断
+                If ModId Is Nothing Then ModId = RegexSeek(LogMc, "[^./ \]]+(?=.mixins.json")
+                If ModId Is Nothing Then ModId = RegexSeek(LogMc, "(?<=mixins.)[^./ \]]+(?=.json")
                 AppendReason(CrashReason.ModMixin失败, TryAnalyzeModName(If(ModId, "").TrimEnd((vbCrLf & " ").ToCharArray)))
             End If
             If LogMc.Contains("Caught exception from ") Then AppendReason(CrashReason.确定Mod导致游戏崩溃, TryAnalyzeModName(RegexSeek(LogMc, "(?<=Caught exception from )[^\n]+?")?.TrimEnd((vbCrLf & " ").ToCharArray)))

+ 1 - 0
Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb

@@ -363,6 +363,7 @@ UserPass:
             Catch ex As ThreadInterruptedException
                 Throw
             Catch ex As Exception
+                If ex.InnerException IsNot Nothing AndAlso TypeOf (ex.InnerException) Is ThreadInterruptedException Then Throw ex.InnerException
                 Log(ex, "找到的 Java 已无法使用,尝试进行搜索")
                 AllowedJavaList = New List(Of JavaEntry)
                 JavaSearchLoader.Start(IsForceRestart:=True)

+ 25 - 16
Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb

@@ -1091,7 +1091,7 @@ SystemBrowser:
 
 #Region "Java 处理"
 
-    Private McLaunchJavaSelected As JavaEntry = Nothing
+    Public McLaunchJavaSelected As JavaEntry = Nothing
     Private Sub McLaunchJava(Task As LoaderTask(Of Integer, Integer))
         Dim MinVer As New Version(0, 0, 0, 0), MaxVer As New Version(999, 999, 999, 999)
 
@@ -1322,7 +1322,7 @@ SystemBrowser:
         If Not ArgumentJvm.Contains("-Dlog4j2.formatMsgNoLookups=true") Then ArgumentJvm += " -Dlog4j2.formatMsgNoLookups=true"
         DataList.Insert(0, ArgumentJvm) '可变 JVM 参数
         DataList.Add("-Xmn256m")
-        DataList.Add("-Xmx" & Math.Floor(PageVersionSetup.GetRam(McVersionCurrent) * 1024) & "m")
+        DataList.Add("-Xmx" & Math.Floor(PageVersionSetup.GetRam(McVersionCurrent, Not McLaunchJavaSelected.Is64Bit) * 1024) & "m")
         DataList.Add("""-Djava.library.path=" & Version.Path & Version.Name & "-natives""")
         DataList.Add("-cp ${classpath}") '把支持库添加进启动参数表
 
@@ -1742,19 +1742,28 @@ NextVersion:
         Dim SetupFileAddress As String = McVersionCurrent.PathIndie & "options.txt"
         Try
             '语言
-            If Setup.Get("ToolHelpChinese") Then
-                If Not File.Exists(SetupFileAddress) OrElse Not Directory.Exists(McVersionCurrent.PathIndie & "saves") Then
-                    McLaunchLog("已根据设置自动修改语言为中文")
-                    WriteIni(SetupFileAddress, "lang", "-") '触发缓存更改,避免删除后重新下载残留缓存
-                    If McVersionCurrent.Version.McCodeMain >= 12 Then
-                        WriteIni(SetupFileAddress, "lang", "zh_cn")
-                    Else
-                        WriteIni(SetupFileAddress, "lang", "zh_CN")
-                    End If
-                    WriteIni(SetupFileAddress, "forceUnicodeFont", "true")
-                Else
-                    McLaunchLog("并非首次启动,不修改语言")
-                End If
+            '1.0-     :没有语言选项
+            '1.1 ~ 5  :zh_CN 时正常,zh_cn 时崩溃(最后两位字母必须大写,否则将会 NPE 崩溃)
+            '1.6 ~ 10 :zh_CN 时正常,zh_cn 时自动切换为英文
+            '1.11 ~ 12:zh_cn 时正常,zh_CN 时虽然显示了中文但语言设置会错误地显示选择英文
+            '1.13+    :zh_cn 时正常,zh_CN 时自动切换为英文
+            Dim CurrentLang As String = ReadIni(SetupFileAddress, "lang", "none")
+            Dim RequiredLang As String = If(CurrentLang = "none", If(Setup.Get("ToolHelpChinese"), "zh_cn", "en_us"), CurrentLang.ToLower)
+            If McVersionCurrent.Version.McCodeMain < 12 Then '注意老版本(包含 MC 1.1)的 McCodeMain 可能为 -1
+                '将最后两位改为大写,前面的部分保留
+                RequiredLang = RequiredLang.Substring(0, RequiredLang.Length - 2) & RequiredLang.Substring(RequiredLang.Length - 2).ToUpper
+            End If
+            If CurrentLang = RequiredLang Then
+                McLaunchLog($"当前语言为 {CurrentLang},无需修改")
+            Else
+                WriteIni(SetupFileAddress, "lang", "-") '触发缓存更改,避免删除后重新下载残留缓存
+                WriteIni(SetupFileAddress, "lang", RequiredLang)
+                McLaunchLog($"已将语言从 {CurrentLang} 修改为 {RequiredLang}")
+            End If
+            '如果是初次设置,一并修改 forceUnicodeFont
+            If Setup.Get("ToolHelpChinese") AndAlso (CurrentLang = "none" OrElse Not Directory.Exists(McVersionCurrent.PathIndie & "saves")) Then
+                WriteIni(SetupFileAddress, "forceUnicodeFont", "true")
+                McLaunchLog("已开启 forceUnicodeFont")
             End If
             '窗口
             Select Case Setup.Get("LaunchArgumentWindowType")
@@ -2059,7 +2068,7 @@ IgnoreCustomSkin:
         McLaunchLog("游戏版本:" & McVersionCurrent.Version.ToString & "(" & McVersionCurrent.Version.McCodeMain & "." & McVersionCurrent.Version.McCodeSub & ")")
         McLaunchLog("资源版本:" & McAssetsGetIndexName(McVersionCurrent))
         McLaunchLog("版本继承:" & If(McVersionCurrent.InheritVersion = "", "无", McVersionCurrent.InheritVersion))
-        McLaunchLog("分配的内存:" & PageVersionSetup.GetRam(McVersionCurrent) & " GB(" & Math.Round(PageVersionSetup.GetRam(McVersionCurrent) * 1024) & " MB)")
+        McLaunchLog("分配的内存:" & PageVersionSetup.GetRam(McVersionCurrent, Not McLaunchJavaSelected.Is64Bit) & " GB(" & Math.Round(PageVersionSetup.GetRam(McVersionCurrent, Not McLaunchJavaSelected.Is64Bit) * 1024) & " MB)")
         McLaunchLog("MC 文件夹:" & PathMcFolder)
         McLaunchLog("版本文件夹:" & McVersionCurrent.Path)
         McLaunchLog("版本隔离:" & (McVersionCurrent.PathIndie = McVersionCurrent.Path))

+ 10 - 2
Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb

@@ -680,7 +680,7 @@ Recheck:
                     Case Else '根据 API 进行筛选
                         Dim RealJson As String = If(JsonObject, JsonText).ToString
                         '愚人节与快照版本
-                        If If(JsonObject("type"), "").ToString = "fool" OrElse GetMcFoolName(Name) <> "" Then
+                        If If(JsonObject("type"), "").ToString = "fool" OrElse GetMcFoolName(Version.McName) <> "" Then
                             State = McVersionState.Fool
                         ElseIf Version.McName.ToLower.Contains("w") OrElse Name.ToLower.Contains("combat") OrElse Version.McName.ToLower.Contains("rc") OrElse Version.McName.ToLower.Contains("pre") OrElse Version.McName.Contains("experimental") OrElse If(JsonObject("type"), "").ToString = "snapshot" OrElse If(JsonObject("type"), "").ToString = "pending" Then
                             State = McVersionState.Snapshot
@@ -756,7 +756,7 @@ ExitDataLoad:
                         Case McVersionState.Original, McVersionState.Forge, McVersionState.Fabric, McVersionState.OptiFine, McVersionState.LiteLoader
                             Info = Version.ToString
                         Case McVersionState.Fool
-                            Info = GetMcFoolName(Name)
+                            Info = GetMcFoolName(Version.McName)
                         Case McVersionState.Error
                             '已有错误信息
                         Case Else
@@ -1112,6 +1112,10 @@ OnLoaded:
                 '循环读取版本
                 For Each Folder As String In ReadIni(Path & "PCL.ini", "CardValue" & (i + 1), ":").Split(":")
                     If Folder = "" Then Continue For
+                    If File.Exists(Path & "versions\" & Folder & "\.pclignore") Then
+                        Log("[Minecraft] 跳过要求忽略的项目:" & Path & "versions\" & Folder)
+                        Continue For
+                    End If
                     Try
 
                         '读取单个版本
@@ -1187,6 +1191,10 @@ OnLoaded:
                 Log("[Minecraft] 跳过可能不是版本文件夹的项目:" & Folder.FullName)
                 Continue For
             End If
+            If File.Exists(Folder.FullName & "\.pclignore") Then
+                Log("[Minecraft] 跳过要求忽略的项目:" & Folder.FullName)
+                Continue For
+            End If
             Dim Version As New McVersion(Folder.FullName & "\")
             VersionList.Add(Version)
             Version.Load()

+ 2 - 0
Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb

@@ -638,6 +638,8 @@ Retry:
                     Request.MinecraftName = Component("version")
                 Case "net.minecraftforge"
                     Request.ForgeVersion = Component("version")
+                Case "net.fabricmc.fabric-loader"
+                    Request.FabricVersion = Component("version")
             End Select
         Next
         '构造加载器

+ 6 - 2
Plain Craft Launcher 2/Modules/Minecraft/ModWatcher.vb

@@ -320,8 +320,12 @@
                     '获取窗口关联的进程
                     Dim ProcessId As Integer
                     GetWindowThreadProcessId(hwnd, ProcessId)
-                    Dim WindowProcess = Process.GetProcessById(ProcessId)
-                    If WindowProcess.StartTime < GameProcess.StartTime Then Exit Sub '需要是此后启动的进程
+                    Try
+                        If Process.GetProcessById(ProcessId).StartTime < GameProcess.StartTime Then Exit Sub '需要是此后启动的进程
+                    Catch ex As Exception
+                        Log(ex, "枚举 Minecraft 窗口进程失败")
+                        Exit Sub
+                    End Try
                     '返回
                     TryGetMinecraftWindow = New KeyValuePair(Of IntPtr, String)(hwnd, WindowText)
                 End Sub, 0)

+ 3 - 2
Plain Craft Launcher 2/Modules/Minecraft/MyCompItem.xaml

@@ -39,8 +39,9 @@
     </StackPanel>
     <TextBlock x:Name="LabInfo" Grid.Row="2" Grid.Column="4" VerticalAlignment="Bottom" Margin="1,0,3,0.5"
                TextTrimming="CharacterEllipsis" FontSize="12" Foreground="{StaticResource ColorBrushGray3}"
-               IsHitTestVisible="True" SnapsToDevicePixels="False" UseLayoutRounding="False" 
-               ToolTipService.InitialShowDelay="150" ToolTipService.Placement="Relative" ToolTipService.PlacementRectangle="-8,-6,500,10000">
+               IsHitTestVisible="True" SnapsToDevicePixels="False" UseLayoutRounding="False"
+               ToolTipService.InitialShowDelay="100" ToolTipService.BetweenShowDelay="100" 
+               ToolTipService.Placement="Relative" ToolTipService.PlacementRectangle="-16,-10,500,10000">
         <TextBlock.ToolTip>
             <ToolTip x:Name="ToolTipInfo" Style="{StaticResource ExtendTextToolTip}" />
         </TextBlock.ToolTip>

+ 3 - 0
Plain Craft Launcher 2/Modules/ModEvent.vb

@@ -61,6 +61,9 @@
                 Case "今日人品"
                     PageOtherTest.Jrrp()
 
+                Case "内存优化"
+                    RunInThread(Sub() PageOtherTest.MemoryOptimize(True))
+
                 Case "清理垃圾"
                     PageOtherTest.RubbishClear()
 

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

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

+ 4 - 0
Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb

@@ -1991,6 +1991,8 @@ Public Module ModDownloadLib
         End If
 
         Dim LoaderList As New List(Of LoaderBase)
+        '添加忽略标识
+        LoaderList.Add(New LoaderTask(Of Integer, Integer)("添加忽略标识", Sub() WriteFile(OutputFolder & ".pclignore", "该文件会使得该文件夹不在 PCL 的版本列表中显示")) With {.Show = False, .Block = False})
         'Fabric API
         If Request.FabricApi IsNot Nothing Then
             LoaderList.Add(New LoaderDownload("下载 Fabric API", New List(Of NetFile) From {Request.FabricApi.ToNetFile(New McVersion(OutputFolder).GetPathIndie(True) & "mods\")}) With {.ProgressWeight = 3, .Block = False})
@@ -2037,6 +2039,8 @@ Public Module ModDownloadLib
             LoadersLib.Add(New LoaderDownload("下载游戏支持库文件(副加载器)", New List(Of NetFile)) With {.ProgressWeight = 7, .Show = False})
             LoaderList.Add(New LoaderCombo(Of String)("下载游戏支持库文件", LoadersLib) With {.ProgressWeight = 8})
         End If
+        '删除忽略标识
+        LoaderList.Add(New LoaderTask(Of Integer, Integer)("删除忽略标识", Sub() File.Delete(OutputFolder & ".pclignore")) With {.Show = False})
         '总加载器
         Return LoaderList
     End Function

+ 17 - 13
Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml.vb

@@ -55,7 +55,7 @@
             TargetLoader = PageDownloadMod.Loader.Input.ModLoader
         End If
         Dim TargetCardName As String = If(TargetVersion <> "" OrElse TargetLoader <> CompModLoaderType.Any,
-            $"目标PCL2版本:{TargetVersion} {If(TargetLoader <> CompModLoaderType.Any, TargetLoader, "")}", "")
+            $"目标版本:{TargetVersion} {If(TargetLoader <> CompModLoaderType.Any, TargetLoader, "")}", "")
         '初始化字典
         Dim Dict As New SortedDictionary(Of String, List(Of CompFile))(New VersionSorterWithSelect(TargetCardName))
         Dict.Add("未知版本", New List(Of CompFile))
@@ -275,19 +275,23 @@
                     End If
                 End If
                 '获取基本信息
-                Dim ChineseName As String = If(Project.TranslatedName = Project.RawName, "",
-                    Project.TranslatedName.Split(" (").First.Replace("\", "\").Replace("/", "/").Replace("|", "|").Replace(":", ":").Replace("<", "<").Replace(">", ">").Replace("*", "*").Replace("?", "?").Replace("""", "").Replace(": ", ":"))
                 Dim FileName As String
-                Select Case Setup.Get("ToolDownloadTranslate")
-                    Case 0
-                        FileName = If(ChineseName = "", "", "[" & ChineseName & "] ") & File.FileName
-                    Case 1
-                        FileName = If(ChineseName = "", "", ChineseName & "-") & File.FileName
-                    Case 2
-                        FileName = File.FileName & If(ChineseName = "", "", "-" & ChineseName)
-                    Case Else
-                        FileName = File.FileName
-                End Select
+                If Project.TranslatedName = Project.RawName Then
+                    FileName = File.FileName
+                Else
+                    Dim ChineseName As String = Project.TranslatedName.Split(" (").First.Split(" - ").First.
+                        Replace("\", "\").Replace("/", "/").Replace("|", "|").Replace(":", ":").Replace("<", "<").Replace(">", ">").Replace("*", "*").Replace("?", "?").Replace("""", "").Replace(": ", ":")
+                    Select Case Setup.Get("ToolDownloadTranslate")
+                        Case 0
+                            FileName = $"[{ChineseName}] {File.FileName}"
+                        Case 1
+                            FileName = $"{ChineseName}-{File.FileName}"
+                        Case 2
+                            FileName = $"{File.FileName}-{ChineseName}"
+                        Case Else
+                            FileName = File.FileName
+                    End Select
+                End If
                 RunInUi(
                 Sub()
                     '弹窗要求选择保存位置

+ 1 - 1
Plain Craft Launcher 2/Pages/PageDownload/PageDownloadInstall.xaml

@@ -7,7 +7,7 @@
     <Grid>
         <local:MyScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" x:Name="PanBack">
             <Grid Margin="25,10,25,25">
-                <StackPanel Grid.Row="1" Name="PanMinecraft" Grid.IsSharedSizeScope="True">
+                <StackPanel Grid.Row="1" Name="PanMinecraft" Grid.IsSharedSizeScope="True" Margin="0,0,0,-10">
                     <StackPanel.RenderTransform>
                         <TranslateTransform />
                     </StackPanel.RenderTransform>

+ 10 - 4
Plain Craft Launcher 2/Pages/PageDownload/PageDownloadInstall.xaml.vb

@@ -39,6 +39,7 @@
         IsInSelectPage = True
 
         AutoSelectedFabricApi = False
+        AutoSelectedOptiFabric = False
         IsSelectNameEdited = False
         PanSelect.Visibility = Visibility.Visible
         PanSelect.IsHitTestVisible = True
@@ -1013,6 +1014,7 @@
         End Try
     End Function
 
+    Private AutoSelectedOptiFabric As Boolean = False
     ''' <summary>
     ''' 获取 OptiFabric 的加载异常信息。若正常则返回 Nothing。
     ''' </summary>
@@ -1048,17 +1050,21 @@
             Next
             If Versions.Count = 0 Then Exit Sub
             '排序
-            Versions = Sort(Versions, Function(Left As CompFile, Right As CompFile) As Boolean
-                                          Return Left.ReleaseDate > Right.ReleaseDate
-                                      End Function)
+            Versions = Sort(Versions, Function(a, b) a.ReleaseDate > b.ReleaseDate)
             '可视化
             PanOptiFabric.Children.Clear()
             For Each Version In Versions
                 If Not IsSuitableOptiFabric(Version, SelectedMinecraftId) Then Continue For
                 PanOptiFabric.Children.Add(OptiFabricDownloadListItem(Version, AddressOf OptiFabric_Selected))
             Next
+            '自动选择 OptiFabric
+            If Not AutoSelectedOptiFabric Then
+                AutoSelectedOptiFabric = True
+                Log($"[Download] 已自动选择 OptiFabric:{CType(PanOptiFabric.Children(0), MyListItem).Title}")
+                OptiFabric_Selected(PanOptiFabric.Children(0), Nothing)
+            End If
         Catch ex As Exception
-            Log(ex, "可视化 Fabric API 安装版本列表出错", LogLevel.Feedback)
+            Log(ex, "可视化 OptiFabric 安装版本列表出错", LogLevel.Feedback)
         End Try
     End Sub
 

Fichier diff supprimé car celui-ci est trop grand
+ 4 - 4
Plain Craft Launcher 2/Pages/PageDownload/PageDownloadLeft.xaml


+ 1 - 1
Plain Craft Launcher 2/Pages/PageDownload/PageDownloadMod.xaml.vb

@@ -8,7 +8,7 @@
     Public Shared Page As Integer = 0
     Private Sub PageDownloadMod_Inited(sender As Object, e As EventArgs) Handles Me.Initialized
         PageLoaderInit(Load, PanLoad, PanContent, PanAlways, Loader, AddressOf Load_OnFinish, AddressOf LoaderInput)
-        McVersionHighest = Math.Max(McVersionHighest, Integer.Parse(CType(TextSearchVersion.Items(1), MyComboBoxItem).Content.ToString.Split(".")(1)))
+        If McVersionHighest = -1 Then McVersionHighest = Math.Max(McVersionHighest, Integer.Parse(CType(TextSearchVersion.Items(1), MyComboBoxItem).Content.ToString.Split(".")(1)))
     End Sub
     Private Shared Function LoaderInput() As CompProjectRequest
         Dim Request As New CompProjectRequest(CompType.Mod, Storage, (Page + 1) * PageSize)

+ 3 - 2
Plain Craft Launcher 2/Pages/PageDownload/PageDownloadPack.xaml

@@ -64,7 +64,8 @@
                             <local:MyComboBoxItem Tag="4471/" Content="科幻" />
                             <local:MyComboBoxItem Tag="4736/" Content="空岛" />
                             <local:MyComboBoxItem Tag="5128/" Content="原版改良" />
-                            <local:MyComboBoxItem Tag="4487/" Content="FTB" ToolTip="该整合包由 FTB 官方发布" />
+                            <local:MyComboBoxItem Tag="4487/" Content="FTB" 
+                                                  ToolTip="该整合包由 FTB 官方发布" ToolTipService.InitialShowDelay="150" ToolTipService.Placement="Right" ToolTipService.VerticalOffset="-1" ToolTipService.HorizontalOffset="-40" />
                             <local:MyComboBoxItem Tag="4480/" Content="基于地图" />
                             <local:MyComboBoxItem Tag="4481/lightweight" Content="轻量整合" />
                             <local:MyComboBoxItem Tag="4482/" Content="大型整合" />
@@ -79,7 +80,7 @@
                         <local:MyButton x:Name="BtnSearchRun" Text="搜索" MinWidth="140" Padding="13,0" Margin="0,0,20,0" ColorType="Highlight" />
                         <local:MyButton x:Name="BtnSearchReset" Text="重置条件" MinWidth="140" Padding="13,0" Margin="0,0,20,0" Grid.Column="1" />
                         <local:MyButton x:Name="BtnSearchInstall" Text="安装已有整合包" MinWidth="140" Padding="13,0" Margin="0,0,20,0" Grid.Column="2" 
-                                        ToolTip="在当前选择的 Minecraft 文件夹下安装整合包" />
+                                        ToolTip="在当前选择的 Minecraft 文件夹下安装整合包" ToolTipService.HorizontalOffset="-55" ToolTipService.VerticalOffset="5" />
                     </Grid>
                 </StackPanel>
             </local:MyCard>

+ 1 - 1
Plain Craft Launcher 2/Pages/PageDownload/PageDownloadPack.xaml.vb

@@ -8,7 +8,7 @@
     Public Shared Page As Integer = 0
     Private Sub PageDownloadPack_Inited(sender As Object, e As EventArgs) Handles Me.Initialized
         PageLoaderInit(Load, PanLoad, PanContent, PanAlways, Loader, AddressOf Load_OnFinish, AddressOf LoaderInput)
-        McVersionHighest = Math.Max(McVersionHighest, Integer.Parse(CType(TextSearchVersion.Items(1), MyComboBoxItem).Content.ToString.Split(".")(1)))
+        If McVersionHighest = -1 Then McVersionHighest = Math.Max(McVersionHighest, Integer.Parse(CType(TextSearchVersion.Items(1), MyComboBoxItem).Content.ToString.Split(".")(1)))
     End Sub
     Private Shared Function LoaderInput() As CompProjectRequest
         Dim Request As New CompProjectRequest(CompType.ModPack, Storage, (Page + 1) * PageSize)

+ 1 - 1
Plain Craft Launcher 2/Pages/PageLaunch/MySkin.xaml

@@ -3,7 +3,7 @@
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       xmlns:local="clr-namespace:PCL"
       Height="64" Width="64" UseLayoutRounding="True" RenderTransformOrigin="0.5,0.5" Background="{StaticResource ColorBrushSemiTransparent}"
-      ToolTipService.ShowDuration="23333333" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="-50" ToolTipService.HorizontalOffset="2" ToolTipService.InitialShowDelay="100">
+      ToolTipService.Placement="Center" ToolTipService.VerticalOffset="-50" ToolTipService.HorizontalOffset="2" ToolTipService.InitialShowDelay="100">
     <Grid.Effect>
         <DropShadowEffect x:Name="ShadowSkin" BlurRadius="10" ShadowDepth="0" Color="{DynamicResource ColorObject2}" Opacity="0.2" />
     </Grid.Effect>

+ 2 - 2
Plain Craft Launcher 2/Pages/PageLaunch/PageLoginAuthSkin.xaml

@@ -20,8 +20,8 @@
             <TextBlock Name="TextName" Text="加载中" Margin="8,0" FontSize="14" HorizontalAlignment="Center" TextTrimming="CharacterEllipsis" />
             <TextBlock Name="TextEmail" Text="加载中" Margin="8,4,8,0" FontSize="12" HorizontalAlignment="Center" TextTrimming="CharacterEllipsis" Foreground="{DynamicResource ColorBrushGray3}" />
         </StackPanel>
-        <local:MyIconButton ToolTip="更换角色" Grid.Row="1" Height="14" Opacity="0" x:Name="BtnEdit" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="32" ToolTipService.InitialShowDelay="50" ToolTipService.ShowDuration="1000000" Grid.Column="0" HorizontalAlignment="Center" Logo="F1 M 53.2929,21.2929L 54.7071,22.7071C 56.4645,24.4645 56.4645,27.3137 54.7071,29.0711L 52.2323,31.5459L 44.4541,23.7677L 46.9289,21.2929C 48.6863,19.5355 51.5355,19.5355 53.2929,21.2929 Z M 31.7262,52.052L 23.948,44.2738L 43.0399,25.182L 50.818,32.9601L 31.7262,52.052 Z M 23.2409,47.1023L 28.8977,52.7591L 21.0463,54.9537L 23.2409,47.1023 Z" Margin="8,0,0,0" VerticalAlignment="Center" />
-        <local:MyIconButton ToolTip="退出登录" Grid.Row="1" Height="14" Opacity="0" x:Name="BtnExit" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="32" ToolTipService.InitialShowDelay="50" ToolTipService.ShowDuration="1000000" Grid.Column="2" HorizontalAlignment="Center" Logo="F1 M 51.0071,19.0027L 51.0071,27.0038L 48.0067,27.0038L 48.0067,22.0031L 25.0035,22.0031L 25.0035,54.0075L 48.0067,54.0075L 48.0067,49.0068L 51.0071,49.0068L 51.0071,57.008L 22.1698,57.008L 22.0031,19.0027L 51.0071,19.0027 Z M 30.0042,35.0049L 45.2563,35.0049L 37.005,28.0039L 47.0066,28.0039L 58.5082,38.0053L 47.0066,48.0067L 37.005,48.0067L 45.2563,41.0057L 30.0042,41.0057L 30.0042,35.0049 Z" Margin="0,0,8,0" VerticalAlignment="Center" />
+        <local:MyIconButton ToolTip="更换角色" Grid.Row="1" Height="14" Opacity="0" x:Name="BtnEdit" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="32" ToolTipService.HorizontalOffset="1" ToolTipService.InitialShowDelay="50" Grid.Column="0" HorizontalAlignment="Center" Logo="F1 M 53.2929,21.2929L 54.7071,22.7071C 56.4645,24.4645 56.4645,27.3137 54.7071,29.0711L 52.2323,31.5459L 44.4541,23.7677L 46.9289,21.2929C 48.6863,19.5355 51.5355,19.5355 53.2929,21.2929 Z M 31.7262,52.052L 23.948,44.2738L 43.0399,25.182L 50.818,32.9601L 31.7262,52.052 Z M 23.2409,47.1023L 28.8977,52.7591L 21.0463,54.9537L 23.2409,47.1023 Z" Margin="8,0,0,0" VerticalAlignment="Center" />
+        <local:MyIconButton ToolTip="退出登录" Grid.Row="1" Height="14" Opacity="0" x:Name="BtnExit" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="32" ToolTipService.HorizontalOffset="1" ToolTipService.InitialShowDelay="50" Grid.Column="2" HorizontalAlignment="Center" Logo="F1 M 51.0071,19.0027L 51.0071,27.0038L 48.0067,27.0038L 48.0067,22.0031L 25.0035,22.0031L 25.0035,54.0075L 48.0067,54.0075L 48.0067,49.0068L 51.0071,49.0068L 51.0071,57.008L 22.1698,57.008L 22.0031,19.0027L 51.0071,19.0027 Z M 30.0042,35.0049L 45.2563,35.0049L 37.005,28.0039L 47.0066,28.0039L 58.5082,38.0053L 47.0066,48.0067L 37.005,48.0067L 45.2563,41.0057L 30.0042,41.0057L 30.0042,35.0049 Z" Margin="0,0,8,0" VerticalAlignment="Center" />
     </Grid>
     <local:MySkin HorizontalAlignment="Center" VerticalAlignment="Top" x:Name="Skin" HasCape="False" />
 </Grid>

+ 3 - 3
Plain Craft Launcher 2/Pages/PageLaunch/PageLoginMsSkin.xaml

@@ -18,7 +18,7 @@
                 CornerRadius="5" Background="{DynamicResource ColorBrush8}" Padding="10,3,9,3">
             <StackPanel Orientation="Horizontal">
                 <local:MyIconButton Height="24" Margin="0,0.5,9,0"  x:Name="BtnSkin"
-                                ToolTip="皮肤与披风" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="40" ToolTipService.InitialShowDelay="50" ToolTipService.ShowDuration="1000000" 
+                                ToolTip="皮肤与披风" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="35" ToolTipService.HorizontalOffset="1" ToolTipService.InitialShowDelay="50" 
                                 LogoScale="1.08" Logo="M764.0003 0.076794a215.433442 215.433442 0 0 0-76.282279 13.950954l-9.06172 3.686123c-49.148314 20.734445-88.518161 30.53851-115.498538 30.53851-27.031573 0-66.478214-9.855261-116.676049-31.050471a217.583681 217.583681 0 0 0-72.186586-16.766743l-9.138515-0.307177-3.839712-0.051196-8.626553 0.307177-4.223683 0.281579A160.755943 160.755943 0 0 0 250.477214 45.385396l-219.32435 212.438467a102.392321 102.392321 0 0 0-11.263156 134.210734l106.360023 144.552359 3.378947 4.351674a102.469115 102.469115 0 0 0 112.810739 31.690423l5.657176-2.175837V883.210559a140.789441 140.789441 0 0 0 140.789441 140.789441h372.170487l5.657175-0.102392a140.789441 140.789441 0 0 0 135.132266-140.687049l-0.025599-318.6705 1.177512 0.716747a102.392321 102.392321 0 0 0 141.941355-44.233483l70.906682-144.39877a102.392321 102.392321 0 0 0-20.657651-118.647101L875.86391 45.385396A160.730345 160.730345 0 0 0 764.0003 0.076794z m-357.349199 111.454041C468.444867 137.615279 520.562558 150.644702 563.157763 150.644702c42.492813 0 94.584906-12.978227 156.199485-38.985876A112.580356 112.580356 0 0 1 764.0003 102.469115c15.154063 0 29.693773 5.887558 40.598555 16.433967L1023.923206 331.495138l-70.906682 144.39877-93.023423-65.684674a38.39712 38.39712 0 0 0-60.53946 31.383247V883.210559a38.39712 38.39712 0 0 1-38.39712 38.39712H388.886034a38.39712 38.39712 0 0 1-38.397121-38.39712V445.176212a38.39712 38.39712 0 0 0-61.691373-30.487314l-80.070795 61.20501L102.392321 331.341549l219.32435-212.438467a58.363623 58.363623 0 0 1 35.581332-16.229183L362.110442 102.469115l6.322726 0.179186a115.191361 115.191361 0 0 1 38.217933 8.882534z">
                     <local:MyIconButton.ContextMenu>
                         <ContextMenu Closed="HidePanel" HorizontalOffset="10" VerticalOffset="18">
@@ -31,7 +31,7 @@
                     </local:MyIconButton.ContextMenu>
                 </local:MyIconButton>
                 <local:MyIconButton Height="24" Margin="0,0,9,0" x:Name="BtnEdit"
-                                ToolTip="修改信息" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="40" ToolTipService.InitialShowDelay="50" ToolTipService.ShowDuration="1000000" 
+                                ToolTip="修改信息" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="35" ToolTipService.HorizontalOffset="1" ToolTipService.InitialShowDelay="50" 
                                 LogoScale="1.1" Logo="M462.336 924.891429L73.142857 950.857143l25.965714-389.193143 467.017143-467.017143a73.398857 73.398857 0 0 1 103.789715 0l259.437714 259.437714a73.398857 73.398857 0 0 1 0 103.789715l-467.017143 467.017143z m155.684571-778.349715L202.861714 561.664l259.474286 259.474286L877.458286 405.942857 618.057143 146.541714zM151.003429 873.033143l233.508571-25.965714-207.579429-207.579429-25.965714 233.545143z m544.841142-492.982857l51.894858 51.894857-233.508572 233.508571-51.931428-51.894857 233.545142-233.508571z">
                     <local:MyIconButton.ContextMenu>
                         <ContextMenu Closed="HidePanel" HorizontalOffset="10" VerticalOffset="18">
@@ -41,7 +41,7 @@
                     </local:MyIconButton.ContextMenu>
                 </local:MyIconButton>
                 <local:MyIconButton Height="24" x:Name="BtnExit" Margin="0,0,0,0"
-                                ToolTip="切换账号" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="40" ToolTipService.InitialShowDelay="50" ToolTipService.ShowDuration="1000000" 
+                                ToolTip="切换账号" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="35" ToolTipService.HorizontalOffset="1" ToolTipService.InitialShowDelay="50" 
                                 LogoScale="1.15" Logo="M512 0A512 512 0 1 0 1024 512 512 512 0 0 0 512 0z m0 941.407086A429.407086 429.407086 0 1 1 941.407086 512 429.407086 429.407086 0 0 1 512 941.407086z m235.139657-368.64H264.045714a43.505371 43.505371 0 0 0-31.246628 72.060343l159.305143 166.765714a41.281829 41.281829 0 1 0 59.626057-56.788114l-94.997943-99.474286H747.227429a41.311086 41.311086 0 1 0 0-82.622172zM262.670629 450.940343H745.764571a43.505371 43.505371 0 0 0 31.246629-72.352914l-159.305143-166.765715a41.281829 41.281829 0 1 0-59.713828 57.022172l94.968685 99.474285H262.670629a41.281829 41.281829 0 0 0 0 82.563658z" />
             </StackPanel>
         </Border>

+ 2 - 2
Plain Craft Launcher 2/Pages/PageLaunch/PageLoginNideSkin.xaml

@@ -20,8 +20,8 @@
             <TextBlock Name="TextName" Text="加载中" Margin="8,0" FontSize="14" HorizontalAlignment="Center" TextTrimming="CharacterEllipsis" />
             <TextBlock Name="TextEmail" Text="加载中" Margin="8,4,8,0" FontSize="12" HorizontalAlignment="Center" TextTrimming="CharacterEllipsis" Foreground="{DynamicResource ColorBrushGray3}" />
         </StackPanel>
-        <local:MyIconButton ToolTip="更改密码" Grid.Row="1" Height="14" Opacity="0" x:Name="BtnEdit" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="32" ToolTipService.InitialShowDelay="50" ToolTipService.ShowDuration="1000000" Grid.Column="0" HorizontalAlignment="Center" Logo="F1 M 53.2929,21.2929L 54.7071,22.7071C 56.4645,24.4645 56.4645,27.3137 54.7071,29.0711L 52.2323,31.5459L 44.4541,23.7677L 46.9289,21.2929C 48.6863,19.5355 51.5355,19.5355 53.2929,21.2929 Z M 31.7262,52.052L 23.948,44.2738L 43.0399,25.182L 50.818,32.9601L 31.7262,52.052 Z M 23.2409,47.1023L 28.8977,52.7591L 21.0463,54.9537L 23.2409,47.1023 Z" Margin="8,0,0,0" VerticalAlignment="Center" />
-        <local:MyIconButton ToolTip="退出登录" Grid.Row="1" Height="14" Opacity="0" x:Name="BtnExit" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="32" ToolTipService.InitialShowDelay="50" ToolTipService.ShowDuration="1000000" Grid.Column="2" HorizontalAlignment="Center" Logo="F1 M 51.0071,19.0027L 51.0071,27.0038L 48.0067,27.0038L 48.0067,22.0031L 25.0035,22.0031L 25.0035,54.0075L 48.0067,54.0075L 48.0067,49.0068L 51.0071,49.0068L 51.0071,57.008L 22.1698,57.008L 22.0031,19.0027L 51.0071,19.0027 Z M 30.0042,35.0049L 45.2563,35.0049L 37.005,28.0039L 47.0066,28.0039L 58.5082,38.0053L 47.0066,48.0067L 37.005,48.0067L 45.2563,41.0057L 30.0042,41.0057L 30.0042,35.0049 Z" Margin="0,0,8,0" VerticalAlignment="Center" />
+        <local:MyIconButton ToolTip="更改密码" Grid.Row="1" Height="14" Opacity="0" x:Name="BtnEdit" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="32" ToolTipService.HorizontalOffset="1" ToolTipService.InitialShowDelay="50" Grid.Column="0" HorizontalAlignment="Center" Logo="F1 M 53.2929,21.2929L 54.7071,22.7071C 56.4645,24.4645 56.4645,27.3137 54.7071,29.0711L 52.2323,31.5459L 44.4541,23.7677L 46.9289,21.2929C 48.6863,19.5355 51.5355,19.5355 53.2929,21.2929 Z M 31.7262,52.052L 23.948,44.2738L 43.0399,25.182L 50.818,32.9601L 31.7262,52.052 Z M 23.2409,47.1023L 28.8977,52.7591L 21.0463,54.9537L 23.2409,47.1023 Z" Margin="8,0,0,0" VerticalAlignment="Center" />
+        <local:MyIconButton ToolTip="退出登录" Grid.Row="1" Height="14" Opacity="0" x:Name="BtnExit" ToolTipService.Placement="Center" ToolTipService.VerticalOffset="32" ToolTipService.HorizontalOffset="1" ToolTipService.InitialShowDelay="50" Grid.Column="2" HorizontalAlignment="Center" Logo="F1 M 51.0071,19.0027L 51.0071,27.0038L 48.0067,27.0038L 48.0067,22.0031L 25.0035,22.0031L 25.0035,54.0075L 48.0067,54.0075L 48.0067,49.0068L 51.0071,49.0068L 51.0071,57.008L 22.1698,57.008L 22.0031,19.0027L 51.0071,19.0027 Z M 30.0042,35.0049L 45.2563,35.0049L 37.005,28.0039L 47.0066,28.0039L 58.5082,38.0053L 47.0066,48.0067L 37.005,48.0067L 45.2563,41.0057L 30.0042,41.0057L 30.0042,35.0049 Z" Margin="0,0,8,0" VerticalAlignment="Center" />
     </Grid>
     <local:MySkin HorizontalAlignment="Center" VerticalAlignment="Top" x:Name="Skin" HasCape="False" />
 </Grid>

+ 1 - 5
Plain Craft Launcher 2/Pages/PageLink/PageLinkIoi.xaml.vb

@@ -181,7 +181,7 @@ StartDownload:
                             "若继续,PCL 将尝试以管理员权限重新启动。" & vbCrLf &
                             "若拒绝,联机模块可能会被防火墙拦截,联机会有很大概率失败。", "需要管理员权限", "继续", "拒绝") = 1 Then
                     Log("[IOI] Windows 防火墙:尝试提升权限")
-                    If RerunAsAdmin("--link ioi") Then
+                    If RunAsAdmin("--link ioi") Then
                         FrmMain.EndProgram(False) '已重新运行
                     Else
                         Hint("获取管理员权限失败,请尝试右键 PCL,选择 " & vbLQ & "以管理员身份运行" & vbRQ & ",然后再进入联机页面!", HintType.Critical)
@@ -858,14 +858,12 @@ Done:
             ToolTipService.SetPlacement(BtnRefresh, Primitives.PlacementMode.Bottom)
             ToolTipService.SetHorizontalOffset(BtnRefresh, -10)
             ToolTipService.SetVerticalOffset(BtnRefresh, 5)
-            ToolTipService.SetShowDuration(BtnRefresh, 2333333)
             ToolTipService.SetInitialShowDelay(BtnRefresh, 200)
             Dim BtnClose As New MyIconButton With {.Logo = Logo.IconButtonCross, .LogoScale = 0.85, .ToolTip = "断开", .Tag = Me}
             AddHandler BtnClose.Click, AddressOf BtnListDisconnect_Click
             ToolTipService.SetPlacement(BtnClose, Primitives.PlacementMode.Bottom)
             ToolTipService.SetHorizontalOffset(BtnClose, -10)
             ToolTipService.SetVerticalOffset(BtnClose, 5)
-            ToolTipService.SetShowDuration(BtnClose, 2333333)
             ToolTipService.SetInitialShowDelay(BtnClose, 200)
             Item.Buttons = {BtnRefresh, BtnClose}
             '刷新并返回
@@ -952,14 +950,12 @@ Done:
                 ToolTipService.SetPlacement(BtnEdit, Primitives.PlacementMode.Bottom)
                 ToolTipService.SetHorizontalOffset(BtnEdit, -22)
                 ToolTipService.SetVerticalOffset(BtnEdit, 5)
-                ToolTipService.SetShowDuration(BtnEdit, 2333333)
                 ToolTipService.SetInitialShowDelay(BtnEdit, 200)
                 Dim BtnClose As New MyIconButton With {.Logo = Logo.IconButtonCross, .LogoScale = 0.85, .ToolTip = "关闭", .Tag = Me}
                 AddHandler BtnClose.Click, AddressOf BtnRoomClose_Click
                 ToolTipService.SetPlacement(BtnClose, Primitives.PlacementMode.Bottom)
                 ToolTipService.SetHorizontalOffset(BtnClose, -10)
                 ToolTipService.SetVerticalOffset(BtnClose, 5)
-                ToolTipService.SetShowDuration(BtnClose, 2333333)
                 ToolTipService.SetInitialShowDelay(BtnClose, 200)
                 Item.Buttons = {BtnEdit, BtnClose}
             Else

+ 1 - 1
Plain Craft Launcher 2/Pages/PageLink/PageLinkLeft.xaml

@@ -32,7 +32,7 @@
                           LogoScale="0.85" Logo="M940.4 463.7L773.3 174.2c-17.3-30-49.2-48.4-83.8-48.4H340.2c-34.6 0-66.5 18.5-83.8 48.4L89.2 463.7c-17.3 30-17.3 66.9 0 96.8L256.4 850c17.3 30 49.2 48.4 83.8 48.4h349.2c34.6 0 66.5-18.5 83.8-48.4l167.2-289.5c17.3-29.9 17.3-66.8 0-96.8z m-94.6 96.8L725.9 768.1c-17.3 30-49.2 48.4-83.8 48.4H387.5c-34.6 0-66.5-18.5-83.8-48.4L183.9 560.5c-17.3-30-17.3-66.9 0-96.8l119.8-207.5c17.3-30 49.2-48.4 83.8-48.4h254.6c34.6 0 66.5 18.5 83.8 48.4l119.8 207.5c17.3 30 17.3 66.9 0.1 96.8z M522.3 321.2c-2.5-0.1-5-0.2-7.5-0.2-119.9 0-214 110.3-186.3 235 15.8 70.9 71.5 126.6 142.4 142.4 17.5 3.9 34.7 5.4 51.4 4.7 102.1-3.9 183.6-87.9 183.6-191 0.1-103-81.5-187-183.6-190.9z m68.6 269.1c-18.5 18-43 28.9-68.6 30.7l-6 0.3c-30.2 0.4-58.6-11.4-79.7-33-19.5-20.1-30.7-47-30.9-75-0.3-29.6 11.1-57.4 32-78.3 20.6-20.6 48-32 77.2-32 2.5 0 5 0.1 7.5 0.3 26.7 1.8 51.5 13.2 70.5 32.5 19.6 20 30.8 46.9 31.2 74.9 0.2 30.2-11.5 58.6-33.2 79.6z">
             <local:MyListItem.Buttons>
                 <x:Array Type="{x:Type local:MyIconButton}">
-                    <local:MyIconButton Tag="5" ToolTip="初始化设置" ToolTipService.Placement="Right" ToolTipService.InitialShowDelay="200" Click="Reset" Logo="M835.072 184.32l-77.824 81.92c-64.512-66.56-153.6-106.496-251.904-106.496-195.584 0-355.328 159.744-355.328 354.304 0 195.584 159.744 354.304 355.328 354.304 147.456 0 304.128-80.896 337.92-245.76 3.072-15.36-9.216-23.552-21.504-23.552l-72.704 0c-15.36 0-28.672 14.336-29.696 24.576 0 2.048 0 3.072-1.024 3.072-32.768 96.256-107.52 119.808-212.992 119.808-128 0-232.448-104.448-232.448-232.448s104.448-231.424 232.448-231.424c64.512 0 121.856 26.624 165.888 69.632l-101.376 100.352c-1.024 0-1.024 1.024-2.048 1.024-20.48 22.528-12.288 37.888 11.264 37.888l256 0c22.528 0 36.864-15.36 36.864-37.888L871.936 193.536C870.912 174.08 857.6 166.912 835.072 184.32z" LogoScale="0.9" />
+                    <local:MyIconButton Tag="5" ToolTip="初始化设置" ToolTipService.Placement="Right" ToolTipService.InitialShowDelay="200" ToolTipService.VerticalOffset="-1" Click="Reset" Logo="M835.072 184.32l-77.824 81.92c-64.512-66.56-153.6-106.496-251.904-106.496-195.584 0-355.328 159.744-355.328 354.304 0 195.584 159.744 354.304 355.328 354.304 147.456 0 304.128-80.896 337.92-245.76 3.072-15.36-9.216-23.552-21.504-23.552l-72.704 0c-15.36 0-28.672 14.336-29.696 24.576 0 2.048 0 3.072-1.024 3.072-32.768 96.256-107.52 119.808-212.992 119.808-128 0-232.448-104.448-232.448-232.448s104.448-231.424 232.448-231.424c64.512 0 121.856 26.624 165.888 69.632l-101.376 100.352c-1.024 0-1.024 1.024-2.048 1.024-20.48 22.528-12.288 37.888 11.264 37.888l256 0c22.528 0 36.864-15.36 36.864-37.888L871.936 193.536C870.912 174.08 857.6 166.912 835.072 184.32z" LogoScale="0.9" />
                 </x:Array>
             </local:MyListItem.Buttons>
         </local:MyListItem>

+ 1 - 1
Plain Craft Launcher 2/Pages/PageOther/PageOtherLeft.xaml

@@ -7,7 +7,7 @@
                           LogoScale="0.97" Logo="M520.6 620.3c-11.3-0.6-20.1-4-26.9-10.5-6.6-6.3-8.1-11-10.1-20.8-1.9-9.5-1.5-16.7-1-24.9l0.3-5.3c0.5-9.9 3.5-19.6 8.8-28.1 5.7-9 12.5-17.2 20.8-25.1 8.6-8 17.7-15.7 27-22.9 9.4-7.2 18.7-14.8 27.7-22.7 9-7.9 16.2-15.8 22.1-24.3 6.2-9 9.3-18.8 9.3-29.4 1.2-20.3-6.5-37.7-22.8-51.3-16-13.3-37.4-20-63.5-20-13.7 0-26.3 3.3-37.4 10-10.9 6.5-20.2 14.5-27.7 23.8-7.5 9.2-13.5 19-17.9 29.2-4.5 10.6-6.7 19.4-6.7 26.8 0 9.2-3.3 16-10.1 20.8-6.9 4.8-14.6 7.3-22.8 7.3h-1.3c-9-0.3-17-3.3-24.6-9.2-7.3-5.6-11.1-14.6-11.6-27.5-0.6-11.5 1.9-26.1 7.2-43.5 5.4-17.4 14.8-34.4 28.1-50.5 13.4-16.3 31.2-30.4 52.8-41.8 21.6-11.4 49.2-17.2 81.9-17.2 26.4 0 49.6 3.9 69.1 11.7 19.4 7.7 35.4 18.2 47.5 31.1l1.6 1.7c11.8 12.6 20.3 21.7 29.4 44.4 11.6 28.9 7.1 52.1 5.5 58.5-5.8 22.6-12.6 37.7-22.7 50.4-11.7 14.6-24.9 28.2-39.2 40.4-14 11.7-39.2 33.3-39.2 33.3-13.3 11.4-19.4 22.1-18.6 32.9V587c0.5 8.7-2.4 16.1-8.8 22.8-6.2 6.4-14.8 10-26.2 10.5zM519 766.1c-13 0-23.6-4.2-32.2-12.9-8.7-8.7-13-19-13-31.4 0-12.9 4.2-23.5 12.9-32.2 8.7-8.7 19.2-12.9 32.2-12.9 13 0 23.5 4.2 32.2 12.9s12.9 19.2 12.9 32.2c0 12.4-4.2 22.7-12.9 31.4-8.6 8.6-19.2 12.9-32.1 12.9z M515 928.3c-228.1 0-413.7-185.6-413.7-413.7S286.9 100.9 515 100.9s413.7 185.6 413.7 413.7c0.1 228.1-185.5 413.7-413.7 413.7z m0-747.4c-184 0-333.7 149.7-333.7 333.7S331 848.3 515 848.3s333.7-149.7 333.7-333.7S699 180.9 515 180.9z">
             <local:MyListItem.Buttons>
                 <x:Array Type="{x:Type local:MyIconButton}">
-                    <local:MyIconButton Tag="0" ToolTip="刷新" ToolTipService.Placement="Right" ToolTipService.InitialShowDelay="200" Click="Refresh" LogoScale="0.85" Logo="M875.52 148.48C783.36 56.32 655.36 0 512 0 291.84 0 107.52 138.24 30.72 332.8l122.88 46.08C204.8 230.4 348.16 128 512 128c107.52 0 199.68 40.96 271.36 112.64L640 384h384V0L875.52 148.48zM512 896c-107.52 0-199.68-40.96-271.36-112.64L384 640H0v384l148.48-148.48C240.64 967.68 368.64 1024 512 1024c220.16 0 404.48-138.24 481.28-332.8L870.4 645.12C819.2 793.6 675.84 896 512 896z" />
+                    <local:MyIconButton Tag="0" ToolTip="刷新" ToolTipService.Placement="Right" ToolTipService.InitialShowDelay="200" ToolTipService.VerticalOffset="-1" Click="Refresh" LogoScale="0.85" Logo="M875.52 148.48C783.36 56.32 655.36 0 512 0 291.84 0 107.52 138.24 30.72 332.8l122.88 46.08C204.8 230.4 348.16 128 512 128c107.52 0 199.68 40.96 271.36 112.64L640 384h384V0L875.52 148.48zM512 896c-107.52 0-199.68-40.96-271.36-112.64L384 640H0v384l148.48-148.48C240.64 967.68 368.64 1024 512 1024c220.16 0 404.48-138.24 481.28-332.8L870.4 645.12C819.2 793.6 675.84 896 512 896z" />
                 </x:Array>
             </local:MyListItem.Buttons>
         </local:MyListItem>

+ 3 - 6
Plain Craft Launcher 2/Pages/PageSelectLeft.xaml.vb

@@ -95,7 +95,6 @@
                 ToolTipService.SetPlacement(ItemCreate, Primitives.PlacementMode.Right)
                 ToolTipService.SetHorizontalOffset(ItemCreate, -50)
                 ToolTipService.SetVerticalOffset(ItemCreate, 2.5)
-                ToolTipService.SetShowDuration(ItemCreate, 2333333)
                 FrmSelectLeft.PanList.Children.Add(ItemCreate)
                 AddHandler ItemCreate.Click, AddressOf FrmSelectLeft.Create_Click
             End If
@@ -107,7 +106,6 @@
             ToolTipService.SetPlacement(ItemAdd, Primitives.PlacementMode.Right)
             ToolTipService.SetHorizontalOffset(ItemAdd, -50)
             ToolTipService.SetVerticalOffset(ItemAdd, 2.5)
-            ToolTipService.SetShowDuration(ItemAdd, 2333333)
             FrmSelectLeft.PanList.Children.Add(ItemAdd)
             AddHandler ItemAdd.Click, AddressOf FrmSelectLeft.Add_Click
 
@@ -118,7 +116,6 @@
             ToolTipService.SetPlacement(ItemInstall, Primitives.PlacementMode.Right)
             ToolTipService.SetHorizontalOffset(ItemInstall, -50)
             ToolTipService.SetVerticalOffset(ItemInstall, 2.5)
-            ToolTipService.SetShowDuration(ItemInstall, 2333333)
             FrmSelectLeft.PanList.Children.Add(ItemInstall)
             AddHandler ItemInstall.Click, AddressOf ModpackInstall
 
@@ -152,7 +149,7 @@
         Dim NewFolder As String = ""
         '检查是否有下载任务
         If HasDownloadingTask() Then
-            Hint("请不要在下载过程中添加游戏文件夹!", HintType.Critical)
+            Hint("在下载任务进行时,无法添加游戏文件夹!", HintType.Critical)
             Exit Sub
         End If
         Try
@@ -255,7 +252,7 @@
     Public Sub Create_Click()
         '检查是否有下载任务
         If HasDownloadingTask() Then
-            Hint("请不要在下载过程中创建游戏文件夹!", HintType.Critical)
+            Hint("在下载任务进行时,无法创建游戏文件夹!", HintType.Critical)
             Exit Sub
         End If
         If Not Directory.Exists(Path & ".minecraft\") Then
@@ -393,7 +390,7 @@
         If Not e.RaiseByMouse OrElse Not sender.Checked Then Exit Sub
         '检查是否有下载任务
         If HasDownloadingTask(True) Then
-            Hint("请不要在下载过程中切换游戏文件夹!", HintType.Critical)
+            Hint("在下载任务进行时,无法切换游戏文件夹!", HintType.Critical)
             e.Handled = True
             Exit Sub
         End If

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

@@ -18,11 +18,11 @@
                             <ColumnDefinition />
                             <ColumnDefinition />
                         </Grid.ColumnDefinitions>
-                        <local:MyRadioBox Text="随机" x:Name="RadioSkinType0" Height="22" Tag="LaunchSkinType/0" Grid.Column="0" ToolTipService.Placement="Bottom" ToolTip="在 Steve 和 Alex 中随机选择一个皮肤" />
+                        <local:MyRadioBox Text="随机" x:Name="RadioSkinType0" Height="22" Tag="LaunchSkinType/0" Grid.Column="0" ToolTip="随机选择一个默认皮肤" />
                         <local:MyRadioBox Text="Steve" x:Name="RadioSkinType1" Height="22" Tag="LaunchSkinType/1" Grid.Column="1" />
                         <local:MyRadioBox Text="Alex" x:Name="RadioSkinType2" Height="22" Tag="LaunchSkinType/2" Grid.Column="2" />
-                        <local:MyRadioBox Text="正版皮肤" x:Name="RadioSkinType3" Height="22" Tag="LaunchSkinType/3" Grid.Column="3" ToolTipService.Placement="Bottom" ToolTip="使用某个正版玩家的皮肤" />
-                        <local:MyRadioBox Text="自定义" x:Name="RadioSkinType4" Height="22" Tag="LaunchSkinType/4" Grid.Column="4" ToolTipService.Placement="Bottom" ToolTip="以资源包的形式加载自定义皮肤。&#xa;使用此方式更换的皮肤在多人游戏中仅自己可见,且会替换游戏中所有的角色。" />
+                        <local:MyRadioBox Text="正版皮肤" x:Name="RadioSkinType3" Height="22" Tag="LaunchSkinType/3" Grid.Column="3" ToolTip="使用某个正版玩家的皮肤" />
+                        <local:MyRadioBox Text="自定义" x:Name="RadioSkinType4" Height="22" Tag="LaunchSkinType/4" Grid.Column="4" ToolTip="以资源包的形式加载自定义皮肤。&#xa;使用此方式更换的皮肤在多人游戏中仅自己可见,且会替换游戏中所有的角色。" />
                     </Grid>
                     <Grid x:Name="PanSkinID" Margin="0,14,0,2" Visibility="Collapsed">
                         <Grid.ColumnDefinitions>
@@ -94,11 +94,11 @@
                         </local:MyTextBox>
                         <TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="版本隔离" Margin="0,0,25,0" />
                         <local:MyComboBox x:Name="ComboArgumentIndie" Grid.Row="4" Grid.ColumnSpan="2" Tag="LaunchArgumentIndie" Grid.Column="1">
-                            <local:MyComboBoxItem Content="关闭" ToolTip="所有版本均使用同一档案,存档、Mod、资源包等均为公用。&#xa;若存在不同版本的 Forge,可能会由于 Mod 与版本冲突导致未知问题。" />
-                            <local:MyComboBoxItem Content="仅隔离可安装 Mod 的版本" IsSelected="True" ToolTip="每个 LiteLoader、Forge、Fabric 版本均互相独立以避免 Mod 冲突,未安装 Mod API 的其他版本则不会被隔离。" />
-                            <local:MyComboBoxItem Content="仅隔离非正式版" ToolTip="将 Minecraft 快照、预发布版、远古版本、愚人节版本与其他版本进行隔离。" />
-                            <local:MyComboBoxItem Content="隔离非正式版与可安装 Mod 的版本" />
-                            <local:MyComboBoxItem Content="隔离所有版本" ToolTip="不同版本之间的存档、Mod、资源包等均不互通。" />
+                            <local:MyComboBoxItem Content="关闭" ToolTip="所有版本均使用同一档案,存档、Mod、资源包等均为公用。&#xa;若存在多个安装了 Mod 的版本,可能会导致 Mod 冲突。" />
+                            <local:MyComboBoxItem Content="隔离可安装 Mod 的版本" IsSelected="True" ToolTip="可安装 Mod 的版本(例如 Forge、Fabric)均互相独立以避免 Mod 冲突,其他版本(例如原版)则不会被隔离。" />
+                            <local:MyComboBoxItem Content="隔离非正式版" ToolTip="将 Minecraft 快照、预发布版、远古版本、愚人节版本与其他版本进行隔离" />
+                            <local:MyComboBoxItem Content="隔离可安装 Mod 的版本与非正式版" />
+                            <local:MyComboBoxItem Content="隔离所有版本" ToolTip="不同版本之间的存档、Mod、资源包等均不互通。&#xa;这会导致不同原版版本间的存档不能共用,所以一般不推荐。" />
                         </local:MyComboBox>
                         <TextBlock VerticalAlignment="Center" Grid.Row="6" HorizontalAlignment="Left" Text="启动器可见性" Margin="0,0,25,0" />
                         <local:MyComboBox x:Name="ComboArgumentVisibie" Grid.Row="6" Grid.ColumnSpan="2" Tag="LaunchArgumentVisible" Grid.Column="1">
@@ -125,9 +125,9 @@
                             </Grid.ColumnDefinitions>
                             <local:MyComboBox x:Name="ComboArgumentWindowType" Tag="LaunchArgumentWindowType">
                                 <local:MyComboBoxItem Content="全屏" />
-                                <local:MyComboBoxItem Content="默认大小" IsSelected="True" ToolTip="以 854×480 的默认窗口大小启动 Minecraft" ToolTipService.Placement="Right" ToolTipService.HorizontalOffset="5" />
+                                <local:MyComboBoxItem Content="默认大小" IsSelected="True" ToolTip="以 854×480 的默认窗口大小启动 Minecraft" />
                                 <local:MyComboBoxItem Content="与启动器窗口大小一致" />
-                                <local:MyComboBoxItem Content="自定义大小" ToolTip="请注意 1.12.2 及更老的部分 Forge 存在 Bug,会导致高度设定无效" ToolTipService.Placement="Right" ToolTipService.HorizontalOffset="5" />
+                                <local:MyComboBoxItem Content="自定义大小" ToolTip="注意:Forge 1.12.2 等个别版本存在 Bug,会导致高度设定无效" />
                                 <local:MyComboBoxItem Content="最大化" />
                                 <local:MyComboBoxItem Content="保持游戏默认" />
                             </local:MyComboBox>
@@ -138,7 +138,7 @@
                             </local:MyTextBox>
                             <TextBlock x:Name="LabArgumentWindowMiddle" Visibility="Collapsed" Grid.Column="2" Text=" × " VerticalAlignment="Center" FontSize="18" />
                             <local:MyTextBox Padding="0,0,5,0" Visibility="Collapsed" Grid.Column="3" Width="60" HorizontalContentAlignment="Center" x:Name="TextArgumentWindowHeight" Tag="LaunchArgumentWindowHeight" Text="480"
-                                              ToolTip="请注意 Forge 1.12.2 存在 Bug,会导致高度设定无效,其他版本无此问题" ToolTipService.Placement="Right" ToolTipService.HorizontalOffset="5">
+                                              ToolTip="注意:Forge 1.12.2 等个别版本存在 Bug,会导致高度设定无效" ToolTipService.Placement="Right" ToolTipService.HorizontalOffset="5">
                                 <local:MyTextBox.ValidateRules>
                                     <local:ValidateInteger Min="1" Max="9999" />
                                 </local:MyTextBox.ValidateRules>
@@ -176,7 +176,8 @@
                             <RowDefinition Height="9" />
                             <RowDefinition Height="Auto" />
                         </Grid.RowDefinitions>
-                        <local:MyRadioBox Text="自动配置" Width="110" Checked="True" x:Name="RadioRamType0" Tag="LaunchRamType/0" Margin="0,0,20,0" ToolTip="根据安装的 Mod 量与电脑剩余内存动态调整为游戏分配的内存。" />
+                        <local:MyRadioBox Text="自动配置" Width="110" Checked="True" x:Name="RadioRamType0" Tag="LaunchRamType/0" Margin="0,0,20,0" 
+                                          ToolTip="根据安装的 Mod 量与电脑剩余内存,动态调整为游戏分配的内存" ToolTipService.Placement="Right" ToolTipService.HorizontalOffset="-10" ToolTipService.VerticalOffset="-3" />
                         <local:MyRadioBox Grid.Row="2" Text="自定义" x:Name="RadioRamType1" Tag="LaunchRamType/1" Margin="0,0,20,0" />
                         <local:MySlider Grid.Row="2" Grid.Column="1" IsEnabled="False" x:Name="SliderRamCustom" Tag="LaunchRamCustom" MaxValue="49" Value="13" />
                         <!--<local:MyTextBox Grid.Row="2" Grid.Column="3" Width="100" VerticalAlignment="Center" Margin="30,0,0,0" Text="2048 MB" />-->
@@ -241,7 +242,7 @@
                         <local:MyCheckBox Text="忽略 Java 兼容性警告" x:Name="CheckAdvanceJava" Tag="LaunchAdvanceJava" Margin="0,0,60,0"
                                         ToolTip="如果在设置中手动选择了与当前版本不兼容的 Java,则自动跳过兼容性警告弹窗,强制使用手动选择的 Java。" />
                         <local:MyCheckBox Text="关闭文件校验" x:Name="CheckAdvanceAssets" Tag="LaunchAdvanceAssets"
-                                        ToolTip="在启动时不校验 libraries 文件夹、第三方登录库与版本主 jar 文件,不更改 assets 文件夹。&#xa;如果你没有修改相关文件,请勿勾选此项。&#xa;更推荐在版本设置中关闭特定版本的校验,而不是在这里关闭所有版本的校验。" />
+                                        ToolTip="完全不更改 assets;不校验 libraries、第三方登录库与版本主 jar 文件是否被修改。&#xa;如果你没有修改相关文件,请勿勾选此项。&#xa;强烈推荐在版本设置中关闭特定版本的校验,而不是在这里关闭所有版本的校验。" />
                     </StackPanel>
                 </Grid>
             </local:MyCard>

+ 3 - 4
Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb

@@ -337,7 +337,7 @@
     ''' <summary>
     ''' 获取当前设置的 RAM 值。单位为 GB。
     ''' </summary>
-    Public Shared Function GetRam(Version As McVersion, UseVersionJavaSetup As Boolean) As Double
+    Public Shared Function GetRam(Version As McVersion, UseVersionJavaSetup As Boolean, Optional Is32BitJava As Boolean? = Nothing) As Double
         Dim RamGive As Double
         If Setup.Get("LaunchRamType") = 0 Then
             '自动配置
@@ -413,7 +413,7 @@ PreFin:
             End If
         End If
         '若使用 32 位 Java,则限制为 1G
-        If Not JavaIs64Bit(If(UseVersionJavaSetup, Version, Nothing)) Then RamGive = Math.Min(1, RamGive)
+        If If(Is32BitJava, Not JavaIs64Bit(If(UseVersionJavaSetup, Version, Nothing))) Then RamGive = Math.Min(1, RamGive)
         Return RamGive
     End Function
 
@@ -433,8 +433,7 @@ PreFin:
         Try
             For Each Java In Sort(JavaList.Clone(), Function(l, r) l.VersionCode < r.VersionCode)
                 Dim ListItem = New MyComboBoxItem With {.Content = Java.ToString, .ToolTip = Java.PathFolder, .Tag = Java}
-                ToolTipService.SetPlacement(ListItem, Primitives.PlacementMode.Right)
-                ToolTipService.SetHorizontalOffset(ListItem, 5)
+                ToolTipService.SetHorizontalOffset(ListItem, 0)
                 ComboArgumentJava.Items.Add(ListItem)
                 '判断人为选中
                 If SelectedBySetup = "" Then Continue For

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
Plain Craft Launcher 2/Pages/PageSetup/PageSetupLeft.xaml


+ 6 - 6
Plain Craft Launcher 2/Pages/PageSetup/PageSetupSystem.xaml

@@ -45,10 +45,11 @@
                         <local:MySlider x:Name="SliderDownloadThread" Grid.Row="4" Tag="ToolDownloadThread" MaxValue="255" Value="63" Grid.Column="1"
                                         ToolTip="线程数越多,限速的文件下载越快,但过高的线程数会造成下载时非常严重的卡顿。&#xa;一般而言,64 线程已可以保证足够的下载速度。" />
                         <TextBlock VerticalAlignment="Center" Grid.Row="5" HorizontalAlignment="Left" Text="速度限制" Margin="0,0,25,0" />
-                        <local:MySlider x:Name="SliderDownloadSpeed" Grid.Row="5" Tag="ToolDownloadSpeed" MaxValue="42" Value="42" Grid.Column="1" />
+                        <local:MySlider x:Name="SliderDownloadSpeed" Grid.Row="5" Tag="ToolDownloadSpeed" MaxValue="42" Value="42" Grid.Column="1"
+                                        ToolTip="设置下载的速度上限,以避免在下载时导致其他需要联网的程序卡死" />
                         <TextBlock VerticalAlignment="Top" Grid.Row="6" HorizontalAlignment="Left" Text="目标文件夹" Margin="0,5,25,5" />
-                        <TextBlock Margin="0,5" HorizontalAlignment="Left" Text="请在 启动 → 版本选择 → 文件夹列表 中更改下载目标文件夹。&#xa;在某个文件夹或游戏版本上右键,即可选择打开对应文件夹。" Grid.Row="6" Grid.Column="1" VerticalAlignment="Center" />
-                        <local:MyCheckBox Margin="0,2,0,4" Text="安装整合包时保留原始压缩包" Grid.Row="7" Height="22" Grid.ColumnSpan="2"
+                        <TextBlock Margin="0,5" HorizontalAlignment="Left" Text="请在 启动 → 版本选择 → 文件夹列表 中更改下载目标文件夹。&#xa;在某个文件夹或游戏版本上右键,即可选择打开对应文件夹。" Grid.Row="6" Grid.Column="1" VerticalAlignment="Center" Opacity="0.5" />
+                        <local:MyCheckBox Margin="0,5,0,4" Text="安装整合包时保留原始压缩包" Grid.Row="7" Height="22" Grid.ColumnSpan="2"
                                           x:Name="CheckDownloadKeepModpack" Tag="ToolDownloadKeepModpack" 
                                           ToolTip="安装整合包时,在版本文件夹下保留用于安装的原始整合包压缩包文件" />
                         <local:MyCheckBox Margin="0,2,0,4" Text="简化 Mod 加载器需求(忽略 Quilt)" Grid.Row="8" Height="22" Grid.ColumnSpan="2"
@@ -60,9 +61,8 @@
             <local:MyCard Margin="0,0,0,15" Title="辅助功能">
                 <Grid Margin="25,40,25,17">
                     <Grid.ColumnDefinitions>
-                        <ColumnDefinition Width="Auto" SharedSizeGroup="Name" />
                         <ColumnDefinition Width="Auto" />
-                        <ColumnDefinition Width="50" />
+                        <ColumnDefinition Width="160" />
                         <ColumnDefinition Width="Auto" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
@@ -72,7 +72,7 @@
                     </Grid.RowDefinitions>
                     <TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" Text="游戏更新提示" Margin="0,0,25,0" />
                     <local:MyCheckBox Text="正式版更新提示" Grid.Column="1" x:Name="CheckUpdateRelease" Tag="ToolUpdateRelease" ToolTip="在 Minecraft 正式版更新时弹窗提示" />
-                    <local:MyCheckBox Text="测试版更新提示" Grid.Column="3" Height="22" x:Name="CheckUpdateSnapshot" Tag="ToolUpdateSnapshot" ToolTip="在 Minecraft 测试版(快照、预发布版)更新时弹窗提示" />
+                    <local:MyCheckBox Text="测试版更新提示" Grid.Column="2" Height="22" x:Name="CheckUpdateSnapshot" Tag="ToolUpdateSnapshot" ToolTip="在 Minecraft 测试版(快照、预发布版)更新时弹窗提示" />
                     <TextBlock VerticalAlignment="Center" Grid.Row="2" HorizontalAlignment="Left" Text="游戏语言" Margin="0,0,25,0" />
                     <local:MyCheckBox Text="默认设置为中文" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="5" x:Name="CheckHelpChinese" Tag="ToolHelpChinese" />
                 </Grid>

+ 2 - 4
Plain Craft Launcher 2/Pages/PageSpeedLeft.xaml.vb

@@ -90,7 +90,7 @@
                             Card.RowDefinitions.Clear()
                             Card.Children.Clear()
                             Card.Children.Add(GetObjectFromXML("<Path xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" Stretch=""Uniform"" Tag=""Failed"" Data=""F1 M2.5,0 L0,2.5 7.5,10 0,17.5 2.5,20 10,12.5 17.5,20 20,17.5 12.5,10 20,2.5 17.5,0 10,7.5 2.5,0Z"" Height=""15"" Width=""15"" HorizontalAlignment=""Center"" Grid.Column=""0"" Grid.Row=""0"" Fill=""{DynamicResource ColorBrush3}"" Margin=""0,1,0,0"" VerticalAlignment=""Top""/>"))
-                            Dim Tb As TextBlock = GetObjectFromXML("<TextBlock xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" TextWrapping=""Wrap"" HorizontalAlignment=""Left"" ToolTipService.ShowDuration=""2333333"" ToolTip=""单击复制错误详情"" Grid.Column=""1"" Grid.Row=""0"" Margin=""0,0,0,5"" />")
+                            Dim Tb As TextBlock = GetObjectFromXML("<TextBlock xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" TextWrapping=""Wrap"" HorizontalAlignment=""Left"" ToolTip=""单击复制错误详情"" Grid.Column=""1"" Grid.Row=""0"" Margin=""0,0,0,5"" />")
                             Tb.Text = GetExceptionDetail(Loader.Error)
                             AddHandler Tb.MouseLeftButtonDown, Sub(sender As TextBlock, e As EventArgs)
                                                                    ClipboardSet(sender.Text, False)
@@ -175,9 +175,7 @@
                         CardXAML += "<TextBlock Text=""" & EscapeXML(SubTask.Name) & """ HorizontalAlignment=""Left"" Grid.Column=""1"" Grid.Row=""" & Row & """/>"
                         Row += 1
                     Next
-                    CardXAML += "
-                            </Grid>
-                        </local:MyCard>"
+                    CardXAML += "</Grid></local:MyCard>"
                     '实例化控件
                     Dim Card As MyCard
                     Try

+ 2 - 2
Plain Craft Launcher 2/Pages/PageVersion/PageVersionLeft.xaml

@@ -9,7 +9,7 @@
                           LogoScale="1.02" Logo="M292.693 787.627c0 30.72-24.746 55.466-55.466 55.466s-55.467-24.746-55.467-55.466 24.747-55.467 55.467-55.467c30.72-0.853 55.466 24.747 55.466 55.467z M1000.96 241.493c-2.56-5.973-4.267-11.946-6.827-17.92-0.853-6.826-4.266-12.8-8.533-17.92-7.68-9.386-18.773-15.36-31.573-15.36-6.827 0-13.654 1.707-19.627 5.12l-15.36 15.36-17.067 17.067-21.333 21.333L749.227 381.44c-14.507 14.507-38.4 14.507-52.907 0l-54.613-54.613c-14.507-14.507-14.507-38.4 0-52.907l132.266-132.267 14.507-14.506 20.48-20.48 16.213-16.214c3.414-5.973 5.12-11.946 5.12-19.626 0-12.8-5.973-24.747-16.213-32.427-5.973-4.267-11.947-6.827-18.773-7.68-5.12-2.56-10.24-4.267-16.214-5.973-36.693-12.8-76.8-19.627-117.76-19.627-7.68 0-14.506 0-22.186 0.853-188.587 11.947-337.92 168.107-337.92 360.96 0 16.214 0.853 32.427 3.413 48.64L56.32 663.04c-73.387 74.24-73.387 193.707 0 267.093l33.28 33.28c73.387 73.387 193.707 73.387 267.093 0l240.64-241.493c21.334 4.267 42.667 5.973 64 5.973 190.294 0 346.454-146.773 360.107-333.653 0.853-8.533 0.853-17.92 0.853-27.307 0.854-44.373-6.826-86.186-21.333-125.44zM658.773 639.147c-28.16 0-54.613-4.267-79.36-11.094-4.266 7.68-10.24 14.507-16.213 21.334l-258.56 258.56c-43.52 43.52-115.2 43.52-158.72 0l-29.013-29.014c-43.52-44.373-43.52-115.2 0-158.72l212.48-212.48 46.08-46.08c5.973-5.973 12.8-11.093 19.626-15.36-8.533-26.453-12.8-54.613-12.8-83.626v-1.707c0-152.747 123.734-275.627 276.48-275.627 18.774 0 37.547 1.707 55.467 5.974L597.333 207.36c-52.053 52.053-52.053 137.387 0 189.44l29.867 29.867c52.053 52.053 137.387 52.053 189.44 0L930.987 312.32c2.56 16.213 4.266 33.28 4.266 50.347 0 152.746-123.733 276.48-276.48 276.48z">
             <local:MyListItem.Buttons>
                 <x:Array Type="{x:Type local:MyIconButton}">
-                    <local:MyIconButton Tag="1" ToolTip="初始化" ToolTipService.Placement="Right" ToolTipService.InitialShowDelay="200" Click="Reset" Logo="M835.072 184.32l-77.824 81.92c-64.512-66.56-153.6-106.496-251.904-106.496-195.584 0-355.328 159.744-355.328 354.304 0 195.584 159.744 354.304 355.328 354.304 147.456 0 304.128-80.896 337.92-245.76 3.072-15.36-9.216-23.552-21.504-23.552l-72.704 0c-15.36 0-28.672 14.336-29.696 24.576 0 2.048 0 3.072-1.024 3.072-32.768 96.256-107.52 119.808-212.992 119.808-128 0-232.448-104.448-232.448-232.448s104.448-231.424 232.448-231.424c64.512 0 121.856 26.624 165.888 69.632l-101.376 100.352c-1.024 0-1.024 1.024-2.048 1.024-20.48 22.528-12.288 37.888 11.264 37.888l256 0c22.528 0 36.864-15.36 36.864-37.888L871.936 193.536C870.912 174.08 857.6 166.912 835.072 184.32z" LogoScale="0.9" />
+                    <local:MyIconButton Tag="1" ToolTip="初始化" ToolTipService.Placement="Right" ToolTipService.InitialShowDelay="200" ToolTipService.VerticalOffset="-1" Click="Reset" Logo="M835.072 184.32l-77.824 81.92c-64.512-66.56-153.6-106.496-251.904-106.496-195.584 0-355.328 159.744-355.328 354.304 0 195.584 159.744 354.304 355.328 354.304 147.456 0 304.128-80.896 337.92-245.76 3.072-15.36-9.216-23.552-21.504-23.552l-72.704 0c-15.36 0-28.672 14.336-29.696 24.576 0 2.048 0 3.072-1.024 3.072-32.768 96.256-107.52 119.808-212.992 119.808-128 0-232.448-104.448-232.448-232.448s104.448-231.424 232.448-231.424c64.512 0 121.856 26.624 165.888 69.632l-101.376 100.352c-1.024 0-1.024 1.024-2.048 1.024-20.48 22.528-12.288 37.888 11.264 37.888l256 0c22.528 0 36.864-15.36 36.864-37.888L871.936 193.536C870.912 174.08 857.6 166.912 835.072 184.32z" LogoScale="0.9" />
                 </x:Array>
             </local:MyListItem.Buttons>
         </local:MyListItem>
@@ -17,7 +17,7 @@
                           Logo="M789.504 912.896h-195.072a35.328 35.328 0 0 1-34.816-35.328v-77.312a39.936 39.936 0 0 0-40.448-39.936H481.28a40.448 40.448 0 0 0-40.448 39.936v77.312a34.816 34.816 0 0 1-34.816 35.328H204.8a41.984 41.984 0 0 1-40.448-42.496v-200.192a35.328 35.328 0 0 1 35.328-35.328h72.704a39.936 39.936 0 0 0 39.936-39.936v-37.888a39.936 39.936 0 0 0-39.936-40.448H199.68a35.328 35.328 0 0 1-35.328-35.328V287.744A41.984 41.984 0 0 1 204.8 245.76h176.64v-32.768a102.4 102.4 0 0 1 102.4-102.4h33.792a102.4 102.4 0 0 1 102.4 102.4v32.768h170.496a41.984 41.984 0 0 1 41.984 41.984V460.8h28.672a102.4 102.4 0 0 1 102.4 102.4v33.792a102.4 102.4 0 0 1-102.4 102.4h-28.672V870.4a41.984 41.984 0 0 1-43.008 42.496z m-159.744-70.144h131.584V665.6a34.304 34.304 0 0 1 34.816-34.816h64a31.744 31.744 0 0 0 31.744-31.744V563.2a31.744 31.744 0 0 0-31.744-31.744h-64a34.816 34.816 0 0 1-34.816-35.328V316.416h-177.152a35.328 35.328 0 0 1-35.328-35.328V212.992a31.744 31.744 0 0 0-31.744-31.744h-33.792a31.744 31.744 0 0 0-31.744 31.744v68.096a35.328 35.328 0 0 1-34.816 35.328H234.496v130.048h37.888a110.592 110.592 0 0 1 110.08 110.592v37.888a110.592 110.592 0 0 1-110.08 110.592h-37.888v137.216h136.192v-42.496a110.592 110.592 0 0 1 110.592-110.08h37.888a110.592 110.592 0 0 1 110.592 110.08z" >
             <local:MyListItem.Buttons>
                 <x:Array Type="{x:Type local:MyIconButton}">
-                    <local:MyIconButton Tag="2" ToolTip="刷新" ToolTipService.Placement="Right" ToolTipService.InitialShowDelay="200" Click="Refresh" LogoScale="0.85" Logo="M875.52 148.48C783.36 56.32 655.36 0 512 0 291.84 0 107.52 138.24 30.72 332.8l122.88 46.08C204.8 230.4 348.16 128 512 128c107.52 0 199.68 40.96 271.36 112.64L640 384h384V0L875.52 148.48zM512 896c-107.52 0-199.68-40.96-271.36-112.64L384 640H0v384l148.48-148.48C240.64 967.68 368.64 1024 512 1024c220.16 0 404.48-138.24 481.28-332.8L870.4 645.12C819.2 793.6 675.84 896 512 896z" />
+                    <local:MyIconButton Tag="2" ToolTip="刷新" ToolTipService.Placement="Right" ToolTipService.InitialShowDelay="200" ToolTipService.VerticalOffset="-1" Click="Refresh" LogoScale="0.85" Logo="M875.52 148.48C783.36 56.32 655.36 0 512 0 291.84 0 107.52 138.24 30.72 332.8l122.88 46.08C204.8 230.4 348.16 128 512 128c107.52 0 199.68 40.96 271.36 112.64L640 384h384V0L875.52 148.48zM512 896c-107.52 0-199.68-40.96-271.36-112.64L384 640H0v384l148.48-148.48C240.64 967.68 368.64 1024 512 1024c220.16 0 404.48-138.24 481.28-332.8L870.4 645.12C819.2 793.6 675.84 896 512 896z" />
                 </x:Array>
             </local:MyListItem.Buttons>
         </local:MyListItem>

+ 2 - 1
Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml

@@ -41,7 +41,8 @@
                         <TextBlock VerticalAlignment="Center" Grid.Row="2" HorizontalAlignment="Left" Text="分类" Margin="0,0,25,0" />
                         <local:MyComboBox Grid.Column="1" Grid.Row="2" x:Name="ComboDisplayType">
                             <local:MyComboBoxItem Content="自动" IsSelected="True" />
-                            <local:MyComboBoxItem Content="从版本列表中隐藏" ToolTip="该版本默认将不会在版本列表中显示。&#xa;在版本列表页面按下 F11,即可查看所有隐藏的版本。" />
+                            <local:MyComboBoxItem Content="从版本列表中隐藏" 
+                                                  ToolTip="该版本默认将不会在版本列表中显示。&#xa;在版本列表页面按下 F11,即可查看所有隐藏的版本。" ToolTipService.HorizontalOffset="-350" />
                             <local:MyComboBoxItem Content="可安装 Mod 的版本" />
                             <local:MyComboBoxItem Content="常规版本" />
                             <local:MyComboBoxItem Content="不常用版本" />

+ 11 - 6
Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml

@@ -43,8 +43,10 @@
                         <TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="版本隔离" Margin="0,0,25,0" />
                         <local:MyComboBox x:Name="ComboArgumentIndie" Grid.Row="4" Grid.ColumnSpan="2" Tag="VersionArgumentIndie" Grid.Column="1">
                             <local:MyComboBoxItem Content="使用全局设置" IsSelected="True" />
-                            <local:MyComboBoxItem Content="开启" ToolTip="让这个版本与其他版本的存档、Mod 等档案相互独立,互不干涉" />
-                            <local:MyComboBoxItem Content="关闭" ToolTip="与其余未开启隔离的版本均使用同一档案,存档、Mod 等均为公用。&#xa;若存在不同版本的 Forge 或 Fabric,可能会由于 Mod 与版本冲突导致未知问题。" />
+                            <local:MyComboBoxItem Content="开启" 
+                                                  ToolTip="让这个版本与其他版本的存档、Mod 等档案相互独立,互不干涉" ToolTipService.HorizontalOffset="-350"/>
+                            <local:MyComboBoxItem Content="关闭" 
+                                                  ToolTip="与其余未开启隔离的版本均使用同一档案,存档、Mod 等均为公用。&#xa;若存在不同版本的 Forge 或 Fabric,可能会由于 Mod 与版本冲突导致未知问题。" ToolTipService.HorizontalOffset="-350"/>
                         </local:MyComboBox>
                         <TextBlock VerticalAlignment="Center" Grid.Row="6" HorizontalAlignment="Left" Text="游戏 Java" Margin="0,0,25,0" />
                         <local:MyComboBox x:Name="ComboArgumentJava" Grid.ColumnSpan="2" Grid.Row="6" Grid.Column="1" MaxDropDownHeight="240"
@@ -70,7 +72,8 @@
                             <RowDefinition Height="Auto" />
                         </Grid.RowDefinitions>
                         <local:MyRadioBox Text="使用全局设置" Width="110" Checked="True" x:Name="RadioRamType2" Tag="VersionRamType/2" Margin="0,0,20,9" />
-                        <local:MyRadioBox Grid.Row="1" Text="自动配置" Width="110" x:Name="RadioRamType0" Tag="VersionRamType/0" Margin="0,0,20,0" ToolTip="根据安装的 Mod 量与电脑剩余内存动态调整为游戏分配的内存。" />
+                        <local:MyRadioBox Grid.Row="1" Text="自动配置" Width="110" x:Name="RadioRamType0" Tag="VersionRamType/0" Margin="0,0,20,0"
+                                          ToolTip="根据安装的 Mod 量与电脑剩余内存动态调整为游戏分配的内存" ToolTipService.Placement="Right" ToolTipService.HorizontalOffset="-10" ToolTipService.VerticalOffset="-3" />
                         <local:MyRadioBox Grid.Row="3" Text="自定义" x:Name="RadioRamType1" Tag="VersionRamType/1" Margin="0,0,20,0" />
                         <local:MySlider Grid.Row="3" Grid.Column="1" IsEnabled="False" x:Name="SliderRamCustom" Tag="VersionRamCustom" MaxValue="49" Value="13" />
                         <!--<local:MyTextBox Grid.Row="2" Grid.Column="3" Width="100" VerticalAlignment="Center" Margin="30,0,0,0" Text="2048 MB" />-->
@@ -199,12 +202,14 @@
                     <TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="文件校验" Margin="0,0,25,0" />
                     <local:MyComboBox x:Name="ComboAdvanceAssets" Grid.Row="4" Grid.ColumnSpan="2" Tag="VersionAdvanceAssets" Grid.Column="1">
                         <local:MyComboBoxItem Content="使用全局设置" IsSelected="True" />
-                        <local:MyComboBoxItem Content="开启" ToolTip="在启动 Minecraft 时,简单校验并下载缺失或错误的文件。" />
-                        <local:MyComboBoxItem Content="关闭" ToolTip="在启动 Minecraft 时,不校验 libraries 文件夹、第三方登录库与版本主 jar 文件,不更改 assets 文件夹。&#xa;如果你没有修改相关文件,请勿选择此项。" />
+                        <local:MyComboBoxItem Content="开启" 
+                                              ToolTip="在启动 Minecraft 时,简单校验并下载缺失或错误的文件" ToolTipService.HorizontalOffset="-300" />
+                        <local:MyComboBoxItem Content="关闭" 
+                                              ToolTip="完全不更改 assets;不校验 libraries、第三方登录库与版本主 jar 文件是否被修改。&#xa;如果你没有修改相关文件,请勿勾选此项。" ToolTipService.HorizontalOffset="-300" />
                     </local:MyComboBox>
                     <TextBlock Grid.Row="6" VerticalAlignment="Center" HorizontalAlignment="Left" Text="启动前执行命令" Margin="0,0,25,3" />
                     <local:MyTextBox x:Name="TextAdvanceRun" Grid.Row="6" Grid.ColumnSpan="2" Tag="VersionAdvanceRun" Grid.Column="1" HintText="" Margin="0,0,0,3"
-                                     ToolTip="该项不会覆盖全局设置:启动时会先执行全局设置的命令,再执行版本设置的命令。&#xa;在 MC 启动前执行特定命令或程序,语法与 Windows 的命令提示符一致。&#xa;&#xa;可以使用以下替换标记实现相对路径(路径均以 \ 结尾):&#xa; · {path}:PCL 的 exe 文件所在的文件夹&#xa; · {minecraft}:.minecraft 文件夹&#xa; · {verpath}:版本文件夹(.minecraft\versions\版本名\)&#xa; · {verindie}:开启版本隔离时等同版本文件夹,未开启时等同 .minecraft 文件夹&#xa; · {java}:游戏运行时的 Java 文件夹&#xa;&#xa;除此之外,也支持以下替换标记:&#xa; · {user}:玩家名字&#xa; · {login}:玩家的登录方式&#xa; · {uuid}:玩家的 UUID&#xa; · {name}:游戏版本名&#xa; · {time}:当前的系统时间&#xa; · {version}:游戏对应的原版版本号&#xa;&#xa;例如:&#xa; · &quot;{verpath}test.exe&quot; :运行版本文件夹下的 test.exe 程序&#xa; · &quot;{java}java.exe&quot; -jar &quot;{verpath}test.jar&quot; :用 Java 运行版本文件夹下的 test.jar&#xa; · notepad &quot;{verindie}option.txt&quot; :使用记事本打开该版本的设置文件&#xa;&#xa;涉及路径的操作最好都打上双引号,以避免路径中的空格导致运行失败。" />
+                                     ToolTip="该项不会覆盖全局设置:启动时会先执行全局设置的命令,再执行版本设置的命令。&#xa;&#xa;在 MC 启动前执行特定命令或程序,语法与 Windows 的命令提示符一致。&#xa;&#xa;可以使用以下替换标记实现相对路径(路径均以 \ 结尾):&#xa; · {path}:PCL 的 exe 文件所在的文件夹&#xa; · {minecraft}:.minecraft 文件夹&#xa; · {verpath}:版本文件夹(.minecraft\versions\版本名\)&#xa; · {verindie}:开启版本隔离时等同版本文件夹,未开启时等同 .minecraft 文件夹&#xa; · {java}:游戏运行时的 Java 文件夹&#xa;&#xa;除此之外,也支持以下替换标记:&#xa; · {user}:玩家名字&#xa; · {login}:玩家的登录方式&#xa; · {uuid}:玩家的 UUID&#xa; · {name}:游戏版本名&#xa; · {time}:当前的系统时间&#xa; · {version}:游戏对应的原版版本号&#xa;&#xa;例如:&#xa; · &quot;{verpath}test.exe&quot; :运行版本文件夹下的 test.exe 程序&#xa; · &quot;{java}java.exe&quot; -jar &quot;{verpath}test.jar&quot; :用 Java 运行版本文件夹下的 test.jar&#xa; · notepad &quot;{verindie}option.txt&quot; :使用记事本打开该版本的设置文件&#xa;&#xa;涉及路径的操作最好都打上双引号,以避免路径中的空格导致运行失败。" />
                     <local:MyCheckBox Grid.Row="7" Grid.Column="1" x:Name="CheckAdvanceRunWait" Tag="VersionAdvanceRunWait" Visibility="Collapsed"
                                       Text="等待命令执行完成后再继续启动" Margin="0,5,0,0" />
                 </Grid>

+ 4 - 5
Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml.vb

@@ -268,10 +268,10 @@
     ''' <summary>
     ''' 获取当前设置的 RAM 值。单位为 GB。
     ''' </summary>
-    Public Shared Function GetRam(Version As McVersion) As Double
+    Public Shared Function GetRam(Version As McVersion, Optional Is32BitJava As Boolean? = Nothing) As Double
         '使用全局设置
         If Setup.Get("VersionRamType", Version:=Version) = 2 Then
-            Return PageSetupLaunch.GetRam(Version, True)
+            Return PageSetupLaunch.GetRam(Version, True, Is32BitJava)
         End If
         '使用当前版本的设置
         Dim RamGive As Double
@@ -349,7 +349,7 @@ PreFin:
             End If
         End If
         '若使用 32 位 Java,则限制为 1G
-        If Not JavaIs64Bit(PageVersionLeft.Version) Then RamGive = Math.Min(1, RamGive)
+        If If(Is32BitJava, Not JavaIs64Bit(PageVersionLeft.Version)) Then RamGive = Math.Min(1, RamGive)
         Return RamGive
     End Function
 
@@ -420,8 +420,7 @@ PreFin:
         Try
             For Each Java In Sort(JavaList.Clone(), Function(l, r) l.VersionCode < r.VersionCode)
                 Dim ListItem = New MyComboBoxItem With {.Content = Java.ToString, .ToolTip = Java.PathFolder, .Tag = Java}
-                ToolTipService.SetPlacement(ListItem, Primitives.PlacementMode.Right)
-                ToolTipService.SetHorizontalOffset(ListItem, 5)
+                ToolTipService.SetHorizontalOffset(ListItem, 0)
                 ComboArgumentJava.Items.Add(ListItem)
                 '判断人为选中
                 If SelectedBySetup = "" OrElse SelectedBySetup = "使用全局设置" Then Continue For

+ 1 - 1
Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj

@@ -67,7 +67,7 @@
     <OptionExplicit>On</OptionExplicit>
   </PropertyGroup>
   <PropertyGroup>
-    <OptionCompare>Text</OptionCompare>
+    <OptionCompare>Binary</OptionCompare>
   </PropertyGroup>
   <PropertyGroup>
     <OptionStrict>Off</OptionStrict>

+ 2 - 2
Plain Craft Launcher 2/Resources/Custom.xaml

@@ -109,7 +109,7 @@
         <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
                     Text="· 打开网页、启动游戏、打开文件:已在上方的卡片中介绍" />
         <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
-                    Text="· 今日人品、清理垃圾:触发百宝箱中的对应功能" />
+                    Text="· 今日人品、清理垃圾、内存优化:触发百宝箱中的对应功能" />
         <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
                     Text="· 复制文本:将 EventData 中的内容复制到剪贴板" />
         <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
@@ -143,7 +143,7 @@
             <local:MyButton Margin="0,0,10,0" Width="140" Height="35" HorizontalAlignment="Left" Padding="13,0,13,0" ColorType="Red"
                         Text="复制召唤命令" EventType="复制文本" EventData="/execute as @a at @s run summon Creeper ~ ~2 ~" ToolTip="这条 Minecraft 命令会在每个玩家头顶召唤一只苦力怕!" />
             <local:MyButton Margin="0,0,10,0" Width="140" Height="35" HorizontalAlignment="Left" Padding="13,0,13,0"
-                        Text="今日人品" EventType="今日人品" />
+                        Text="内存优化" EventType="内存优化" />
             <local:MyButton Margin="0,0,10,0" Width="140" Height="35" HorizontalAlignment="Left" Padding="13,0,13,0"
                         Text="下载作者的头像" EventType="下载文件" EventData="https://www.mcbbs.net/uc_server/data/avatar/000/14/51/06_avatar_small.jpg?ts=1471402592" />
         </StackPanel>

BIN
Plain Craft Launcher 2/Resources/Help.zip


Fichier diff supprimé car celui-ci est trop grand
+ 123 - 123
Plain Craft Launcher 2/Resources/ModData.txt


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff