龙腾猫跃 7 месяцев назад
Родитель
Сommit
be67c4ccc2
27 измененных файлов с 1187 добавлено и 1309 удалено
  1. 2 1
      Plain Craft Launcher 2/FormMain.xaml
  2. 22 4
      Plain Craft Launcher 2/FormMain.xaml.vb
  3. 71 56
      Plain Craft Launcher 2/Modules/Base/ModBase.vb
  4. 96 152
      Plain Craft Launcher 2/Modules/Base/ModNet.vb
  5. 89 53
      Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb
  6. 3 3
      Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb
  7. 1 0
      Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb
  8. 68 34
      Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb
  9. 1 1
      Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb
  10. 8 5
      Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb
  11. 3 5
      Plain Craft Launcher 2/Modules/ModMusic.vb
  12. 2 2
      Plain Craft Launcher 2/My Project/AssemblyInfo.vb
  13. 32 2
      Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.vb
  14. 2 2
      Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb
  15. 1 1
      Plain Craft Launcher 2/Pages/PageInstance/PageInstanceExport.xaml
  16. 1 3
      Plain Craft Launcher 2/Pages/PageInstance/PageInstanceExport.xaml.vb
  17. 10 10
      Plain Craft Launcher 2/Pages/PageInstance/PageInstanceMod.xaml.vb
  18. 19 5
      Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml
  19. 3 2
      Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml.vb
  20. 1 1
      Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml.vb
  21. 559 780
      Plain Craft Launcher 2/Pages/PageOther/PageOtherAbout.xaml
  22. 5 5
      Plain Craft Launcher 2/Pages/PageOther/PageOtherHelp.xaml.vb
  23. 39 52
      Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb
  24. 16 3
      Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml
  25. 3 1
      Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb
  26. 8 4
      Plain Craft Launcher 2/Pages/PageSetup/PageSetupUI.xaml
  27. 122 122
      Plain Craft Launcher 2/Resources/ModData.txt

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

@@ -95,7 +95,8 @@
                     <RowDefinition Height="Auto" />
                     <RowDefinition />
                 </Grid.RowDefinitions>
-                <Canvas x:Name="ImgBack" IsHitTestVisible="False" Grid.Row="1" RenderOptions.BitmapScalingMode="LowQuality" />
+                <Canvas x:Name="ImgBack" IsHitTestVisible="False" Grid.Row="1" RenderOptions.BitmapScalingMode="LowQuality"
+                        HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
                 <Grid x:Name="PanTitle" Height="48">
                     <Grid.Background>
                         <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">

+ 22 - 4
Plain Craft Launcher 2/FormMain.xaml.vb

@@ -11,6 +11,11 @@ Public Class FormMain
         Dim FeatureList As New List(Of KeyValuePair(Of Integer, String))
         '统计更新日志条目
 #If BETA Then
+        If LastVersion < 381 Then 'Release 2.12.2
+            FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法搜索 CurseForge 上的社区资源"))
+            FeatureCount += 3
+            BugCount += 13
+        End If
         If LastVersion < 379 Then 'Release 2.12.1
             If LastVersion >= 376 Then
                 FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "删除:暂时隐藏联机入口……不过只是暂时关闭,它还会回来的!"))
@@ -128,8 +133,15 @@ Public Class FormMain
         '3:BUG+ IMP* FEAT-
         '2:BUG* IMP-
         '1:BUG-
+        If LastVersion < 382 Then 'Snapshot 2.12.3
+            FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:部分关键词搜不到资源,特别是中文 Mod 搜索经常没有结果"))
+            FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:下载可能完全卡住,或是下载进度反复回退"))
+            FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "新增:内存管理设置,可以选择 G1GC、ZGC 或分代 ZGC"))
+            FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "优化:来自 Modrinth 的文件下载速度"))
+            FeatureCount += 15
+            BugCount += 16
+        End If
         If LastVersion < 380 Then 'Snapshot 2.12.2
-            FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法搜索 CurseForge 上的社区资源"))
             FeatureCount += 3
             BugCount += 13
         End If
@@ -606,6 +618,12 @@ Public Class FormMain
             Setup.Set("ToolDownloadTranslateV2", Setup.Get("ToolDownloadTranslate") + 1)
             Log("[Start] 已从老版本迁移 Mod 命名设置")
         End If
+        '重置 JVM 参数设置
+        If LastVersionCode <= 381 AndAlso Not Setup.IsUnset("LaunchAdvanceJvm") AndAlso
+           Setup.Get("LaunchAdvanceJvm").ToString.Replace("-XX:+UseG1GC ", "").Replace("-XX:-UseAdaptiveSizePolicy ", "").Trim = Setup.GetDefault("LaunchAdvanceJvm") Then
+            Setup.Reset("LaunchAdvanceJvm")
+            Log("[Start] 已重置 JVM 参数设置")
+        End If
         '输出更新日志
         If LastVersionCode <= 0 Then Return
         If LowerVersionCode >= VersionCode Then Return
@@ -819,12 +837,12 @@ Public Class FormMain
             Log(ex, "切回窗口时出错", LogLevel.Feedback)
         End Try
         '读取剪贴板,自动加入联机房间
+        Return 'UNDONE: 联机复活赛
         If PageLinkMain.LinkState <> PageLinkMain.LinkStates.Waiting Then Return '已启动联机
         If PageCurrent = PageType.Link Then Return '已在联机界面
         Dim Code = ClipboardGetText() : If Code Is Nothing Then Return '剪贴板无文本
-        If Setup.Get("LinkLastAutoJoinInviteCode") = Code Then Return                                                                                                                                                                                                                                                                                                                                                                                                                  
-        ' If PageLinkMain.ValidateCodeFormat(Code) IsNot Nothing Then Return '不是邀请码
-        Return     '联机关闭 直接return                                                                                                                                                                                                                                                                                                                                                                                                                        
+        If Setup.Get("LinkLastAutoJoinInviteCode") = Code Then Return
+        If PageLinkMain.ValidateCodeFormat(Code) IsNot Nothing Then Return '不是邀请码
         Setup.Set("LinkLastAutoJoinInviteCode", Code)
         RunInThread(
         Sub()

+ 71 - 56
Plain Craft Launcher 2/Modules/Base/ModBase.vb

@@ -14,13 +14,13 @@ Public Module ModBase
 #Region "声明"
 
     '下列版本信息由更新器自动修改
-    Public Const VersionBaseName As String = "2.12.2" '不含分支前缀的显示用版本名
-    Public Const VersionStandardCode As String = "2.12.2." & VersionBranchCode '标准格式的四段式版本号
+    Public Const VersionBaseName As String = "2.12.3" '不含分支前缀的显示用版本名
+    Public Const VersionStandardCode As String = "2.12.3." & VersionBranchCode '标准格式的四段式版本号
     Public Const CommitHash As String = "" 'Commit Hash,由 GitHub Workflow 自动替换
 #If BETA Then
-    Public Const VersionCode As Integer = 379 'Release
+    Public Const VersionCode As Integer = 381 'Release
 #Else
-    Public Const VersionCode As Integer = 380 'Snapshot
+    Public Const VersionCode As Integer = 382 'Snapshot
 #End If
     '自动生成的版本信息
     Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName
@@ -1071,10 +1071,9 @@ Public Module ModBase
     ''' 获取文件 MD5,若失败则返回空字符串。
     ''' </summary>
     Public Function GetFileMD5(FilePath As String) As String
-        Dim Retry As Boolean = False
+        Dim Retried As Boolean = False
 Re:
         Try
-            '获取 MD5
             Using File As New FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
                 Using h = MD5Cng.Create()
                     Dim Retval As Byte() = h.ComputeHash(File)
@@ -1082,16 +1081,15 @@ Re:
                     For i = 0 To Retval.Length - 1
                         Result.Append(Retval(i).ToString("x2"))
                     Next
-
                     Return Result.ToString
                 End Using
             End Using
         Catch ex As Exception
-            If Retry OrElse TypeOf ex Is FileNotFoundException Then
+            If Retried OrElse TypeOf ex Is FileNotFoundException Then
                 Log(ex, "获取文件 MD5 失败:" & FilePath)
                 Return ""
             Else
-                Retry = True
+                Retried = True
                 Log(ex, "获取文件 MD5 可重试失败:" & FilePath, LogLevel.Normal)
                 Thread.Sleep(RandomInteger(200, 500))
                 GoTo Re
@@ -1102,29 +1100,25 @@ Re:
     ''' 获取文件 SHA512,若失败则返回空字符串。
     ''' </summary>
     Public Function GetFileSHA512(FilePath As String) As String
-        Dim Retry As Boolean = False
+        Dim Retried As Boolean = False
 Re:
         Try
-            ''检测该文件是否在下载中,若在下载则放弃检测
-            'If IgnoreOnDownloading AndAlso NetManage.Files.ContainsKey(FilePath) AndAlso NetManage.Files(FilePath).State <= NetState.Merge Then Return ""
-            '获取 SHA512
-            Using file As New FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
+            Using File As New FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
                 Using h = SHA512Cng.Create()
-                    Dim retval As Byte() = h.ComputeHash(file)
+                    Dim retval As Byte() = h.ComputeHash(File)
                     Dim Result As New StringBuilder(retval.Length * 2)
                     For i As Integer = 0 To retval.Length - 1
                         Result.Append(retval(i).ToString("x2"))
                     Next
-
                     Return Result.ToString
                 End Using
             End Using
         Catch ex As Exception
-            If Retry OrElse TypeOf ex Is FileNotFoundException Then
+            If Retried OrElse TypeOf ex Is FileNotFoundException Then
                 Log(ex, "获取文件 SHA512 失败:" & FilePath)
                 Return ""
             Else
-                Retry = True
+                Retried = True
                 Log(ex, "获取文件 SHA512 可重试失败:" & FilePath, LogLevel.Normal)
                 Thread.Sleep(RandomInteger(200, 500))
                 GoTo Re
@@ -1138,17 +1132,13 @@ Re:
         Dim Retry As Boolean = False
 Re:
         Try
-            ''检测该文件是否在下载中,若在下载则放弃检测
-            'If IgnoreOnDownloading AndAlso NetManage.Files.ContainsKey(FilePath) AndAlso NetManage.Files(FilePath).State <= NetState.Merge Then Return ""
-            '获取 SHA256
-            Using file As New FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
+            Using File As New FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
                 Using h = SHA256Cng.Create()
-                    Dim retval As Byte() = h.ComputeHash(file)
+                    Dim retval As Byte() = h.ComputeHash(File)
                     Dim Result As New StringBuilder(retval.Length * 2)
                     For i As Integer = 0 To retval.Length - 1
                         Result.Append(retval(i).ToString("x2"))
                     Next
-
                     Return Result.ToString()
                 End Using
             End Using
@@ -1171,15 +1161,13 @@ Re:
         Dim Retry As Boolean = False
 Re:
         Try
-            '获取 SHA1
-            Using file As New FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
+            Using File As New FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
                 Using h = SHA1Cng.Create()
-                    Dim retval As Byte() = h.ComputeHash(file)
+                    Dim retval As Byte() = h.ComputeHash(File)
                     Dim Result As New StringBuilder(retval.Length * 2)
                     For i As Integer = 0 To retval.Length - 1
                         Result.Append(retval(i).ToString("x2"))
                     Next
-
                     Return Result.ToString
                 End Using
             End Using
@@ -1327,7 +1315,7 @@ Re:
             End Using
         End Sub
         Try
-            TryExtractZip(Encoding.UTF8)
+            TryExtractZip(New UTF8Encoding(False, True))
         Catch ex As Exception
             Log(ex, $"首次解压尝试失败,将更换编码并重试({CompressFilePath} → {DestDirectory})")
             Try
@@ -1896,50 +1884,53 @@ RetryDir:
     ''' <param name="Source">被搜索的长内容。</param>
     ''' <param name="Query">用户输入的搜索文本。</param>
     Private Function SearchSimilarity(Source As String, Query As String) As Double
+        If String.IsNullOrEmpty(Source) OrElse String.IsNullOrEmpty(Query) Then Return 0
         Dim qp As Integer = 0, lenSum As Double = 0
-        Source = Source.ToLower.Replace(" ", "")
-        Query = Query.ToLower.Replace(" ", "")
-        Dim sourceLength As Integer = Source.Length, queryLength As Integer = Query.Length '用于计算最后因数的长度缓存
+        Dim str As New StringBuilder(Source.Length)
+        str.Append(Source.ToLower().Replace(" ", ""))
+        Query = Query.ToLower().Replace(" ", "")
+        Dim sourceLength As Integer = str.Length, queryLength As Integer = Query.Length '用于计算最后因数的长度缓存
+        If queryLength = 0 Then Return 0
         Do While qp < queryLength
             '对 qp 作为开始位置计算
             Dim sp As Integer = 0, lenMax As Integer = 0, spMax As Integer = 0
-            '查找以 qp 为头的最大子串
-            Do While sp < Source.Length
-                '对每个 sp 作为开始位置计算最大子串
+            Dim currentSourceLength As Integer = str.Length
+            Do While sp < currentSourceLength
                 Dim len As Integer = 0
-                Do While (qp + len) < queryLength AndAlso (sp + len) < Source.Length AndAlso Source(sp + len) = Query(qp + len)
+                While (qp + len) < queryLength AndAlso (sp + len) < currentSourceLength AndAlso str(sp + len) = Query(qp + len)
                     len += 1
-                Loop
+                End While
                 '存储 len
                 If len > lenMax Then
                     lenMax = len
                     spMax = sp
                 End If
                 '根据结果增加 sp
-                sp += Math.Max(1, len)
+                sp += If(len > 0, len, 1)
             Loop
             If lenMax > 0 Then
-                Source = Source.Substring(0, spMax) & If(Source.Count > spMax + lenMax, Source.Substring(spMax + lenMax), String.Empty) '将源中的对应字段替换空
+                str.Remove(spMax, lenMax) '将源中的对应字段移除
                 '存储 lenSum
                 Dim IncWeight = (Math.Pow(1.4, 3 + lenMax) - 3.6) '根据长度加成
                 IncWeight *= 1 + 0.3 * Math.Max(0, 3 - Math.Abs(qp - spMax)) '根据位置加成
                 lenSum += IncWeight
             End If
-            '根据结果增加 qp
-            qp += Math.Max(1, lenMax)
+            qp += If(lenMax > 0, lenMax, 1)
         Loop
         '计算结果:重复字段量 × 源长度影响比例
-        Return (lenSum / queryLength) * (3 / Math.Pow(sourceLength + 15, 0.5)) * If(queryLength <= 2, 3 - queryLength, 1)
+        Return (lenSum / queryLength) * (3 / Math.Sqrt(sourceLength + 15)) * If(queryLength <= 2, 3 - queryLength, 1)
     End Function
     ''' <summary>
     ''' 获取多段文本加权后的相似度。
     ''' </summary>
-    Private Function SearchSimilarityWeighted(Source As List(Of KeyValuePair(Of String, Double)), Query As String) As Double
+    Private Function SearchSimilarityWeighted(Source As List(Of SearchSource), Query As String) As Double
         Dim TotalWeight As Double = 0
         Dim Sum As Double = 0
         For Each Pair In Source
-            Sum += SearchSimilarity(Pair.Key, Query) * Pair.Value
-            TotalWeight += Pair.Value
+            If Pair.Aliases.Any Then
+                Sum += Pair.Aliases.Max(Function(a) SearchSimilarity(a, Query)) * Pair.Weight
+            End If
+            TotalWeight += Pair.Weight
         Next
         Return Sum / TotalWeight
     End Function
@@ -1952,9 +1943,10 @@ RetryDir:
         ''' </summary>
         Public Item As T
         ''' <summary>
-        ''' 该项目用于搜索的源。
+        ''' 该项目用于搜索的文本源。
+        ''' 在搜索时,会对每个文本源单独加权,但单个文本源内的多个别名只取最高的一个的相似度。
         ''' </summary>
-        Public SearchSource As List(Of KeyValuePair(Of String, Double))
+        Public SearchSource As List(Of SearchSource)
         ''' <summary>
         ''' 相似度。
         ''' </summary>
@@ -1963,9 +1955,28 @@ RetryDir:
         ''' 是否完全匹配。
         ''' </summary>
         Public AbsoluteRight As Boolean
+        Public Overrides Function ToString() As String
+            Return Math.Round(Similarity, 3) & " - " & Item.ToString()
+        End Function
+    End Class
+    ''' <summary>
+    ''' 单个用于搜索的文本源。
+    ''' </summary>
+    Public Class SearchSource
+        Public Aliases As String()
+        Public Weight As Double
+        Public Sub New(Aliases As String(), Optional Weight As Double = 1)
+            Me.Aliases = Aliases
+            Me.Weight = Weight
+        End Sub
+        Public Sub New(Text As String, Optional Weight As Double = 1)
+            Me.Aliases = {Text}
+            Me.Weight = Weight
+        End Sub
     End Class
     ''' <summary>
     ''' 进行多段文本加权搜索,获取相似度较高的数项结果。
+    ''' 在搜索时,会对每个文本源单独加权,但单个文本源内的多个别名只取最高的一个的相似度。
     ''' </summary>
     ''' <param name="MaxBlurCount">返回的最大模糊结果数。</param>
     ''' <param name="MinBlurSimilarity">返回结果要求的最低相似度。</param>
@@ -1974,15 +1985,19 @@ RetryDir:
         Dim ResultList As New List(Of SearchEntry(Of T))
         If Not Entries.Any() Then Return ResultList
         '进行搜索,获取相似信息
+        Dim QueryParts = Query.Split({" "c}, StringSplitOptions.RemoveEmptyEntries)
+        Dim Candidates As New List(Of SearchEntry(Of T))
         For Each Entry In Entries
             Entry.Similarity = SearchSimilarityWeighted(Entry.SearchSource, Query)
             Entry.AbsoluteRight =
-                Query.Split(" ").All( '对于按空格分割的每一段
+                QueryParts.All( '对于按空格分割的每一段
                 Function(QueryPart) Entry.SearchSource.Any( '若与任意一个搜索源完全匹配,则标记为完全匹配项
-                Function(Source) Source.Key.Replace(" ", "").ContainsF(QueryPart, True)))
+                Function(Source) Source.Aliases.Any(
+                Function([Alias]) [Alias].Replace(" ", "").ContainsF(QueryPart, True))))
+            If Entry.AbsoluteRight OrElse Entry.Similarity >= MinBlurSimilarity Then Candidates.Add(Entry)
         Next
         '按照相似度进行排序
-        Entries = Entries.SortByComparison(
+        Candidates = Candidates.SortByComparison(
         Function(Left, Right) As Boolean
             If Left.AbsoluteRight Xor Right.AbsoluteRight Then
                 Return Left.AbsoluteRight
@@ -1992,11 +2007,11 @@ RetryDir:
         End Function)
         '返回结果
         Dim BlurCount As Integer = 0
-        For Each Entry In Entries
+        For Each Entry In Candidates
             If Entry.AbsoluteRight Then
                 ResultList.Add(Entry) '完全匹配,直接加入
             Else
-                If Entry.Similarity < MinBlurSimilarity OrElse BlurCount = MaxBlurCount Then Exit For '模糊结果边界条件
+                If BlurCount = MaxBlurCount Then Exit For
                 ResultList.Add(Entry)
                 BlurCount += 1 '模糊结果计数
             End If
@@ -2175,7 +2190,7 @@ RetryDir:
     ''' </summary>
     <Extension> Public Function GetResultWithTimeout(Of T)(TargetTask As Task(Of T), TokenSource As CancellationTokenSource, TimeoutMs As Integer) As T
         Dim DelayTask = Task.Delay(TimeoutMs)
-        If Task.WhenAny(TargetTask, DelayTask).GetAwaiter().GetResult() Is DelayTask Then
+        If Task.WhenAny(TargetTask, DelayTask).ConfigureAwait(False).GetAwaiter().GetResult() Is DelayTask Then
             TokenSource.Cancel()
             Throw New TimeoutException($"任务超时({TimeoutMs} ms)")
         End If
@@ -2186,7 +2201,7 @@ RetryDir:
     ''' </summary>
     <Extension> Public Sub GetResultWithTimeout(TargetTask As Task, TokenSource As CancellationTokenSource, TimeoutMs As Integer)
         Dim DelayTask = Task.Delay(TimeoutMs)
-        If Task.WhenAny(TargetTask, DelayTask).GetAwaiter().GetResult() Is DelayTask Then
+        If Task.WhenAny(TargetTask, DelayTask).ConfigureAwait(False).GetAwaiter().GetResult() Is DelayTask Then
             TokenSource.Cancel()
             Throw New TimeoutException($"任务超时({TimeoutMs} ms)")
         End If
@@ -2537,7 +2552,7 @@ NextElement:
     ''' 选择最大值对应的对象。
     ''' 若没有元素则返回 Nothing。
     ''' </summary>
-    <Extension> Public Function MaxOf(Of T, C As IComparable(Of C))(Source As IEnumerable(Of T), Selector As Func(Of T, C)) As T
+    <Extension> Public Function MaxBy(Of T, C As IComparable(Of C))(Source As IEnumerable(Of T), Selector As Func(Of T, C)) As T
         Using Enumerator = Source.GetEnumerator()
             If Not Enumerator.MoveNext() Then Return Nothing
             Dim MaxItem As T = Enumerator.Current
@@ -2555,7 +2570,7 @@ NextElement:
     ''' 选择最小值对应的对象。
     ''' 若没有元素则返回 Nothing。
     ''' </summary>
-    <Extension> Public Function MinOf(Of T, C As IComparable(Of C))(List As IEnumerable(Of T), Selector As Func(Of T, C)) As T
+    <Extension> Public Function MinBy(Of T, C As IComparable(Of C))(List As IEnumerable(Of T), Selector As Func(Of T, C)) As T
         Using Enumerator = List.GetEnumerator()
             If Not Enumerator.MoveNext() Then Return Nothing
             Dim MinItem As T = Enumerator.Current

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

@@ -1,5 +1,4 @@
-Imports System.Net.Http.Headers
-Imports System.Net.Sockets
+Imports System.Net.Sockets
 Imports System.Runtime.CompilerServices
 Imports System.Threading.Tasks
 
@@ -248,7 +247,7 @@ RequestFinished:
             SecretHeadersSign(Url, Request, SimulateBrowserHeaders)
             'DNS 解析
             CancelToken = New CancellationTokenSource(Timeout)
-            HostIp = DNSLookup(Request, CancelToken)
+            HostIp = DNSLookup(Request, CancelToken.Token)
             If HostIp IsNot Nothing AndAlso Not IPReliability.ContainsKey(HostIp) Then
                 IPReliability(HostIp) = -0.01 '预先降低一点,这样快速的重复请求会使用不同的 IP 以提高成功率
             End If
@@ -263,11 +262,12 @@ RequestFinished:
                 End If
             End SyncLock
             Response = RequestClient.SendAsync(Request, HttpCompletionOption.ResponseHeadersRead, CancelToken.Token).GetResultWithTimeout(CancelToken, Timeout)
-            Dim ResponseStream = Response.Content.ReadAsStreamAsync().GetAwaiter().GetResult()
             Dim ResponseBytes As Byte()
-            Using Stream As New MemoryStream
-                ResponseStream.CopyToAsync(Stream, 81920, CancelToken.Token).GetResultWithTimeout(CancelToken, Timeout)
-                ResponseBytes = Stream.ToArray()
+            Using ResponseStream = Response.Content.ReadAsStreamAsync().GetResultWithTimeout(CancelToken, Timeout)
+                Using Stream As New MemoryStream
+                    ResponseStream.CopyToAsync(Stream, 81920, CancelToken.Token).GetResultWithTimeout(CancelToken, Timeout)
+                    ResponseBytes = Stream.ToArray()
+                End Using
             End Using
             '输出
             If Response.IsSuccessStatusCode Then
@@ -304,10 +304,9 @@ RequestFinished:
 
     ''' <summary>
     ''' 进行 DNS 解析。它仅在选择的 IP 与系统默认的不一致时才对 URL 中的 Host 进行替换。
-    ''' 返回请求时应使用的 IP;若为 IPv6,则加上了方括号。
-    ''' 若解析失败,则返回 Nothing。
+    ''' 返回请求时应使用的 IP。若解析失败,则返回 Nothing。
     ''' </summary>
-    Private Function DNSLookup(Request As HttpRequestMessage, CancelToken As CancellationTokenSource) As String
+    Private Function DNSLookup(Request As HttpRequestMessage, CancelToken As CancellationToken) As String
         '若一分钟内已失败过,则不再重复尝试解析,以减少断网时的 Exception 数量
         Dim Host = Request.RequestUri.Host
         SyncLock DNSFailureRecord.SyncRoot
@@ -320,43 +319,36 @@ RequestFinished:
             End If
         End SyncLock
         '初步 DNS 解析
-        Dim DnsTask As Task(Of IPAddress()) = Nothing
+        Dim Candidates As IPAddress()
         Try
-            DnsTask = Dns.GetHostAddressesAsync(Host)
-            DnsTask.Wait(CancelToken.Token)
+            Dim AsyncResult = Dns.BeginGetHostAddresses(Host, Nothing, Nothing)
+            If WaitHandle.WaitAny(New WaitHandle() {AsyncResult.AsyncWaitHandle, CancelToken.WaitHandle}) Then Throw New TimeoutException("DNS 解析超时")
+            Candidates = Dns.EndGetHostAddresses(AsyncResult).Distinct.ToArray
         Catch ex As Exception
             Log(ex, $"DNS 解析失败({Host})")
             DNSFailureRecord(Host) = Date.Now
             Return Nothing
         End Try
-        Dim Candidates As IPAddress() = DnsTask.Result.ToArray
         If Not Candidates.Any Then
             Log($"[Net] DNS 解析无结果({Host})")
             Return Nothing
         End If
         '若同时存在 IPv4 和 IPv6 地址,仅选择其中一类(因为 GFW 可能只屏蔽了 IPv4 或 IPv6)
-        Dim GetIPReliability = Function(Key) IPReliability.GetOrDefault(Key.ToString, 0)
+        Dim Reliabilities = Candidates.ToDictionary(Function(i) i, Function(i) IPReliability.GetOrDefault(i.ToString, 0))
         Dim IPv4Targets = Candidates.Where(Function(i) i.AddressFamily = AddressFamily.InterNetwork).ToArray
         Dim IPv6Targets = Candidates.Where(Function(i) i.AddressFamily = AddressFamily.InterNetworkV6).ToArray
         If IPv4Targets.Any AndAlso IPv6Targets.Any Then
-            Dim IPv4Reliability = IPv4Targets.Average(Function(i) GetIPReliability(i))
-            Dim IPv6Reliability = IPv6Targets.Average(Function(i) GetIPReliability(i))
+            Dim IPv4Reliability = IPv4Targets.Max(Function(i) Reliabilities(i))
+            Dim IPv6Reliability = IPv6Targets.Max(Function(i) Reliabilities(i))
             If Host = "api.modrinth.com" Then IPv6Reliability -= 0.1 '让 Modrinth 优先使用 IPv4 地址(#6887)
+            If ModeDebug Then Log($"[Net] DNS IPv4/IPv6 选择({Host}),IPv4 {IPv4Reliability:0.000},IPv6 {IPv6Reliability:0.000}")
             Candidates = If(IPv4Reliability >= IPv6Reliability, IPv4Targets, IPv6Targets)
         End If
         '选择可靠度最高的 IP
-        Dim MaxReliability As Double = Candidates.Max(Function(i) GetIPReliability(i))
-        Dim Target As IPAddress = Candidates.First(Function(i) GetIPReliability(i) = MaxReliability)
-        Dim TargetIp As String = If(Target.AddressFamily = AddressFamily.InterNetworkV6, $"[{Target}]", Target.ToString)
-        If Target IsNot Candidates.First Then
-            '优选结果与系统默认 IP 不一致,替换域名并设置 Host 头
-            If ModeDebug Then Log($"[Net] DNS 解析结果:{Host} → {Target},所有可能的 IP 与可靠度:{DnsTask.Result.Select(Function(i) $"{i} → {GetIPReliability(i):0.000}").Join(";")}")
-            Request.Headers.Host = Host
-            Dim Builder As New UriBuilder(Request.RequestUri)
-            Builder.Host = TargetIp
-            Request.RequestUri = Builder.Uri
-        End If
-        Return TargetIp
+        Dim Target As IPAddress = Candidates.MaxBy(Function(i) Reliabilities(i))
+        Request.Headers.Host = Request.RequestUri.Authority
+        Request.RequestUri = (New UriBuilder(Request.RequestUri) With {.Host = If(Target.AddressFamily = AddressFamily.InterNetworkV6, $"[{Target}]", Target.ToString)}).Uri
+        Return Target.ToString
     End Function
     Private DNSFailureRecord As New SafeDictionary(Of String, Date)
     ''' <summary>
@@ -369,8 +361,10 @@ RequestFinished:
     ''' </summary>
     Private Sub RecordIPReliability(IP As String, Result As Double)
         If IP Is Nothing Then Return
-        If Not IPReliability.ContainsKey(IP) Then IPReliability(IP) = 0
-        IPReliability(IP) = (IPReliability(IP) + Result) / 2
+        SyncLock IPReliability.SyncRoot
+            If Not IPReliability.ContainsKey(IP) Then IPReliability(IP) = 0
+            IPReliability(IP) = (IPReliability(IP) + Result) / 2
+        End SyncLock
     End Sub
 
     ''' <summary>
@@ -418,12 +412,10 @@ RequestFinished:
     ''' 基于限速,当前可以下载的剩余量。
     ''' </summary>
     Public NetTaskSpeedLimitLeft As Long = -1
-    Private ReadOnly NetTaskSpeedLimitLeftLock As New Object
     ''' <summary>
     ''' 正在运行中的线程数。
     ''' </summary>
     Public NetTaskThreadCount As Integer = 0
-    Private ReadOnly NetTaskThreadCountLock As New Object
 
     ''' <summary>
     ''' 下载源。
@@ -760,7 +752,6 @@ RequestFinished:
         ''' 文件的已下载大小。
         ''' </summary>
         Public DownloadDone As Long = 0
-        Private ReadOnly LockDone As New Object
         ''' <summary>
         ''' 文件的校验规则。
         ''' </summary>
@@ -840,14 +831,12 @@ RequestFinished:
         ''' </summary>
         Private ReadOnly Property ConnectAverage As Integer
             Get
-                SyncLock LockCount
-                    Return If(ConnectCount = 0, -1, ConnectTime / ConnectCount)
-                End SyncLock
+                Dim CurrentConnectCount As Integer = ConnectCount '防止竞态条件
+                Return If(CurrentConnectCount = 0, -1, ConnectTime / CurrentConnectCount)
             End Get
         End Property
 
         Private Const FilePieceLimit As Long = 256 * 1024
-        Public ReadOnly LockCount As New Object
         Public ReadOnly LockState As New Object
         Public ReadOnly LockChain As New Object
         Public ReadOnly LockSource As New Object
@@ -929,7 +918,7 @@ StartSingleThreadDownload:
                     If Source Is Nothing Then Return Nothing
                     Dim TargetUrl As String = Source.Url
                     If TargetUrl.Contains("pcl2-server") OrElse TargetUrl.Contains("bmclapi") OrElse TargetUrl.Contains("github.com") OrElse
-                       TargetUrl.Contains("optifine.net") OrElse TargetUrl.Contains("modrinth") OrElse TargetUrl.Contains("momot.rs") Then Return Nothing
+                       TargetUrl.Contains("optifine.net") OrElse TargetUrl.Contains("momot.rs") Then Return Nothing
                     '寻找最大碎片
                     'FUTURE: 下载引擎重做,计算下载源平均链接时间和线程下载速度,按最高时间节省来开启多线程
                     Dim FilePieceMax As NetThread = Threads
@@ -962,9 +951,7 @@ StartThread:
 
                 End SyncLock
                 '开始线程
-                SyncLock NetTaskThreadCountLock
-                    NetTaskThreadCount += 1
-                End SyncLock
+                Interlocked.Increment(NetTaskThreadCount)
                 SyncLock LockSource
                     If Not HasAvailableSource(False) Then SourcesOnce.First.SingleThread = ThreadInfo
                 End SyncLock
@@ -986,7 +973,7 @@ StartThread:
                 CancelToken As CancellationTokenSource = Nothing, HostIp As String = Nothing
             '部分下载源真的特别慢,并且只需要一个请求,例如 Ping 为 20s,如果增长太慢,就会造成类似 2.5s 5s 7.5s 10s 12.5s... 的极大延迟
             '延迟过长会导致某些特别慢的链接迟迟不被掐死
-            Dim Timeout As Integer = Math.Min(Math.Max(ConnectAverage, 10000) * (1 + Th.Source.FailCount), 30000)
+            Dim Timeout As Integer = Math.Min(Math.Max(ConnectAverage, 15000) * (1 + Th.Source.FailCount), 30000)
             Th.State = NetState.Connecting
             Try
                 Dim HttpDataCount As Integer = 0
@@ -994,8 +981,8 @@ StartThread:
                 HttpRequest = New HttpRequestMessage(HttpMethod.Get, Th.Source.Url)
                 SecretHeadersSign(Th.Source.Url, HttpRequest, SimulateBrowserHeaders)
                 CancelToken = New CancellationTokenSource(Timeout)
-                HostIp = DNSLookup(HttpRequest, CancelToken) 'DNS 预解析
-                If Not Th.IsFirstThread Then HttpRequest.Headers.Range = New RangeHeaderValue(Th.DownloadStart, Nothing)
+                HostIp = DNSLookup(HttpRequest, CancelToken.Token) 'DNS 预解析
+                If Not Th.IsFirstThread Then HttpRequest.Headers.Range = New Headers.RangeHeaderValue(Th.DownloadStart, Nothing)
                 Dim ContentLength As Long = 0
                 Response = ThreadClient.SendAsync(HttpRequest, HttpCompletionOption.ResponseHeadersRead, CancelToken.Token).GetResultWithTimeout(CancelToken, Timeout)
                 If Not Response.IsSuccessStatusCode Then Throw New Exception($"错误码 {Response.StatusCode} ({CInt(Response.StatusCode)}),{Th.Source.Url}") '状态码检查
@@ -1032,7 +1019,7 @@ StartThread:
                             Dim DriveName As String = Drive.Name.First.ToString
                             Dim RequiredSpace = If(PathTemp.StartsWithF(DriveName), ContentLength * 1.1, 0) +
                                                 If(LocalPath.StartsWithF(DriveName), ContentLength + 5 * 1024 * 1024, 0)
-                            If Drive.TotalFreeSpace < RequiredSpace Then
+                            If RequiredSpace > 0 AndAlso Drive.TotalFreeSpace < RequiredSpace Then
                                 Throw New Exception(DriveName & " 盘空间不足,无法进行下载。" & vbCrLf & "需要至少 " & GetString(RequiredSpace) & " 空间,但当前仅剩余 " & GetString(Drive.TotalFreeSpace) & "。" &
                                                     If(PathTemp.StartsWithF(DriveName), vbCrLf & vbCrLf & "下载时需要与文件同等大小的空间存放缓存,你可以在设置中调整缓存文件夹的位置。", ""))
                             End If
@@ -1040,7 +1027,7 @@ StartThread:
                     End If
                 ElseIf FileSize < 0 Then
                     Throw New Exception("非首线程运行时,尚未获取文件大小")
-                ElseIf Th.DownloadStart > 0 AndAlso ContentLength = FileSize Then
+                ElseIf Th.DownloadStart > 0 AndAlso ContentLength >= FileSize Then
 NotSupportRange:
                     SyncLock LockSource
                         If SourcesOnce.Contains(Th.Source) Then GoTo SourceBreak
@@ -1076,11 +1063,9 @@ NotSupportRange:
                         Threading.Thread.Sleep(16)
                     End While
                     Dim RealDataCount As Integer = If(IsUnknownSize, HttpDataCount, Math.Min(HttpDataCount, Th.DownloadUndone))
-                    SyncLock NetTaskSpeedLimitLeftLock
-                        If NetTaskSpeedLimitHigh > 0 Then NetTaskSpeedLimitLeft -= RealDataCount
-                    End SyncLock
+                    If NetTaskSpeedLimitHigh > 0 Then Interlocked.Add(NetTaskSpeedLimitLeft, -RealDataCount)
                     Dim DeltaTime = GetTimeMs() - Th.LastReceiveTime
-                    If DeltaTime > 1000000 Then DeltaTime = 1 '避免时间刻反转导致出现极大值
+                    If DeltaTime > 100000000 Then DeltaTime = 1 '避免时间刻反转导致出现极大值
                     If RealDataCount > 0 Then
                         '有数据
                         If Th.DownloadDone = 0 Then
@@ -1089,27 +1074,21 @@ NotSupportRange:
                             SyncLock LockState
                                 If State < NetState.Downloading Then State = NetState.Downloading
                             End SyncLock
-                            SyncLock LockCount
-                                ConnectCount += 1
-                                ConnectTime += GetTimeMs() - Th.InitTime
-                            End SyncLock
+                            Interlocked.Increment(ConnectCount)
+                            Interlocked.Add(ConnectTime, GetTimeMs() - Th.InitTime)
                         End If
-                        SyncLock LockCount
-                            Th.Source.FailCount = 0
-                            For Each Task In Tasks
-                                Task.FailCount = 0
-                            Next
-                        End SyncLock
-                        NetManager.DownloadDone += RealDataCount
-                        SyncLock LockDone
-                            DownloadDone += RealDataCount
-                        End SyncLock
+                        Th.Source.FailCount = 0
+                        For Each Task In Tasks
+                            Task.FailCount = 0
+                        Next
+                        Interlocked.Add(NetManager.DownloadDone, RealDataCount)
+                        Interlocked.Add(DownloadDone, RealDataCount)
                         Th.DownloadDone += RealDataCount
                         ResultStream.Write(ResponseBytes, 0, RealDataCount)
                         '已完成
                         If Th.DownloadUndone = 0 AndAlso Not IsUnknownSize Then Exit While
                         '检查速度是否过慢
-                        If DeltaTime > 5000 AndAlso DeltaTime > RealDataCount AndAlso '数据包间隔大于 5s,且速度小于 1K/s
+                        If Th.LastReceiveTime > 0 AndAlso DeltaTime > 5000 AndAlso DeltaTime > RealDataCount AndAlso '数据包间隔大于 5s,且速度小于 1K/s
                                     Th.Source.SingleThread Is Nothing Then '且并非单线程下载
                             Throw New TimeoutException("由于速度过慢断开链接,下载 " & RealDataCount & " B,消耗 " & DeltaTime & " ms。")
                         End If
@@ -1147,9 +1126,7 @@ SourceBreak:
                 CancelToken?.Dispose()
                 If Not IsNoSplit Then ResultStream?.Dispose()
                 '改变计数
-                SyncLock NetTaskThreadCountLock
-                    NetTaskThreadCount -= 1
-                End SyncLock
+                Interlocked.Decrement(NetTaskThreadCount)
                 '合并
                 If ((FileSize >= 0 AndAlso DownloadDone >= FileSize) OrElse (FileSize = -1 AndAlso DownloadDone > 0)) AndAlso
                     State < NetState.Merging AndAlso Th.State <> NetState.Interrupted Then Merge(Th)
@@ -1157,12 +1134,10 @@ SourceBreak:
         End Sub
         Private Sub SourceFail(Th As NetThread, ex As Exception, IsMergeFailure As Boolean)
             '状态变更
-            SyncLock LockCount
-                Th.Source.FailCount += 1
-                For Each Task In Tasks
-                    Task.FailCount += 1
-                Next
-            End SyncLock
+            Interlocked.Increment(Th.Source.FailCount)
+            For Each Task In Tasks
+                Interlocked.Increment(Task.FailCount)
+            Next
             Th.State = NetState.Interrupted
             Th.Source.Ex = ex
             '根据情况判断,是否在多线程下禁用下载源(连续错误过多,或不支持断点续传)
@@ -1241,10 +1216,8 @@ SourceBreak:
             SyncLock LockChain
                 Threads = Nothing
             End SyncLock
-            NetManager.DownloadDone -= DownloadDone
-            SyncLock LockDone
-                DownloadDone = 0
-            End SyncLock
+            Interlocked.Add(NetManager.DownloadDone, -DownloadDone)
+            DownloadDone = 0
             SpeedLastDone = 0
         End Sub
 
@@ -1271,7 +1244,7 @@ Retry:
                 SyncLock LockChain
                     '合并文件
                     If IsNoSplit Then
-                        '仅有一个线程,从缓存中输出
+                        '仅有一个线程,从内存中输出
                         If ModeDebug Then Log($"[Download] {LocalName}:下载结束,从内存输出文件")
                         Cache.Position = 0
                         WriteFile(LocalPath, Cache)
@@ -1321,6 +1294,7 @@ Retry:
                 End SyncLock
             Catch ex As Exception
                 RetryCount += 1
+                If State > NetState.Merging Then Return '通常是因为在合并时被中断了
                 Log(ex, $"合并文件出错,第 {RetryCount} 次尝试({LocalName})")
                 '重新尝试合并
                 If RetryCount < 3 Then
@@ -1372,9 +1346,7 @@ Retry:
         Private Sub AbortInternal()
             On Error Resume Next
             Reset()
-            SyncLock NetManager.LockRemain
-                NetManager.FileRemain -= 1
-            End SyncLock
+            Interlocked.Decrement(NetManager.FileRemain)
         End Sub
 
         '状态改变接口
@@ -1386,9 +1358,7 @@ Retry:
                 If State >= NetState.Finished Then Return
                 State = NetState.Finished
             End SyncLock
-            SyncLock NetManager.LockRemain
-                NetManager.FileRemain -= 1
-            End SyncLock
+            Interlocked.Decrement(NetManager.FileRemain)
             If PrintLog Then Log($"[Download] {LocalName}:已完成")
             For Each Task In Tasks
                 Task.OnFileFinish(Me)
@@ -1522,8 +1492,8 @@ FinishExCatch:
                         If File.LocalPath.EndsWithF("\") Then Throw New ArgumentException("请输入含文件名的完整文件路径:" & File.LocalPath)
                         Directory.CreateDirectory(GetPathFromFullPath(File.LocalPath)) '创建目标文件夹
                     Next
-                    '接入下载管理器
-                    NetManager.Start(Me)
+                    '接入下载管理器,获取新开始下载的文件列表
+                    Dim NewFiles = NetManager.Start(Me)
 
                     '====================================
                     ' 已存在文件查找
@@ -1531,9 +1501,8 @@ FinishExCatch:
 
                     '整理允许进行查找的文件
                     Dim FilesToCheck As New List(Of NetFile)
-                    Dim DisabledCopy As Boolean = Setup.Get("SystemDebugSkipCopy") '在设置中禁用了复制
-                    For Each File In Files
-                        If Not DisabledCopy AndAlso File.Check?.CanUseExistsFile Then
+                    For Each File In NewFiles
+                        If File.Check?.CanUseExistsFile Then
                             FilesToCheck.Add(File)
                         Else '不允许,直接开始下载
                             SyncLock LockState
@@ -1570,7 +1539,7 @@ FinishExCatch:
         End Sub
         Private Sub CheckExistingFiles(Files As List(Of NetFile), FolderList As List(Of String))
             Try
-                If ModeDebug Then Log($"[Download] 文件检查线程已启动,分配的文件数:{Files.Count}")
+                If ModeDebug Then Log($"[Download] 文件检查开始,本线程负责的文件数:{Files.Count}")
                 '列出 MC 文件夹中的各个版本文件夹
                 Dim VersionFolders As New List(Of String)
                 For Each McFolder In FolderList
@@ -1584,7 +1553,7 @@ FinishExCatch:
                 '处理每个文件
                 For Each File As NetFile In Files
                     Dim Target As String = CheckExistingFile(FolderList, VersionFolders, File)
-                    If File.State >= NetState.WaitingToDownload Then Return '中断
+                    If File.State >= NetState.WaitingToDownload Then Continue For '中断
                     '已找到相同文件
                     If Target IsNot Nothing Then
                         File.IsCopy = True
@@ -1594,6 +1563,8 @@ Retry:
                             If Target <> File.LocalPath Then
                                 Log($"[Download] 复制已存在的文件:{Target} → {File.LocalPath}")
                                 CopyFile(Target, File.LocalPath)
+                            Else
+                                If ModeDebug Then Log($"[Download] 需要下载的文件已存在,并通过校验:{Target}")
                             End If
                             File.Finish(False)
                             Continue For
@@ -1619,6 +1590,8 @@ Retry:
         Private Function CheckExistingFile(FolderList As List(Of String), VersionFolders As List(Of String), File As NetFile) As String
             '目标文件已存在
             If File.Check.Check(File.LocalPath) Is Nothing Then Return File.LocalPath
+            '在设置中禁用了复制
+            If Setup.Get("SystemDebugSkipCopy") Then Return Nothing
             '没有可用的检查规则,只能开始下载
             If File.Check.Hash Is Nothing AndAlso File.Check.ActualSize < 0 Then Return Nothing
             '大致判断文件类别
@@ -1633,7 +1606,7 @@ Retry:
                     Return Nothing
                 End If
             End If
-            Dim Type = TypeIndexes.MaxOf(Function(kv) kv.Item2).FolderName.TrimStart("\"c)
+            Dim Type = TypeIndexes.MaxBy(Function(kv) kv.Item2).FolderName.TrimStart("\"c)
             '根据类别进行查找
             Static Sizes As New SafeDictionary(Of String, Long)
             Select Case Type
@@ -1757,8 +1730,7 @@ Retry:
         ''' <summary>
         ''' 需要下载的文件。为“本地地址 - 文件对象”键值对。
         ''' </summary>
-        Public Files As New Dictionary(Of String, NetFile)
-        Public ReadOnly LockFiles As New Object
+        Public AllFiles As New SafeDictionary(Of String, NetFile)
 
         ''' <summary>
         ''' 当前的所有下载任务。
@@ -1768,25 +1740,12 @@ Retry:
         ''' <summary>
         ''' 已下载完成的大小。
         ''' </summary>
-        Public Property DownloadDone As Long
-            Get
-                Return _DownloadDone
-            End Get
-            Set(value As Long)
-                SyncLock LockDone
-                    _DownloadDone = value
-                End SyncLock
-            End Set
-        End Property
-        Private _DownloadDone As Long = 0
-        Private ReadOnly LockDone As New Object
-
+        Public DownloadDone As Long = 0
 
         ''' <summary>
         ''' 尚未完成下载的文件数。
         ''' </summary>
         Public FileRemain As Integer = 0
-        Public ReadOnly LockRemain As New Object
 
         '这些属性由 RefreshStat 刷新
         ''' <summary>
@@ -1855,9 +1814,9 @@ Retry:
                         Thread.Sleep(20)
                         '获取文件列表
                         Dim AllFiles As List(Of NetFile)
-                        SyncLock LockFiles
-                            If Id = 0 AndAlso FileRemain = 0 AndAlso Files.Any() Then Files.Clear() '若已完成,则清空
-                            AllFiles = Files.Values.ToList()
+                        SyncLock Me.AllFiles.SyncRoot
+                            If Id = 0 AndAlso FileRemain = 0 AndAlso Me.AllFiles.Any() Then Me.AllFiles.Clear() '若已完成,则清空
+                            AllFiles = Me.AllFiles.Values.ToList()
                         End SyncLock
                         Dim WaitingFiles As New List(Of NetFile)
                         Dim OngoingFiles As New List(Of NetFile)
@@ -1865,7 +1824,7 @@ Retry:
                             If File.Uuid Mod 2 = Id Then Continue For
                             If File.State = NetState.WaitingToDownload Then
                                 WaitingFiles.Add(File)
-                            ElseIf File.State < NetState.Merging Then
+                            ElseIf File.State < NetState.Merging AndAlso File.State >= NetState.WaitingToDownload Then
                                 OngoingFiles.Add(File)
                             End If
                         Next
@@ -1908,7 +1867,7 @@ Retry:
                     Dim NextTick As Long = GetTimeMs()
                     While True
                         '增加限速余量
-                        If NetTaskSpeedLimitHigh > 0 Then NetTaskSpeedLimitLeft = NetTaskSpeedLimitHigh / 10
+                        If NetTaskSpeedLimitHigh > 0 Then Interlocked.Add(NetTaskSpeedLimitLeft, CLng(NetTaskSpeedLimitHigh / 10))
                         '刷新公开属性
                         RefreshStat()
                         '等待 100 ms
@@ -1931,7 +1890,7 @@ Retry:
         ''' <summary>
         ''' 开始一个下载任务。
         ''' </summary>
-        Public Sub Start(Task As LoaderDownload)
+        Public Function Start(Task As LoaderDownload) As List(Of NetFile)
             StartManager()
             '清理缓存
             SyncLock DownloadCacheLock '防止同时开启多个下载任务时重复清理
@@ -1943,45 +1902,30 @@ Retry:
                     Catch ex As Exception
                         Log(ex, "清理下载缓存失败")
                     End Try
+                    IsDownloadCacheCleared = True
                 End If
-                IsDownloadCacheCleared = True
-            End SyncLock
-            '文件处理
-            SyncLock LockFiles
-                '添加每个文件
-                For i = 0 To Task.Files.Count - 1
-                    Dim File = Task.Files(i)
-                    If Files.ContainsKey(File.LocalPath) Then
-                        '已有该文件
-                        If Files(File.LocalPath).State >= NetState.Finished Then
-                            '该文件已经下载过一次,且下载完成
-                            '将已下载的文件替换成当前文件,重新下载
-                            File.Tasks.Add(Task)
-                            Files(File.LocalPath) = File
-                            SyncLock LockRemain
-                                FileRemain += 1
-                            End SyncLock
-                            If ModeDebug Then Log($"[Download] {File.LocalName}:重新加入下载列表,目标 {File.LocalPath}")
-                        Else
-                            '该文件正在下载中
-                            '将当前文件替换成下载中的文件,即两个任务指向同一个文件
-                            File = Files(File.LocalPath)
-                            File.Tasks.Add(Task)
-                        End If
-                    Else
-                        '没有该文件
-                        File.Tasks.Add(Task)
-                        Files.Add(File.LocalPath, File)
-                        SyncLock LockRemain
-                            FileRemain += 1
-                        End SyncLock
-                        If ModeDebug Then Log($"[Download] {File.LocalName}:已加入下载列表,目标 {File.LocalPath}")
-                    End If
-                    Task.Files(i) = File '回设
-                Next
             End SyncLock
+            '添加每个文件
+            Dim NewFiles As New List(Of NetFile)
+            For i = 0 To Task.Files.Count - 1
+                Dim File As NetFile = Task.Files(i)
+                If AllFiles.ContainsKey(File.LocalPath) AndAlso AllFiles(File.LocalPath).State < NetState.Finished Then
+                    '该文件正在被另一个任务下载
+                    If ModeDebug Then Log($"[Download] {File.LocalName}:无需开始,该文件已在下载中,目标 {File.LocalPath}")
+                    File = AllFiles(File.LocalPath) '将列表中的文件替换成下载中的文件,即两个任务指向同一个文件;抛弃现在的 File 对象
+                    Task.Files(i) = File
+                Else
+                    '常规情况(该文件可能已在其他任务中下载完成,但这并不影响)
+                    If ModeDebug Then Log($"[Download] {File.LocalName}:开始,目标 {File.LocalPath}")
+                    AllFiles(File.LocalPath) = File
+                    NewFiles.Add(File)
+                    Interlocked.Increment(FileRemain)
+                End If
+                File.Tasks.Add(Task)
+            Next
             Tasks.Add(Task)
-        End Sub
+            Return NewFiles
+        End Function
 
     End Class
 

+ 89 - 53
Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb

@@ -846,6 +846,11 @@ NoSubtitle:
         ''' </summary>
         Public SearchText As String = Nothing
         ''' <summary>
+        ''' 在进行中文搜索时,CurseForge 的替代搜索文本。
+        ''' 由于 CurseForge API 在有任意关键词未匹配的时候就不显示结果,所以不能使用与 Modrinth 相同的算法。
+        ''' </summary>
+        Public CurseForgeAltSearchText As String = Nothing
+        ''' <summary>
         ''' 允许的来源。
         ''' </summary>
         Public Source As CompSourceType = CompSourceType.Any
@@ -884,7 +889,7 @@ NoSubtitle:
             If Tag <> "" Then Address += "&categoryId=" & Tag.BeforeFirst("/")
             If ModLoader <> CompModLoaderType.Any Then Address += "&modLoaderType=" & CType(ModLoader, Integer)
             If Not String.IsNullOrEmpty(GameVersion) Then Address += "&gameVersion=" & GameVersion
-            If Not String.IsNullOrEmpty(SearchText) Then Address += "&searchFilter=" & Net.WebUtility.UrlEncode(SearchText)
+            If Not String.IsNullOrEmpty(If(CurseForgeAltSearchText, SearchText)) Then Address += "&searchFilter=" & Net.WebUtility.UrlEncode(If(CurseForgeAltSearchText, SearchText))
             If Storage.CurseForgeOffset > 0 Then Address += "&index=" & Storage.CurseForgeOffset
             Return Address
         End Function
@@ -995,62 +1000,86 @@ NoSubtitle:
             '构造搜索请求
             Dim SearchEntries As New List(Of SearchEntry(Of CompDatabaseEntry))
             For Each Entry In CompDatabase
-                If Entry.ChineseName.Contains("动态的树") Then Continue For '这玩意儿附属太多了
                 SearchEntries.Add(New SearchEntry(Of CompDatabaseEntry) With {
                     .Item = Entry,
-                    .SearchSource = New List(Of KeyValuePair(Of String, Double)) From {
-                        New KeyValuePair(Of String, Double)(Entry.ChineseName & If(Entry.CurseForgeSlug, "") & If(Entry.ModrinthSlug, ""), 1)
+                    .SearchSource = New List(Of SearchSource) From {
+                        New SearchSource(Entry.ChineseName.BeforeFirst(" (").Split({"/"c}, StringSplitOptions.RemoveEmptyEntries), 1), '部分 Mod 有别名
+                        New SearchSource(Entry.ChineseName.AfterFirst(" (") & If(Entry.CurseForgeSlug, "") & If(Entry.ModrinthSlug, ""), 0.5)
                     }
                 })
             Next
-            '获取搜索结果
-            Dim SearchResults = Search(SearchEntries, Request.SearchText, 3)
+            Dim SearchResults = Search(SearchEntries, Request.SearchText, 40, 0.2)
             If Not SearchResults.Any() Then Throw New Exception("无搜索结果,请尝试搜索英文名称")
-            Dim SearchResult As String = ""
-            For i = 0 To Math.Min(4, SearchResults.Count - 1) '就算全是准确的,也最多只要 5 个
-                If Not SearchResults(i).AbsoluteRight AndAlso i >= Math.Min(2, SearchResults.Count - 1) Then Exit For '把 3 个结果拼合以提高准确度
-                If SearchResults(i).Item.CurseForgeSlug IsNot Nothing Then SearchResult += SearchResults(i).Item.CurseForgeSlug.Replace("-", " ").Replace("/", " ") & " "
-                If SearchResults(i).Item.ModrinthSlug IsNot Nothing Then SearchResult += SearchResults(i).Item.ModrinthSlug.Replace("-", " ").Replace("/", " ") & " "
-                SearchResult += SearchResults(i).Item.ChineseName.AfterLast(" (").TrimEnd(") ").BeforeFirst(" - ").
-                    Replace(":", "").Replace("(", "").Replace(")", "").ToLower.Replace("/", " ") & " "
-            Next
-            Log("[Comp] 中文搜索原始关键词:" & SearchResult, LogLevel.Developer)
-            '去除常见连接词
-            Dim RealFilter As String = ""
-            For Each Word In SearchResult.Split(" ")
-                If {"the", "of", "a", "mod", "and"}.Contains(Word.ToLowerInvariant) OrElse Val(Word) > 0 Then Continue For
-                If SearchResult.Split(" ").Count > 3 AndAlso {"ftb"}.Contains(Word.ToLower) Then Continue For
-                RealFilter += Word.TrimStart("{[(").TrimEnd("}])") & " "
+            '提取可能的英文名
+            Dim ExtractWords =
+            Function(Result As SearchEntry(Of CompDatabaseEntry)) As String()
+                Dim Word As String = ""
+                If Result.Item.CurseForgeSlug IsNot Nothing Then Word += Result.Item.CurseForgeSlug.Replace("-", " ").Replace("/", " ") & " "
+                If Result.Item.ModrinthSlug IsNot Nothing Then Word += Result.Item.ModrinthSlug.Replace("-", " ").Replace("/", " ") & " "
+                Word += Result.Item.ChineseName.AfterLast(" (").TrimEnd(") ").BeforeFirst(" - ").
+                                    Replace(":", "").Replace("(", "").Replace(")", "").ToLower.Replace("/", " ").Replace("-", " ")
+                Dim Words = Word.ToLower.Split(" ")
+                Words = Words.Select(Function(w) w.TrimStart("{[(").TrimEnd("}])")).Where(
+                Function(w)
+                    If w.Length <= 1 Then Return False '单字词
+                    If {"the", "of", "mod", "and"}.Contains(w) Then Return False '常见词
+                    If Val(w) > 0 Then Return False '数字
+                    If w.Split(" ").Count > 3 AndAlso w.Contains("ftb") Then Return False '神秘 FTB
+                    Return True
+                End Function).Distinct.ToArray
+                Return Words
+            End Function
+            Dim WordWeights As New Dictionary(Of String, Double) '各个单词及其出现的权重
+            For Each Result In SearchResults
+                For Each Word In ExtractWords(Result)
+                    Dim Similarity = If(Result.SearchSource.Any(Function(s) s.Aliases.Contains(Request.SearchText)), 100000, Result.Similarity) '完全匹配为 100000
+                    If Not WordWeights.ContainsKey(Word) Then WordWeights.Add(Word, 0)
+                    WordWeights(Word) += Similarity
+                Next
             Next
-            Request.SearchText = RealFilter
-            Log("[Comp] 中文搜索最终关键词:" & RealFilter, LogLevel.Developer)
+            If Not WordWeights.Any() Then Throw New Exception("无搜索结果,请尝试搜索英文名称")
+            '根据权重选取英文单词
+            Dim SortedWords = WordWeights.OrderByDescending(Function(w) w.Value).ToList
+            If SortedWords.First.Value >= 100000 Then '如果有完全匹配的,就只选完全匹配的
+                Request.SearchText = SortedWords.Where(Function(w) w.Value >= 100000).Select(Function(w) w.Key).Join(" ")
+            Else '否则,CurseForge 选第一个结果,Modrinth 选前 5 个单词
+                Request.SearchText = SortedWords.Take(5).Select(Function(w) w.Key).Join(" ")
+                Request.CurseForgeAltSearchText = ExtractWords(SearchResults.First).Join(" ")
+                Log("[Comp] 中文搜索基础关键词(CurseForge):" & Request.CurseForgeAltSearchText, LogLevel.Developer)
+            End If
+            Log("[Comp] 中文搜索基础关键词:" & Request.SearchText, LogLevel.Developer)
         End If
 
-        '驼峰英文请求关键字处理
-        Dim SpacedKeywords = Request.SearchText.RegexReplace("([A-Z]+|[a-z]+?)(?=[A-Z]+[a-z]+[a-z ]*)", "$& ")
-        Dim ConnectedKeywords = Request.SearchText.Replace(" ", "")
-        Dim AllPossibleKeywords = (SpacedKeywords & " " & If(IsChineseSearch, Request.SearchText, ConnectedKeywords & " " & RawFilter)).ToLower
-
         '最终处理关键字:分割、去重
-        Dim RightKeywords As New List(Of String)
-        For Each Keyword In AllPossibleKeywords.Split(" ")
-            Keyword = Keyword.Trim("["c, "]"c)
-            If Keyword = "" Then Continue For
-            If {"forge", "fabric", "for", "mod", "quilt"}.Contains(Keyword) Then '#208
-                Log("[Comp] 已跳过搜索关键词:" & Keyword, LogLevel.Developer)
-                Continue For
+        Dim ProcessKeywords =
+        Sub(ByRef Text As String)
+            If Text Is Nothing Then Return
+            Text = Text.ToLowerInvariant
+            Dim Words As New List(Of String)
+            For Each Keyword In Text.Split(" ")
+                Keyword = Keyword.Trim("["c, "]"c)
+                If Keyword = "" Then Continue For
+                If {"forge", "fabric", "for", "mod", "quilt"}.Contains(Keyword) Then '#208
+                    Log("[Comp] 已跳过搜索关键词:" & Keyword, LogLevel.Developer)
+                    Continue For
+                End If
+                Words.Add(Keyword)
+            Next
+            If RawFilter.Length > 0 AndAlso Not Words.Any() Then
+                Text = RawFilter '全都被过滤掉了
+            Else
+                Text = Join(Words.Distinct.ToList, " ")
             End If
-            RightKeywords.Add(Keyword)
-        Next
-        If RawFilter.Length > 0 AndAlso Not RightKeywords.Any() Then
-            Request.SearchText = RawFilter '全都被过滤掉了
-        Else
-            Request.SearchText = Join(RightKeywords.Distinct.ToList, " ").ToLower
-        End If
+            '例外项:OptiForge、OptiFabric(拆词后因为包含 Forge/Fabric 导致无法搜到实际的 Mod)
+            If RawFilter.Replace(" ", "").ContainsF("optiforge", True) Then Text = "optiforge"
+            If RawFilter.Replace(" ", "").ContainsF("optifabric", True) Then Text = "optifabric"
+        End Sub
 
-        '例外项:OptiForge、OptiFabric(拆词后因为包含 Forge/Fabric 导致无法搜到实际的 Mod)
-        If RawFilter.Replace(" ", "").ContainsF("optiforge", True) Then Request.SearchText = "optiforge"
-        If RawFilter.Replace(" ", "").ContainsF("optifabric", True) Then Request.SearchText = "optifabric"
+        If Request.CurseForgeAltSearchText IsNot Nothing Then
+            ProcessKeywords(Request.CurseForgeAltSearchText)
+            Log("[Comp] 工程列表搜索最终文本(CurseForge):" & Request.CurseForgeAltSearchText, LogLevel.Debug)
+        End If
+        ProcessKeywords(Request.SearchText)
         Log("[Comp] 工程列表搜索最终文本:" & Request.SearchText, LogLevel.Debug)
         Task.Progress = 0.1
 
@@ -1195,7 +1224,7 @@ Retry:
                                                   Not Storage.Results.Any(Function(b) r.IsLike(b))).ToList
         '加入列表
         RealResults.AddRange(RawResults)
-        Log($"[Comp] 去重、筛选后累计新增结果 {RealResults.Count} 个")
+        Log($"[Comp] 去重、筛选后累计新增结果 {RealResults.Count} 个(目前已有结果 {Storage.Results.Count} 个)")
 
 #End Region
 
@@ -1241,16 +1270,19 @@ Retry:
             For Each Result As CompProject In RealResults
                 Scores.Add(Result, If(Result.WikiId > 0, 0.2, 0) +
                            Math.Log10(Math.Max(Result.DownloadCount, 1) * GetDownloadCountMult(Result)) / 9)
-                Entry.Add(New SearchEntry(Of CompProject) With {.Item = Result, .SearchSource = New List(Of KeyValuePair(Of String, Double)) From {
-                          New KeyValuePair(Of String, Double)(If(IsChineseSearch, Result.TranslatedName, Result.RawName), 1),
-                          New KeyValuePair(Of String, Double)(Result.Description, 0.05)}})
+                Entry.Add(New SearchEntry(Of CompProject) With {.Item = Result, .SearchSource = New List(Of SearchSource) From {
+                    New SearchSource(If(IsChineseSearch, Result.TranslatedName, Result.RawName).Split({"/"c}, StringSplitOptions.RemoveEmptyEntries), 1),
+                    New SearchSource(Result.Description, 0.05)}})
             Next
             Dim SearchResult = Search(Entry, RawFilter, 101, -1)
             For Each OneResult In SearchResult
-                Scores(OneResult.Item) += OneResult.Similarity / SearchResult(0).Similarity '最高 1 分的相似度分
+                Scores(OneResult.Item) +=
+                    If(OneResult.AbsoluteRight, 10, OneResult.Similarity) /
+                    If(SearchResult.First.AbsoluteRight, 10, SearchResult.First.Similarity) '最高 1 分的相似度分
             Next
         End If
         '根据排序分得出结果并添加
+        If Task.IsAborted Then Throw New ThreadInterruptedException '#8246
         Storage.Results.AddRange(
             Scores.OrderByDescending(Function(s) s.Value).Select(Function(r) r.Key))
 
@@ -1430,7 +1462,10 @@ Retry:
                     End If
                     'GameVersions
                     Dim RawVersions As List(Of String) = Data("gameVersions").Select(Function(t) t.ToString.Trim.ToLower).ToList
-                    GameVersions = RawVersions.Where(Function(v) McVersion.IsFormatFit(v)).Select(Function(v) v.Replace("-snapshot", " 预览版")).ToList
+                    GameVersions = RawVersions.
+                        Where(Function(v) McVersion.IsFormatFit(v)).
+                        Select(Function(v) v.Replace("-snapshot", " 预览版")).
+                        Distinct.ToList
                     If GameVersions.Count > 1 Then
                         GameVersions = GameVersions.SortByComparison(AddressOf CompareVersionGE).ToList
                         If Type = CompType.ModPack Then GameVersions = New List(Of String) From {GameVersions(0)} '整合包理应只 “支持” 一个版本
@@ -1492,7 +1527,8 @@ Retry:
                     'GameVersions
                     Dim RawVersions As List(Of String) = Data("game_versions").Select(Function(t) t.ToString.Trim.ToLower).ToList
                     GameVersions = RawVersions.Where(Function(v) v.Contains(".")).
-                                               Select(Function(v) If(v.Contains("-"), v.BeforeFirst("-") & " 预览版", If(v.StartsWithF("b1."), "远古版本", v))).ToList
+                                               Select(Function(v) If(v.Contains("-"), v.BeforeFirst("-") & " 预览版", If(v.StartsWithF("b1."), "远古版本", v))).
+                                               Distinct.ToList
                     If GameVersions.Count > 1 Then
                         GameVersions = GameVersions.SortByComparison(AddressOf CompareVersionGE).ToList
                         If Type = CompType.ModPack Then GameVersions = New List(Of String) From {GameVersions(0)} '整合包理应只 “支持” 一个版本
@@ -1648,7 +1684,7 @@ Retry:
                 Next
             Else
                 'Modrinth
-                ResultJsonArray = DlModRequest($"https://api.modrinth.com/v2/project/{ProjectId}/version")
+                ResultJsonArray = DlModRequest($"https://api.modrinth.com/v2/project/{ProjectId}/version?include_changelog=false")
             End If
             CompFilesCache(ProjectId) = ResultJsonArray.Select(Function(a) New CompFile(a, TargetProject.Type)).
                 Where(Function(a) a.Available).ToList.

+ 3 - 3
Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb

@@ -1176,17 +1176,17 @@
                     Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 10))
                     Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
                 Case 1
-                    Urls.Add(New KeyValuePair(Of String, Integer)(Url, 10)) '至少 10s,要不然有时候远端服务器来不及完成
+                    Urls.Add(New KeyValuePair(Of String, Integer)(Url, If(Url.Contains("modrinth"), 20, 10))) '至少 20s,要不然 Modrinth 返回不过来
                     Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 10))
                     Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
                     Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 30))
                 Case Else
-                    Urls.Add(New KeyValuePair(Of String, Integer)(Url, 10))
+                    Urls.Add(New KeyValuePair(Of String, Integer)(Url, If(Url.Contains("modrinth"), 20, 10)))
                     Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
                     Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 30))
             End Select
         Else
-            Urls.Add(New KeyValuePair(Of String, Integer)(Url, 10))
+            Urls.Add(New KeyValuePair(Of String, Integer)(Url, If(Url.Contains("modrinth"), 20, 10)))
             Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
         End If
         Dim Exs As String = ""

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

@@ -95,6 +95,7 @@
             Try
                 '确定文件存在
                 If Not File.Exists(PathJava) Then Throw New FileNotFoundException("未找到 java.exe 文件", PathJava)
+                If PathJava.ContainsF("finalshell", True) Then Throw New Exception("不兼容 FinalShell 的 Java") '#8080
                 If File.Exists(PathFolder & "pdf-bookmark") Then Throw New Exception("不兼容 PDF Bookmark 的 Java") '#5326
                 IsJre = Not File.Exists(PathFolder & "javac.exe")
                 '运行 -version

+ 68 - 34
Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb

@@ -1314,40 +1314,6 @@ Retry:
 
     Private McLaunchArgument As String
 
-    ''' <summary>
-    ''' 释放 Java Wrapper 并返回完整文件路径。
-    ''' </summary>
-    Public Function ExtractJavaWrapper() As String
-        Dim WrapperPath As String = PathPure & "JavaWrapper.jar"
-        Log("[Java] 选定的 Java Wrapper 路径:" & WrapperPath)
-        SyncLock ExtractJavaWrapperLock '避免 OptiFine 和 Forge 安装时同时释放 Java Wrapper 导致冲突
-            Try
-                WriteFile(WrapperPath, GetResources("JavaWrapper"))
-            Catch ex As Exception
-                If File.Exists(WrapperPath) Then
-                    '因为未知原因 Java Wrapper 可能变为只读文件(#4243)
-                    Log(ex, "Java Wrapper 文件释放失败,但文件已存在,将在删除后尝试重新生成", LogLevel.Developer)
-                    Try
-                        File.Delete(WrapperPath)
-                        WriteFile(WrapperPath, GetResources("JavaWrapper"))
-                    Catch ex2 As Exception
-                        Log(ex2, "Java Wrapper 文件重新释放失败,将尝试更换文件名重新生成", LogLevel.Developer)
-                        WrapperPath = PathPure & "JavaWrapper2.jar"
-                        Try
-                            WriteFile(WrapperPath, GetResources("JavaWrapper"))
-                        Catch ex3 As Exception
-                            Throw New FileNotFoundException("释放 Java Wrapper 最终尝试失败", ex3)
-                        End Try
-                    End Try
-                Else
-                    Throw New FileNotFoundException("释放 Java Wrapper 失败", ex)
-                End If
-            End Try
-        End SyncLock
-        Return WrapperPath
-    End Function
-    Private ExtractJavaWrapperLock As New Object
-
     '主方法,合并 Jvm、Game、Replace 三部分的参数数据
     Private Sub McLaunchArgumentMain(Loader As LoaderTask(Of String, List(Of McLibToken)))
         McLaunchLog("开始获取 Minecraft 启动参数")
@@ -1393,6 +1359,8 @@ Retry:
         '自定义
         Dim ArgumentGame As String = Setup.Get("VersionAdvanceGame", Instance:=McInstanceSelected)
         Arguments += " " & ArgumentReplace(If(ArgumentGame = "", Setup.Get("LaunchAdvanceGame"), ArgumentGame))
+        'GC
+        Arguments = ProcessGCArguments(Arguments, McLaunchJavaSelected, McInstanceSelected)
         '进行参数替换
         Dim ReplaceArguments = McLaunchArgumentsReplace(McInstanceSelected, Loader)
         If String.IsNullOrWhiteSpace(ReplaceArguments("${version_type}")) Then
@@ -1754,6 +1722,72 @@ NextInstance:
         Return GameArguments
     End Function
 
+    '工具方法
+
+    ''' <summary>
+    ''' 释放 Java Wrapper 并返回完整文件路径。
+    ''' </summary>
+    Public Function ExtractJavaWrapper() As String
+        Dim WrapperPath As String = PathPure & "JavaWrapper.jar"
+        Log("[Java] 选定的 Java Wrapper 路径:" & WrapperPath)
+        Static Lock As New Object
+        SyncLock Lock '避免 OptiFine 和 Forge 安装时同时释放 Java Wrapper 导致冲突
+            Try
+                WriteFile(WrapperPath, GetResources("JavaWrapper"))
+            Catch ex As Exception
+                If File.Exists(WrapperPath) Then
+                    '因为未知原因 Java Wrapper 可能变为只读文件(#4243)
+                    Log(ex, "Java Wrapper 文件释放失败,但文件已存在,将在删除后尝试重新生成", LogLevel.Developer)
+                    Try
+                        File.Delete(WrapperPath)
+                        WriteFile(WrapperPath, GetResources("JavaWrapper"))
+                    Catch ex2 As Exception
+                        Log(ex2, "Java Wrapper 文件重新释放失败,将尝试更换文件名重新生成", LogLevel.Developer)
+                        WrapperPath = PathPure & "JavaWrapper2.jar"
+                        Try
+                            WriteFile(WrapperPath, GetResources("JavaWrapper"))
+                        Catch ex3 As Exception
+                            Throw New FileNotFoundException("释放 Java Wrapper 最终尝试失败", ex3)
+                        End Try
+                    End Try
+                Else
+                    Throw New FileNotFoundException("释放 Java Wrapper 失败", ex)
+                End If
+            End Try
+        End SyncLock
+        Return WrapperPath
+    End Function
+    ''' <summary>
+    ''' 根据设置的 GC 方式返回对应的 JVM 参数。
+    ''' </summary>
+    Private Function ProcessGCArguments(Arguments As String, SelectedJava As JavaEntry, Optional TargetInstance As McInstance = Nothing) As String
+        '0:在 Java 21+ 使用分代 ZGC,20~15 使用非分代的 ZGC,14- 使用 G1GC
+        '1:在 Java 21+ 使用分代 ZGC,20- 使用 G1GC
+        '2:仅 G1GC
+        '3:不指定
+        Dim SetupType As Integer = Setup.Get("LaunchAdvanceGC")
+        If TargetInstance IsNot Nothing AndAlso Setup.Get("VersionAdvanceGC", TargetInstance) > 0 Then SetupType = Setup.Get("VersionAdvanceGC", TargetInstance) - 1 '去掉默认
+        If SetupType = 3 Then Return Arguments.Trim '不指定时直接返回
+        Dim UseG1GC As Boolean =
+             (SetupType = 0 AndAlso SelectedJava.MajorVersion < 15) OrElse
+             (SetupType = 1 AndAlso SelectedJava.MajorVersion < 21) OrElse
+             SetupType = 2
+        McLaunchLog($"GC 设置:{SetupType},选取 {If(UseG1GC, "G1GC", "ZGC")},Java 版本:{SelectedJava.MajorVersion}")
+        '移除
+        Arguments = RegexReplace(Arguments,
+            "( )*-XX:[+-]?(Use\w+GC|ZGenerational|UseCompactObjectHeaders|G1\w+Percent|G1\w+Size|MaxGCPauseMillis)(=[^\s]+)?", "").Trim
+        '添加
+        If UseG1GC Then
+            Arguments = Arguments.Replace("-XX:+UnlockExperimentalVMOptions", "")
+            Arguments = "-XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M " + Arguments
+        Else
+            Arguments = "-XX:+UseZGC " + Arguments
+            If SelectedJava.MajorVersion = 21 OrElse SelectedJava.MajorVersion = 22 Then Arguments = "-XX:+ZGenerational " + Arguments 'Java 23 起默认启用分代 ZGC,不需要再添加参数
+            If SelectedJava.MajorVersion >= 25 Then Arguments = "-XX:+UseCompactObjectHeaders " + Arguments
+        End If
+        Return Arguments.Trim
+    End Function
+
 #End Region
 
 #Region "解压 Natives"

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

@@ -1426,7 +1426,7 @@ OnLoaded:
             '确认最新版本,若为快照则加入常用列表
             Dim LargestInstance As McInstance = InstanceList.
                 Where(Function(v) v.State = McInstanceState.Original OrElse v.State = McInstanceState.Snapshot).
-                MaxOf(Function(v) v.ReleaseTime)
+                MaxBy(Function(v) v.ReleaseTime)
             If LargestInstance IsNot Nothing AndAlso LargestInstance.State = McInstanceState.Snapshot Then
                 InstanceUseful.Add(LargestInstance)
                 InstanceList.Remove(LargestInstance)

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

@@ -636,9 +636,8 @@ Retry:
         Dim Request As New McInstallRequest With {.NewInstanceName = InstanceName, .VersionFolder = $"{McFolderSelected}versions\{InstanceName}\"}
         For Each Component As JObject In PackJson("components")
             If Not Component.ContainsKey("uid") Then Continue For
-            Select Case Component("uid").ToString
-                Case "org.lwjgl"
-                    Log("[ModPack] 已跳过 LWJGL 项")
+            Dim UID As String = Component("uid").ToString
+            Select Case UID
                 Case "net.minecraft"
                     Request.MinecraftName = Component("version")
                 Case "net.minecraftforge"
@@ -647,9 +646,13 @@ Retry:
                     Request.NeoForgeVersion = Component("version")
                 Case "net.fabricmc.fabric-loader"
                     Request.FabricVersion = Component("version")
-                Case Else
                     'Case "org.quiltmc.quilt-loader" 'eg. 1.0.0
-                    NotifyIncompatibleLoader(Component("uid"))
+                Case Else
+                    If UID.StartsWithF("org.lwjgl") Then '#8210
+                        Log("[ModPack] 已跳过 LWJGL 项:" & UID)
+                    Else
+                        NotifyIncompatibleLoader(UID)
+                    End If
             End Select
         Next
         '构造加载器

+ 3 - 5
Plain Craft Launcher 2/Modules/ModMusic.vb

@@ -283,9 +283,9 @@
             Try
                 Reader = New NAudio.Wave.AudioFileReader(MusicCurrent)
             Catch ex As Exception
-                Log(ex,"[Music] 使用 AudioFileReader 加载音频文件失败,将换用 Media Foundation 加载音频文件。")
+                Log(ex, "使用 AudioFileReader 加载音频文件失败,换用 MediaFoundationReader 重试", LogLevel.Developer)
+                Reader = New NAudio.Wave.MediaFoundationReader(MusicCurrent)
             End Try
-            Reader = New NAudio.Wave.MediaFoundationReader(MusicCurrent)
             CurrentWave.Init(Reader)
             CurrentWave.Play()
             '第一次打开的暂停
@@ -316,9 +316,7 @@
                 Hint("由于音频设备变更,音乐播放功能在重启 PCL 后才能恢复!", HintType.Red)
                 Thread.Sleep(1000000000)
             End If
-            If ex.Message.Contains("Got a frame at sample rate") OrElse ex.Message.Contains("does not support changes to") Then
-                Hint("播放音乐失败(" & GetFileNameFromPath(MusicCurrent) & "):PCL 不支持播放音频属性在中途发生变化的音乐", HintType.Red)
-            ElseIf Not (MusicCurrent.EndsWithF(".wav", True) OrElse MusicCurrent.EndsWithF(".mp3", True) OrElse MusicCurrent.EndsWithF(".flac", True)) OrElse
+            If Not (MusicCurrent.EndsWithF(".wav", True) OrElse MusicCurrent.EndsWithF(".mp3", True) OrElse MusicCurrent.EndsWithF(".flac", True)) OrElse
                 ex.Message.Contains("0xC00D36C4") Then '#5096:不支持给定的 URL 的字节流类型。 (异常来自 HRESULT:0xC00D36C4)
                 Hint("播放音乐失败(" & GetFileNameFromPath(MusicCurrent) & "):PCL 可能不支持此音乐格式,请将格式转换为 .wav、.mp3 或 .flac 后再试", HintType.Red)
             Else

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

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

+ 32 - 2
Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.vb

@@ -359,8 +359,38 @@ GroupDone:
                         If Not Instance.IsLoaded Then Instance.Load()
                         '只对 Mod 和数据包进行版本检测
                         If File.Type = CompType.Mod OrElse File.Type = CompType.DataPack Then
-                            If File.GameVersions.Any(Function(v) v.Contains(".")) AndAlso
-                               Not File.GameVersions.Any(Function(v) v.Contains(".") AndAlso v = Instance.Version.VanillaName) Then Return False
+                            If Not File.GameVersions.Any( '判断是否有任何一个版本匹配
+                            Function(FileVersion)
+                                Dim FileIsSnapshot As Boolean = FileVersion.Contains("预览版") OrElse Not FileVersion.Contains(".")
+                                Dim InstanceIsSnapshot As Boolean = Instance.Version.VanillaName.Contains("snapshot") OrElse Not Instance.Version.VanillaName.Contains(".")
+                                If FileIsSnapshot <> InstanceIsSnapshot Then
+                                    '只有一种是预览版
+                                    Return False
+                                ElseIf Not FileIsSnapshot AndAlso Not InstanceIsSnapshot Then
+                                    '都不是预览版
+                                    Return FileVersion = Instance.Version.VanillaName
+                                Else
+                                    '都是预览版
+                                    Dim FileIsNewFormat As Boolean = FileVersion.Contains(".") AndAlso Val(FileVersion.BeforeFirst(".")) > 1
+                                    Dim InstanceIsNewFormat As Boolean = Instance.Version.Drop > 250
+                                    If FileIsNewFormat <> InstanceIsNewFormat Then
+                                        '只有一种是新格式快照
+                                        Return False
+                                    ElseIf FileIsNewFormat AndAlso InstanceIsNewFormat Then
+                                        '都是新格式快照
+                                        Return FileVersion.BeforeFirst(" ") = Instance.Version.VanillaName.BeforeFirst("-")
+                                    Else
+                                        '都是旧格式快照
+                                        If FileVersion.Contains("w") AndAlso Instance.Version.VanillaName.Contains("w") Then
+                                            '都是 w 快照
+                                            Return FileVersion = Instance.Version.VanillaName
+                                        Else
+                                            '不全是 w 快照
+                                            Return True '只能假定相同,无法判断
+                                        End If
+                                    End If
+                                End If
+                            End Function) Then Return False
                         End If
                         '加载器
                         If Not AllowedLoaders.Any() Then Return True '无要求

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

@@ -254,7 +254,7 @@ echo 你可以在 PCL 的 [设置 → 启动选项] 中查看已安装的 java
 echo ------------------------------
 echo 如果提示 ""You need to agree to the EULA in order to run the server"",请打开 eula.txt,按说明阅读并同意 Minecraft EULA 后,将该文件最后一行中的 eula=false 改为 eula=true。
 echo ------------------------------
-""java"" -server -XX:+UseG1GC -Xmx4096M -Xms1024M -XX:+UseCompressedOops -jar {Id}-server.jar nogui
+""java"" -server -XX:+UseG1GC -Xmx6144M -Xms1024M -jar {Id}-server.jar nogui
 echo ----------------------
 echo 服务端已停止。
 pause"
@@ -2102,7 +2102,7 @@ Retry:
         Dim OptiFineAsMod As Boolean = Request.OptiFineEntry IsNot Nothing AndAlso Modable '选择了 OptiFine 与任意 Mod 加载器
         If OptiFineAsMod Then
             Log("[Download] OptiFine 将作为 Mod 进行下载")
-            If Request.LiteLoaderEntry IsNot Nothing
+            If Request.LiteLoaderEntry IsNot Nothing Then
                 OptiFineFolder = ModsTempFolder & Request.MinecraftName & "\" '#8147
             Else
                 OptiFineFolder = ModsTempFolder

+ 1 - 1
Plain Craft Launcher 2/Pages/PageInstance/PageInstanceExport.xaml

@@ -94,7 +94,7 @@
                                     <local:ExportOption 
                                 Title="整合包重要数据"
                                 Description="脚本文件、内置资源包、数据包等"
-                                Rules="addons/|multiblocked/|modpack-update-checker/|global_packs/|global_resource_packs/|global_data_packs/|optional_data_packs/|moonlight-global-datapacks/|maps/|icon.png|mods-resourcepacks/|matmos/|resource_assorts/|resource_assorts.json|patchouli_books/|datapacks/|kubejs*/|!kubejs*/probe/|!kubejs*/exported/|!kubejs*/jsconfig.json|!kubejs*/README.txt|openloader/|worldshape/|resources/|scripts/|structures/|fontfiles/|oresources/|packmenu/|craftpresence/|pointblanks/|template*/|!template*/playerdata/|!template*/stats/"
+                                Rules="hotai/|bansoukou/|addons/|multiblocked/|modpack-update-checker/|global_packs/|global_resource_packs/|global_data_packs/|optional_data_packs/|moonlight-global-datapacks/|maps/|icon.png|mods-resourcepacks/|matmos/|resource_assorts/|resource_assorts.json|patchouli_books/|datapacks/|kubejs*/|!kubejs*/probe/|!kubejs*/exported/|!kubejs*/jsconfig.json|!kubejs*/README.txt|openloader/|worldshape/|resources/|scripts/|structures/|fontfiles/|oresources/|packmenu/|craftpresence/|pointblanks/|template*/|!template*/playerdata/|!template*/stats/"
                                 DefaultChecked="True" />
                                 </local:MyCheckBox.Tag>
                             </local:MyCheckBox>

+ 1 - 3
Plain Craft Launcher 2/Pages/PageInstance/PageInstanceExport.xaml.vb

@@ -368,9 +368,7 @@ Public Class PageInstanceExport
             CheckOptionsPcl.Checked = Ini.GetOrDefault("IncludeLauncher", True)
             CheckOptionsPclCustom.Checked = Ini.GetOrDefault("IncludeLauncherCustom", True)
             CheckAdvancedInclude.Checked = Ini.GetOrDefault("DontCheckHostedAssets", False)
-            If Not CheckAdvancedInclude.Checked Then '#7979,加个特判
-                CheckAdvancedModrinth.Checked = Ini.GetOrDefault("ModrinthUploadMode", False)
-            End If
+            If Not CheckAdvancedInclude.Checked Then CheckAdvancedModrinth.Checked = Ini.GetOrDefault("ModrinthUploadMode", False) '#7979,加个特判
             ConfigPackPath = Ini.GetOrDefault("PackPath", Nothing)
             '导出内容段
             RulesOverrides = Segments(1).Replace(vbCr, vbLf).Replace(vbLf & vbLf, vbLf).Split(vbLf).ToList

+ 10 - 10
Plain Craft Launcher 2/Pages/PageInstance/PageInstanceMod.xaml.vb

@@ -850,22 +850,22 @@ Install:
             '构造请求
             Dim QueryList As New List(Of SearchEntry(Of McMod))
             For Each Entry As McMod In McModLoader.Output
-                Dim SearchSource As New List(Of KeyValuePair(Of String, Double))
-                SearchSource.Add(New KeyValuePair(Of String, Double)(Entry.DisplayName, 1))
-                SearchSource.Add(New KeyValuePair(Of String, Double)(Entry.FileName, 1))
+                Dim SearchSources As New List(Of SearchSource)
+                SearchSources.Add(New SearchSource(Entry.DisplayName, 1))
+                SearchSources.Add(New SearchSource(Entry.FileName, 1))
                 If Entry.Version IsNot Nothing Then
-                    SearchSource.Add(New KeyValuePair(Of String, Double)(Entry.Version, 0.2))
+                    SearchSources.Add(New SearchSource(Entry.Version, 0.2))
                 End If
                 If Entry.Description IsNot Nothing AndAlso Entry.Description <> "" Then
-                    SearchSource.Add(New KeyValuePair(Of String, Double)(Entry.Description, 0.4))
+                    SearchSources.Add(New SearchSource(Entry.Description, 0.4))
                 End If
                 If Entry.Comp IsNot Nothing Then
-                    If Entry.Comp.RawName <> Entry.DisplayName Then SearchSource.Add(New KeyValuePair(Of String, Double)(Entry.Comp.RawName, 1))
-                    If Entry.Comp.TranslatedName <> Entry.Comp.RawName Then SearchSource.Add(New KeyValuePair(Of String, Double)(Entry.Comp.TranslatedName, 1))
-                    If Entry.Comp.Description <> Entry.Description Then SearchSource.Add(New KeyValuePair(Of String, Double)(Entry.Comp.Description, 0.4))
-                    SearchSource.Add(New KeyValuePair(Of String, Double)(String.Join("", Entry.Comp.Tags), 0.2))
+                    If Entry.Comp.RawName <> Entry.DisplayName Then SearchSources.Add(New SearchSource(Entry.Comp.RawName, 1))
+                    If Entry.Comp.TranslatedName <> Entry.Comp.RawName Then SearchSources.Add(New SearchSource(Entry.Comp.TranslatedName, 1))
+                    If Entry.Comp.Description <> Entry.Description Then SearchSources.Add(New SearchSource(Entry.Comp.Description, 0.4))
+                    SearchSources.Add(New SearchSource(String.Join("", Entry.Comp.Tags), 0.2))
                 End If
-                QueryList.Add(New SearchEntry(Of McMod) With {.Item = Entry, .SearchSource = SearchSource})
+                QueryList.Add(New SearchEntry(Of McMod) With {.Item = Entry, .SearchSource = SearchSources})
             Next
             '进行搜索
             SearchResult = Search(QueryList, SearchBox.Text, MaxBlurCount:=6, MinBlurSimilarity:=0.35).Select(Function(r) r.Item).ToList

+ 19 - 5
Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml

@@ -56,7 +56,7 @@
                     </Grid>
                 </StackPanel>
             </local:MyCard>
-            <local:MyCard Margin="0,0,0,15" Title="游戏内存">
+            <local:MyCard Margin="0,0,0,15" Title="内存分配">
                 <StackPanel Margin="25,40,25,15">
                     <local:MyHint x:Name="LabRamWarn" Text="32 位 Java 只能分配最多 1 GB 的内存。强烈建议换用 64 位的 Java!" Theme="Yellow" Margin="0,0,0,12" />
                     <Grid Margin="0,0,0,3">
@@ -204,6 +204,8 @@
                         <RowDefinition Height="9" />
                         <RowDefinition Height="28" />
                         <RowDefinition Height="9" />
+                        <RowDefinition Height="28" />
+                        <RowDefinition Height="9" />
                         <RowDefinition Height="31" />
                         <RowDefinition Height="Auto" />
                         <RowDefinition Height="Auto" />
@@ -213,12 +215,24 @@
                                      Height="100" AcceptsReturn="True" TextWrapping="Wrap" VerticalContentAlignment="Top" Padding="0,5" VerticalScrollBarVisibility="Auto" />
                     <TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="游戏参数" Margin="0,0,25,0" />
                     <local:MyTextBox x:Name="TextAdvanceGame" Grid.Row="2" Grid.ColumnSpan="2" Tag="VersionAdvanceGame" Grid.Column="1" ToolTip="文本框中的内容将会被直接拼合在启动参数的末尾。&#xa;例如,输入 --demo 则会以试玩模式启动游戏。&#xa;&#xa;支持 Minecraft 版本 JSON 中的字符串替换标记,例如 ${library_directory}。&#xa;也支持使用 PCL 的替换标记,在 更多 → 帮助 中搜索 “替换标记” 以了解用法。&#xa;&#xa;若留空,则跟随全局设置的值。" HintText="跟随全局设置" />
-                    <TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="启动前执行命令" Margin="0,0,25,3" />
-                    <local:MyTextBox x:Name="TextAdvanceRun" Grid.Row="4" Grid.ColumnSpan="2" Tag="VersionAdvanceRun" Grid.Column="1" HintText="" Margin="0,0,0,3"
+                    <TextBlock VerticalAlignment="Center" Grid.Row="4" HorizontalAlignment="Left" Text="内存管理" Margin="0,0,25,0" />
+                    <local:MyComboBox x:Name="ComboAdvanceGC" Grid.Row="4" Grid.ColumnSpan="2" Tag="VersionAdvanceGC" Grid.Column="1">
+                        <local:MyComboBoxItem Content="跟随全局设置" IsSelected="True" />
+                        <local:MyComboBoxItem Content="尽量使用 ZGC(激进)"
+                                              ToolTipService.BetweenShowDelay="0" ToolTip="在 Java 21+ 使用分代 ZGC,20~15 使用非分代的 ZGC,14- 使用 G1GC。&#xa;在 Java 25+ 额外添加 -XX:+UseCompactObjectHeaders。&#xa;&#xa;覆盖 “Java 虚拟机参数” 设置中的 GC 相关参数。" />
+                        <local:MyComboBoxItem Content="尽量使用分代 ZGC(平衡)"
+                                              ToolTipService.BetweenShowDelay="0" ToolTip="在 Java 21+ 使用分代 ZGC,20- 使用 G1GC。&#xa;在 Java 25+ 额外添加 -XX:+UseCompactObjectHeaders。&#xa;&#xa;覆盖 “Java 虚拟机参数” 设置中的 GC 相关参数。" />
+                        <local:MyComboBoxItem Content="仅 G1GC"
+                                              ToolTipService.BetweenShowDelay="0" ToolTip="固定使用以下参数:&#xa;-XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M&#xa;&#xa;覆盖 “Java 虚拟机参数” 设置中的 GC 相关参数。" />
+                        <local:MyComboBoxItem Content="不指定(可自定义)"
+                                              ToolTipService.BetweenShowDelay="0" ToolTip="不自动添加 GC 参数。&#xa;&#xa;仅当选择此项时,你可以在 “Java 虚拟机参数” 设置中手动添加 GC 参数。" />
+                    </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;&#xa;在 MC 启动前执行特定命令或程序,语法与 Windows 的命令提示符一致。&#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}options.txt&quot; :使用记事本打开该版本的设置文件&#xa;&#xa;涉及路径的操作最好都打上双引号,以避免路径中的空格导致运行失败。&#xa;执行命令时,命令行所在的目录是当前的 .minecraft 文件夹。" />
-                    <local:MyCheckBox Grid.Row="5" Grid.Column="1" x:Name="CheckAdvanceRunWait" Tag="VersionAdvanceRunWait" Visibility="Collapsed"
+                    <local:MyCheckBox Grid.Row="7" Grid.Column="1" x:Name="CheckAdvanceRunWait" Tag="VersionAdvanceRunWait" Visibility="Collapsed"
                                       Text="等待命令执行完成后再继续启动" Margin="0,5,0,0" />
-                    <StackPanel Margin="0,12,0,4" Grid.Row="6" Grid.ColumnSpan="2" HorizontalAlignment="Left">
+                    <StackPanel Margin="0,12,0,4" Grid.Row="8" Grid.ColumnSpan="2" HorizontalAlignment="Left">
                         <local:MyCheckBox Height="28" Text="禁止更新 Mod" x:Name="CheckAdvanceDisableModUpdate" Tag="VersionAdvanceDisableModUpdate"
                                           ToolTip="禁止为此版本更新 Mod,以防止整合包玩家误操作"
                                           ToolTipService.Placement="Right" />

+ 3 - 2
Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml.vb

@@ -51,6 +51,7 @@
             '高级设置
             TextAdvanceJvm.Text = Setup.Get("VersionAdvanceJvm", Instance:=PageInstanceLeft.Instance)
             TextAdvanceGame.Text = Setup.Get("VersionAdvanceGame", Instance:=PageInstanceLeft.Instance)
+            ComboAdvanceGC.SelectedIndex = Setup.Get("VersionAdvanceGC", Instance:=PageInstanceLeft.Instance)
             TextAdvanceRun.Text = Setup.Get("VersionAdvanceRun", Instance:=PageInstanceLeft.Instance)
             CheckAdvanceRunWait.Checked = Setup.Get("VersionAdvanceRunWait", Instance:=PageInstanceLeft.Instance)
             If Setup.Get("VersionAdvanceAssets", Instance:=PageInstanceLeft.Instance) = 2 Then
@@ -86,6 +87,7 @@
             Setup.Reset("VersionRamOptimize", Instance:=PageInstanceLeft.Instance)
             Setup.Reset("VersionAdvanceJvm", Instance:=PageInstanceLeft.Instance)
             Setup.Reset("VersionAdvanceGame", Instance:=PageInstanceLeft.Instance)
+            Setup.Reset("VersionAdvanceGC", Instance:=PageInstanceLeft.Instance)
             Setup.Reset("VersionAdvanceAssets", Instance:=PageInstanceLeft.Instance)
             Setup.Reset("VersionAdvanceAssetsV2", Instance:=PageInstanceLeft.Instance)
             Setup.Reset("VersionAdvanceJava", Instance:=PageInstanceLeft.Instance)
@@ -93,7 +95,6 @@
             Setup.Reset("VersionAdvanceRunWait", Instance:=PageInstanceLeft.Instance)
             Setup.Reset("VersionAdvanceDisableJLW", Instance:=PageInstanceLeft.Instance)
             Setup.Reset("VersionAdvanceDisableModUpdate", Instance:=PageInstanceLeft.Instance)
-
             Setup.Reset("VersionArgumentJavaSelect", Instance:=PageInstanceLeft.Instance)
             JavaSearchLoader.Start(IsForceRestart:=True)
 
@@ -121,7 +122,7 @@
     Private Shared Sub SliderChange(sender As MySlider, e As Object) Handles SliderRamCustom.Change
         If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Value, Instance:=PageInstanceLeft.Instance)
     End Sub
-    Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboRamOptimize.SelectionChanged
+    Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboRamOptimize.SelectionChanged, ComboAdvanceGC.SelectionChanged
         If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex, Instance:=PageInstanceLeft.Instance)
     End Sub
     Private Shared Sub CheckBoxLikeComboChange(sender As MyComboBox, e As Object) Handles ComboArgumentIndieV2.SelectionChanged

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

@@ -88,7 +88,7 @@ Public Class PageLaunchRight
                         Url = "https://pcl-bmcl.milu.ink/"
                     Case 7
                         Log("[Page] 主页预设:主页市场")
-                        Url = "https://pclhomeplazaoss.lingyunawa.top:26994/d/Homepages/JingHai-Lingyun/Custom.xaml"
+                        Url = "https://pclhomeplazaoss.lingyunawa.top:26994/p/Homepages/Homepage.Market/Custom.xaml"
                     Case 8
                         Log("[Page] 主页预设:更新日志")
                         Url = "https://pclhomeplazaoss.lingyunawa.top:26994/d/Homepages/Joker2184/UpdateHomepage.xaml"

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

@@ -116,793 +116,572 @@
             <local:MyCard Margin="0,0,0,15" Title="赞助者">
                 <StackPanel Margin="25,40,19,20">
                     <TextBlock HorizontalAlignment="Left" Text="以下是近期的高级赞助者们!感谢大家对 PCL 的支持!!!" Margin="0,0,25,5.5" TextTrimming="None" TextWrapping="WrapWithOverflow" />
-                    <WrapPanel Margin="0,0,0,10">
                        <TextBlock Margin="0,1.5,6,0" Text="." />
-                        <TextBlock Margin="0,1.5,6,0" Text="." />
-                        <TextBlock Margin="0,1.5,6,0" Text="༷" />
-                        <TextBlock Margin="0,1.5,6,0" Text="้" />
-                        <TextBlock Margin="0,1.5,6,0" Text="V" />
-                        <TextBlock Margin="0,1.5,6,0" Text="V" />
-                        <TextBlock Margin="0,1.5,6,0" Text="A" />
-                        <TextBlock Margin="0,1.5,6,0" Text="T." />
-                        <TextBlock Margin="0,1.5,6,0" Text="Li" />
-                        <TextBlock Margin="0,1.5,6,0" Text="LI" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ai" />
-                        <TextBlock Margin="0,1.5,6,0" Text="qi" />
-                        <TextBlock Margin="0,1.5,6,0" Text="张" />
-                        <TextBlock Margin="0,1.5,6,0" Text="辞" />
+                    <WrapPanel Margin="0,0,0,10">
                        <TextBlock Margin="0,1.5,6,0" Text="F" />
+                        <TextBlock Margin="0,1.5,6,0" Text="z" />
+                        <TextBlock Margin="0,1.5,6,0" Text="y" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Y" />
+                        <TextBlock Margin="0,1.5,6,0" Text="2" />
+                        <TextBlock Margin="0,1.5,6,0" Text="X" />
+                        <TextBlock Margin="0,1.5,6,0" Text="L." />
+                        <TextBlock Margin="0,1.5,6,0" Text="yi" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Q" />
+                        <TextBlock Margin="0,1.5,6,0" Text="寄" />
+                        <TextBlock Margin="0,1.5,6,0" Text="ㅤ" />
                         <TextBlock Margin="0,1.5,6,0" Text="vv" />
-                        <TextBlock Margin="0,1.5,6,0" Text="逢" />
-                        <TextBlock Margin="0,1.5,6,0" Text="墨" />
-                        <TextBlock Margin="0,1.5,6,0" Text="溈" />
-                        <TextBlock Margin="0,1.5,6,0" Text="祖" />
-                        <TextBlock Margin="0,1.5,6,0" Text="里" />
-                        <TextBlock Margin="0,1.5,6,0" Text="瓷" />
-                        <TextBlock Margin="0,1.5,6,0" Text="风" />
+                        <TextBlock Margin="0,1.5,6,0" Text="雨" />
+                        <TextBlock Margin="0,1.5,6,0" Text="念" />
+                        <TextBlock Margin="0,1.5,6,0" Text="覹" />
+                        <TextBlock Margin="0,1.5,6,0" Text="咕" />
+                        <TextBlock Margin="0,1.5,6,0" Text="狼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="甘" />
                         <TextBlock Margin="0,1.5,6,0" Text="。" />
-                        <TextBlock Margin="0,1.5,6,0" Text="怀" />
-                        <TextBlock Margin="0,1.5,6,0" Text="吧" />
-                        <TextBlock Margin="0,1.5,6,0" Text="木" />
-                        <TextBlock Margin="0,1.5,6,0" Text="彬" />
-                        <TextBlock Margin="0,1.5,6,0" Text="江" />
-                        <TextBlock Margin="0,1.5,6,0" Text="?" />
-                        <TextBlock Margin="0,1.5,6,0" Text="殇" />
-                        <TextBlock Margin="0,1.5,6,0" Text="烛" />
-                        <TextBlock Margin="0,1.5,6,0" Text="我" />
-                        <TextBlock Margin="0,1.5,6,0" Text="晚" />
-                        <TextBlock Margin="0,1.5,6,0" Text="李" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鱼" />
-                        <TextBlock Margin="0,1.5,6,0" Text="云" />
-                        <TextBlock Margin="0,1.5,6,0" Text="桐" />
-                        <TextBlock Margin="0,1.5,6,0" Text="啥" />
-                        <TextBlock Margin="0,1.5,6,0" Text="猪" />
-                        <TextBlock Margin="0,1.5,6,0" Text="五" />
-                        <TextBlock Margin="0,1.5,6,0" Text="星" />
-                        <TextBlock Margin="0,1.5,6,0" Text="虑" />
-                        <TextBlock Margin="0,1.5,6,0" Text="畿" />
-                        <TextBlock Margin="0,1.5,6,0" Text="齊" />
-                        <TextBlock Margin="0,1.5,6,0" Text="宫" />
+                        <TextBlock Margin="0,1.5,6,0" Text="cx" />
+                        <TextBlock Margin="0,1.5,6,0" Text="璃" />
+                        <TextBlock Margin="0,1.5,6,0" Text="几" />
+                        <TextBlock Margin="0,1.5,6,0" Text="宏" />
+                        <TextBlock Margin="0,1.5,6,0" Text="凯" />
+                        <TextBlock Margin="0,1.5,6,0" Text="ht" />
+                        <TextBlock Margin="0,1.5,6,0" Text="枫" />
+                        <TextBlock Margin="0,1.5,6,0" Text="龙" />
+                        <TextBlock Margin="0,1.5,6,0" Text=":" />
+                        <TextBlock Margin="0,1.5,6,0" Text="夕" />
                         <TextBlock Margin="0,1.5,6,0" Text="徐" />
-                        <TextBlock Margin="0,1.5,6,0" Text="咕" />
-                        <TextBlock Margin="0,1.5,6,0" Text="安" />
-                        <TextBlock Margin="0,1.5,6,0" Text="霖" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Yy" />
-                        <TextBlock Margin="0,1.5,6,0" Text="33" />
-                        <TextBlock Margin="0,1.5,6,0" Text="尘." />
-                        <TextBlock Margin="0,1.5,6,0" Text="橘." />
-                        <TextBlock Margin="0,1.5,6,0" Text="3C" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ljh" />
-                        <TextBlock Margin="0,1.5,6,0" Text=" 忆" />
-                        <TextBlock Margin="0,1.5,6,0" Text="op" />
-                        <TextBlock Margin="0,1.5,6,0" Text="sjk" />
-                        <TextBlock Margin="0,1.5,6,0" Text="👾" />
-                        <TextBlock Margin="0,1.5,6,0" Text="AZ" />
-                        <TextBlock Margin="0,1.5,6,0" Text="😑" />
-                        <TextBlock Margin="0,1.5,6,0" Text="cfy" />
-                        <TextBlock Margin="0,1.5,6,0" Text="wg" />
-                        <TextBlock Margin="0,1.5,6,0" Text="jqk" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ccy" />
-                        <TextBlock Margin="0,1.5,6,0" Text="htz" />
-                        <TextBlock Margin="0,1.5,6,0" Text="yyy" />
-                        <TextBlock Margin="0,1.5,6,0" Text="tail" />
-                        <TextBlock Margin="0,1.5,6,0" Text="fall" />
-                        <TextBlock Margin="0,1.5,6,0" Text="mo" />
-                        <TextBlock Margin="0,1.5,6,0" Text="4策" />
-                        <TextBlock Margin="0,1.5,6,0" Text="WY" />
-                        <TextBlock Margin="0,1.5,6,0" Text="yyb" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小P" />
-                        <TextBlock Margin="0,1.5,6,0" Text="yhx" />
-                        <TextBlock Margin="0,1.5,6,0" Text="fdd" />
+                        <TextBlock Margin="0,1.5,6,0" Text="谶" />
+                        <TextBlock Margin="0,1.5,6,0" Text="靕" />
+                        <TextBlock Margin="0,1.5,6,0" Text="稳" />
+                        <TextBlock Margin="0,1.5,6,0" Text="文" />
+                        <TextBlock Margin="0,1.5,6,0" Text="无" />
+                        <TextBlock Margin="0,1.5,6,0" Text="莫" />
+                        <TextBlock Margin="0,1.5,6,0" Text="尊" />
+                        <TextBlock Margin="0,1.5,6,0" Text="埃" />
+                        <TextBlock Margin="0,1.5,6,0" Text="jw" />
+                        <TextBlock Margin="0,1.5,6,0" Text="ftt" />
+                        <TextBlock Margin="0,1.5,6,0" Text="ZZ" />
+                        <TextBlock Margin="0,1.5,6,0" Text="zjx" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Lie" />
+                        <TextBlock Margin="0,1.5,6,0" Text="sjg" />
+                        <TextBlock Margin="0,1.5,6,0" Text="hly" />
+                        <TextBlock Margin="0,1.5,6,0" Text="l y y" />
+                        <TextBlock Margin="0,1.5,6,0" Text="陈jj" />
+                        <TextBlock Margin="0,1.5,6,0" Text="xixi" />
+                        <TextBlock Margin="0,1.5,6,0" Text="bre" />
+                        <TextBlock Margin="0,1.5,6,0" Text="eye" />
+                        <TextBlock Margin="0,1.5,6,0" Text="O.o" />
                         <TextBlock Margin="0,1.5,6,0" Text="ZYL" />
-                        <TextBlock Margin="0,1.5,6,0" Text="lIlIlI" />
-                        <TextBlock Margin="0,1.5,6,0" Text="666" />
-                        <TextBlock Margin="0,1.5,6,0" Text="JXP" />
-                        <TextBlock Margin="0,1.5,6,0" Text="123" />
-                        <TextBlock Margin="0,1.5,6,0" Text="fjvg" />
-                        <TextBlock Margin="0,1.5,6,0" Text="LZX" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Liks" />
-                        <TextBlock Margin="0,1.5,6,0" Text="gyn" />
-                        <TextBlock Margin="0,1.5,6,0" Text="WH" />
-                        <TextBlock Margin="0,1.5,6,0" Text="saie" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Van" />
-                        <TextBlock Margin="0,1.5,6,0" Text="rem" />
-                        <TextBlock Margin="0,1.5,6,0" Text="FEN" />
-                        <TextBlock Margin="0,1.5,6,0" Text="mio" />
-                        <TextBlock Margin="0,1.5,6,0" Text="797." />
-                        <TextBlock Margin="0,1.5,6,0" Text="hhh" />
-                        <TextBlock Margin="0,1.5,6,0" Text="xwp" />
-                        <TextBlock Margin="0,1.5,6,0" Text="浮生" />
-                        <TextBlock Margin="0,1.5,6,0" Text="虎鲸" />
-                        <TextBlock Margin="0,1.5,6,0" Text="無名" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小郭" />
-                        <TextBlock Margin="0,1.5,6,0" Text="丘夕" />
-                        <TextBlock Margin="0,1.5,6,0" Text="泡崽" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小马" />
-                        <TextBlock Margin="0,1.5,6,0" Text="柯柯" />
-                        <TextBlock Margin="0,1.5,6,0" Text="星空" />
-                        <TextBlock Margin="0,1.5,6,0" Text="梦见" />
-                        <TextBlock Margin="0,1.5,6,0" Text="九一" />
-                        <TextBlock Margin="0,1.5,6,0" Text="冬司" />
-                        <TextBlock Margin="0,1.5,6,0" Text="君知" />
+                        <TextBlock Margin="0,1.5,6,0" Text="qixi" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Rou" />
+                        <TextBlock Margin="0,1.5,6,0" Text="wyb" />
+                        <TextBlock Margin="0,1.5,6,0" Text="qqq" />
+                        <TextBlock Margin="0,1.5,6,0" Text="zikil" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Kiro" />
+                        <TextBlock Margin="0,1.5,6,0" Text="流明" />
+                        <TextBlock Margin="0,1.5,6,0" Text="姜耸" />
+                        <TextBlock Margin="0,1.5,6,0" Text="柏枫" />
+                        <TextBlock Margin="0,1.5,6,0" Text="柒绪" />
+                        <TextBlock Margin="0,1.5,6,0" Text="xsqs" />
+                        <TextBlock Margin="0,1.5,6,0" Text="啊?" />
+                        <TextBlock Margin="0,1.5,6,0" Text="无风" />
+                        <TextBlock Margin="0,1.5,6,0" Text="听雨" />
+                        <TextBlock Margin="0,1.5,6,0" Text="方格" />
                         <TextBlock Margin="0,1.5,6,0" Text="旋叶" />
-                        <TextBlock Margin="0,1.5,6,0" Text="浮客" />
-                        <TextBlock Margin="0,1.5,6,0" Text="白狼" />
-                        <TextBlock Margin="0,1.5,6,0" Text="雨缘" />
-                        <TextBlock Margin="0,1.5,6,0" Text="花花" />
-                        <TextBlock Margin="0,1.5,6,0" Text="随岷" />
-                        <TextBlock Margin="0,1.5,6,0" Text="白景" />
-                        <TextBlock Margin="0,1.5,6,0" Text="晴空" />
-                        <TextBlock Margin="0,1.5,6,0" Text="轩冕" />
-                        <TextBlock Margin="0,1.5,6,0" Text="仓鼠" />
-                        <TextBlock Margin="0,1.5,6,0" Text="天斗" />
-                        <TextBlock Margin="0,1.5,6,0" Text="纸凉" />
-                        <TextBlock Margin="0,1.5,6,0" Text="逆是" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小羊" />
-                        <TextBlock Margin="0,1.5,6,0" Text="星云" />
-                        <TextBlock Margin="0,1.5,6,0" Text="呼吸" />
-                        <TextBlock Margin="0,1.5,6,0" Text="城关" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小罗" />
-                        <TextBlock Margin="0,1.5,6,0" Text="创世" />
-                        <TextBlock Margin="0,1.5,6,0" Text="午领" />
-                        <TextBlock Margin="0,1.5,6,0" Text="竹窝" />
-                        <TextBlock Margin="0,1.5,6,0" Text="龍炏" />
-                        <TextBlock Margin="0,1.5,6,0" Text="震震" />
-                        <TextBlock Margin="0,1.5,6,0" Text="笔头" />
-                        <TextBlock Margin="0,1.5,6,0" Text="木易" />
-                        <TextBlock Margin="0,1.5,6,0" Text="璃鸢" />
-                        <TextBlock Margin="0,1.5,6,0" Text="绿洲" />
-                        <TextBlock Margin="0,1.5,6,0" Text="驭浪" />
-                        <TextBlock Margin="0,1.5,6,0" Text="顾璟" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小仙" />
-                        <TextBlock Margin="0,1.5,6,0" Text="你猜" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小久" />
-                        <TextBlock Margin="0,1.5,6,0" Text="御华" />
-                        <TextBlock Margin="0,1.5,6,0" Text="龑曦" />
-                        <TextBlock Margin="0,1.5,6,0" Text="誓言" />
-                        <TextBlock Margin="0,1.5,6,0" Text="知勤" />
-                        <TextBlock Margin="0,1.5,6,0" Text="枫芫" />
-                        <TextBlock Margin="0,1.5,6,0" Text="过客" />
-                        <TextBlock Margin="0,1.5,6,0" Text="清辉" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鹿泽" />
-                        <TextBlock Margin="0,1.5,6,0" Text="浴风" />
-                        <TextBlock Margin="0,1.5,6,0" Text="如年" />
-                        <TextBlock Margin="0,1.5,6,0" Text="四季" />
-                        <TextBlock Margin="0,1.5,6,0" Text="陌客" />
-                        <TextBlock Margin="0,1.5,6,0" Text="团团" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小智" />
-                        <TextBlock Margin="0,1.5,6,0" Text="袄橘" />
-                        <TextBlock Margin="0,1.5,6,0" Text="野夫" />
-                        <TextBlock Margin="0,1.5,6,0" Text="容易" />
-                        <TextBlock Margin="0,1.5,6,0" Text="请问" />
-                        <TextBlock Margin="0,1.5,6,0" Text="丂枧" />
-                        <TextBlock Margin="0,1.5,6,0" Text="十一" />
-                        <TextBlock Margin="0,1.5,6,0" Text="雪儿" />
-                        <TextBlock Margin="0,1.5,6,0" Text="星澜" />
-                        <TextBlock Margin="0,1.5,6,0" Text="入机" />
-                        <TextBlock Margin="0,1.5,6,0" Text="影逸" />
-                        <TextBlock Margin="0,1.5,6,0" Text="德丹" />
-                        <TextBlock Margin="0,1.5,6,0" Text="榭煜" />
-                        <TextBlock Margin="0,1.5,6,0" Text="江南" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不弃" />
-                        <TextBlock Margin="0,1.5,6,0" Text="秋水" />
-                        <TextBlock Margin="0,1.5,6,0" Text="辰溪" />
-                        <TextBlock Margin="0,1.5,6,0" Text="淺縹" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鱼板" />
-                        <TextBlock Margin="0,1.5,6,0" Text="三高" />
-                        <TextBlock Margin="0,1.5,6,0" Text="羽歌" />
-                        <TextBlock Margin="0,1.5,6,0" Text="素良" />
-                        <TextBlock Margin="0,1.5,6,0" Text="枷勒" />
-                        <TextBlock Margin="0,1.5,6,0" Text="茗茗" />
-                        <TextBlock Margin="0,1.5,6,0" Text="炢曜" />
-                        <TextBlock Margin="0,1.5,6,0" Text="昕瑀" />
-                        <TextBlock Margin="0,1.5,6,0" Text="靈籠" />
-                        <TextBlock Margin="0,1.5,6,0" Text="黑焰" />
-                        <TextBlock Margin="0,1.5,6,0" Text="落辰" />
-                        <TextBlock Margin="0,1.5,6,0" Text="圭璋" />
-                        <TextBlock Margin="0,1.5,6,0" Text="陌行" />
-                        <TextBlock Margin="0,1.5,6,0" Text="须地" />
-                        <TextBlock Margin="0,1.5,6,0" Text="筱雨" />
-                        <TextBlock Margin="0,1.5,6,0" Text="旧缘" />
-                        <TextBlock Margin="0,1.5,6,0" Text="九月" />
-                        <TextBlock Margin="0,1.5,6,0" Text="悠悠" />
-                        <TextBlock Margin="0,1.5,6,0" Text="染尘" />
-                        <TextBlock Margin="0,1.5,6,0" Text="白帝" />
-                        <TextBlock Margin="0,1.5,6,0" Text="幻恪" />
-                        <TextBlock Margin="0,1.5,6,0" Text="桓依" />
-                        <TextBlock Margin="0,1.5,6,0" Text="蓝枫" />
-                        <TextBlock Margin="0,1.5,6,0" Text="三青" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鸽所" />
-                        <TextBlock Margin="0,1.5,6,0" Text="言语" />
-                        <TextBlock Margin="0,1.5,6,0" Text="哈鲁" />
-                        <TextBlock Margin="0,1.5,6,0" Text="落白" />
-                        <TextBlock Margin="0,1.5,6,0" Text="明武" />
-                        <TextBlock Margin="0,1.5,6,0" Text="无限" />
-                        <TextBlock Margin="0,1.5,6,0" Text="叁誓" />
-                        <TextBlock Margin="0,1.5,6,0" Text="薄凉" />
-                        <TextBlock Margin="0,1.5,6,0" Text="枫萨" />
-                        <TextBlock Margin="0,1.5,6,0" Text="椰子" />
-                        <TextBlock Margin="0,1.5,6,0" Text="硕子" />
-                        <TextBlock Margin="0,1.5,6,0" Text="清甹" />
-                        <TextBlock Margin="0,1.5,6,0" Text="舍予" />
-                        <TextBlock Margin="0,1.5,6,0" Text="袭人" />
-                        <TextBlock Margin="0,1.5,6,0" Text="蜔亓" />
-                        <TextBlock Margin="0,1.5,6,0" Text="湘裳" />
-                        <TextBlock Margin="0,1.5,6,0" Text="堇梵" />
-                        <TextBlock Margin="0,1.5,6,0" Text="莫识" />
-                        <TextBlock Margin="0,1.5,6,0" Text="烨槿" />
-                        <TextBlock Margin="0,1.5,6,0" Text="枫月" />
-                        <TextBlock Margin="0,1.5,6,0" Text="柴愿" />
-                        <TextBlock Margin="0,1.5,6,0" Text="閮零" />
-                        <TextBlock Margin="0,1.5,6,0" Text="娑罗" />
-                        <TextBlock Margin="0,1.5,6,0" Text="百盏" />
-                        <TextBlock Margin="0,1.5,6,0" Text="云雀" />
-                        <TextBlock Margin="0,1.5,6,0" Text="付璠" />
-                        <TextBlock Margin="0,1.5,6,0" Text="夜空" />
-                        <TextBlock Margin="0,1.5,6,0" Text="戏子" />
-                        <TextBlock Margin="0,1.5,6,0" Text="玖颜" />
-                        <TextBlock Margin="0,1.5,6,0" Text="粽页" />
-                        <TextBlock Margin="0,1.5,6,0" Text="狐狐" />
-                        <TextBlock Margin="0,1.5,6,0" Text="和风" />
-                        <TextBlock Margin="0,1.5,6,0" Text="林嗳" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Dwy" />
-                        <TextBlock Margin="0,1.5,6,0" Text="baili" />
-                        <TextBlock Margin="0,1.5,6,0" Text="WIFI" />
-                        <TextBlock Margin="0,1.5,6,0" Text="SHN" />
-                        <TextBlock Margin="0,1.5,6,0" Text="LTFY" />
-                        <TextBlock Margin="0,1.5,6,0" Text="RAN" />
-                        <TextBlock Margin="0,1.5,6,0" Text="kibo" />
-                        <TextBlock Margin="0,1.5,6,0" Text="WZY" />
-                        <TextBlock Margin="0,1.5,6,0" Text="风势." />
-                        <TextBlock Margin="0,1.5,6,0" Text="RTW" />
-                        <TextBlock Margin="0,1.5,6,0" Text="FA洛" />
-                        <TextBlock Margin="0,1.5,6,0" Text="服从." />
-                        <TextBlock Margin="0,1.5,6,0" Text="xmlc" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ZZM" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Ezen" />
-                        <TextBlock Margin="0,1.5,6,0" Text="1122" />
-                        <TextBlock Margin="0,1.5,6,0" Text="aster" />
-                        <TextBlock Margin="0,1.5,6,0" Text="shan" />
-                        <TextBlock Margin="0,1.5,6,0" Text="yuan" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Youz" />
-                        <TextBlock Margin="0,1.5,6,0" Text="a bit." />
-                        <TextBlock Margin="0,1.5,6,0" Text="link7" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Z919" />
-                        <TextBlock Margin="0,1.5,6,0" Text="JBFly" />
-                        <TextBlock Margin="0,1.5,6,0" Text="旧人°" />
-                        <TextBlock Margin="0,1.5,6,0" Text="papk" />
-                        <TextBlock Margin="0,1.5,6,0" Text="JTDR" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Linxa" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Chen" />
-                        <TextBlock Margin="0,1.5,6,0" Text="WxW" />
-                        <TextBlock Margin="0,1.5,6,0" Text="RooS" />
-                        <TextBlock Margin="0,1.5,6,0" Text="sanlll" />
-                        <TextBlock Margin="0,1.5,6,0" Text="kwiss" />
-                        <TextBlock Margin="0,1.5,6,0" Text="T总监" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Zwny" />
-                        <TextBlock Margin="0,1.5,6,0" Text="丹春β" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ᗜ - ᗜ" />
-                        <TextBlock Margin="0,1.5,6,0" Text="L1NG" />
-                        <TextBlock Margin="0,1.5,6,0" Text="gguh" />
-                        <TextBlock Margin="0,1.5,6,0" Text="oweo" />
-                        <TextBlock Margin="0,1.5,6,0" Text="WBW" />
-                        <TextBlock Margin="0,1.5,6,0" Text="tiebai" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ZANE" />
-                        <TextBlock Margin="0,1.5,6,0" Text="wocly" />
-                        <TextBlock Margin="0,1.5,6,0" Text="tEnny" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Mr.99" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Caleb" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Sober" />
-                        <TextBlock Margin="0,1.5,6,0" Text="arcsin" />
-                        <TextBlock Margin="0,1.5,6,0" Text="烤D瓜" />
-                        <TextBlock Margin="0,1.5,6,0" Text="xianla" />
-                        <TextBlock Margin="0,1.5,6,0" Text="面羊!!!" />
-                        <TextBlock Margin="0,1.5,6,0" Text="QUQT" />
-                        <TextBlock Margin="0,1.5,6,0" Text="egg*3" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Nya秋" />
-                        <TextBlock Margin="0,1.5,6,0" Text="XUAN" />
-                        <TextBlock Margin="0,1.5,6,0" Text="WThu" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Really" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Pierce" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Carrot" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Ryuyo" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ccwhy" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Elaina" />
-                        <TextBlock Margin="0,1.5,6,0" Text="yuege" />
-                        <TextBlock Margin="0,1.5,6,0" Text="髅十一" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鹿一秋" />
-                        <TextBlock Margin="0,1.5,6,0" Text="余朝波" />
-                        <TextBlock Margin="0,1.5,6,0" Text="易难离" />
-                        <TextBlock Margin="0,1.5,6,0" Text="爱发狐" />
-                        <TextBlock Margin="0,1.5,6,0" Text="MARK" />
+                        <TextBlock Margin="0,1.5,6,0" Text="苑煜" />
+                        <TextBlock Margin="0,1.5,6,0" Text="蓝臻" />
+                        <TextBlock Margin="0,1.5,6,0" Text="恺乐" />
+                        <TextBlock Margin="0,1.5,6,0" Text="还好" />
+                        <TextBlock Margin="0,1.5,6,0" Text="暗生" />
+                        <TextBlock Margin="0,1.5,6,0" Text="久辰" />
+                        <TextBlock Margin="0,1.5,6,0" Text="陌苼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="慕野" />
+                        <TextBlock Margin="0,1.5,6,0" Text="沐落" />
+                        <TextBlock Margin="0,1.5,6,0" Text="澍雨" />
+                        <TextBlock Margin="0,1.5,6,0" Text="叶子" />
+                        <TextBlock Margin="0,1.5,6,0" Text="谦适" />
+                        <TextBlock Margin="0,1.5,6,0" Text="天蚕" />
+                        <TextBlock Margin="0,1.5,6,0" Text="盛煌" />
+                        <TextBlock Margin="0,1.5,6,0" Text="疯瞳" />
+                        <TextBlock Margin="0,1.5,6,0" Text="梦寻" />
+                        <TextBlock Margin="0,1.5,6,0" Text="袁虐" />
+                        <TextBlock Margin="0,1.5,6,0" Text="李研" />
+                        <TextBlock Margin="0,1.5,6,0" Text="羁鸟" />
+                        <TextBlock Margin="0,1.5,6,0" Text="白哉" />
+                        <TextBlock Margin="0,1.5,6,0" Text="輕生" />
+                        <TextBlock Margin="0,1.5,6,0" Text="雾雨" />
+                        <TextBlock Margin="0,1.5,6,0" Text="芊梦" />
+                        <TextBlock Margin="0,1.5,6,0" Text="命免" />
+                        <TextBlock Margin="0,1.5,6,0" Text="序言" />
+                        <TextBlock Margin="0,1.5,6,0" Text="水木" />
+                        <TextBlock Margin="0,1.5,6,0" Text="旧颜" />
+                        <TextBlock Margin="0,1.5,6,0" Text="老六" />
+                        <TextBlock Margin="0,1.5,6,0" Text="阿笙" />
+                        <TextBlock Margin="0,1.5,6,0" Text="玎默" />
+                        <TextBlock Margin="0,1.5,6,0" Text="星霰" />
+                        <TextBlock Margin="0,1.5,6,0" Text="凡多" />
+                        <TextBlock Margin="0,1.5,6,0" Text="和尘" />
+                        <TextBlock Margin="0,1.5,6,0" Text="桓落" />
+                        <TextBlock Margin="0,1.5,6,0" Text="卢茨" />
+                        <TextBlock Margin="0,1.5,6,0" Text="叶依" />
+                        <TextBlock Margin="0,1.5,6,0" Text="月月" />
+                        <TextBlock Margin="0,1.5,6,0" Text="大陈" />
+                        <TextBlock Margin="0,1.5,6,0" Text="桉桉" />
+                        <TextBlock Margin="0,1.5,6,0" Text="kkia" />
+                        <TextBlock Margin="0,1.5,6,0" Text="深邃" />
+                        <TextBlock Margin="0,1.5,6,0" Text="夜晨" />
+                        <TextBlock Margin="0,1.5,6,0" Text="米龙" />
+                        <TextBlock Margin="0,1.5,6,0" Text="悠茵" />
+                        <TextBlock Margin="0,1.5,6,0" Text="星辰" />
+                        <TextBlock Margin="0,1.5,6,0" Text="槲西" />
+                        <TextBlock Margin="0,1.5,6,0" Text="呱呱" />
+                        <TextBlock Margin="0,1.5,6,0" Text="眼睛" />
+                        <TextBlock Margin="0,1.5,6,0" Text="沐木" />
+                        <TextBlock Margin="0,1.5,6,0" Text="瞄咂" />
+                        <TextBlock Margin="0,1.5,6,0" Text="小冉" />
+                        <TextBlock Margin="0,1.5,6,0" Text="西奥" />
+                        <TextBlock Margin="0,1.5,6,0" Text="黑色" />
+                        <TextBlock Margin="0,1.5,6,0" Text="七七" />
+                        <TextBlock Margin="0,1.5,6,0" Text="白給" />
+                        <TextBlock Margin="0,1.5,6,0" Text="猫鱼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="玖外" />
+                        <TextBlock Margin="0,1.5,6,0" Text="猫菇" />
+                        <TextBlock Margin="0,1.5,6,0" Text="圣女" />
+                        <TextBlock Margin="0,1.5,6,0" Text="星光" />
+                        <TextBlock Margin="0,1.5,6,0" Text="LLLL" />
+                        <TextBlock Margin="0,1.5,6,0" Text="劳劳" />
+                        <TextBlock Margin="0,1.5,6,0" Text="顾浅" />
+                        <TextBlock Margin="0,1.5,6,0" Text="啸血" />
+                        <TextBlock Margin="0,1.5,6,0" Text="里奥" />
+                        <TextBlock Margin="0,1.5,6,0" Text="大陌" />
+                        <TextBlock Margin="0,1.5,6,0" Text="板刷" />
+                        <TextBlock Margin="0,1.5,6,0" Text="佬浏" />
+                        <TextBlock Margin="0,1.5,6,0" Text="令狐" />
+                        <TextBlock Margin="0,1.5,6,0" Text="宁笑" />
+                        <TextBlock Margin="0,1.5,6,0" Text="落夏" />
+                        <TextBlock Margin="0,1.5,6,0" Text="云螭" />
+                        <TextBlock Margin="0,1.5,6,0" Text="乌云" />
+                        <TextBlock Margin="0,1.5,6,0" Text="之祠" />
+                        <TextBlock Margin="0,1.5,6,0" Text="冯睿" />
+                        <TextBlock Margin="0,1.5,6,0" Text="夜昼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="鎔謙" />
+                        <TextBlock Margin="0,1.5,6,0" Text="三木" />
+                        <TextBlock Margin="0,1.5,6,0" Text="太二" />
+                        <TextBlock Margin="0,1.5,6,0" Text="墨染" />
+                        <TextBlock Margin="0,1.5,6,0" Text="晚点" />
+                        <TextBlock Margin="0,1.5,6,0" Text="景文" />
+                        <TextBlock Margin="0,1.5,6,0" Text="天火" />
+                        <TextBlock Margin="0,1.5,6,0" Text="冬莫" />
+                        <TextBlock Margin="0,1.5,6,0" Text="羽嵩" />
+                        <TextBlock Margin="0,1.5,6,0" Text="湙泽" />
+                        <TextBlock Margin="0,1.5,6,0" Text="梦幻" />
+                        <TextBlock Margin="0,1.5,6,0" Text="嘿嘿" />
+                        <TextBlock Margin="0,1.5,6,0" Text="枫叶" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Alex" />
+                        <TextBlock Margin="0,1.5,6,0" Text="JIUZ" />
+                        <TextBlock Margin="0,1.5,6,0" Text="hina" />
+                        <TextBlock Margin="0,1.5,6,0" Text="king" />
+                        <TextBlock Margin="0,1.5,6,0" Text="END" />
+                        <TextBlock Margin="0,1.5,6,0" Text="AAA" />
+                        <TextBlock Margin="0,1.5,6,0" Text="flzxc" />
+                        <TextBlock Margin="0,1.5,6,0" Text="time" />
+                        <TextBlock Margin="0,1.5,6,0" Text="sadv" />
+                        <TextBlock Margin="0,1.5,6,0" Text="king" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Ezzo" />
+                        <TextBlock Margin="0,1.5,6,0" Text="vilkil" />
+                        <TextBlock Margin="0,1.5,6,0" Text="1nVt" />
+                        <TextBlock Margin="0,1.5,6,0" Text="V無V" />
+                        <TextBlock Margin="0,1.5,6,0" Text="hhvv " />
+                        <TextBlock Margin="0,1.5,6,0" Text="TTT4" />
+                        <TextBlock Margin="0,1.5,6,0" Text="kuze" />
+                        <TextBlock Margin="0,1.5,6,0" Text="HJYz" />
+                        <TextBlock Margin="0,1.5,6,0" Text="0216" />
+                        <TextBlock Margin="0,1.5,6,0" Text="DOA" />
+                        <TextBlock Margin="0,1.5,6,0" Text="1001" />
+                        <TextBlock Margin="0,1.5,6,0" Text="tynry" />
+                        <TextBlock Margin="0,1.5,6,0" Text="qdy8" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Long" />
+                        <TextBlock Margin="0,1.5,6,0" Text="4Ghz" />
+                        <TextBlock Margin="0,1.5,6,0" Text="miao" />
+                        <TextBlock Margin="0,1.5,6,0" Text="aifad" />
+                        <TextBlock Margin="0,1.5,6,0" Text="xxxte" />
+                        <TextBlock Margin="0,1.5,6,0" Text="dddy" />
+                        <TextBlock Margin="0,1.5,6,0" Text="cong" />
+                        <TextBlock Margin="0,1.5,6,0" Text="叶子L" />
+                        <TextBlock Margin="0,1.5,6,0" Text="lelezi" />
+                        <TextBlock Margin="0,1.5,6,0" Text="bbbb" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Ango" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Elysia" />
+                        <TextBlock Margin="0,1.5,6,0" Text="徐铭h" />
+                        <TextBlock Margin="0,1.5,6,0" Text="HKV1" />
+                        <TextBlock Margin="0,1.5,6,0" Text="zjunE" />
+                        <TextBlock Margin="0,1.5,6,0" Text="少年A" />
+                        <TextBlock Margin="0,1.5,6,0" Text="mouy" />
+                        <TextBlock Margin="0,1.5,6,0" Text="KSfall" />
+                        <TextBlock Margin="0,1.5,6,0" Text="司马Q" />
+                        <TextBlock Margin="0,1.5,6,0" Text="FedEx" />
+                        <TextBlock Margin="0,1.5,6,0" Text="0NaCl" />
+                        <TextBlock Margin="0,1.5,6,0" Text="pisces" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Mikey" />
+                        <TextBlock Margin="0,1.5,6,0" Text="kjshsk" />
+                        <TextBlock Margin="0,1.5,6,0" Text="JaMaf" />
+                        <TextBlock Margin="0,1.5,6,0" Text="孙嘉言" />
+                        <TextBlock Margin="0,1.5,6,0" Text="张卿予" />
+                        <TextBlock Margin="0,1.5,6,0" Text="樟涛竹" />
+                        <TextBlock Margin="0,1.5,6,0" Text="布布曼" />
                         <TextBlock Margin="0,1.5,6,0" Text="Enrico" />
-                        <TextBlock Margin="0,1.5,6,0" Text="艾露喵" />
-                        <TextBlock Margin="0,1.5,6,0" Text="五六七" />
-                        <TextBlock Margin="0,1.5,6,0" Text="林凯墨" />
-                        <TextBlock Margin="0,1.5,6,0" Text="咪咪咪" />
-                        <TextBlock Margin="0,1.5,6,0" Text="安徒生" />
-                        <TextBlock Margin="0,1.5,6,0" Text="玉衡猫" />
-                        <TextBlock Margin="0,1.5,6,0" Text="泰利呀" />
-                        <TextBlock Margin="0,1.5,6,0" Text="大金霸" />
-                        <TextBlock Margin="0,1.5,6,0" Text="伊瑟龙" />
-                        <TextBlock Margin="0,1.5,6,0" Text="猪猪侠" />
-                        <TextBlock Margin="0,1.5,6,0" Text="月见泠" />
-                        <TextBlock Margin="0,1.5,6,0" Text="装痛苦" />
-                        <TextBlock Margin="0,1.5,6,0" Text="闲人乄" />
+                        <TextBlock Margin="0,1.5,6,0" Text="柳文江" />
+                        <TextBlock Margin="0,1.5,6,0" Text="伊蕾娜" />
+                        <TextBlock Margin="0,1.5,6,0" Text="竹节虫" />
+                        <TextBlock Margin="0,1.5,6,0" Text="狼崽子" />
+                        <TextBlock Margin="0,1.5,6,0" Text="刘杰世" />
+                        <TextBlock Margin="0,1.5,6,0" Text="汐阶屿" />
+                        <TextBlock Margin="0,1.5,6,0" Text="ーーー" />
+                        <TextBlock Margin="0,1.5,6,0" Text="墨斗鱼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="沈沙雕" />
+                        <TextBlock Margin="0,1.5,6,0" Text="萧子衿" />
+                        <TextBlock Margin="0,1.5,6,0" Text="好好好" />
+                        <TextBlock Margin="0,1.5,6,0" Text="小鳄鱼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="何凝云" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Chaka" />
+                        <TextBlock Margin="0,1.5,6,0" Text="ximou" />
                         <TextBlock Margin="0,1.5,6,0" Text="小萌新" />
-                        <TextBlock Margin="0,1.5,6,0" Text="猪猪侠" />
-                        <TextBlock Margin="0,1.5,6,0" Text="李济雨" />
-                        <TextBlock Margin="0,1.5,6,0" Text="墨无衡" />
-                        <TextBlock Margin="0,1.5,6,0" Text="高东海" />
-                        <TextBlock Margin="0,1.5,6,0" Text="夏安升" />
-                        <TextBlock Margin="0,1.5,6,0" Text="观月瞳" />
-                        <TextBlock Margin="0,1.5,6,0" Text="南方田" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鹤望兰" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鹤澈澈" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Doom" />
-                        <TextBlock Margin="0,1.5,6,0" Text="冬续逢" />
-                        <TextBlock Margin="0,1.5,6,0" Text="路痴鱼" />
-                        <TextBlock Margin="0,1.5,6,0" Text="娄梧楼" />
-                        <TextBlock Margin="0,1.5,6,0" Text="夏饮子" />
-                        <TextBlock Margin="0,1.5,6,0" Text="糯米糕" />
-                        <TextBlock Margin="0,1.5,6,0" Text="木瓜瓜" />
-                        <TextBlock Margin="0,1.5,6,0" Text="你愁啥" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ryoryo" />
-                        <TextBlock Margin="0,1.5,6,0" Text="M墨墨" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ACzhx" />
-                        <TextBlock Margin="0,1.5,6,0" Text="等舟积" />
-                        <TextBlock Margin="0,1.5,6,0" Text="妄生徒" />
-                        <TextBlock Margin="0,1.5,6,0" Text="奇怪秋" />
-                        <TextBlock Margin="0,1.5,6,0" Text="醉繁尘" />
-                        <TextBlock Margin="0,1.5,6,0" Text="澄非橙" />
-                        <TextBlock Margin="0,1.5,6,0" Text="燕回鸿" />
-                        <TextBlock Margin="0,1.5,6,0" Text="祝瑜浩" />
-                        <TextBlock Margin="0,1.5,6,0" Text="狐某某" />
-                        <TextBlock Margin="0,1.5,6,0" Text="在人间" />
-                        <TextBlock Margin="0,1.5,6,0" Text="君莫笑" />
-                        <TextBlock Margin="0,1.5,6,0" Text="李金哲" />
-                        <TextBlock Margin="0,1.5,6,0" Text="付啸宇" />
-                        <TextBlock Margin="0,1.5,6,0" Text="晚冬辞" />
-                        <TextBlock Margin="0,1.5,6,0" Text="缪佳泽" />
-                        <TextBlock Margin="0,1.5,6,0" Text="那个人" />
-                        <TextBlock Margin="0,1.5,6,0" Text="等雾语" />
-                        <TextBlock Margin="0,1.5,6,0" Text="幽萝影" />
-                        <TextBlock Margin="0,1.5,6,0" Text="加菲猫" />
-                        <TextBlock Margin="0,1.5,6,0" Text="郭游畅" />
-                        <TextBlock Margin="0,1.5,6,0" Text="木隆呢" />
-                        <TextBlock Margin="0,1.5,6,0" Text="废卢卢" />
-                        <TextBlock Margin="0,1.5,6,0" Text="糊鱼鱼" />
-                        <TextBlock Margin="0,1.5,6,0" Text="暮祈夕" />
-                        <TextBlock Margin="0,1.5,6,0" Text="风梦华" />
-                        <TextBlock Margin="0,1.5,6,0" Text="伊比藏" />
-                        <TextBlock Margin="0,1.5,6,0" Text="白沐玄" />
-                        <TextBlock Margin="0,1.5,6,0" Text="茶学森" />
-                        <TextBlock Margin="0,1.5,6,0" Text="陈胤祥" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鱼板人" />
-                        <TextBlock Margin="0,1.5,6,0" Text="睡不醒" />
-                        <TextBlock Margin="0,1.5,6,0" Text="幻迷离" />
-                        <TextBlock Margin="0,1.5,6,0" Text="随风行" />
-                        <TextBlock Margin="0,1.5,6,0" Text="难非难" />
-                        <TextBlock Margin="0,1.5,6,0" Text="雷电影" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鲤睿宗" />
-                        <TextBlock Margin="0,1.5,6,0" Text="空卫衣" />
-                        <TextBlock Margin="0,1.5,6,0" Text="简单爱" />
-                        <TextBlock Margin="0,1.5,6,0" Text="冰の夕" />
-                        <TextBlock Margin="0,1.5,6,0" Text="楚梓墨" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Aorise" />
-                        <TextBlock Margin="0,1.5,6,0" Text="罗生门" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Hz777" />
-                        <TextBlock Margin="0,1.5,6,0" Text="本杰明" />
-                        <TextBlock Margin="0,1.5,6,0" Text="影卡卡" />
-                        <TextBlock Margin="0,1.5,6,0" Text="。。。" />
-                        <TextBlock Margin="0,1.5,6,0" Text="白小影" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不行了" />
-                        <TextBlock Margin="0,1.5,6,0" Text="潘伟博" />
-                        <TextBlock Margin="0,1.5,6,0" Text="王子坤" />
-                        <TextBlock Margin="0,1.5,6,0" Text="藏瘾笑" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小白式" />
-                        <TextBlock Margin="0,1.5,6,0" Text="flyryxc" />
-                        <TextBlock Margin="0,1.5,6,0" Text="iehuxs" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Ermite" />
-                        <TextBlock Margin="0,1.5,6,0" Text="wqy08" />
-                        <TextBlock Margin="0,1.5,6,0" Text="MOYU" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Vector" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Slivevr" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Beater" />
-                        <TextBlock Margin="0,1.5,6,0" Text="leiyuxi" />
-                        <TextBlock Margin="0,1.5,6,0" Text="mc.jlkj" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Darius" />
-                        <TextBlock Margin="0,1.5,6,0" Text="oPluss" />
-                        <TextBlock Margin="0,1.5,6,0" Text="aloner" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Alkaid" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ren ge" />
-                        <TextBlock Margin="0,1.5,6,0" Text="榛子Zz" />
-                        <TextBlock Margin="0,1.5,6,0" Text="StarXC" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Roko.s" />
-                        <TextBlock Margin="0,1.5,6,0" Text="``Geek." />
-                        <TextBlock Margin="0,1.5,6,0" Text="ckyasb" />
-                        <TextBlock Margin="0,1.5,6,0" Text="K2CO3" />
-                        <TextBlock Margin="0,1.5,6,0" Text="二柑心." />
-                        <TextBlock Margin="0,1.5,6,0" Text="chouzi" />
-                        <TextBlock Margin="0,1.5,6,0" Text="DTFOE" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不高兴." />
-                        <TextBlock Margin="0,1.5,6,0" Text="Alayna" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Ba77er" />
-                        <TextBlock Margin="0,1.5,6,0" Text="菜鸟vH" />
-                        <TextBlock Margin="0,1.5,6,0" Text="萧1314" />
-                        <TextBlock Margin="0,1.5,6,0" Text="MNAH" />
-                        <TextBlock Margin="0,1.5,6,0" Text="听雨***" />
-                        <TextBlock Margin="0,1.5,6,0" Text="maohx" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Aurora" />
-                        <TextBlock Margin="0,1.5,6,0" Text="zheran" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Atsuko" />
-                        <TextBlock Margin="0,1.5,6,0" Text="seeyou" />
-                        <TextBlock Margin="0,1.5,6,0" Text="星空res" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Skyline" />
-                        <TextBlock Margin="0,1.5,6,0" Text="AHong" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ops626" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Madao" />
-                        <TextBlock Margin="0,1.5,6,0" Text="665352" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Sakana" />
-                        <TextBlock Margin="0,1.5,6,0" Text="BHXUU" />
-                        <TextBlock Margin="0,1.5,6,0" Text="apostle" />
-                        <TextBlock Margin="0,1.5,6,0" Text="TagGift" />
-                        <TextBlock Margin="0,1.5,6,0" Text="LAOLIU" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Sousan" />
-                        <TextBlock Margin="0,1.5,6,0" Text="9拾爱柒" />
-                        <TextBlock Margin="0,1.5,6,0" Text="poposjj" />
-                        <TextBlock Margin="0,1.5,6,0" Text="LiCaner" />
-                        <TextBlock Margin="0,1.5,6,0" Text="vdggtw" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Gophin" />
-                        <TextBlock Margin="0,1.5,6,0" Text="王某4某" />
-                        <TextBlock Margin="0,1.5,6,0" Text="SprataS" />
-                        <TextBlock Margin="0,1.5,6,0" Text="smzdby" />
-                        <TextBlock Margin="0,1.5,6,0" Text="fxy1950" />
-                        <TextBlock Margin="0,1.5,6,0" Text="周xiaxia" />
-                        <TextBlock Margin="0,1.5,6,0" Text="阿江233" />
-                        <TextBlock Margin="0,1.5,6,0" Text="origami" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Zone0o" />
-                        <TextBlock Margin="0,1.5,6,0" Text="cyrainia" />
-                        <TextBlock Margin="0,1.5,6,0" Text="fhz2000" />
-                        <TextBlock Margin="0,1.5,6,0" Text="lengruo" />
-                        <TextBlock Margin="0,1.5,6,0" Text="TheEyer" />
-                        <TextBlock Margin="0,1.5,6,0" Text="QU8964" />
-                        <TextBlock Margin="0,1.5,6,0" Text="PBJqwq" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Promise" />
-                        <TextBlock Margin="0,1.5,6,0" Text="GOTWH" />
-                        <TextBlock Margin="0,1.5,6,0" Text="morpho" />
-                        <TextBlock Margin="0,1.5,6,0" Text="刘口水ᶻᶻᶻ" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Oracron" />
-                        <TextBlock Margin="0,1.5,6,0" Text="HD2507" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Qinbum" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Dq-yyds" />
-                        <TextBlock Margin="0,1.5,6,0" Text="WK3535" />
-                        <TextBlock Margin="0,1.5,6,0" Text="一只awa" />
-                        <TextBlock Margin="0,1.5,6,0" Text="d3eidait" />
-                        <TextBlock Margin="0,1.5,6,0" Text="WYCSSE" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不可思议" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不愿逆流" />
-                        <TextBlock Margin="0,1.5,6,0" Text="咖啡麦片" />
-                        <TextBlock Margin="0,1.5,6,0" Text="希望之星" />
-                        <TextBlock Margin="0,1.5,6,0" Text="碧海湛蓝" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鸣蜩有柒" />
-                        <TextBlock Margin="0,1.5,6,0" Text="奈洛妖星" />
-                        <TextBlock Margin="0,1.5,6,0" Text="白衣沾酒" />
-                        <TextBlock Margin="0,1.5,6,0" Text="长乐未央" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鲨鱼辣椒" />
-                        <TextBlock Margin="0,1.5,6,0" Text="快乐芜湖" />
-                        <TextBlock Margin="0,1.5,6,0" Text="隋彧而安" />
-                        <TextBlock Margin="0,1.5,6,0" Text="游子忘也" />
-                        <TextBlock Margin="0,1.5,6,0" Text="凌之殇血" />
-                        <TextBlock Margin="0,1.5,6,0" Text="红六兔子" />
-                        <TextBlock Margin="0,1.5,6,0" Text="风花三月" />
-                        <TextBlock Margin="0,1.5,6,0" Text="秋水长天" />
-                        <TextBlock Margin="0,1.5,6,0" Text="摩卡茉莉" />
-                        <TextBlock Margin="0,1.5,6,0" Text="君子随心" />
-                        <TextBlock Margin="0,1.5,6,0" Text="淇汐明月" />
-                        <TextBlock Margin="0,1.5,6,0" Text="金鑫苑名" />
-                        <TextBlock Margin="0,1.5,6,0" Text="再次伟大" />
-                        <TextBlock Margin="0,1.5,6,0" Text="东缺海鸥" />
-                        <TextBlock Margin="0,1.5,6,0" Text="道陆玄烬" />
-                        <TextBlock Margin="0,1.5,6,0" Text="死幻安生" />
-                        <TextBlock Margin="0,1.5,6,0" Text="曼波曼波" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Madoka" />
-                        <TextBlock Margin="0,1.5,6,0" Text="流逝的心" />
-                        <TextBlock Margin="0,1.5,6,0" Text="欧阳缺德" />
-                        <TextBlock Margin="0,1.5,6,0" Text="白云苍狗" />
-                        <TextBlock Margin="0,1.5,6,0" Text="三颗飞星" />
-                        <TextBlock Margin="0,1.5,6,0" Text="花之潮汐" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Time Up" />
-                        <TextBlock Margin="0,1.5,6,0" Text="金木文雄" />
-                        <TextBlock Margin="0,1.5,6,0" Text="失物招领" />
-                        <TextBlock Margin="0,1.5,6,0" Text="真仙杨小" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不想取名" />
-                        <TextBlock Margin="0,1.5,6,0" Text="彼岸多闻" />
-                        <TextBlock Margin="0,1.5,6,0" Text="泡泡茶壶" />
-                        <TextBlock Margin="0,1.5,6,0" Text="菠萝盖饭" />
-                        <TextBlock Margin="0,1.5,6,0" Text="山水鹤梦" />
-                        <TextBlock Margin="0,1.5,6,0" Text="枯叶火心" />
-                        <TextBlock Margin="0,1.5,6,0" Text="茶子千鹤" />
-                        <TextBlock Margin="0,1.5,6,0" Text="起源之间" />
-                        <TextBlock Margin="0,1.5,6,0" Text="凌元君君" />
-                        <TextBlock Margin="0,1.5,6,0" Text="涂山寒梦" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小小夏野" />
-                        <TextBlock Margin="0,1.5,6,0" Text="流水化月" />
-                        <TextBlock Margin="0,1.5,6,0" Text="墨绿之韵" />
-                        <TextBlock Margin="0,1.5,6,0" Text="落笔知秋" />
-                        <TextBlock Margin="0,1.5,6,0" Text="柠月如風" />
-                        <TextBlock Margin="0,1.5,6,0" Text="托比崽子" />
-                        <TextBlock Margin="0,1.5,6,0" Text="杰克俊曼" />
-                        <TextBlock Margin="0,1.5,6,0" Text="MaBaKa" />
-                        <TextBlock Margin="0,1.5,6,0" Text="山栀川柏" />
-                        <TextBlock Margin="0,1.5,6,0" Text="哆啦库梦" />
-                        <TextBlock Margin="0,1.5,6,0" Text="True1on" />
-                        <TextBlock Margin="0,1.5,6,0" Text="笔墨山河" />
-                        <TextBlock Margin="0,1.5,6,0" Text="初闻林北" />
-                        <TextBlock Margin="0,1.5,6,0" Text="晏李白泽" />
-                        <TextBlock Margin="0,1.5,6,0" Text="春末雨夏" />
-                        <TextBlock Margin="0,1.5,6,0" Text="墨书年华" />
-                        <TextBlock Margin="0,1.5,6,0" Text="百战不跆" />
-                        <TextBlock Margin="0,1.5,6,0" Text="辛不是新" />
-                        <TextBlock Margin="0,1.5,6,0" Text="非常新意" />
-                        <TextBlock Margin="0,1.5,6,0" Text="一只企鹅" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不留余念" />
-                        <TextBlock Margin="0,1.5,6,0" Text="陈皮鸡蛋" />
-                        <TextBlock Margin="0,1.5,6,0" Text="悠游岁月" />
-                        <TextBlock Margin="0,1.5,6,0" Text="欣想事成" />
-                        <TextBlock Margin="0,1.5,6,0" Text="颖枫秋辞" />
-                        <TextBlock Margin="0,1.5,6,0" Text="自由是否" />
-                        <TextBlock Margin="0,1.5,6,0" Text="添只饺子" />
-                        <TextBlock Margin="0,1.5,6,0" Text="龙游天渊" />
-                        <TextBlock Margin="0,1.5,6,0" Text="入梦寻影" />
-                        <TextBlock Margin="0,1.5,6,0" Text="墨韵诗笺" />
-                        <TextBlock Margin="0,1.5,6,0" Text="岸尽若辉" />
-                        <TextBlock Margin="0,1.5,6,0" Text="月亮大王" />
-                        <TextBlock Margin="0,1.5,6,0" Text="人间无常" />
-                        <TextBlock Margin="0,1.5,6,0" Text="炒股养猫" />
-                        <TextBlock Margin="0,1.5,6,0" Text="梧梦绫音" />
-                        <TextBlock Margin="0,1.5,6,0" Text="林克达达" />
-                        <TextBlock Margin="0,1.5,6,0" Text="今年有钱" />
-                        <TextBlock Margin="0,1.5,6,0" Text="落笔东流" />
-                        <TextBlock Margin="0,1.5,6,0" Text="琴道桐君" />
-                        <TextBlock Margin="0,1.5,6,0" Text="御笔执光" />
-                        <TextBlock Margin="0,1.5,6,0" Text="琼浆玉液" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鱼中之海" />
-                        <TextBlock Margin="0,1.5,6,0" Text="吃瓜群猹" />
-                        <TextBlock Margin="0,1.5,6,0" Text="电弧陷阱" />
-                        <TextBlock Margin="0,1.5,6,0" Text="查无此人" />
-                        <TextBlock Margin="0,1.5,6,0" Text="农夫三全" />
-                        <TextBlock Margin="0,1.5,6,0" Text="我想吃鱼" />
-                        <TextBlock Margin="0,1.5,6,0" Text="秋月山魈" />
-                        <TextBlock Margin="0,1.5,6,0" Text="时忆梦璃" />
-                        <TextBlock Margin="0,1.5,6,0" Text="奥古斯都" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不爱睡觉" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Lo_Karry" />
-                        <TextBlock Margin="0,1.5,6,0" Text="两袖清风" />
-                        <TextBlock Margin="0,1.5,6,0" Text="世界和平" />
-                        <TextBlock Margin="0,1.5,6,0" Text="吃喝不愁" />
-                        <TextBlock Margin="0,1.5,6,0" Text="軼的明天" />
-                        <TextBlock Margin="0,1.5,6,0" Text="油炸酥饼" />
-                        <TextBlock Margin="0,1.5,6,0" Text="三月冰雹" />
-                        <TextBlock Margin="0,1.5,6,0" Text="爱久爱海" />
-                        <TextBlock Margin="0,1.5,6,0" Text="拿羊煲汤" />
-                        <TextBlock Margin="0,1.5,6,0" Text="张宇惠天" />
-                        <TextBlock Margin="0,1.5,6,0" Text="魏白逐星" />
-                        <TextBlock Margin="0,1.5,6,0" Text="隔壁老赵" />
-                        <TextBlock Margin="0,1.5,6,0" Text="断坯残垣" />
-                        <TextBlock Margin="0,1.5,6,0" Text="濒危物种" />
-                        <TextBlock Margin="0,1.5,6,0" Text="泪雨霖铃" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Summer" />
-                        <TextBlock Margin="0,1.5,6,0" Text="wanxing" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ayanami" />
-                        <TextBlock Margin="0,1.5,6,0" Text="DFanger" />
-                        <TextBlock Margin="0,1.5,6,0" Text="REMOTE" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Bad_Xue" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Feidemu" />
-                        <TextBlock Margin="0,1.5,6,0" Text="GuanDN" />
-                        <TextBlock Margin="0,1.5,6,0" Text="君莫问96" />
-                        <TextBlock Margin="0,1.5,6,0" Text="我推:古见" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Duunam" />
-                        <TextBlock Margin="0,1.5,6,0" Text="屑黑黑Z7" />
-                        <TextBlock Margin="0,1.5,6,0" Text="huhaaaa" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Liriummi" />
-                        <TextBlock Margin="0,1.5,6,0" Text="shenxiny" />
-                        <TextBlock Margin="0,1.5,6,0" Text="木镐子XY" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不如睡觉." />
-                        <TextBlock Margin="0,1.5,6,0" Text="Tanikaze" />
-                        <TextBlock Margin="0,1.5,6,0" Text="LLOKVRE" />
-                        <TextBlock Margin="0,1.5,6,0" Text="hengjimi" />
-                        <TextBlock Margin="0,1.5,6,0" Text="人心难测i" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Feng_orz" />
-                        <TextBlock Margin="0,1.5,6,0" Text="oguricap" />
-                        <TextBlock Margin="0,1.5,6,0" Text="zhiaizirui" />
-                        <TextBlock Margin="0,1.5,6,0" Text="SCPWWL" />
-                        <TextBlock Margin="0,1.5,6,0" Text="asoftwan" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Xianyu_V" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Tyrazdon" />
-                        <TextBlock Margin="0,1.5,6,0" Text="hdwsjy21" />
-                        <TextBlock Margin="0,1.5,6,0" Text="klgb2025" />
-                        <TextBlock Margin="0,1.5,6,0" Text="龙影Kage" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Mike茶茶" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Marrakes" />
-                        <TextBlock Margin="0,1.5,6,0" Text="hero_boy" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Kreamzfy" />
-                        <TextBlock Margin="0,1.5,6,0" Text="LOWVAN" />
-                        <TextBlock Margin="0,1.5,6,0" Text="半顷·阳光·" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Zikyeung" />
-                        <TextBlock Margin="0,1.5,6,0" Text="rainbowk" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ukpkmkk" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ickicr双鱼" />
-                        <TextBlock Margin="0,1.5,6,0" Text="watuking" />
-                        <TextBlock Margin="0,1.5,6,0" Text="OldFriday" />
-                        <TextBlock Margin="0,1.5,6,0" Text="YuanYing" />
-                        <TextBlock Margin="0,1.5,6,0" Text="yshdjgfsd" />
-                        <TextBlock Margin="0,1.5,6,0" Text="zzmmjj66" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Judyshuo" />
-                        <TextBlock Margin="0,1.5,6,0" Text="mmmmm" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Kaorurem" />
-                        <TextBlock Margin="0,1.5,6,0" Text="bangbing" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Mr-桂花酒" />
-                        <TextBlock Margin="0,1.5,6,0" Text="星屿 Staris" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ฅ(*°ω°*ฅ)*" />
-                        <TextBlock Margin="0,1.5,6,0" Text="HereBlack" />
-                        <TextBlock Margin="0,1.5,6,0" Text="lokishi666" />
-                        <TextBlock Margin="0,1.5,6,0" Text="114514pcl" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Eastmelan" />
-                        <TextBlock Margin="0,1.5,6,0" Text="可恶的一瓶" />
-                        <TextBlock Margin="0,1.5,6,0" Text="龙庙彭于晏" />
-                        <TextBlock Margin="0,1.5,6,0" Text="请输入文本" />
-                        <TextBlock Margin="0,1.5,6,0" Text="音黎爱玩机" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Kiren_Yuki" />
-                        <TextBlock Margin="0,1.5,6,0" Text="流年乍思雨" />
-                        <TextBlock Margin="0,1.5,6,0" Text="StellarDoll" />
-                        <TextBlock Margin="0,1.5,6,0" Text="鸽子子子子" />
-                        <TextBlock Margin="0,1.5,6,0" Text="猫猫雫羽咔" />
-                        <TextBlock Margin="0,1.5,6,0" Text="吴糖味可乐" />
-                        <TextBlock Margin="0,1.5,6,0" Text="前方已无人" />
-                        <TextBlock Margin="0,1.5,6,0" Text="陨落小笨蛋" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Thousumy" />
-                        <TextBlock Margin="0,1.5,6,0" Text="睡不够张张" />
-                        <TextBlock Margin="0,1.5,6,0" Text="妙味脆脆鲨" />
-                        <TextBlock Margin="0,1.5,6,0" Text="执琴不是勤" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小路啦啦啦" />
-                        <TextBlock Margin="0,1.5,6,0" Text="明日香大王" />
-                        <TextBlock Margin="0,1.5,6,0" Text="落子木木木" />
-                        <TextBlock Margin="0,1.5,6,0" Text="尘枫maple" />
-                        <TextBlock Margin="0,1.5,6,0" Text="白瓷梅子汤" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不要吃冰箱" />
-                        <TextBlock Margin="0,1.5,6,0" Text="何以断倾伤" />
-                        <TextBlock Margin="0,1.5,6,0" Text="一三五陆七" />
-                        <TextBlock Margin="0,1.5,6,0" Text="三火可燃冰" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不是哥们?" />
-                        <TextBlock Margin="0,1.5,6,0" Text="下北泽红茶" />
-                        <TextBlock Margin="0,1.5,6,0" Text="梦醒时见鲸" />
-                        <TextBlock Margin="0,1.5,6,0" Text="不亮的星星" />
-                        <TextBlock Margin="0,1.5,6,0" Text="毕加索的橙" />
-                        <TextBlock Margin="0,1.5,6,0" Text="心中装乾坤" />
-                        <TextBlock Margin="0,1.5,6,0" Text="嘿科勒科赫" />
-                        <TextBlock Margin="0,1.5,6,0" Text="花落莫清风" />
-                        <TextBlock Margin="0,1.5,6,0" Text="无聊的墨仔" />
-                        <TextBlock Margin="0,1.5,6,0" Text="阿多勒纳林" />
-                        <TextBlock Margin="0,1.5,6,0" Text="十八号小白" />
-                        <TextBlock Margin="0,1.5,6,0" Text="话唠唠死者" />
-                        <TextBlock Margin="0,1.5,6,0" Text="绝望的萌新" />
-                        <TextBlock Margin="0,1.5,6,0" Text="路边的骑士" />
-                        <TextBlock Margin="0,1.5,6,0" Text="百墨平一岚" />
-                        <TextBlock Margin="0,1.5,6,0" Text="chy125430" />
-                        <TextBlock Margin="0,1.5,6,0" Text="秋枫Maple" />
-                        <TextBlock Margin="0,1.5,6,0" Text="omgDDDz" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Theyinguo" />
-                        <TextBlock Margin="0,1.5,6,0" Text="LanYinALA" />
-                        <TextBlock Margin="0,1.5,6,0" Text="G∀ℵ★827" />
-                        <TextBlock Margin="0,1.5,6,0" Text="雷徳斯·阔恩" />
-                        <TextBlock Margin="0,1.5,6,0" Text="白给Escape" />
-                        <TextBlock Margin="0,1.5,6,0" Text="茶泡饭0708" />
-                        <TextBlock Margin="0,1.5,6,0" Text="风华正猫 恒" />
-                        <TextBlock Margin="0,1.5,6,0" Text="FiTrWOB53" />
-                        <TextBlock Margin="0,1.5,6,0" Text="暮冥official" />
-                        <TextBlock Margin="0,1.5,6,0" Text="🍀一缕阳光" />
-                        <TextBlock Margin="0,1.5,6,0" Text="乌龟的_黑头" />
-                        <TextBlock Margin="0,1.5,6,0" Text="NWXSXWN" />
-                        <TextBlock Margin="0,1.5,6,0" Text="wIpH9kxhg" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Scattered白" />
-                        <TextBlock Margin="0,1.5,6,0" Text="HomesIsFar" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Wuking022" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Asphyxiaful" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Vangoghaa" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Mr.尼古拉斯" />
-                        <TextBlock Margin="0,1.5,6,0" Text="BrittleShark" />
-                        <TextBlock Margin="0,1.5,6,0" Text="yanmuyuan" />
-                        <TextBlock Margin="0,1.5,6,0" Text="RoyalPower" />
-                        <TextBlock Margin="0,1.5,6,0" Text="新空Newsky" />
-                        <TextBlock Margin="0,1.5,6,0" Text="LrisMirabilis" />
-                        <TextBlock Margin="0,1.5,6,0" Text="2061316363" />
-                        <TextBlock Margin="0,1.5,6,0" Text="FurryFanson" />
-                        <TextBlock Margin="0,1.5,6,0" Text="国窖ao_li_ao" />
-                        <TextBlock Margin="0,1.5,6,0" Text="C.肥宅快乐水" />
-                        <TextBlock Margin="0,1.5,6,0" Text="xubo100511" />
-                        <TextBlock Margin="0,1.5,6,0" Text="神狐_Godfox" />
-                        <TextBlock Margin="0,1.5,6,0" Text="oooo123123" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小阿鬼下大饭" />
-                        <TextBlock Margin="0,1.5,6,0" Text="月下独酌的猫" />
-                        <TextBlock Margin="0,1.5,6,0" Text="IncredibleYu" />
-                        <TextBlock Margin="0,1.5,6,0" Text="收取人间快乐" />
-                        <TextBlock Margin="0,1.5,6,0" Text="暴雪魔法巨龙" />
-                        <TextBlock Margin="0,1.5,6,0" Text="分かリません" />
-                        <TextBlock Margin="0,1.5,6,0" Text="炸鱼与狗修金" />
-                        <TextBlock Margin="0,1.5,6,0" Text="又中他人一计" />
-                        <TextBlock Margin="0,1.5,6,0" Text="STEFAN8196" />
-                        <TextBlock Margin="0,1.5,6,0" Text="睁眼睡不着觉" />
-                        <TextBlock Margin="0,1.5,6,0" Text="阿尔卑斯的风" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小赵能吃能喝" />
-                        <TextBlock Margin="0,1.5,6,0" Text="摸鱼混日真菌" />
-                        <TextBlock Margin="0,1.5,6,0" Text="维他命柠檬茶" />
-                        <TextBlock Margin="0,1.5,6,0" Text="一个真正的鳗" />
-                        <TextBlock Margin="0,1.5,6,0" Text="炸天帮古尘沙" />
-                        <TextBlock Margin="0,1.5,6,0" Text="史上最甜的躯" />
-                        <TextBlock Margin="0,1.5,6,0" Text="你叫什么名字" />
-                        <TextBlock Margin="0,1.5,6,0" Text="奈亚拉托提普" />
-                        <TextBlock Margin="0,1.5,6,0" Text="名譽殺死武士" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Lyt_IT Studio" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Atozaxiomin" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Dejavu_0202" />
-                        <TextBlock Margin="0,1.5,6,0" Text="CCJACKMAN" />
-                        <TextBlock Margin="0,1.5,6,0" Text="SyngoZeenLi" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Mr.Aloe Vera" />
-                        <TextBlock Margin="0,1.5,6,0" Text="♢糖酱5217♢" />
-                        <TextBlock Margin="0,1.5,6,0" Text="WANGZIONE" />
-                        <TextBlock Margin="0,1.5,6,0" Text="TearWindBell" />
-                        <TextBlock Margin="0,1.5,6,0" Text="守护最好的mc" />
-                        <TextBlock Margin="0,1.5,6,0" Text="TranquilGlow" />
-                        <TextBlock Margin="0,1.5,6,0" Text="chenzhiyu520" />
-                        <TextBlock Margin="0,1.5,6,0" Text="L0VESitonggg" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ClearL0ve7777" />
-                        <TextBlock Margin="0,1.5,6,0" Text="🎾     🎾     🎾" />
-                        <TextBlock Margin="0,1.5,6,0" Text="雨夜带刀不带伞" />
-                        <TextBlock Margin="0,1.5,6,0" Text="有船的少年与海" />
-                        <TextBlock Margin="0,1.5,6,0" Text="星空中吹来的风" />
-                        <TextBlock Margin="0,1.5,6,0" Text="深院尘稀书韵雅" />
-                        <TextBlock Margin="0,1.5,6,0" Text="空恋大魔女yuki" />
-                        <TextBlock Margin="0,1.5,6,0" Text="名字是個好東西" />
-                        <TextBlock Margin="0,1.5,6,0" Text="叱咤月海鱼鱼猫" />
-                        <TextBlock Margin="0,1.5,6,0" Text="苔藓块速访问子" />
-                        <TextBlock Margin="0,1.5,6,0" Text="北湖龙哥的应该" />
-                        <TextBlock Margin="0,1.5,6,0" Text="你脸怎么红红的" />
-                        <TextBlock Margin="0,1.5,6,0" Text="你好曾经的少年" />
-                        <TextBlock Margin="0,1.5,6,0" Text="哥伦比亚大蠊W" />
-                        <TextBlock Margin="0,1.5,6,0" Text="你我山后不相逢" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Tokyoboy0701" />
-                        <TextBlock Margin="0,1.5,6,0" Text="AnEvilPancake" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Despicable me" />
-                        <TextBlock Margin="0,1.5,6,0" Text="UgoTombari80" />
-                        <TextBlock Margin="0,1.5,6,0" Text="starskysunlight" />
-                        <TextBlock Margin="0,1.5,6,0" Text="xiaozhaoDOGE" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Non Respicere_" />
-                        <TextBlock Margin="0,1.5,6,0" Text="PurplePuffCake" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Cookycookyi🌙" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Gefallene Engel" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Abandoned丶梦" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ElamrUranusDay" />
-                        <TextBlock Margin="0,1.5,6,0" Text="新鲜哥(暗示版)" />
-                        <TextBlock Margin="0,1.5,6,0" Text="从你的全世界路过" />
-                        <TextBlock Margin="0,1.5,6,0" Text="须臾山中棺林见晴" />
-                        <TextBlock Margin="0,1.5,6,0" Text="无害性质的烈焰人" />
-                        <TextBlock Margin="0,1.5,6,0" Text="順著海風找不到海" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Bilibili_Z2WLGSG" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ChewingGum233" />
-                        <TextBlock Margin="0,1.5,6,0" Text="Ms.Right Of MrXu" />
-                        <TextBlock Margin="0,1.5,6,0" Text="孙嘉昊まごかひろし" />
-                        <TextBlock Margin="0,1.5,6,0" Text="为什么要偷我的外卖" />
-                        <TextBlock Margin="0,1.5,6,0" Text="是男人就喝刺客魔药" />
-                        <TextBlock Margin="0,1.5,6,0" Text="小熊软糖(变硬版)" />
-                        <TextBlock Margin="0,1.5,6,0" Text="这次就让我来爱你吧" />
-                        <TextBlock Margin="0,1.5,6,0" Text="guaiguaibushuijiao" />
-                        <TextBlock Margin="0,1.5,6,0" Text="阿伟阿伟想要知道一切" />
-                        <TextBlock Margin="0,1.5,6,0" Text="AAA建材老安(doge)" />
-                        <TextBlock Margin="0,1.5,6,0" Text="￴￴ ￴￴此恨绵绵无绝期" />
-                        <TextBlock Margin="0,1.5,6,0" Text="[email protected]" />
-                        <TextBlock Margin="0,1.5,6,0" Text="牧尘瑞斯(muchenruisi)" />
-                        <TextBlock Margin="0,1.5,6,0" Text="你家猫出门散步被我捡了" />
-                        <TextBlock Margin="0,1.5,6,0" Text="逍遥游丶叮当猫丶宁静之海" />
-                        <TextBlock Margin="0,1.5,6,0" Text="ㅤㅤㅤ꧁€€€亿只pvp€€€꧂" />
+                        <TextBlock Margin="0,1.5,6,0" Text="沨旻泽" />
+                        <TextBlock Margin="0,1.5,6,0" Text="李睿洋" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Frutaa" />
+                        <TextBlock Margin="0,1.5,6,0" Text="饱之维" />
+                        <TextBlock Margin="0,1.5,6,0" Text="刘啥啊" />
+                        <TextBlock Margin="0,1.5,6,0" Text="鼻涕菌" />
+                        <TextBlock Margin="0,1.5,6,0" Text="熙镜樱" />
+                        <TextBlock Margin="0,1.5,6,0" Text="不知道" />
+                        <TextBlock Margin="0,1.5,6,0" Text="好棒蛇" />
+                        <TextBlock Margin="0,1.5,6,0" Text="苏幕花" />
+                        <TextBlock Margin="0,1.5,6,0" Text="苏眠眩" />
+                        <TextBlock Margin="0,1.5,6,0" Text="享长生" />
+                        <TextBlock Margin="0,1.5,6,0" Text="黄锦坤" />
+                        <TextBlock Margin="0,1.5,6,0" Text="缄默龙" />
+                        <TextBlock Margin="0,1.5,6,0" Text="楽嘞嘞" />
+                        <TextBlock Margin="0,1.5,6,0" Text="斯科达" />
+                        <TextBlock Margin="0,1.5,6,0" Text="的逻辑" />
+                        <TextBlock Margin="0,1.5,6,0" Text="新叶叶" />
+                        <TextBlock Margin="0,1.5,6,0" Text="四月初" />
+                        <TextBlock Margin="0,1.5,6,0" Text="梦霙雪" />
+                        <TextBlock Margin="0,1.5,6,0" Text="夜不收" />
+                        <TextBlock Margin="0,1.5,6,0" Text="97ang" />
+                        <TextBlock Margin="0,1.5,6,0" Text="马天癸" />
+                        <TextBlock Margin="0,1.5,6,0" Text="云野寂" />
+                        <TextBlock Margin="0,1.5,6,0" Text="金木研" />
+                        <TextBlock Margin="0,1.5,6,0" Text="韩雨宸" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Scoop" />
+                        <TextBlock Margin="0,1.5,6,0" Text="绘梨衣" />
+                        <TextBlock Margin="0,1.5,6,0" Text="夜小辞" />
+                        <TextBlock Margin="0,1.5,6,0" Text="明月奴" />
+                        <TextBlock Margin="0,1.5,6,0" Text="光和热" />
+                        <TextBlock Margin="0,1.5,6,0" Text="湫某辞" />
+                        <TextBlock Margin="0,1.5,6,0" Text="大哈操" />
+                        <TextBlock Margin="0,1.5,6,0" Text="顾東凡" />
+                        <TextBlock Margin="0,1.5,6,0" Text="云之梦" />
+                        <TextBlock Margin="0,1.5,6,0" Text="叶云翳" />
+                        <TextBlock Margin="0,1.5,6,0" Text="爱钱钱" />
+                        <TextBlock Margin="0,1.5,6,0" Text="oaken" />
+                        <TextBlock Margin="0,1.5,6,0" Text="小小球" />
+                        <TextBlock Margin="0,1.5,6,0" Text="天羽煜" />
+                        <TextBlock Margin="0,1.5,6,0" Text="UN_41" />
+                        <TextBlock Margin="0,1.5,6,0" Text="bguae" />
+                        <TextBlock Margin="0,1.5,6,0" Text="hjsa30" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Chpoy" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Ander." />
+                        <TextBlock Margin="0,1.5,6,0" Text="muzsh" />
+                        <TextBlock Margin="0,1.5,6,0" Text="gyj120" />
+                        <TextBlock Margin="0,1.5,6,0" Text="IC1805" />
+                        <TextBlock Margin="0,1.5,6,0" Text="logical" />
+                        <TextBlock Margin="0,1.5,6,0" Text="bit...bit" />
+                        <TextBlock Margin="0,1.5,6,0" Text="N0rdiK" />
+                        <TextBlock Margin="0,1.5,6,0" Text="techzjc" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Keiskei" />
+                        <TextBlock Margin="0,1.5,6,0" Text="EMO龚" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Thgink" />
+                        <TextBlock Margin="0,1.5,6,0" Text="forever" />
+                        <TextBlock Margin="0,1.5,6,0" Text="manbo" />
+                        <TextBlock Margin="0,1.5,6,0" Text="114514" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Gemini" />
+                        <TextBlock Margin="0,1.5,6,0" Text="MAL.鱼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="114514" />
+                        <TextBlock Margin="0,1.5,6,0" Text="114514" />
+                        <TextBlock Margin="0,1.5,6,0" Text="mneng" />
+                        <TextBlock Margin="0,1.5,6,0" Text="YEYEYE" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Phuket" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Kabuto" />
+                        <TextBlock Margin="0,1.5,6,0" Text=".懒子:(" />
+                        <TextBlock Margin="0,1.5,6,0" Text="ZyR3Xx" />
+                        <TextBlock Margin="0,1.5,6,0" Text="DrQuin" />
+                        <TextBlock Margin="0,1.5,6,0" Text="sund3a" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Snowill" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Charile." />
+                        <TextBlock Margin="0,1.5,6,0" Text="夜未央S" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Esykaul" />
+                        <TextBlock Margin="0,1.5,6,0" Text="粑8博弈" />
+                        <TextBlock Margin="0,1.5,6,0" Text="GY9965" />
+                        <TextBlock Margin="0,1.5,6,0" Text="果冻1号" />
+                        <TextBlock Margin="0,1.5,6,0" Text="chicken" />
+                        <TextBlock Margin="0,1.5,6,0" Text="阿毛mjy" />
+                        <TextBlock Margin="0,1.5,6,0" Text="CRF1SH" />
+                        <TextBlock Margin="0,1.5,6,0" Text="EDream" />
+                        <TextBlock Margin="0,1.5,6,0" Text="-Guard-" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Stridder" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Lennyes" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Aspirike" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Paprosa" />
+                        <TextBlock Margin="0,1.5,6,0" Text="weather" />
+                        <TextBlock Margin="0,1.5,6,0" Text="qwptpw" />
+                        <TextBlock Margin="0,1.5,6,0" Text="RedLink" />
+                        <TextBlock Margin="0,1.5,6,0" Text="longday" />
+                        <TextBlock Margin="0,1.5,6,0" Text="wwwww" />
+                        <TextBlock Margin="0,1.5,6,0" Text="我不在线" />
+                        <TextBlock Margin="0,1.5,6,0" Text="脏仔牛奶" />
+                        <TextBlock Margin="0,1.5,6,0" Text="贤者摸鱼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="只见伊人" />
+                        <TextBlock Margin="0,1.5,6,0" Text="小鱼干儿" />
+                        <TextBlock Margin="0,1.5,6,0" Text="逆浪千秋" />
+                        <TextBlock Margin="0,1.5,6,0" Text="南宫若兮" />
+                        <TextBlock Margin="0,1.5,6,0" Text="二十四誓" />
+                        <TextBlock Margin="0,1.5,6,0" Text="浮世三千" />
+                        <TextBlock Margin="0,1.5,6,0" Text="逐兔寻鲸" />
+                        <TextBlock Margin="0,1.5,6,0" Text="氮气炸锅" />
+                        <TextBlock Margin="0,1.5,6,0" Text="爱莉希雅" />
+                        <TextBlock Margin="0,1.5,6,0" Text="容我三思" />
+                        <TextBlock Margin="0,1.5,6,0" Text="正经云泽" />
+                        <TextBlock Margin="0,1.5,6,0" Text="不会起名" />
+                        <TextBlock Margin="0,1.5,6,0" Text="肆拾贰号" />
+                        <TextBlock Margin="0,1.5,6,0" Text="小茵fans" />
+                        <TextBlock Margin="0,1.5,6,0" Text="杰克刀哥" />
+                        <TextBlock Margin="0,1.5,6,0" Text="风止于夏" />
+                        <TextBlock Margin="0,1.5,6,0" Text="汇流成莹" />
+                        <TextBlock Margin="0,1.5,6,0" Text="霜灵雾屿" />
+                        <TextBlock Margin="0,1.5,6,0" Text="依宸不在" />
+                        <TextBlock Margin="0,1.5,6,0" Text="繁星闪音" />
+                        <TextBlock Margin="0,1.5,6,0" Text="萧萧轻语" />
+                        <TextBlock Margin="0,1.5,6,0" Text="文文新闻" />
+                        <TextBlock Margin="0,1.5,6,0" Text="耶日霍夫" />
+                        <TextBlock Margin="0,1.5,6,0" Text="游鹤神归" />
+                        <TextBlock Margin="0,1.5,6,0" Text="加央顿珠" />
+                        <TextBlock Margin="0,1.5,6,0" Text="不讲武德" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Xiaotian" />
+                        <TextBlock Margin="0,1.5,6,0" Text="雨夜渔阳" />
+                        <TextBlock Margin="0,1.5,6,0" Text="冻天星梦" />
+                        <TextBlock Margin="0,1.5,6,0" Text="醉歌梦凌" />
+                        <TextBlock Margin="0,1.5,6,0" Text="一只沙貂" />
+                        <TextBlock Margin="0,1.5,6,0" Text="高山炎炎" />
+                        <TextBlock Margin="0,1.5,6,0" Text="桐树生花" />
+                        <TextBlock Margin="0,1.5,6,0" Text="马赛克娘" />
+                        <TextBlock Margin="0,1.5,6,0" Text="瓦尔基里" />
+                        <TextBlock Margin="0,1.5,6,0" Text="旧事酒浓" />
+                        <TextBlock Margin="0,1.5,6,0" Text="奇迹于你" />
+                        <TextBlock Margin="0,1.5,6,0" Text="北宋供奉" />
+                        <TextBlock Margin="0,1.5,6,0" Text="粪海狂蛆" />
+                        <TextBlock Margin="0,1.5,6,0" Text="暮雪沉香" />
+                        <TextBlock Margin="0,1.5,6,0" Text="领袖凉生" />
+                        <TextBlock Margin="0,1.5,6,0" Text="欧气虹吸" />
+                        <TextBlock Margin="0,1.5,6,0" Text="饿性循环" />
+                        <TextBlock Margin="0,1.5,6,0" Text="白灼百叶" />
+                        <TextBlock Margin="0,1.5,6,0" Text="竹林提酒" />
+                        <TextBlock Margin="0,1.5,6,0" Text="黎月红夕" />
+                        <TextBlock Margin="0,1.5,6,0" Text="天下无双" />
+                        <TextBlock Margin="0,1.5,6,0" Text="四月喝茶" />
+                        <TextBlock Margin="0,1.5,6,0" Text="vx:久念" />
+                        <TextBlock Margin="0,1.5,6,0" Text="咫尺之遥" />
+                        <TextBlock Margin="0,1.5,6,0" Text="谁知道喽" />
+                        <TextBlock Margin="0,1.5,6,0" Text="和光同尘" />
+                        <TextBlock Margin="0,1.5,6,0" Text="琉璃柏影" />
+                        <TextBlock Margin="0,1.5,6,0" Text="白鸢鲸落" />
+                        <TextBlock Margin="0,1.5,6,0" Text="陌刀云一" />
+                        <TextBlock Margin="0,1.5,6,0" Text="(=^x^=)" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Milkyink" />
+                        <TextBlock Margin="0,1.5,6,0" Text="houteng" />
+                        <TextBlock Margin="0,1.5,6,0" Text="MiaoTvT" />
+                        <TextBlock Margin="0,1.5,6,0" Text="是黎明Ya" />
+                        <TextBlock Margin="0,1.5,6,0" Text="IcassavaI" />
+                        <TextBlock Margin="0,1.5,6,0" Text="zgyyyyyy" />
+                        <TextBlock Margin="0,1.5,6,0" Text="無WuAD" />
+                        <TextBlock Margin="0,1.5,6,0" Text="小鹅_XEE" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Naroulta" />
+                        <TextBlock Margin="0,1.5,6,0" Text="lazeshen" />
+                        <TextBlock Margin="0,1.5,6,0" Text="VVVerniy" />
+                        <TextBlock Margin="0,1.5,6,0" Text="PoiliPoili" />
+                        <TextBlock Margin="0,1.5,6,0" Text="777seese" />
+                        <TextBlock Margin="0,1.5,6,0" Text=" 脖子右拧" />
+                        <TextBlock Margin="0,1.5,6,0" Text="User9075" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Bai_Yang" />
+                        <TextBlock Margin="0,1.5,6,0" Text="平凡-仁友" />
+                        <TextBlock Margin="0,1.5,6,0" Text="bbbbben" />
+                        <TextBlock Margin="0,1.5,6,0" Text="3355411²" />
+                        <TextBlock Margin="0,1.5,6,0" Text="boluoluo" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Marming" />
+                        <TextBlock Margin="0,1.5,6,0" Text="雾眠Reko" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Sevenfan" />
+                        <TextBlock Margin="0,1.5,6,0" Text="114514sir" />
+                        <TextBlock Margin="0,1.5,6,0" Text="忆恩sama" />
+                        <TextBlock Margin="0,1.5,6,0" Text="InertStew" />
+                        <TextBlock Margin="0,1.5,6,0" Text="小沉Chen" />
+                        <TextBlock Margin="0,1.5,6,0" Text="断网没mu" />
+                        <TextBlock Margin="0,1.5,6,0" Text="THOPING" />
+                        <TextBlock Margin="0,1.5,6,0" Text="EXcloudZ" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Leisurelyz" />
+                        <TextBlock Margin="0,1.5,6,0" Text="white白鸽" />
+                        <TextBlock Margin="0,1.5,6,0" Text="有用的小B" />
+                        <TextBlock Margin="0,1.5,6,0" Text="GKIGVHJJ" />
+                        <TextBlock Margin="0,1.5,6,0" Text="YMonody" />
+                        <TextBlock Margin="0,1.5,6,0" Text="历战b三狼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="DHSGXKL" />
+                        <TextBlock Margin="0,1.5,6,0" Text="执意追风..." />
+                        <TextBlock Margin="0,1.5,6,0" Text="ZMMMM" />
+                        <TextBlock Margin="0,1.5,6,0" Text="sensei425" />
+                        <TextBlock Margin="0,1.5,6,0" Text="aslillusory" />
+                        <TextBlock Margin="0,1.5,6,0" Text="fjh321008" />
+                        <TextBlock Margin="0,1.5,6,0" Text="ai_114514" />
+                        <TextBlock Margin="0,1.5,6,0" Text="BlackGary" />
+                        <TextBlock Margin="0,1.5,6,0" Text="MoFu莫孚" />
+                        <TextBlock Margin="0,1.5,6,0" Text="gggg1234" />
+                        <TextBlock Margin="0,1.5,6,0" Text="-雾里看星-" />
+                        <TextBlock Margin="0,1.5,6,0" Text="R2hyb3Ro" />
+                        <TextBlock Margin="0,1.5,6,0" Text="暮幽&amp;星辰" />
+                        <TextBlock Margin="0,1.5,6,0" Text="DoorDoor" />
+                        <TextBlock Margin="0,1.5,6,0" Text="乄罒丶灬彡" />
+                        <TextBlock Margin="0,1.5,6,0" Text="众所又周知" />
+                        <TextBlock Margin="0,1.5,6,0" Text="一小片雨霖" />
+                        <TextBlock Margin="0,1.5,6,0" Text="爱游戏的狼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Smile_sink" />
+                        <TextBlock Margin="0,1.5,6,0" Text="不浇会枯花" />
+                        <TextBlock Margin="0,1.5,6,0" Text="想喝冰可乐" />
+                        <TextBlock Margin="0,1.5,6,0" Text="残阳墨雨柒" />
+                        <TextBlock Margin="0,1.5,6,0" Text="忘却的旋律" />
+                        <TextBlock Margin="0,1.5,6,0" Text="迪奥的迪克" />
+                        <TextBlock Margin="0,1.5,6,0" Text="封于修不修" />
+                        <TextBlock Margin="0,1.5,6,0" Text="山海不可平" />
+                        <TextBlock Margin="0,1.5,6,0" Text="梦に逢う夜" />
+                        <TextBlock Margin="0,1.5,6,0" Text="被遗弃的猫" />
+                        <TextBlock Margin="0,1.5,6,0" Text="FalseSleep" />
+                        <TextBlock Margin="0,1.5,6,0" Text="消失的狐狸" />
+                        <TextBlock Margin="0,1.5,6,0" Text="折戟唤沉沙" />
+                        <TextBlock Margin="0,1.5,6,0" Text="神秘车万厨" />
+                        <TextBlock Margin="0,1.5,6,0" Text="葡萄成熟时" />
+                        <TextBlock Margin="0,1.5,6,0" Text="微观粒子号" />
+                        <TextBlock Margin="0,1.5,6,0" Text="ㅤ明月入怀" />
+                        <TextBlock Margin="0,1.5,6,0" Text="没有名字哈" />
+                        <TextBlock Margin="0,1.5,6,0" Text="帝皇的货币" />
+                        <TextBlock Margin="0,1.5,6,0" Text="暗黑卡卡西" />
+                        <TextBlock Margin="0,1.5,6,0" Text="月掩星未眠" />
+                        <TextBlock Margin="0,1.5,6,0" Text="老登吃小登" />
+                        <TextBlock Margin="0,1.5,6,0" Text="星辰与月亮" />
+                        <TextBlock Margin="0,1.5,6,0" Text="想吃烤冷面" />
+                        <TextBlock Margin="0,1.5,6,0" Text="此玉却彼风" />
+                        <TextBlock Margin="0,1.5,6,0" Text="蛋炒饭大王" />
+                        <TextBlock Margin="0,1.5,6,0" Text="青岚丶悠远" />
+                        <TextBlock Margin="0,1.5,6,0" Text="玖久九鸠纠" />
+                        <TextBlock Margin="0,1.5,6,0" Text="无聊的爱莉" />
+                        <TextBlock Margin="0,1.5,6,0" Text="希希爱睡觉" />
+                        <TextBlock Margin="0,1.5,6,0" Text="六面三倍速" />
+                        <TextBlock Margin="0,1.5,6,0" Text="orangexixi" />
+                        <TextBlock Margin="0,1.5,6,0" Text="月下如墨黑" />
+                        <TextBlock Margin="0,1.5,6,0" Text="此心无一事" />
+                        <TextBlock Margin="0,1.5,6,0" Text="烂鱼一条线" />
+                        <TextBlock Margin="0,1.5,6,0" Text="欲买桂花酒" />
+                        <TextBlock Margin="0,1.5,6,0" Text="慢悠悠报表" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Myst-FOEY" />
+                        <TextBlock Margin="0,1.5,6,0" Text="qaz155808" />
+                        <TextBlock Margin="0,1.5,6,0" Text="289775340" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Executarea" />
+                        <TextBlock Margin="0,1.5,6,0" Text="rosewhisky" />
+                        <TextBlock Margin="0,1.5,6,0" Text="mreaaaaay" />
+                        <TextBlock Margin="0,1.5,6,0" Text="GreyFalcon" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Neko_2333" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Stellar_Red" />
+                        <TextBlock Margin="0,1.5,6,0" Text="陶纸Mr.Tao" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Hhhsalfkhs" />
+                        <TextBlock Margin="0,1.5,6,0" Text="地灵989898" />
+                        <TextBlock Margin="0,1.5,6,0" Text="小啊北Devo" />
+                        <TextBlock Margin="0,1.5,6,0" Text="  花落碎人心" />
+                        <TextBlock Margin="0,1.5,6,0" Text="TravellerISX" />
+                        <TextBlock Margin="0,1.5,6,0" Text="littlefive999" />
+                        <TextBlock Margin="0,1.5,6,0" Text="AliesMoctxi" />
+                        <TextBlock Margin="0,1.5,6,0" Text="EmmSUPER" />
+                        <TextBlock Margin="0,1.5,6,0" Text="DeathHunk" />
+                        <TextBlock Margin="0,1.5,6,0" Text="时时雨Sama" />
+                        <TextBlock Margin="0,1.5,6,0" Text="永远的Elysia" />
+                        <TextBlock Margin="0,1.5,6,0" Text="2127864647" />
+                        <TextBlock Margin="0,1.5,6,0" Text="yu🐟 ζ°)))彡" />
+                        <TextBlock Margin="0,1.5,6,0" Text="COImos071_" />
+                        <TextBlock Margin="0,1.5,6,0" Text="QingYiLiang" />
+                        <TextBlock Margin="0,1.5,6,0" Text="诺万_Norvan" />
+                        <TextBlock Margin="0,1.5,6,0" Text="amazingball" />
+                        <TextBlock Margin="0,1.5,6,0" Text="边骂边摆的驴" />
+                        <TextBlock Margin="0,1.5,6,0" Text="万物不及欣然" />
+                        <TextBlock Margin="0,1.5,6,0" Text="桓桓在等高铁" />
+                        <TextBlock Margin="0,1.5,6,0" Text="随便写的名字" />
+                        <TextBlock Margin="0,1.5,6,0" Text="我就是萝莉控" />
+                        <TextBlock Margin="0,1.5,6,0" Text="秦大人工作室" />
+                        <TextBlock Margin="0,1.5,6,0" Text="爱村民的小春" />
+                        <TextBlock Margin="0,1.5,6,0" Text="泰拉萌新小王" />
+                        <TextBlock Margin="0,1.5,6,0" Text="大貓君小貓君" />
+                        <TextBlock Margin="0,1.5,6,0" Text="画下梦的羽衣" />
+                        <TextBlock Margin="0,1.5,6,0" Text="枫叶下的沉默" />
+                        <TextBlock Margin="0,1.5,6,0" Text="欢愉不是花鱼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="这算个什么鬼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="你无聊的队友" />
+                        <TextBlock Margin="0,1.5,6,0" Text="壬彐木公木木" />
+                        <TextBlock Margin="0,1.5,6,0" Text="口渴了不喝水" />
+                        <TextBlock Margin="0,1.5,6,0" Text="全网最善之人" />
+                        <TextBlock Margin="0,1.5,6,0" Text="星核猎手银狼" />
+                        <TextBlock Margin="0,1.5,6,0" Text="凯文卡斯兰娜" />
+                        <TextBlock Margin="0,1.5,6,0" Text="happy?无聊" />
+                        <TextBlock Margin="0,1.5,6,0" Text="殷殷殷!!!" />
+                        <TextBlock Margin="0,1.5,6,0" Text="打泡泡SAMA" />
+                        <TextBlock Margin="0,1.5,6,0" Text="猫的龙车吸引" />
+                        <TextBlock Margin="0,1.5,6,0" Text="谁念桥边红药" />
+                        <TextBlock Margin="0,1.5,6,0" Text="centuryplant" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Suber_agiley" />
+                        <TextBlock Margin="0,1.5,6,0" Text="NoBody_MO" />
+                        <TextBlock Margin="0,1.5,6,0" Text="M的CC_5b67" />
+                        <TextBlock Margin="0,1.5,6,0" Text="gaomanman" />
+                        <TextBlock Margin="0,1.5,6,0" Text="satorikomeiji" />
+                        <TextBlock Margin="0,1.5,6,0" Text="元初_Nanana" />
+                        <TextBlock Margin="0,1.5,6,0" Text="小喜出品1239" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Changephon" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Emo真的emo" />
+                        <TextBlock Margin="0,1.5,6,0" Text="路过一下的lsp" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Nakano Nino" />
+                        <TextBlock Margin="0,1.5,6,0" Text="minecraft风竹" />
+                        <TextBlock Margin="0,1.5,6,0" Text="huangweijian" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Kecdl_Chacha" />
+                        <TextBlock Margin="0,1.5,6,0" Text="CrimsonCloud" />
+                        <TextBlock Margin="0,1.5,6,0" Text="minecraftac11" />
+                        <TextBlock Margin="0,1.5,6,0" Text="一只可爱的ss猹" />
+                        <TextBlock Margin="0,1.5,6,0" Text="黑煤球第一帕克" />
+                        <TextBlock Margin="0,1.5,6,0" Text="qq1967131327" />
+                        <TextBlock Margin="0,1.5,6,0" Text="清清娴娴哆快乐" />
+                        <TextBlock Margin="0,1.5,6,0" Text="地表最强妹妹头" />
+                        <TextBlock Margin="0,1.5,6,0" Text="半世琉璃倾城梦" />
+                        <TextBlock Margin="0,1.5,6,0" Text="思念最是飞雪时" />
+                        <TextBlock Margin="0,1.5,6,0" Text="做人要脑洞大开" />
+                        <TextBlock Margin="0,1.5,6,0" Text="正义警官足立透" />
+                        <TextBlock Margin="0,1.5,6,0" Text="夜空中最亮的星" />
+                        <TextBlock Margin="0,1.5,6,0" Text="正义哥布林二号" />
+                        <TextBlock Margin="0,1.5,6,0" Text="大王叫我去做饭" />
+                        <TextBlock Margin="0,1.5,6,0" Text="泪水打湿泪水湿" />
+                        <TextBlock Margin="0,1.5,6,0" Text="みやぐにあかり" />
+                        <TextBlock Margin="0,1.5,6,0" Text="苇名剑圣有地绫" />
+                        <TextBlock Margin="0,1.5,6,0" Text="SummerAlway_" />
+                        <TextBlock Margin="0,1.5,6,0" Text="CHENDASHUAI" />
+                        <TextBlock Margin="0,1.5,6,0" Text="柚子_grapefruit_" />
+                        <TextBlock Margin="0,1.5,6,0" Text="天下第一可爱芝麻" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Hendestroyer149" />
+                        <TextBlock Margin="0,1.5,6,0" Text="一名热爱mc的玩家" />
+                        <TextBlock Margin="0,1.5,6,0" Text="过年啦(๑ᵔ⌔ᵔ๑)ノ🧨" />
+                        <TextBlock Margin="0,1.5,6,0" Text="星ベ空(Xingkong)" />
+                        <TextBlock Margin="0,1.5,6,0" Text="WerewolfwolfyXD" />
+                        <TextBlock Margin="0,1.5,6,0" Text="All systems normal" />
+                        <TextBlock Margin="0,1.5,6,0" Text="传奇幻想乡冰之勇者" />
+                        <TextBlock Margin="0,1.5,6,0" Text="NepentheAria-ゆせ" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Mercuryearedrabbit" />
+                        <TextBlock Margin="0,1.5,6,0" Text="Exeller(没钱的腐竹)" />
+                        <TextBlock Margin="0,1.5,6,0" Text="荒漠迷城第一突破手凑友希娜" />
+                        <TextBlock Margin="0,1.5,6,0" Text="我*:《蚊子》【*】亖**蚊子引雷" />
                     </WrapPanel>
                     <Grid Height="35">
                         <Grid.ColumnDefinitions>

+ 5 - 5
Plain Craft Launcher 2/Pages/PageOther/PageOtherHelp.xaml.vb

@@ -144,13 +144,13 @@
                 If Not Entry.ShowInSearch OrElse (Val(VersionBranchCode) <> 50 AndAlso Not Entry.ShowInSnapshot) Then Continue For
                 QueryList.Add(New SearchEntry(Of HelpEntry) With {
                     .Item = Entry,
-                    .SearchSource = New List(Of KeyValuePair(Of String, Double)) From {
-                        New KeyValuePair(Of String, Double)(Entry.Title, 1),
-                        New KeyValuePair(Of String, Double)(Entry.Desc, 0.5),
-                        New KeyValuePair(Of String, Double)(Entry.Search, 1.5)
+                    .SearchSource = New List(Of SearchSource) From {
+                        New SearchSource(Entry.Title, 1),
+                        New SearchSource(Entry.Desc, 0.5),
+                        New SearchSource(Entry.Search, 1.5)
                     }
                 })
-                'New KeyValuePair(Of String, Double)(If(Entry.IsEvent, If(Entry.EventData, ""), Entry.XamlContent), 0.2)
+                'New SearchSource(If(Entry.IsEvent, If(Entry.EventData, ""), Entry.XamlContent), 0.2)
             Next
             '进行搜索,构造列表
             Dim SearchResult = Search(QueryList, SearchBox.Text, MaxBlurCount:=5, MinBlurSimilarity:=0.08)

+ 39 - 52
Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb

@@ -101,12 +101,13 @@
         {"LaunchArgumentWindowHeight", New SetupEntry(480)},
         {"LaunchArgumentWindowType", New SetupEntry(1)},
         {"LaunchArgumentRam", New SetupEntry(False, Source:=SetupSource.Registry)},
-        {"LaunchAdvanceJvm", New SetupEntry("-XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Djdk.lang.Process.allowAmbiguousCommands=true -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true")},
+        {"LaunchAdvanceJvm", New SetupEntry("-XX:-OmitStackTraceInFastThrow -Djdk.lang.Process.allowAmbiguousCommands=true -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true")},
         {"LaunchAdvanceGame", New SetupEntry("")},
         {"LaunchAdvanceRun", New SetupEntry("")},
         {"LaunchAdvanceRunWait", New SetupEntry(True)},
         {"LaunchAdvanceDisableJLW", New SetupEntry(False)},
         {"LaunchAdvanceGraphicCard", New SetupEntry(True, Source:=SetupSource.Registry)},
+        {"LaunchAdvanceGC", New SetupEntry(1)},
         {"LaunchRamType", New SetupEntry(0)},
         {"LaunchRamCustom", New SetupEntry(15)},
         {"LinkLastAutoJoinInviteCode", New SetupEntry("", Source:=SetupSource.Registry)},
@@ -180,6 +181,7 @@
         {"VersionAdvanceRunWait", New SetupEntry(True, Source:=SetupSource.Instance)},
         {"VersionAdvanceDisableJLW", New SetupEntry(False, Source:=SetupSource.Instance)},
         {"VersionAdvanceDisableModUpdate", New SetupEntry(False, Source:=SetupSource.Instance)},
+        {"VersionAdvanceGC", New SetupEntry(0, Source:=SetupSource.Instance)},
         {"VersionRamType", New SetupEntry(2, Source:=SetupSource.Instance)},
         {"VersionRamCustom", New SetupEntry(15, Source:=SetupSource.Instance)},
         {"VersionRamOptimize", New SetupEntry(0, Source:=SetupSource.Instance)},
@@ -529,72 +531,57 @@
         FrmMain.ImgBack.Margin = New Thickness(-(Value + 1) / 1.8)
     End Sub
     Public Sub UiBackgroundSuit(Value As Integer)
-        If IsNothing(FrmMain.ImgBack.Background) Then Return
-        Dim Width As Double = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Width
-        Dim Height As Double = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Height
+        If FrmMain.ImgBack.Background Is Nothing Then Return
+        Dim Brush As ImageBrush = CType(FrmMain.ImgBack.Background, ImageBrush)
         If Value = 0 Then
             '智能:当图片较小时平铺,较大时适应
-            If Width < FrmMain.PanMain.ActualWidth / 2 AndAlso Height < FrmMain.PanMain.ActualHeight / 2 Then
+            If Brush.ImageSource.Width < FrmMain.PanMain.ActualWidth / 2 AndAlso Brush.ImageSource.Height < FrmMain.PanMain.ActualHeight / 2 Then
                 Value = 4 '平铺
             Else
                 Value = 2 '适应
             End If
         End If
-        CType(FrmMain.ImgBack.Background, ImageBrush).TileMode = TileMode.None
-        CType(FrmMain.ImgBack.Background, ImageBrush).Viewport = New Rect(0, 0, 1, 1)
-        CType(FrmMain.ImgBack.Background, ImageBrush).ViewportUnits = BrushMappingMode.RelativeToBoundingBox
+        Brush.Stretch = Stretch.UniformToFill
+        Brush.TileMode = TileMode.None
+        Brush.Viewport = New Rect(0, 0, 1, 1)
+        Brush.ViewportUnits = BrushMappingMode.RelativeToBoundingBox
         Select Case Value
-            Case 1 '居中
-                FrmMain.ImgBack.HorizontalAlignment = HorizontalAlignment.Center
-                FrmMain.ImgBack.VerticalAlignment = VerticalAlignment.Center
-                CType(FrmMain.ImgBack.Background, ImageBrush).Stretch = Stretch.None
-                FrmMain.ImgBack.Width = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Width
-                FrmMain.ImgBack.Height = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Height
             Case 2 '适应
-                FrmMain.ImgBack.HorizontalAlignment = HorizontalAlignment.Stretch
-                FrmMain.ImgBack.VerticalAlignment = VerticalAlignment.Stretch
-                CType(FrmMain.ImgBack.Background, ImageBrush).Stretch = Stretch.UniformToFill
-                FrmMain.ImgBack.Width = Double.NaN
-                FrmMain.ImgBack.Height = Double.NaN
             Case 3 '拉伸
-                FrmMain.ImgBack.HorizontalAlignment = HorizontalAlignment.Stretch
-                FrmMain.ImgBack.VerticalAlignment = VerticalAlignment.Stretch
-                CType(FrmMain.ImgBack.Background, ImageBrush).Stretch = Stretch.Fill
-                FrmMain.ImgBack.Width = Double.NaN
-                FrmMain.ImgBack.Height = Double.NaN
+                Brush.Stretch = Stretch.Fill
             Case 4 '平铺
-                FrmMain.ImgBack.HorizontalAlignment = HorizontalAlignment.Stretch
-                FrmMain.ImgBack.VerticalAlignment = VerticalAlignment.Stretch
-                CType(FrmMain.ImgBack.Background, ImageBrush).Stretch = Stretch.None
-                CType(FrmMain.ImgBack.Background, ImageBrush).TileMode = TileMode.Tile
-                CType(FrmMain.ImgBack.Background, ImageBrush).Viewport = New Rect(0, 0, CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Width, CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Height)
-                CType(FrmMain.ImgBack.Background, ImageBrush).ViewportUnits = BrushMappingMode.Absolute
-                FrmMain.ImgBack.Width = Double.NaN
-                FrmMain.ImgBack.Height = Double.NaN
+                Brush.Stretch = Stretch.None
+                Brush.TileMode = TileMode.Tile
+                Brush.Viewport = New Rect(0, 0, Brush.ImageSource.Width, Brush.ImageSource.Height)
+                Brush.ViewportUnits = BrushMappingMode.Absolute
+
+            Case 1 '中
+                Brush.AlignmentX = AlignmentX.Center
+                Brush.AlignmentY = AlignmentY.Center
             Case 5 '左上
-                FrmMain.ImgBack.HorizontalAlignment = HorizontalAlignment.Left
-                FrmMain.ImgBack.VerticalAlignment = VerticalAlignment.Top
-                CType(FrmMain.ImgBack.Background, ImageBrush).Stretch = Stretch.None
-                FrmMain.ImgBack.Width = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Width
-                FrmMain.ImgBack.Height = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Height
+                Brush.AlignmentX = AlignmentX.Left
+                Brush.AlignmentY = AlignmentY.Top
             Case 6 '右上
-                FrmMain.ImgBack.HorizontalAlignment = HorizontalAlignment.Right
-                FrmMain.ImgBack.VerticalAlignment = VerticalAlignment.Top
-                CType(FrmMain.ImgBack.Background, ImageBrush).Stretch = Stretch.None
-                FrmMain.ImgBack.Width = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Width
-                FrmMain.ImgBack.Height = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Height
+                Brush.AlignmentX = AlignmentX.Right
+                Brush.AlignmentY = AlignmentY.Top
             Case 7 '左下
-                FrmMain.ImgBack.HorizontalAlignment = HorizontalAlignment.Left
-                FrmMain.ImgBack.VerticalAlignment = VerticalAlignment.Bottom
-                CType(FrmMain.ImgBack.Background, ImageBrush).Stretch = Stretch.None
-                FrmMain.ImgBack.Width = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Width
-                FrmMain.ImgBack.Height = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Height
+                Brush.AlignmentX = AlignmentX.Left
+                Brush.AlignmentY = AlignmentY.Bottom
             Case 8 '右下
-                FrmMain.ImgBack.HorizontalAlignment = HorizontalAlignment.Right
-                FrmMain.ImgBack.VerticalAlignment = VerticalAlignment.Bottom
-                CType(FrmMain.ImgBack.Background, ImageBrush).Stretch = Stretch.None
-                FrmMain.ImgBack.Width = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Width
-                FrmMain.ImgBack.Height = CType(FrmMain.ImgBack.Background, ImageBrush).ImageSource.Height
+                Brush.AlignmentX = AlignmentX.Right
+                Brush.AlignmentY = AlignmentY.Bottom
+            Case 9 '左
+                Brush.AlignmentX = AlignmentX.Left
+                Brush.AlignmentY = AlignmentY.Center
+            Case 10 '右
+                Brush.AlignmentX = AlignmentX.Right
+                Brush.AlignmentY = AlignmentY.Center
+            Case 11 '上
+                Brush.AlignmentX = AlignmentX.Center
+                Brush.AlignmentY = AlignmentY.Top
+            Case 12 '下
+                Brush.AlignmentX = AlignmentX.Center
+                Brush.AlignmentY = AlignmentY.Bottom
         End Select
     End Sub
 

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

@@ -116,7 +116,7 @@
                     </Grid>
                 </StackPanel>
             </local:MyCard>
-            <local:MyCard Margin="0,0,0,15" Title="游戏内存">
+            <local:MyCard Margin="0,0,0,15" Title="内存分配">
                 <StackPanel Margin="25,40,25,15">
                     <local:MyHint x:Name="LabRamWarn" Visibility="Visible" Text="32 位 Java 只能分配最多 1 GB 的内存。强烈建议换用 64 位的 Java!" Theme="Yellow" Margin="0,0,0,12" />
                     <Grid Margin="0,0,0,3">
@@ -231,6 +231,8 @@
                         <RowDefinition Height="9" />
                         <RowDefinition Height="28" />
                         <RowDefinition Height="Auto" />
+                        <RowDefinition Height="9" />
+                        <RowDefinition Height="28" />
                         <RowDefinition Height="Auto" />
                         <RowDefinition Height="Auto" />
                     </Grid.RowDefinitions>
@@ -249,13 +251,24 @@
                                  ToolTip="在 MC 启动前执行特定命令或程序,语法与 Windows 的命令提示符一致。&#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}options.txt&quot; :使用记事本打开该版本的设置文件&#xa;&#xa;涉及路径的操作最好都打上双引号,以避免路径中的空格导致运行失败。&#xa;执行命令时,命令行所在的目录是当前的 .minecraft 文件夹。" />
                     <local:MyCheckBox Grid.Row="5" Grid.Column="1" x:Name="CheckAdvanceRunWait" Tag="LaunchAdvanceRunWait" Visibility="Collapsed"
                                   Text="等待命令执行完成后再继续启动" Margin="0,8,0,7" />
-                    <StackPanel Margin="0,12,0,4" Grid.Row="6" Grid.ColumnSpan="2" HorizontalAlignment="Left">
+                    <TextBlock VerticalAlignment="Center" Grid.Row="7" HorizontalAlignment="Left" Text="内存管理" Margin="0,0,25,0" />
+                    <local:MyComboBox x:Name="ComboAdvanceGC" Grid.Row="7" Grid.ColumnSpan="2" Tag="LaunchAdvanceGC" Grid.Column="1">
+                        <local:MyComboBoxItem Content="尽量使用 ZGC(激进)"
+                                              ToolTipService.BetweenShowDelay="0" ToolTip="在 Java 21+ 使用分代 ZGC,20~15 使用非分代的 ZGC,14- 使用 G1GC。&#xa;在 Java 25+ 额外添加 -XX:+UseCompactObjectHeaders。&#xa;&#xa;覆盖 “Java 虚拟机参数” 设置中的 GC 相关参数。" />
+                        <local:MyComboBoxItem Content="尽量使用分代 ZGC(平衡)" IsSelected="True"
+                                              ToolTipService.BetweenShowDelay="0" ToolTip="在 Java 21+ 使用分代 ZGC,20- 使用 G1GC。&#xa;在 Java 25+ 额外添加 -XX:+UseCompactObjectHeaders。&#xa;&#xa;覆盖 “Java 虚拟机参数” 设置中的 GC 相关参数。" />
+                        <local:MyComboBoxItem Content="仅 G1GC"
+                                              ToolTipService.BetweenShowDelay="0" ToolTip="固定使用以下参数:&#xa;-XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M&#xa;&#xa;覆盖 “Java 虚拟机参数” 设置中的 GC 相关参数。" />
+                        <local:MyComboBoxItem Content="不指定(可自定义)"
+                                              ToolTipService.BetweenShowDelay="0" ToolTip="不自动添加 GC 参数。&#xa;&#xa;仅当选择此项时,你可以在 “Java 虚拟机参数” 设置中手动添加 GC 参数。" />
+                    </local:MyComboBox>
+                    <StackPanel Margin="0,12,0,4" Grid.Row="8" Grid.ColumnSpan="2" HorizontalAlignment="Left">
                         <local:MyCheckBox Height="28" Text="禁用 Java Launch Wrapper" x:Name="CheckAdvanceDisableJLW" Tag="LaunchAdvanceDisableJLW"
                             ToolTipService.Placement="Right" ToolTip="PCL 会使用 Java Launch Wrapper 来修复老版本 Java 在中文路径下无法启动的问题。&#xa;如果这被反作弊拦截,或遇到其他问题,也可以将其关闭。" />
                         <local:MyCheckBox Height="28" Text="使用高性能显卡" x:Name="CheckAdvanceGraphicCard" Tag="LaunchAdvanceGraphicCard"
                             ToolTipService.Placement="Right" ToolTip="自动在 Windows 设置 → 系统 → 屏幕 → 显示卡 中将 PCL 和 Java 改为使用高性能显卡。&#xa;如果同时有集成显卡和独立显卡,这能确保 MC 使用独立显卡进行渲染,以大幅提高帧率。" />
                     </StackPanel>
-                    <local:MyHint Text="版本独立设置中还有更多高级选项可供调整。" Margin="0,5,0,10" Theme="Blue" Grid.Row="7" Grid.ColumnSpan="2"
+                    <local:MyHint Text="版本独立设置中还有更多高级选项可供调整。" Margin="0,5,0,10" Theme="Blue" Grid.Row="9" Grid.ColumnSpan="2"
                                   CanClose="True" RelativeSetup="HintMoreAdvancedSetup" />
                 </Grid>
             </local:MyCard>

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

@@ -54,6 +54,7 @@
             TextAdvanceJvm.Text = Setup.Get("LaunchAdvanceJvm")
             TextAdvanceGame.Text = Setup.Get("LaunchAdvanceGame")
             TextAdvanceRun.Text = Setup.Get("LaunchAdvanceRun")
+            ComboAdvanceGC.SelectedIndex = Setup.Get("LaunchAdvanceGC")
             CheckAdvanceRunWait.Checked = Setup.Get("LaunchAdvanceRunWait")
             CheckAdvanceDisableJLW.Checked = Setup.Get("LaunchAdvanceDisableJLW")
             CheckAdvanceGraphicCard.Checked = Setup.Get("LaunchAdvanceGraphicCard")
@@ -85,6 +86,7 @@
             Setup.Reset("LaunchAdvanceJvm")
             Setup.Reset("LaunchAdvanceGame")
             Setup.Reset("LaunchAdvanceRun")
+            Setup.Reset("LaunchAdvanceGC")
             Setup.Reset("LaunchAdvanceRunWait")
             Setup.Reset("LaunchAdvanceDisableJLW")
             Setup.Reset("LaunchAdvanceGraphicCard")
@@ -111,7 +113,7 @@
     Private Shared Sub SliderChange(sender As MySlider, e As Object) Handles SliderRamCustom.Change
         If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Value)
     End Sub
-    Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboArgumentIndieV2.SelectionChanged, ComboArgumentVisibie.SelectionChanged, ComboArgumentWindowType.SelectionChanged, ComboArgumentPriority.SelectionChanged
+    Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboArgumentIndieV2.SelectionChanged, ComboArgumentVisibie.SelectionChanged, ComboArgumentWindowType.SelectionChanged, ComboArgumentPriority.SelectionChanged, ComboAdvanceGC.SelectionChanged
         If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex)
     End Sub
     Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceRunWait.Change, CheckArgumentRam.Change, CheckAdvanceDisableJLW.Change, CheckAdvanceGraphicCard.Change

+ 8 - 4
Plain Craft Launcher 2/Pages/PageSetup/PageSetupUI.xaml

@@ -94,10 +94,14 @@
                             <local:MyComboBoxItem Content="适应" ToolTip="拉伸图片并保持长宽比不变,直至填满整个窗口" />
                             <local:MyComboBoxItem Content="拉伸" ToolTip="拉伸图片使其恰好填满整个窗口,很可能会导致长宽比的改变" />
                             <local:MyComboBoxItem Content="平铺" />
-                            <local:MyComboBoxItem Content="居于左上" />
-                            <local:MyComboBoxItem Content="居于右上" />
-                            <local:MyComboBoxItem Content="居于左下" />
-                            <local:MyComboBoxItem Content="居于右下" />
+                            <local:MyComboBoxItem Content="左上" />
+                            <local:MyComboBoxItem Content="右上" />
+                            <local:MyComboBoxItem Content="左下" />
+                            <local:MyComboBoxItem Content="右下" />
+                            <local:MyComboBoxItem Content="左" />
+                            <local:MyComboBoxItem Content="右" />
+                            <local:MyComboBoxItem Content="上" />
+                            <local:MyComboBoxItem Content="下" />
                         </local:MyComboBox>
                     </Grid>
                     <Grid x:Name="PanBackgroundOpacity" Height="22" Margin="0,0,0,7" Visibility="Collapsed">

Разница между файлами не показана из-за своего большого размера
+ 122 - 122
Plain Craft Launcher 2/Resources/ModData.txt


Некоторые файлы не были показаны из-за большого количества измененных файлов