Merge branch 'main' into fix#5966

This commit is contained in:
wyc-26
2025-04-09 19:33:14 +08:00
committed by GitHub
22 changed files with 1722 additions and 681 deletions
+16
View File
@@ -10,6 +10,14 @@ Public Class FormMain
Dim FeatureList As New List(Of KeyValuePair(Of Integer, String)) Dim FeatureList As New List(Of KeyValuePair(Of Integer, String))
'统计更新日志条目 '统计更新日志条目
#If BETA Then #If BETA Then
If LastVersion < 354 Then 'Release 2.9.3
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:Minecraft 会优先使用独立显卡运行"))
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:简化下载新版本第二步的 UI"))
FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:使用新的版本隔离策略"))
FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:添加了在全局启动设置与版本独立设置之间互相跳转的按钮"))
FeatureCount += 20
BugCount += 28
End If
If LastVersion < 352 Then 'Release 2.9.1 If LastVersion < 352 Then 'Release 2.9.1
FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "新增:导出整合包功能")) FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "新增:导出整合包功能"))
FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:支持在超长路径下安装、启动游戏")) FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:支持在超长路径下安装、启动游戏"))
@@ -58,6 +66,14 @@ Public Class FormMain
'3:BUG+ IMP* FEAT- '3:BUG+ IMP* FEAT-
'2:BUG* IMP- '2:BUG* IMP-
'1:BUG- '1:BUG-
If LastVersion < 353 Then 'Snapshot 2.9.3
If LastVersion = 352 Then
FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:低版本 MC 没有声音"))
FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:若不安装 Mod 加载器,则无法安装 OptiFine 1.14+"))
End If
FeatureCount += 8
BugCount += 8
End If
If LastVersion < 352 Then 'Snapshot 2.9.2 If LastVersion < 352 Then 'Snapshot 2.9.2
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:Minecraft 会优先使用独立显卡运行")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:Minecraft 会优先使用独立显卡运行"))
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:简化下载新版本第二步的 UI")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:简化下载新版本第二步的 UI"))
+24 -8
View File
@@ -1,10 +1,11 @@
Imports System.Globalization Imports System.Globalization
Imports System.IO.Compression Imports System.IO.Compression
Imports System.Reflection
Imports System.Runtime.CompilerServices Imports System.Runtime.CompilerServices
Imports System.Security.Cryptography Imports System.Security.Cryptography
Imports System.Security.Principal Imports System.Security.Principal
Imports System.Text.RegularExpressions Imports System.Text.RegularExpressions
Imports System.Windows.Markup Imports System.Xaml
Imports Newtonsoft.Json Imports Newtonsoft.Json
Public Module ModBase Public Module ModBase
@@ -12,13 +13,13 @@ Public Module ModBase
#Region "声明" #Region "声明"
'下列版本信息由更新器自动修改 '下列版本信息由更新器自动修改
Public Const VersionBaseName As String = "2.9.2" '不含分支前缀的显示用版本名 Public Const VersionBaseName As String = "2.9.3" '不含分支前缀的显示用版本名
Public Const VersionStandardCode As String = "2.9.2." & VersionBranchCode '标准格式的四段式版本号 Public Const VersionStandardCode As String = "2.9.3." & VersionBranchCode '标准格式的四段式版本号
Public Const CommitHash As String = "" 'Commit Hash,由 GitHub Workflow 自动替换 Public Const CommitHash As String = "" 'Commit Hash,由 GitHub Workflow 自动替换
#If BETA Then #If BETA Then
Public Const VersionCode As Integer = 352 'Release Public Const VersionCode As Integer = 355 'Release
#Else #Else
Public Const VersionCode As Integer = 353 'Snapshot Public Const VersionCode As Integer = 354 'Snapshot
#End If #End If
'自动生成的版本信息 '自动生成的版本信息
Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName
@@ -1697,6 +1698,7 @@ RetryDir:
End Function End Function
''' <summary> ''' <summary>
''' 获取处于两个子字符串之间的部分,裁切尽可能多的内容。 ''' 获取处于两个子字符串之间的部分,裁切尽可能多的内容。
''' 等效于 AfterLast 后接 BeforeFirst。
''' 如果未找到子字符串则不裁切。 ''' 如果未找到子字符串则不裁切。
''' </summary> ''' </summary>
<Extension> Public Function Between(Str As String, After As String, Before As String, Optional IgnoreCase As Boolean = False) As String <Extension> Public Function Between(Str As String, After As String, Before As String, Optional IgnoreCase As Boolean = False) As String
@@ -2747,13 +2749,27 @@ Retry:
''' <summary> ''' <summary>
''' 将 XML 转换为对应 UI 对象。 ''' 将 XML 转换为对应 UI 对象。
''' </summary> ''' </summary>
Public Function GetObjectFromXML(Str As String) Public Function GetObjectFromXML(Str As String) As Object
Using Stream As New MemoryStream Using Stream As New MemoryStream(Encoding.UTF8.GetBytes(Str))
'类型检查
Using Reader As New XamlXmlReader(Stream)
While Reader.Read()
For Each BlackListType In {GetType(WebBrowser), GetType(Frame), GetType(MediaElement), GetType(ObjectDataProvider), GetType(XamlReader), GetType(Window), GetType(XmlDataProvider)}
If Reader.Type IsNot Nothing AndAlso BlackListType.IsAssignableFrom(Reader.Type.UnderlyingType) Then Throw New UnauthorizedAccessException($"不允许使用 {BlackListType.Name} 类型。")
If Reader.Value IsNot Nothing AndAlso Reader.Value = BlackListType.Name Then Throw New UnauthorizedAccessException($"不允许使用 {BlackListType.Name} 值。")
Next
For Each BlackListMember In {"Code", "FactoryMethod", "Static"}
If Reader.Member IsNot Nothing AndAlso Reader.Member.Name = BlackListMember Then Throw New UnauthorizedAccessException($"不允许使用 {BlackListMember} 成员。")
Next
End While
End Using
'实际的加载
Stream.Position = 0
Using Writer As New StreamWriter(Stream) Using Writer As New StreamWriter(Stream)
Writer.Write(Str) Writer.Write(Str)
Writer.Flush() Writer.Flush()
Stream.Position = 0 Stream.Position = 0
Return XamlReader.Load(Stream) Return Markup.XamlReader.Load(Stream)
End Using End Using
End Using End Using
End Function End Function
@@ -150,13 +150,13 @@ Public Class ValidateExcept
Public Property Excepts As ObjectModel.Collection(Of String) = New ObjectModel.Collection(Of String) Public Property Excepts As ObjectModel.Collection(Of String) = New ObjectModel.Collection(Of String)
Public Property ErrorMessage As String Public Property ErrorMessage As String
Public Sub New() Public Sub New()
ErrorMessage = "输入内容不能包含 %!" ErrorMessage = "输入内容不能包含 %"
End Sub '用于 XAML 初始化 End Sub '用于 XAML 初始化
Public Sub New(Excepts As ObjectModel.Collection(Of String), Optional ErrorMessage As String = "输入内容不能包含 %!") Public Sub New(Excepts As ObjectModel.Collection(Of String), Optional ErrorMessage As String = "输入内容不能包含 %")
Me.Excepts = Excepts Me.Excepts = Excepts
Me.ErrorMessage = ErrorMessage Me.ErrorMessage = ErrorMessage
End Sub End Sub
Public Sub New(Excepts As IEnumerable, Optional ErrorMessage As String = "输入内容不能包含 %!") Public Sub New(Excepts As IEnumerable, Optional ErrorMessage As String = "输入内容不能包含 %")
Me.Excepts = New ObjectModel.Collection(Of String) Me.Excepts = New ObjectModel.Collection(Of String)
Me.ErrorMessage = ErrorMessage Me.ErrorMessage = ErrorMessage
For Each Data As String In Excepts For Each Data As String In Excepts
@@ -185,12 +185,12 @@ Public Class ValidateExceptSame
Public Property IgnoreCase As Boolean = False Public Property IgnoreCase As Boolean = False
Public Sub New() Public Sub New()
End Sub End Sub
Public Sub New(Excepts As ObjectModel.Collection(Of String), Optional ErrorMessage As String = "输入内容不能为 %!", Optional IgnoreCase As Boolean = False) Public Sub New(Excepts As ObjectModel.Collection(Of String), Optional ErrorMessage As String = "输入内容不能为 %", Optional IgnoreCase As Boolean = False)
Me.Excepts = Excepts Me.Excepts = Excepts
Me.ErrorMessage = ErrorMessage Me.ErrorMessage = ErrorMessage
Me.IgnoreCase = IgnoreCase Me.IgnoreCase = IgnoreCase
End Sub End Sub
Public Sub New(Excepts As IEnumerable, Optional ErrorMessage As String = "输入内容不能为 %!", Optional IgnoreCase As Boolean = False) Public Sub New(Excepts As IEnumerable, Optional ErrorMessage As String = "输入内容不能为 %", Optional IgnoreCase As Boolean = False)
Me.Excepts = New ObjectModel.Collection(Of String) Me.Excepts = New ObjectModel.Collection(Of String)
For Each Data As String In Excepts For Each Data As String In Excepts
Me.Excepts.Add(Data) Me.Excepts.Add(Data)
@@ -563,8 +563,9 @@ Done:
If LogCrash.Contains("has mods that were not found") AndAlso RegexCheck(LogCrash, "The Mod File [^\n]+optifine\\OptiFine[^\n]+ has mods that were not found") Then AppendReason(CrashReason.OptiFine与Forge不兼容) If LogCrash.Contains("has mods that were not found") AndAlso RegexCheck(LogCrash, "The Mod File [^\n]+optifine\\OptiFine[^\n]+ has mods that were not found") Then AppendReason(CrashReason.OptiFine与Forge不兼容)
'Mod 导致的崩溃 'Mod 导致的崩溃
If LogCrash.Contains("-- MOD ") Then If LogCrash.Contains("-- MOD ") Then
If LogCrash.Between("-- MOD ", "Failure message:").ContainsF(".jar", True) Then Dim LogCrashMod As String = LogCrash.Between("-- MOD ", "Failure message:")
AppendReason(CrashReason.确定Mod导致游戏崩溃, If(RegexSeek(LogCrash, "(?<=Mod File: ).+"), "").TrimEnd((vbCrLf & " ").ToCharArray)) If LogCrashMod.ContainsF(".jar", True) Then
AppendReason(CrashReason.确定Mod导致游戏崩溃, If(RegexSeek(LogCrashMod, "(?<=Mod File: ).+"), "").TrimEnd((vbCrLf & " ").ToCharArray))
Else Else
AppendReason(CrashReason.Mod加载器报错, If(RegexSeek(LogCrash, "(?<=Failure message: )[\w\W]+?(?=\tMod)"), "").Replace(vbTab, " ").TrimEnd((vbCrLf & " ").ToCharArray)) AppendReason(CrashReason.Mod加载器报错, If(RegexSeek(LogCrash, "(?<=Failure message: )[\w\W]+?(?=\tMod)"), "").Replace(vbTab, " ").TrimEnd((vbCrLf & " ").ToCharArray))
End If End If
@@ -674,13 +674,14 @@ Wait:
'若该目录有 Java,则加入结果 '若该目录有 Java,则加入结果
If File.Exists(Path & "javaw.exe") Then Results(Path) = Source If File.Exists(Path & "javaw.exe") Then Results(Path) = Source
'查找其下的所有文件夹 '查找其下的所有文件夹
'不应使用网易的 Java:https://github.com/Hex-Dragon/PCL2/issues/1279#issuecomment-2761489121
Dim Keywords = {"java", "jdk", "env", "环境", "run", "软件", "jre", "mc", "dragon", Dim Keywords = {"java", "jdk", "env", "环境", "run", "软件", "jre", "mc", "dragon",
"soft", "cache", "temp", "corretto", "roaming", "users", "craft", "program", "世界", "net", "soft", "cache", "temp", "corretto", "roaming", "users", "craft", "program", "世界", "net",
"游戏", "oracle", "game", "file", "data", "jvm", "服务", "server", "客户", "client", "整合", "游戏", "oracle", "game", "file", "data", "jvm", "服务", "server", "客户", "client", "整合",
"应用", "运行", "前置", "mojang", "官启", "新建文件夹", "eclipse", "microsoft", "hotspot", "应用", "运行", "前置", "mojang", "官启", "新建文件夹", "eclipse", "microsoft", "hotspot",
"runtime", "x86", "x64", "forge", "原版", "optifine", "官方", "启动", "hmcl", "mod", "高清", "runtime", "x86", "x64", "forge", "原版", "optifine", "官方", "启动", "hmcl", "mod", "高清",
"download", "launch", "程序", "path", "version", "baka", "pcl", "zulu", "local", "packages", "download", "launch", "程序", "path", "version", "baka", "pcl", "zulu", "local", "packages",
"4297127d64ec6", "国服", "网易", "ext", "netease", "1.", "启动"} "4297127d64ec6", "1.", "启动"}
For Each FolderInfo As DirectoryInfo In OriginalPath.EnumerateDirectories For Each FolderInfo As DirectoryInfo In OriginalPath.EnumerateDirectories
If FolderInfo.Attributes.HasFlag(FileAttributes.ReparsePoint) Then Continue For '跳过符号链接 If FolderInfo.Attributes.HasFlag(FileAttributes.ReparsePoint) Then Continue For '跳过符号链接
Dim SearchEntry = GetFolderNameFromPath(FolderInfo.Name).ToLower '用于搜索的字符串 Dim SearchEntry = GetFolderNameFromPath(FolderInfo.Name).ToLower '用于搜索的字符串
@@ -220,6 +220,7 @@ NextInner:
If CheckResult <> "" Then Throw New ArgumentException(CheckResult) If CheckResult <> "" Then Throw New ArgumentException(CheckResult)
#If BETA Then #If BETA Then
'求赞助 '求赞助
If CurrentLaunchOptions?.SaveBatch Is Nothing Then '保存脚本时不提示
RunInNewThread( RunInNewThread(
Sub() Sub()
Select Case Setup.Get("SystemLaunchCount") Select Case Setup.Get("SystemLaunchCount")
@@ -232,9 +233,11 @@ NextInner:
End If End If
End Select End Select
End Sub, "Donate") End Sub, "Donate")
End If
#End If #End If
'正版购买提示 '正版购买提示
If Not Setup.Get("HintBuy") AndAlso Setup.Get("LoginType") <> McLoginType.Ms Then If CurrentLaunchOptions?.SaveBatch Is Nothing AndAlso '保存脚本时不提示
Not Setup.Get("HintBuy") AndAlso Setup.Get("LoginType") <> McLoginType.Ms Then
If IsSystemLanguageChinese() Then If IsSystemLanguageChinese() Then
RunInNewThread( RunInNewThread(
Sub() Sub()
@@ -1347,6 +1350,12 @@ Retry:
Arguments += " " & McLaunchArgumentsGameNew(McVersionCurrent) Arguments += " " & McLaunchArgumentsGameNew(McVersionCurrent)
McLaunchLog("新版 Game 参数获取成功") McLaunchLog("新版 Game 参数获取成功")
End If End If
'编码参数(#5818、#5892)
If McLaunchJavaSelected.VersionCode > 8 Then
If Not Arguments.Contains("-Dfile.encoding=") Then Arguments += " -Dfile.encoding=UTF-8"
If Not Arguments.Contains("-Dstdout.encoding=") Then Arguments += " -Dstdout.encoding=UTF-8"
If Not Arguments.Contains("-Dstderr.encoding=") Then Arguments += " -Dstderr.encoding=UTF-8"
End If
'替换参数 '替换参数
Dim ReplaceArguments = McLaunchArgumentsReplace(McVersionCurrent, Loader) Dim ReplaceArguments = McLaunchArgumentsReplace(McVersionCurrent, Loader)
If String.IsNullOrWhiteSpace(ReplaceArguments("${version_type}")) Then If String.IsNullOrWhiteSpace(ReplaceArguments("${version_type}")) Then
@@ -1899,7 +1908,6 @@ NextVersion:
'1.6 ~ 10 :zh_CN 时正常,zh_cn 时自动切换为英文 '1.6 ~ 10 :zh_CN 时正常,zh_cn 时自动切换为英文
'1.11 ~ 12:zh_cn 时正常,zh_CN 时虽然显示了中文但语言设置会错误地显示选择英文 '1.11 ~ 12:zh_cn 时正常,zh_CN 时虽然显示了中文但语言设置会错误地显示选择英文
'1.13+ :zh_cn 时正常,zh_CN 时自动切换为英文 '1.13+ :zh_cn 时正常,zh_CN 时自动切换为英文
IniClearCache(SetupFileAddress) '清除缓存(#2294)
Dim CurrentLang As String = ReadIni(SetupFileAddress, "lang", "none") Dim CurrentLang As String = ReadIni(SetupFileAddress, "lang", "none")
Dim RequiredLang As String = If(CurrentLang = "none" OrElse Not Directory.Exists(McVersionCurrent.PathIndie & "saves"), '#3844,整合包可能已经自带了 options.txt Dim RequiredLang As String = If(CurrentLang = "none" OrElse Not Directory.Exists(McVersionCurrent.PathIndie & "saves"), '#3844,整合包可能已经自带了 options.txt
If(Setup.Get("ToolHelpChinese"), "zh_cn", "en_us"), CurrentLang.ToLower) If(Setup.Get("ToolHelpChinese"), "zh_cn", "en_us"), CurrentLang.ToLower)
@@ -207,15 +207,15 @@ Public Module ModMinecraft
''' </summary> ''' </summary>
Public ReadOnly Property PathIndie As String Public ReadOnly Property PathIndie As String
Get Get
Return GetPathIndie(Modable) InitPathIndie(Modable)
Return If(Setup.Get("VersionArgumentIndieV2", Version:=Me), Path, PathMcFolder)
End Get End Get
End Property End Property
''' <summary> ''' <summary>
''' 在不加载版本的情况下获取版本隔离目录。 ''' 决定该版本是否应该被隔离。
''' </summary> ''' </summary>
Public Function GetPathIndie(Modable As Boolean) As String Public Sub InitPathIndie(Modable As Boolean)
'决定版本隔离类型 If Not Setup.IsUnset("VersionArgumentIndieV2", Version:=Me) Then Return
If Setup.IsUnset("VersionArgumentIndieV2", Version:=Me) Then
Dim ShouldBeIndie = Dim ShouldBeIndie =
Function() As Boolean Function() As Boolean
'从老的版本独立设置中迁移:-1 未决定,0 使用全局设置,1 手动开启,2 手动关闭 '从老的版本独立设置中迁移:-1 未决定,0 使用全局设置,1 手动开启,2 手动关闭
@@ -246,14 +246,7 @@ Public Module ModMinecraft
End Select End Select
End Function End Function
Setup.Set("VersionArgumentIndieV2", ShouldBeIndie(), Version:=Me) Setup.Set("VersionArgumentIndieV2", ShouldBeIndie(), Version:=Me)
End If End Sub
'根据隔离类型决定路径
If Setup.Get("VersionArgumentIndieV2", Version:=Me) Then
Return Path
Else
Return PathMcFolder
End If
End Function
''' <summary> ''' <summary>
''' 该版本的版本文件夹名称。 ''' 该版本的版本文件夹名称。
@@ -1080,6 +1073,8 @@ ExitDataLoad:
Return "2023 | 研究表明:玩家喜欢作出选择——越多越好!" Return "2023 | 研究表明:玩家喜欢作出选择——越多越好!"
ElseIf Name = "24w14potato" Then ElseIf Name = "24w14potato" Then
Return "2024 | 毒马铃薯一直都被大家忽视和低估,于是我们超级加强了它!" Return "2024 | 毒马铃薯一直都被大家忽视和低估,于是我们超级加强了它!"
ElseIf Name = "25w14craftmine" Then
Return "2025 | 你可以合成任何东西——包括合成你的世界!"
Else Else
Return "" Return ""
End If End If
+16 -7
View File
@@ -873,17 +873,26 @@ NextFile:
End Sub End Sub
''' <summary> ''' <summary>
''' 申请一个可用于任务缓存的临时文件夹,以 \ 结尾。 ''' 申请一个可用于任务缓存的临时文件夹,以 \ 结尾。这些文件夹无需进行后续清理。
''' 这些文件夹无需进行后续清理。 ''' 若所有缓存位置均没有权限,会抛出异常。
''' </summary> ''' </summary>
''' <param name="RequireNonSpace">是否要求路径不包含空格。</param> ''' <param name="RequireNonSpace">是否要求路径不包含空格。</param>
Public Function RequestTaskTempFolder(Optional RequireNonSpace As Boolean = False) As String Public Function RequestTaskTempFolder(Optional RequireNonSpace As Boolean = False) As String
TryClearTaskTemp() TryClearTaskTemp()
RequestTaskTempFolder = $"{PathTemp}TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}\" Dim ResultFolder As String
If RequireNonSpace AndAlso RequestTaskTempFolder.Contains(" ") Then Try
RequestTaskTempFolder = $"{OsDrive}ProgramData\PCL\TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}\" ResultFolder = $"{PathTemp}TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}\"
End If If RequireNonSpace AndAlso ResultFolder.Contains(" ") Then Exit Try '带空格
Directory.CreateDirectory(RequestTaskTempFolder) Directory.CreateDirectory(ResultFolder)
CheckPermissionWithException(ResultFolder)
Return ResultFolder
Catch
End Try
'使用备用路径
ResultFolder = $"{OsDrive}ProgramData\PCL\TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}\"
Directory.CreateDirectory(ResultFolder)
CheckPermission(ResultFolder)
Return ResultFolder
End Function End Function
#End Region #End Region
@@ -245,7 +245,12 @@
RunInThread( RunInThread(
Sub() Sub()
Log("[Music] 已恢复播放") Log("[Music] 已恢复播放")
Try
MusicNAudio?.Play() MusicNAudio?.Play()
Catch 'https://github.com/Hex-Dragon/PCL2/pull/5415#issuecomment-2751135223
MusicNAudio?.Stop()
MusicNAudio?.Play()
End Try
MusicRefreshUI() MusicRefreshUI()
End Sub) End Sub)
Return True Return True
@@ -273,6 +278,7 @@
'开始播放 '开始播放
CurrentWave = New NAudio.Wave.WaveOutEvent() CurrentWave = New NAudio.Wave.WaveOutEvent()
MusicNAudio = CurrentWave MusicNAudio = CurrentWave
CurrentWave.DeviceNumber = -1
Reader = New NAudio.Wave.AudioFileReader(MusicCurrent) Reader = New NAudio.Wave.AudioFileReader(MusicCurrent)
CurrentWave.Init(Reader) CurrentWave.Init(Reader)
CurrentWave.Play() CurrentWave.Play()
@@ -1,7 +1,5 @@
'由于包含加解密等安全信息,本文件中的部分代码已被删除 '由于包含加解密等安全信息,本文件中的部分代码已被删除
Imports System.Net
Imports System.Reflection
Imports System.Security.Cryptography Imports System.Security.Cryptography
Friend Module ModSecret Friend Module ModSecret
@@ -51,6 +51,6 @@ Imports System.Runtime.InteropServices
' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 ' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
' 方法是按如下所示使用“*” ' 方法是按如下所示使用“*”
<Assembly: AssemblyVersion("2.9.2.0")> <Assembly: AssemblyVersion("2.9.3.0")>
<Assembly: AssemblyFileVersion("2.9.2.0")> <Assembly: AssemblyFileVersion("2.9.3.0")>
<Assembly: NeutralResourcesLanguage("")> <Assembly: NeutralResourcesLanguage("")>
@@ -441,9 +441,9 @@ pause"
'添加 Java Wrapper 作为主 Jar '添加 Java Wrapper 作为主 Jar
Dim Arguments As String Dim Arguments As String
If UseJavaWrapper AndAlso Not Setup.Get("LaunchAdvanceDisableJLW") Then If UseJavaWrapper AndAlso Not Setup.Get("LaunchAdvanceDisableJLW") Then
Arguments = $"-Doolloo.jlw.tmpdir=""{PathPure.TrimEnd("\")}"" -Duser.home=""{BaseMcFolderHome}"" -cp ""{Target}"" -jar ""{ExtractJavaWrapper()}"" optifine.Installer" Arguments = $"-Doolloo.jlw.tmpdir=""{PathPure.TrimEnd("\")}"" -Duser.home=""{BaseMcFolderHome.TrimEnd("\")}"" -cp ""{Target}"" -jar ""{ExtractJavaWrapper()}"" optifine.Installer"
Else Else
Arguments = $"-Duser.home=""{BaseMcFolderHome}"" -cp ""{Target}"" optifine.Installer" Arguments = $"-Duser.home=""{BaseMcFolderHome.TrimEnd("\")}"" -cp ""{Target}"" optifine.Installer"
End If End If
If Java.VersionCode >= 9 Then Arguments = "--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED " & Arguments If Java.VersionCode >= 9 Then Arguments = "--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED " & Arguments
'开始启动 '开始启动
@@ -545,8 +545,8 @@ pause"
Dim VersionFolder As String = McFolder & "versions\" & Id & "\" Dim VersionFolder As String = McFolder & "versions\" & Id & "\"
Dim IsNewVersion As Boolean = DownloadInfo.Inherit.Contains("w") OrElse Val(DownloadInfo.Inherit.Split(".")(1)) >= 14 Dim IsNewVersion As Boolean = DownloadInfo.Inherit.Contains("w") OrElse Val(DownloadInfo.Inherit.Split(".")(1)) >= 14
Dim Target As String = If(IsNewVersion, Dim Target As String = If(IsNewVersion,
RequestTaskTempFolder() & "temp", $"{RequestTaskTempFolder()}OptiFine.jar",
McFolder & "libraries\optifine\OptiFine\" & DownloadInfo.NameFile.Replace("OptiFine_", "").Replace(".jar", "").Replace("preview_", "") & "\" & DownloadInfo.NameFile.Replace("OptiFine_", "OptiFine-").Replace("preview_", "")) $"{McFolder}libraries\optifine\OptiFine\{DownloadInfo.NameFile.Replace("OptiFine_", "").Replace(".jar", "").Replace("preview_", "")}\{DownloadInfo.NameFile.Replace("OptiFine_", "OptiFine-").Replace("preview_", "")}")
Dim Loaders As New List(Of LoaderBase) Dim Loaders As New List(Of LoaderBase)
'获取下载地址 '获取下载地址
@@ -613,8 +613,8 @@ pause"
Log("[Download] 检测为新版 OptiFine:" & DownloadInfo.Inherit) Log("[Download] 检测为新版 OptiFine:" & DownloadInfo.Inherit)
Loaders.Add(New LoaderTask(Of List(Of NetFile), Boolean)("安装 OptiFine(方式 A)", Loaders.Add(New LoaderTask(Of List(Of NetFile), Boolean)("安装 OptiFine(方式 A)",
Sub(Task As LoaderTask(Of List(Of NetFile), Boolean)) Sub(Task As LoaderTask(Of List(Of NetFile), Boolean))
Dim BaseMcFolderHome As String = BaseMcFolderHome.TrimEnd("\") Dim BaseMcFolderHome As String = RequestTaskTempFolder()
Dim BaseMcFolder As String = BaseMcFolderHome & "\.minecraft\" Dim BaseMcFolder As String = BaseMcFolderHome & ".minecraft\"
Try Try
'准备安装环境 '准备安装环境
If Directory.Exists(BaseMcFolder & "versions\" & DownloadInfo.Inherit) Then If Directory.Exists(BaseMcFolder & "versions\" & DownloadInfo.Inherit) Then
@@ -2056,13 +2056,11 @@ Retry:
''' </summary> ''' </summary>
''' <exception cref="CancelledException" /> ''' <exception cref="CancelledException" />
Public Function McInstallLoader(Request As McInstallRequest, Optional DontFixLibraries As Boolean = False) As List(Of LoaderBase) Public Function McInstallLoader(Request As McInstallRequest, Optional DontFixLibraries As Boolean = False) As List(Of LoaderBase)
'获取缓存目录 '获取缓存目录(安装 Mod 加载器的文件夹不能包含空格)
Dim TempMcFolder As String = RequestTaskTempFolder( Dim TempMcFolder As String = RequestTaskTempFolder(Request.OptiFineEntry IsNot Nothing OrElse Request.ForgeEntry IsNot Nothing OrElse Request.NeoForgeEntry IsNot Nothing)
PathTemp.Contains(" ") AndAlso '要求路径不包含空格
(Request.OptiFineEntry IsNot Nothing OrElse Request.ForgeEntry IsNot Nothing OrElse Request.NeoForgeEntry IsNot Nothing))
'获取参数 '获取参数
Dim OutputFolder As String = PathMcFolder & "versions\" & Request.TargetVersionName & "\" Dim VersionFolder As String = PathMcFolder & "versions\" & Request.TargetVersionName & "\"
If Directory.Exists(TempMcFolder) Then DeleteDirectory(TempMcFolder) If Directory.Exists(TempMcFolder) Then DeleteDirectory(TempMcFolder)
Dim OptiFineFolder As String = Nothing Dim OptiFineFolder As String = Nothing
If Request.OptiFineVersion IsNot Nothing Then If Request.OptiFineVersion IsNot Nothing Then
@@ -2088,12 +2086,14 @@ Retry:
Dim LiteLoaderFolder As String = Nothing Dim LiteLoaderFolder As String = Nothing
If Request.LiteLoaderEntry IsNot Nothing Then LiteLoaderFolder = TempMcFolder & "versions\" & Request.MinecraftName & "-LiteLoader" If Request.LiteLoaderEntry IsNot Nothing Then LiteLoaderFolder = TempMcFolder & "versions\" & Request.MinecraftName & "-LiteLoader"
'判断 OptiFine 是否作为 Mod 进行下载 '决定版本隔离情况(#5970)
'Dim MinecraftCode As Integer = If(Request.MinecraftName.Contains("."), Val(Request.MinecraftName.Split(".")(1)), 0) Dim Modable As Boolean = Request.FabricVersion IsNot Nothing OrElse Request.ForgeEntry IsNot Nothing OrElse Request.NeoForgeEntry IsNot Nothing OrElse Request.LiteLoaderEntry IsNot Nothing
Dim OptiFineAsMod As Boolean = Request.OptiFineEntry IsNot Nothing AndAlso Dim Version As New McVersion(VersionFolder)
(Request.FabricVersion IsNot Nothing OrElse Request.ForgeEntry IsNot Nothing) '选择了 OptiFine 与任意 Mod 加载器 Version.InitPathIndie(Modable)
Dim ModsFolder As String = New McVersion(OutputFolder).GetPathIndie(True) & "mods\" Dim ModsFolder As String = If(Modable, VersionFolder, PathMcFolder) & "mods\"
'判断 OptiFine 是否作为 Mod 进行下载
Dim OptiFineAsMod As Boolean = Request.OptiFineEntry IsNot Nothing AndAlso Modable '选择了 OptiFine 与任意 Mod 加载器
If OptiFineAsMod Then If OptiFineAsMod Then
Log("[Download] OptiFine 将作为 Mod 进行下载") Log("[Download] OptiFine 将作为 Mod 进行下载")
OptiFineFolder = ModsFolder OptiFineFolder = ModsFolder
@@ -2108,14 +2108,14 @@ Retry:
Log("[Download] 对应的原版版本:" & Request.MinecraftName) Log("[Download] 对应的原版版本:" & Request.MinecraftName)
'重复版本检查 '重复版本检查
If File.Exists(OutputFolder & Request.TargetVersionName & ".json") Then If File.Exists($"{VersionFolder}{Request.TargetVersionName}.json") Then
Hint("版本 " & Request.TargetVersionName & " 已经存在!", HintType.Critical) Hint("版本 " & Request.TargetVersionName & " 已经存在!", HintType.Critical)
Throw New CancelledException Throw New CancelledException
End If End If
Dim LoaderList As New List(Of LoaderBase) Dim LoaderList As New List(Of LoaderBase)
'添加忽略标识 '添加忽略标识
LoaderList.Add(New LoaderTask(Of Integer, Integer)("添加忽略标识", Sub() WriteFile(OutputFolder & ".pclignore", "用于临时地在 PCL 的版本列表中屏蔽此版本。")) With {.Show = False, .Block = False}) LoaderList.Add(New LoaderTask(Of Integer, Integer)("添加忽略标识", Sub() WriteFile(VersionFolder & ".pclignore", "用于临时地在 PCL 的版本列表中屏蔽此版本。")) With {.Show = False, .Block = False})
'Fabric API 'Fabric API
If Request.FabricApi IsNot Nothing Then If Request.FabricApi IsNot Nothing Then
LoaderList.Add(New LoaderDownload("下载 Fabric API", New List(Of NetFile) From {Request.FabricApi.ToNetFile(ModsFolder)}) With {.ProgressWeight = 3, .Block = False}) LoaderList.Add(New LoaderDownload("下载 Fabric API", New List(Of NetFile) From {Request.FabricApi.ToNetFile(ModsFolder)}) With {.ProgressWeight = 3, .Block = False})
@@ -2154,7 +2154,7 @@ Retry:
'合并安装 '合并安装
LoaderList.Add(New LoaderTask(Of String, String)("安装游戏", LoaderList.Add(New LoaderTask(Of String, String)("安装游戏",
Sub(Task As LoaderTask(Of String, String)) Sub(Task As LoaderTask(Of String, String))
InstallMerge(OutputFolder, OutputFolder, OptiFineFolder, OptiFineAsMod, ForgeFolder, Request.ForgeVersion, NeoForgeFolder, Request.NeoForgeVersion, FabricFolder, LiteLoaderFolder) InstallMerge(VersionFolder, VersionFolder, OptiFineFolder, OptiFineAsMod, ForgeFolder, Request.ForgeVersion, NeoForgeFolder, Request.NeoForgeVersion, FabricFolder, LiteLoaderFolder)
Task.Progress = 0.3 Task.Progress = 0.3
If Directory.Exists(TempMcFolder & "libraries") Then CopyDirectory(TempMcFolder & "libraries", PathMcFolder & "libraries") If Directory.Exists(TempMcFolder & "libraries") Then CopyDirectory(TempMcFolder & "libraries", PathMcFolder & "libraries")
If Directory.Exists(TempMcFolder & "mods") Then CopyDirectory(TempMcFolder & "mods", ModsFolder) If Directory.Exists(TempMcFolder & "mods") Then CopyDirectory(TempMcFolder & "mods", ModsFolder)
@@ -2168,12 +2168,12 @@ Retry:
If Not DontFixLibraries AndAlso If Not DontFixLibraries AndAlso
(Request.OptiFineEntry IsNot Nothing OrElse (Request.ForgeVersion IsNot Nothing AndAlso Request.ForgeVersion.BeforeFirst(".") >= 20) OrElse Request.NeoForgeVersion IsNot Nothing OrElse Request.FabricVersion IsNot Nothing OrElse Request.LiteLoaderEntry IsNot Nothing) Then (Request.OptiFineEntry IsNot Nothing OrElse (Request.ForgeVersion IsNot Nothing AndAlso Request.ForgeVersion.BeforeFirst(".") >= 20) OrElse Request.NeoForgeVersion IsNot Nothing OrElse Request.FabricVersion IsNot Nothing OrElse Request.LiteLoaderEntry IsNot Nothing) Then
Dim LoadersLib As New List(Of LoaderBase) Dim LoadersLib As New List(Of LoaderBase)
LoadersLib.Add(New LoaderTask(Of String, List(Of NetFile))("分析游戏支持库文件(副加载器)", Sub(Task As LoaderTask(Of String, List(Of NetFile))) Task.Output = McLibFix(New McVersion(OutputFolder))) With {.ProgressWeight = 1, .Show = False}) LoadersLib.Add(New LoaderTask(Of String, List(Of NetFile))("分析游戏支持库文件(副加载器)", Sub(Task As LoaderTask(Of String, List(Of NetFile))) Task.Output = McLibFix(New McVersion(VersionFolder))) With {.ProgressWeight = 1, .Show = False})
LoadersLib.Add(New LoaderDownload("下载游戏支持库文件(副加载器)", New List(Of NetFile)) With {.ProgressWeight = 7, .Show = False}) LoadersLib.Add(New LoaderDownload("下载游戏支持库文件(副加载器)", New List(Of NetFile)) With {.ProgressWeight = 7, .Show = False})
LoaderList.Add(New LoaderCombo(Of String)("下载游戏支持库文件", LoadersLib) With {.ProgressWeight = 8}) LoaderList.Add(New LoaderCombo(Of String)("下载游戏支持库文件", LoadersLib) With {.ProgressWeight = 8})
End If End If
'删除忽略标识 '删除忽略标识
LoaderList.Add(New LoaderTask(Of Integer, Integer)("删除忽略标识", Sub() File.Delete(OutputFolder & ".pclignore")) With {.Show = False}) LoaderList.Add(New LoaderTask(Of Integer, Integer)("删除忽略标识", Sub() File.Delete(VersionFolder & ".pclignore")) With {.Show = False})
'总加载器 '总加载器
Return LoaderList Return LoaderList
End Function End Function
@@ -756,6 +756,7 @@
Private Sub OptiFine_Clear(sender As Object, e As MouseButtonEventArgs) Handles BtnOptiFineClear.MouseLeftButtonUp Private Sub OptiFine_Clear(sender As Object, e As MouseButtonEventArgs) Handles BtnOptiFineClear.MouseLeftButtonUp
SelectedOptiFine = Nothing SelectedOptiFine = Nothing
SelectedOptiFabric = Nothing SelectedOptiFabric = Nothing
AutoSelectedOptiFabric = False
CardOptiFine.IsSwaped = True CardOptiFine.IsSwaped = True
e.Handled = True e.Handled = True
Forge_Loaded() Forge_Loaded()
@@ -1025,7 +1026,9 @@
Private Sub Fabric_Clear(sender As Object, e As MouseButtonEventArgs) Handles BtnFabricClear.MouseLeftButtonUp Private Sub Fabric_Clear(sender As Object, e As MouseButtonEventArgs) Handles BtnFabricClear.MouseLeftButtonUp
SelectedFabric = Nothing SelectedFabric = Nothing
SelectedFabricApi = Nothing SelectedFabricApi = Nothing
AutoSelectedFabricApi = False
SelectedOptiFabric = Nothing SelectedOptiFabric = Nothing
AutoSelectedOptiFabric = False
CardFabric.IsSwaped = True CardFabric.IsSwaped = True
e.Handled = True e.Handled = True
SelectReload() SelectReload()
@@ -227,13 +227,19 @@ Download:
Log($"[Page] 实例化:清空自定义主页 UI,来源为空") Log($"[Page] 实例化:清空自定义主页 UI,来源为空")
Return Return
End If End If
Content = "<StackPanel xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:local=""clr-namespace:PCL;assembly=Plain Craft Launcher 2"">" & Content & "</StackPanel>"
Content = HelpArgumentReplace(Content)
Log($"[Page] 实例化:加载自定义主页 UI 开始,最终内容长度:{Content.Count}")
Try Try
Content = HelpArgumentReplace(Content)
If Content.Contains("xmlns") Then Content = Content.RegexReplace("xmlns[^""']*(""|')[^""']*(""|')", "").Replace("xmlns", "") '禁止声明命名空间
Content = "<StackPanel xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:sys=""clr-namespace:System;assembly=mscorlib"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:local=""clr-namespace:PCL;assembly=Plain Craft Launcher 2"">" & Content & "</StackPanel>"
Log($"[Page] 实例化:加载自定义主页 UI 开始,最终内容长度:{Content.Count}")
PanCustom.Children.Add(GetObjectFromXML(Content)) PanCustom.Children.Add(GetObjectFromXML(Content))
Catch ex As UnauthorizedAccessException
Log(ex, "加载失败的自定义主页内容:" & vbCrLf & Content)
If MyMsgBox(ex.Message, "加载自定义主页失败", "重试", "取消") = 1 Then
GoTo Refresh '防止 SyncLock 死锁
End If
Catch ex As Exception Catch ex As Exception
Log("[Page] 加载失败的自定义主页内容:" & vbCrLf & Content) Log(ex, "加载失败的自定义主页内容:" & vbCrLf & Content)
If MyMsgBox($"自定义主页内容编写有误,请根据下列错误信息进行检查:{vbCrLf}{GetExceptionSummary(ex)}", "加载自定义主页失败", "重试", "取消") = 1 Then If MyMsgBox($"自定义主页内容编写有误,请根据下列错误信息进行检查:{vbCrLf}{GetExceptionSummary(ex)}", "加载自定义主页失败", "重试", "取消") = 1 Then
GoTo Refresh '防止 SyncLock 死锁 GoTo Refresh '防止 SyncLock 死锁
End If End If
@@ -104,260 +104,192 @@
</local:MyCard> </local:MyCard>
<local:MyCard Margin="0,0,0,15" Title="赞助者"> <local:MyCard Margin="0,0,0,15" Title="赞助者">
<StackPanel Margin="25,40,10,20"> <StackPanel Margin="25,40,10,20">
<TextBlock HorizontalAlignment="Left" Text="以下是 2025 年 2 月的高级赞助者们!感谢各位对 PCL 和伟大的咕咕咕事业的支持!" Margin="0,0,25,5.5" TextTrimming="None" TextWrapping="WrapWithOverflow" /> <TextBlock HorizontalAlignment="Left" Text="以下是 2025 年 3 月的高级赞助者们!感谢各位对 PCL 和伟大的咕咕咕事业的支持!" Margin="0,0,25,5.5" TextTrimming="None" TextWrapping="WrapWithOverflow" />
<WrapPanel Margin="0,0,0,10"> <TextBlock Width="120" Margin="0,1.5" Text="Morisummer" /> <WrapPanel Margin="0,0,0,10"> <TextBlock Width="120" Margin="0,1.5" Text="micheal276" />
<TextBlock Width="120" Margin="0,1.5" Text="香" /> <TextBlock Width="120" Margin="0,1.5" Text="吃面不加葱" />
<TextBlock Width="120" Margin="0,1.5" Text="Creeper" /> <TextBlock Width="120" Margin="0,1.5" Text="想去看那倒悬山" />
<TextBlock Width="120" Margin="0,1.5" Text="tjsstctd" /> <TextBlock Width="120" Margin="0,1.5" Text="隳之狐" />
<TextBlock Width="120" Margin="0,1.5" Text="tangent95" /> <TextBlock Width="120" Margin="0,1.5" Text="QY熹微" />
<TextBlock Width="120" Margin="0,1.5" Text="Qqwertyui1" /> <TextBlock Width="120" Margin="0,1.5" Text="LZL" />
<TextBlock Width="120" Margin="0,1.5" Text="爱吃东西的布布" /> <TextBlock Width="120" Margin="0,1.5" Text="老卡费" />
<TextBlock Width="120" Margin="0,1.5" Text="青丘" /> <TextBlock Width="120" Margin="0,1.5" Text="散." />
<TextBlock Width="120" Margin="0,1.5" Text="Lithium" /> <TextBlock Width="120" Margin="0,1.5" Text="续笙_xusheng" />
<TextBlock Width="240" Margin="0,1.5" Text="派大星教授加博士先生" /> <TextBlock Width="120" Margin="0,1.5" Text="HappyGhast0123" />
<TextBlock Width="120" Margin="0,1.5" Text="海月" /> <TextBlock Width="120" Margin="0,1.5" Text="Tong" />
<TextBlock Width="120" Margin="0,1.5" Text="电鳗" /> <TextBlock Width="120" Margin="0,1.5" Text="15158206433" />
<TextBlock Width="120" Margin="0,1.5" Text="一抹蓝色和粉色" />
<TextBlock Width="120" Margin="0,1.5" Text="哦" />
<TextBlock Width="120" Margin="0,1.5" Text="T2222" />
<TextBlock Width="120" Margin="0,1.5" Text="Toudesu" />
<TextBlock Width="120" Margin="0,1.5" Text="苏利" />
<TextBlock Width="120" Margin="0,1.5" Text="DW." />
<TextBlock Width="120" Margin="0,1.5" Text="无名小卒" />
<TextBlock Width="120" Margin="0,1.5" Text="lgl" />
<TextBlock Width="120" Margin="0,1.5" Text="mk" />
<TextBlock Width="120" Margin="0,1.5" Text="鲨鱼不是鱼" />
<TextBlock Width="120" Margin="0,1.5" Text="Momizi_Azusa" />
<TextBlock Width="120" Margin="0,1.5" Text="oseki" />
<TextBlock Width="120" Margin="0,1.5" Text="精?华?夏?" />
<TextBlock Width="120" Margin="0,1.5" Text="术士的黑猫" />
<TextBlock Width="120" Margin="0,1.5" Text="theagin" />
<TextBlock Width="120" Margin="0,1.5" Text="狗杞わ枸子" />
<TextBlock Width="120" Margin="0,1.5" Text="别凶不二啦" />
<TextBlock Width="120" Margin="0,1.5" Text="枫叶落江" />
<TextBlock Width="120" Margin="0,1.5" Text="Tianwai来物" />
<TextBlock Width="120" Margin="0,1.5" Text="如风FC" />
<TextBlock Width="120" Margin="0,1.5" Text="fan" />
<TextBlock Width="120" Margin="0,1.5" Text="雨恋芳歌" />
<TextBlock Width="120" Margin="0,1.5" Text="neko" />
<TextBlock Width="120" Margin="0,1.5" Text="陌上云暮迟迟归" />
<TextBlock Width="120" Margin="0,1.5" Text="121" />
<TextBlock Width="120" Margin="0,1.5" Text="SGYH" />
<TextBlock Width="120" Margin="0,1.5" Text="Lelouch" />
<TextBlock Width="120" Margin="0,1.5" Text="tisky" />
<TextBlock Width="120" Margin="0,1.5" Text="禹餘" />
<TextBlock Width="120" Margin="0,1.5" Text="MoYou" />
<TextBlock Width="240" Margin="0,1.5" Text="?HONEY HONEY BOOM?" />
<TextBlock Width="120" Margin="0,1.5" Text="流雪无痕" />
<TextBlock Width="120" Margin="0,1.5" Text="yourenA" />
<TextBlock Width="120" Margin="0,1.5" Text="当归与蜜糖" />
<TextBlock Width="120" Margin="0,1.5" Text="提瓦特太保" />
<TextBlock Width="120" Margin="0,1.5" Text="weidao-云天" />
<TextBlock Width="120" Margin="0,1.5" Text="Yangxl" />
<TextBlock Width="120" Margin="0,1.5" Text="zero" />
<TextBlock Width="120" Margin="0,1.5" Text="guoomg" />
<TextBlock Width="120" Margin="0,1.5" Text="孤念鬱海" />
<TextBlock Width="120" Margin="0,1.5" Text="李晨曦" />
<TextBlock Width="120" Margin="0,1.5" Text="dyh" />
<TextBlock Width="120" Margin="0,1.5" Text="didibubu" />
<TextBlock Width="120" Margin="0,1.5" Text="way_" />
<TextBlock Width="120" Margin="0,1.5" Text="浅冥" />
<TextBlock Width="120" Margin="0,1.5" Text="LightTeaHear" />
<TextBlock Width="120" Margin="0,1.5" Text="kiki" />
<TextBlock Width="120" Margin="0,1.5" Text="洛山阳" />
<TextBlock Width="120" Margin="0,1.5" Text="月下独酌" />
<TextBlock Width="120" Margin="0,1.5" Text="阿晴" />
<TextBlock Width="120" Margin="0,1.5" Text="论猫的液体可能性" />
<TextBlock Width="120" Margin="0,1.5" Text="微尔丶白折" />
<TextBlock Width="120" Margin="0,1.5" Text="超凡大谱系" />
<TextBlock Width="120" Margin="0,1.5" Text="麻圣" />
<TextBlock Width="120" Margin="0,1.5" Text="八宝饭" />
<TextBlock Width="120" Margin="0,1.5" Text="张不易" />
<TextBlock Width="120" Margin="0,1.5" Text="1" />
<TextBlock Width="120" Margin="0,1.5" Text="望Wang" />
<TextBlock Width="120" Margin="0,1.5" Text="alrin" />
<TextBlock Width="120" Margin="0,1.5" Text="无心态" />
<TextBlock Width="120" Margin="0,1.5" Text="MelonEater88" />
<TextBlock Width="120" Margin="0,1.5" Text="白日梦" />
<TextBlock Width="120" Margin="0,1.5" Text="FEssyyzplane" />
<TextBlock Width="120" Margin="0,1.5" Text="札卜铎徳勒" />
<TextBlock Width="120" Margin="0,1.5" Text="星河" />
<TextBlock Width="120" Margin="0,1.5" Text="老王1233" />
<TextBlock Width="120" Margin="0,1.5" Text="王等等等" />
<TextBlock Width="120" Margin="0,1.5" Text="橘子233" />
<TextBlock Width="120" Margin="0,1.5" Text="wyhll" />
<TextBlock Width="120" Margin="0,1.5" Text="SiMen_774" />
<TextBlock Width="120" Margin="0,1.5" Text="pepsi" />
<TextBlock Width="120" Margin="0,1.5" Text="FORGE" />
<TextBlock Width="120" Margin="0,1.5" Text="李青团" />
<TextBlock Width="120" Margin="0,1.5" Text="Zmr2333" />
<TextBlock Width="120" Margin="0,1.5" Text="CWKF" />
<TextBlock Width="240" Margin="0,1.5" Text="兜帽人evei622130" />
<TextBlock Width="120" Margin="0,1.5" Text="毒奶神探女" />
<TextBlock Width="120" Margin="0,1.5" Text="赤诚之心" />
<TextBlock Width="120" Margin="0,1.5" Text="藏白" />
<TextBlock Width="120" Margin="0,1.5" Text="某零子" />
<TextBlock Width="120" Margin="0,1.5" Text="骨头" />
<TextBlock Width="120" Margin="0,1.5" Text="Starying" />
<TextBlock Width="120" Margin="0,1.5" Text="钱小穷" />
<TextBlock Width="120" Margin="0,1.5" Text="casper" />
<TextBlock Width="120" Margin="0,1.5" Text="Summer丿皓月" />
<TextBlock Width="120" Margin="0,1.5" Text="小促" />
<TextBlock Width="120" Margin="0,1.5" Text="御坂美琴" />
<TextBlock Width="120" Margin="0,1.5" Text="闲的没事干啥呢" />
<TextBlock Width="120" Margin="0,1.5" Text="aiyu" />
<TextBlock Width="120" Margin="0,1.5" Text="shuaitiao" />
<TextBlock Width="120" Margin="0,1.5" Text="小真寻" />
<TextBlock Width="120" Margin="0,1.5" Text="清离风" />
<TextBlock Width="240" Margin="0,1.5" Text="FateIsYetUncertain" />
<TextBlock Width="120" Margin="0,1.5" Text="Olympia" />
<TextBlock Width="120" Margin="0,1.5" Text="橘如望九" />
<TextBlock Width="120" Margin="0,1.5" Text="木涵" />
<TextBlock Width="120" Margin="0,1.5" Text="2147483647" />
<TextBlock Width="120" Margin="0,1.5" Text="YJ-StarBlock" />
<TextBlock Width="120" Margin="0,1.5" Text="欲予卿" />
<TextBlock Width="120" Margin="0,1.5" Text="haolanne" />
<TextBlock Width="120" Margin="0,1.5" Text="浅夏" />
<TextBlock Width="120" Margin="0,1.5" Text="MCxiaobai" />
<TextBlock Width="120" Margin="0,1.5" Text="未知数x酱" />
<TextBlock Width="120" Margin="0,1.5" Text="有事打钱" />
<TextBlock Width="120" Margin="0,1.5" Text="Setsuna" />
<TextBlock Width="120" Margin="0,1.5" Text="电脑" />
<TextBlock Width="120" Margin="0,1.5" Text="mpty" />
<TextBlock Width="120" Margin="0,1.5" Text="小兔噗噗" />
<TextBlock Width="120" Margin="0,1.5" Text="超级白羊大王" />
<TextBlock Width="120" Margin="0,1.5" Text="奈奈" />
<TextBlock Width="120" Margin="0,1.5" Text="12345" />
<TextBlock Width="120" Margin="0,1.5" Text="fshj" />
<TextBlock Width="120" Margin="0,1.5" Text="Langfeige" />
<TextBlock Width="120" Margin="0,1.5" Text="聆风岱岳" />
<TextBlock Width="120" Margin="0,1.5" Text="Fier" />
<TextBlock Width="120" Margin="0,1.5" Text="张怀民" />
<TextBlock Width="120" Margin="0,1.5" Text="minecraftmc22" />
<TextBlock Width="120" Margin="0,1.5" Text="爱蹈琯子" />
<TextBlock Width="120" Margin="0,1.5" Text="何心慈" />
<TextBlock Width="120" Margin="0,1.5" Text="睏欤" />
<TextBlock Width="120" Margin="0,1.5" Text="熙里糊涂" />
<TextBlock Width="120" Margin="0,1.5" Text="落叶" />
<TextBlock Width="120" Margin="0,1.5" Text="阿坎尔德" />
<TextBlock Width="120" Margin="0,1.5" Text="杜野凛世" />
<TextBlock Width="120" Margin="0,1.5" Text="呆呆" />
<TextBlock Width="240" Margin="0,1.5" Text="我和琳妮特有个孩子" />
<TextBlock Width="120" Margin="0,1.5" Text="Fishking_qwe" />
<TextBlock Width="120" Margin="0,1.5" Text="惠惠" />
<TextBlock Width="120" Margin="0,1.5" Text="黑暗风暴" />
<TextBlock Width="120" Margin="0,1.5" Text="Oxsheep" />
<TextBlock Width="120" Margin="0,1.5" Text="Clove_Cloud" />
<TextBlock Width="120" Margin="0,1.5" Text="今は最高" />
<TextBlock Width="120" Margin="0,1.5" Text="YuiuY" />
<TextBlock Width="120" Margin="0,1.5" Text="George0307" />
<TextBlock Width="120" Margin="0,1.5" Text="游子桀" />
<TextBlock Width="120" Margin="0,1.5" Text="玄之" />
<TextBlock Width="120" Margin="0,1.5" Text="海绵宝宝低顺钠" />
<TextBlock Width="120" Margin="0,1.5" Text="杜先生" />
<TextBlock Width="120" Margin="0,1.5" Text="黑火c" />
<TextBlock Width="120" Margin="0,1.5" Text="落日余音" />
<TextBlock Width="120" Margin="0,1.5" Text="mojanng_" /> <TextBlock Width="120" Margin="0,1.5" Text="mojanng_" />
<TextBlock Width="120" Margin="0,1.5" Text="柒白绛" /> <TextBlock Width="120" Margin="0,1.5" Text="聿丏" />
<TextBlock Width="120" Margin="0,1.5" Text="山药汤圆" /> <TextBlock Width="120" Margin="0,1.5" Text="ClarkeTAT" />
<TextBlock Width="120" Margin="0,1.5" Text="hrjrb" /> <TextBlock Width="120" Margin="0,1.5" Text="东方浅浅" />
<TextBlock Width="120" Margin="0,1.5" Text="ccd114514" /> <TextBlock Width="120" Margin="0,1.5" Text="王ZEAN" />
<TextBlock Width="120" Margin="0,1.5" Text="煦翛" /> <TextBlock Width="120" Margin="0,1.5" Text="ayu" />
<TextBlock Width="120" Margin="0,1.5" Text="xiaozhengjiang" /> <TextBlock Width="120" Margin="0,1.5" Text="无所畏惧冷圈人" />
<TextBlock Width="120" Margin="0,1.5" Text="梦醒方知梦" /> <TextBlock Width="120" Margin="0,1.5" Text="馨軟" />
<TextBlock Width="120" Margin="0,1.5" Text="MCwsj" /> <TextBlock Width="120" Margin="0,1.5" Text="白加黑" />
<TextBlock Width="120" Margin="0,1.5" Text="7_Sloth" /> <TextBlock Width="120" Margin="0,1.5" Text="梦境之中" />
<TextBlock Width="120" Margin="0,1.5" Text="混沌青莲" /> <TextBlock Width="120" Margin="0,1.5" Text="青枝望月" />
<TextBlock Width="120" Margin="0,1.5" Text="112233" /> <TextBlock Width="120" Margin="0,1.5" Text="m1nato__" />
<TextBlock Width="120" Margin="0,1.5" Text="cry" /> <TextBlock Width="120" Margin="0,1.5" Text="法老" />
<TextBlock Width="120" Margin="0,1.5" Text="青椒" /> <TextBlock Width="120" Margin="0,1.5" Text="和十奕" />
<TextBlock Width="120" Margin="0,1.5" Text="MostxLingo" /> <TextBlock Width="120" Margin="0,1.5" Text="give" />
<TextBlock Width="120" Margin="0,1.5" Text="暖男排狗后面" /> <TextBlock Width="120" Margin="0,1.5" Text="我是只面包猫" />
<TextBlock Width="120" Margin="0,1.5" Text="大狗芬里尔" /> <TextBlock Width="120" Margin="0,1.5" Text="柒安" />
<TextBlock Width="120" Margin="0,1.5" Text="xfuiz" /> <TextBlock Width="120" Margin="0,1.5" Text="YUU" />
<TextBlock Width="120" Margin="0,1.5" Text="Hilsars" /> <TextBlock Width="120" Margin="0,1.5" Text="月下初拥" />
<TextBlock Width="120" Margin="0,1.5" Text="翎霜流火" /> <TextBlock Width="120" Margin="0,1.5" Text="白叶夕秋" />
<TextBlock Width="120" Margin="0,1.5" Text="但愿如此" /> <TextBlock Width="120" Margin="0,1.5" Text="酸奶炸鱼" />
<TextBlock Width="120" Margin="0,1.5" Text="AF" /> <TextBlock Width="120" Margin="0,1.5" Text="灵喻" />
<TextBlock Width="120" Margin="0,1.5" Text="王王的朋友" /> <TextBlock Width="120" Margin="0,1.5" Text="_暮霭" />
<TextBlock Width="120" Margin="0,1.5" Text="风未酉" /> <TextBlock Width="120" Margin="0,1.5" Text="TylerDeng" />
<TextBlock Width="120" Margin="0,1.5" Text="YukiNoa" /> <TextBlock Width="120" Margin="0,1.5" Text="咸鱼汤鱼咸" />
<TextBlock Width="120" Margin="0,1.5" Text="柠鼠" /> <TextBlock Width="120" Margin="0,1.5" Text="Hugh" />
<TextBlock Width="120" Margin="0,1.5" Text="xioaliepei" /> <TextBlock Width="120" Margin="0,1.5" Text="Qiyue" />
<TextBlock Width="120" Margin="0,1.5" Text="照井黎Terui_Rei" /> <TextBlock Width="120" Margin="0,1.5" Text="CHAKKS" />
<TextBlock Width="120" Margin="0,1.5" Text="1w2w3w" /> <TextBlock Width="120" Margin="0,1.5" Text="Silver_1572" />
<TextBlock Width="120" Margin="0,1.5" Text="奈何" /> <TextBlock Width="120" Margin="0,1.5" Text="WIFTAB" />
<TextBlock Width="120" Margin="0,1.5" Text="Dispaper" /> <TextBlock Width="120" Margin="0,1.5" Text="hmal" />
<TextBlock Width="120" Margin="0,1.5" Text="绅士不是坤" /> <TextBlock Width="120" Margin="0,1.5" Text="通大小学弟" />
<TextBlock Width="120" Margin="0,1.5" Text="Jason" /> <TextBlock Width="120" Margin="0,1.5" Text="htenet" />
<TextBlock Width="120" Margin="0,1.5" Text="Auditor1027" />
<TextBlock Width="120" Margin="0,1.5" Text="上财葬俗" />
<TextBlock Width="240" Margin="0,1.5" Text="スター?プレイヤー007" />
<TextBlock Width="120" Margin="0,1.5" Text="404" />
<TextBlock Width="120" Margin="0,1.5" Text="C-R-Carlos" />
<TextBlock Width="120" Margin="0,1.5" Text="雨霁青青" />
<TextBlock Width="120" Margin="0,1.5" Text="无尽的折腾" />
<TextBlock Width="120" Margin="0,1.5" Text="Zheng404" />
<TextBlock Width="120" Margin="0,1.5" Text="IC_Star" />
<TextBlock Width="120" Margin="0,1.5" Text="叶子L" />
<TextBlock Width="120" Margin="0,1.5" Text="E·Nigme·粥" />
<TextBlock Width="120" Margin="0,1.5" Text="ccc`" />
<TextBlock Width="120" Margin="0,1.5" Text="shangt541" />
<TextBlock Width="120" Margin="0,1.5" Text="i_c" />
<TextBlock Width="120" Margin="0,1.5" Text="毒饺子" />
<TextBlock Width="120" Margin="0,1.5" Text="花菜球酥" />
<TextBlock Width="120" Margin="0,1.5" Text="Guardsman" />
<TextBlock Width="120" Margin="0,1.5" Text="末地大师" />
<TextBlock Width="120" Margin="0,1.5" Text="ART_js" />
<TextBlock Width="120" Margin="0,1.5" Text="可爱的安小唯" />
<TextBlock Width="120" Margin="0,1.5" Text="GDDR3" />
<TextBlock Width="120" Margin="0,1.5" Text="不想疏忽" />
<TextBlock Width="120" Margin="0,1.5" Text="uuhihj" />
<TextBlock Width="120" Margin="0,1.5" Text="fy-z" />
<TextBlock Width="120" Margin="0,1.5" Text="阿迟" />
<TextBlock Width="120" Margin="0,1.5" Text="古泽" />
<TextBlock Width="120" Margin="0,1.5" Text="记得回家吃饭" />
<TextBlock Width="120" Margin="0,1.5" Text="Vularia" />
<TextBlock Width="120" Margin="0,1.5" Text="L" />
<TextBlock Width="120" Margin="0,1.5" Text="zzz" />
<TextBlock Width="120" Margin="0,1.5" Text="DD酱です" />
<TextBlock Width="120" Margin="0,1.5" Text="lzzy" />
<TextBlock Width="120" Margin="0,1.5" Text="盐" />
<TextBlock Width="120" Margin="0,1.5" Text="王杰" />
<TextBlock Width="120" Margin="0,1.5" Text="金兔银鲤" />
<TextBlock Width="120" Margin="0,1.5" Text="晓景红" />
<TextBlock Width="120" Margin="0,1.5" Text="66581k" />
<TextBlock Width="120" Margin="0,1.5" Text="zpi寻觅" />
<TextBlock Width="120" Margin="0,1.5" Text="二叠" />
<TextBlock Width="120" Margin="0,1.5" Text="JMHE" />
<TextBlock Width="120" Margin="0,1.5" Text="rjq1212" />
<TextBlock Width="120" Margin="0,1.5" Text="jEVd" />
<TextBlock Width="120" Margin="0,1.5" Text="Me4444da" />
<TextBlock Width="120" Margin="0,1.5" Text="NekoTsumiki" />
<TextBlock Width="120" Margin="0,1.5" Text="日笙漓雨" />
<TextBlock Width="120" Margin="0,1.5" Text="天空叶雨" />
<TextBlock Width="120" Margin="0,1.5" Text="隐藏老六" />
<TextBlock Width="120" Margin="0,1.5" Text="YANGGE" />
<TextBlock Width="120" Margin="0,1.5" Text="里的囧啊睡觉的" />
<TextBlock Width="120" Margin="0,1.5" Text="415411户用" />
<TextBlock Width="120" Margin="0,1.5" Text="咱们尬聊吧" />
<TextBlock Width="120" Margin="0,1.5" Text="洛斯里克的旅人" />
<TextBlock Width="120" Margin="0,1.5" Text="寒寒子" />
<TextBlock Width="120" Margin="0,1.5" Text="冬天吃棒冰" />
<TextBlock Width="120" Margin="0,1.5" Text="缘了了" />
<TextBlock Width="120" Margin="0,1.5" Text="Hamtaro937" />
<TextBlock Width="120" Margin="0,1.5" Text="404_null_" />
<TextBlock Width="120" Margin="0,1.5" Text="是霭墨哒~" />
<TextBlock Width="120" Margin="0,1.5" Text="also春分" />
<TextBlock Width="120" Margin="0,1.5" Text="Rikka" />
<TextBlock Width="120" Margin="0,1.5" Text="罐装冰块." />
<TextBlock Width="120" Margin="0,1.5" Text="mc_niunai" />
<TextBlock Width="120" Margin="0,1.5" Text="一片空白" />
<TextBlock Width="120" Margin="0,1.5" Text="嗨害嗨" />
<TextBlock Width="120" Margin="0,1.5" Text="XxiaozhangX" />
<TextBlock Width="120" Margin="0,1.5" Text="云默_初心" />
<TextBlock Width="120" Margin="0,1.5" Text="番薯" />
<TextBlock Width="120" Margin="0,1.5" Text="佛系的快乐水" />
<TextBlock Width="120" Margin="0,1.5" Text="青雀人间体" />
<TextBlock Width="120" Margin="0,1.5" Text="Minecraft00A" />
<TextBlock Width="240" Margin="0,1.5" Text="安东老鼠Anton Rattus" />
<TextBlock Width="120" Margin="0,1.5" Text="KissyXissy" />
<TextBlock Width="120" Margin="0,1.5" Text="α" />
<TextBlock Width="120" Margin="0,1.5" Text="kkx" />
<TextBlock Width="120" Margin="0,1.5" Text="书中君" />
<TextBlock Width="120" Margin="0,1.5" Text="WuCun" />
<TextBlock Width="120" Margin="0,1.5" Text="流年似水" />
<TextBlock Width="120" Margin="0,1.5" Text="坚果饼子" />
<TextBlock Width="120" Margin="0,1.5" Text="风幽" />
<TextBlock Width="120" Margin="0,1.5" Text="皿良皮车" />
<TextBlock Width="120" Margin="0,1.5" Text="塌琪" />
<TextBlock Width="120" Margin="0,1.5" Text="dingdang6283" />
<TextBlock Width="120" Margin="0,1.5" Text="无心之眼" />
<TextBlock Width="120" Margin="0,1.5" Text="mc小李" />
<TextBlock Width="120" Margin="0,1.5" Text="把罐子捡起来" />
<TextBlock Width="120" Margin="0,1.5" Text="华子" />
<TextBlock Width="120" Margin="0,1.5" Text="水电风扇" />
<TextBlock Width="120" Margin="0,1.5" Text="ahjsvjvs" />
<TextBlock Width="120" Margin="0,1.5" Text="椰汁城传奇" />
<TextBlock Width="120" Margin="0,1.5" Text="梓笙" />
<TextBlock Width="120" Margin="0,1.5" Text="空欢喜" />
<TextBlock Width="120" Margin="0,1.5" Text="是折木木阿" />
<TextBlock Width="120" Margin="0,1.5" Text="BreezyCarp" />
<TextBlock Width="120" Margin="0,1.5" Text="IAMDAEV" />
<TextBlock Width="120" Margin="0,1.5" Text="洛阳蓝焰" />
<TextBlock Width="120" Margin="0,1.5" Text="TC" />
<TextBlock Width="120" Margin="0,1.5" Text="Alanshen233" />
<TextBlock Width="120" Margin="0,1.5" Text="DirtySoup" />
<TextBlock Width="120" Margin="0,1.5" Text="江南遇知音" />
<TextBlock Width="240" Margin="0,1.5" Text="目睹世界终焉的不死人" />
<TextBlock Width="120" Margin="0,1.5" Text="PG社区" />
<TextBlock Width="120" Margin="0,1.5" Text="氼乚" />
<TextBlock Width="120" Margin="0,1.5" Text="武陟永" />
<TextBlock Width="120" Margin="0,1.5" Text="关于皆非" />
<TextBlock Width="120" Margin="0,1.5" Text="FVHERFJIKL" />
<TextBlock Width="120" Margin="0,1.5" Text="happy" />
<TextBlock Width="120" Margin="0,1.5" Text="施国祥" />
<TextBlock Width="120" Margin="0,1.5" Text="神秘" />
<TextBlock Width="120" Margin="0,1.5" Text="Jerry" />
<TextBlock Width="120" Margin="0,1.5" Text="j-vns" />
<TextBlock Width="120" Margin="0,1.5" Text="飘逸非凡" />
<TextBlock Width="120" Margin="0,1.5" Text="阿飘" />
<TextBlock Width="120" Margin="0,1.5" Text="笑笑狐阿狸" />
<TextBlock Width="120" Margin="0,1.5" Text="罗教授不是歌手" />
<TextBlock Width="120" Margin="0,1.5" Text="某猫" />
<TextBlock Width="120" Margin="0,1.5" Text="YUEZHIHUAN" />
<TextBlock Width="120" Margin="0,1.5" Text="河姆渡鱼化石" />
<TextBlock Width="120" Margin="0,1.5" Text="ZeroMostia" />
<TextBlock Width="120" Margin="0,1.5" Text="枯萎的西行妖" />
<TextBlock Width="120" Margin="0,1.5" Text="Elyas" />
<TextBlock Width="120" Margin="0,1.5" Text="Boris_Vasha" />
<TextBlock Width="120" Margin="0,1.5" Text="凯" />
<TextBlock Width="240" Margin="0,1.5" Text="都是万恶的马哈鱼害的" />
<TextBlock Width="120" Margin="0,1.5" Text="阎阎" />
<TextBlock Width="120" Margin="0,1.5" Text="Laotou" />
<TextBlock Width="120" Margin="0,1.5" Text="IN" />
<TextBlock Width="120" Margin="0,1.5" Text="浪客wave" />
<TextBlock Width="120" Margin="0,1.5" Text="A.L" />
<TextBlock Width="120" Margin="0,1.5" Text="xlz" />
<TextBlock Width="120" Margin="0,1.5" Text="幻紫薰" />
<TextBlock Width="120" Margin="0,1.5" Text="落子" />
<TextBlock Width="120" Margin="0,1.5" Text="张卿予" />
<TextBlock Width="120" Margin="0,1.5" Text="无眠" />
<TextBlock Width="120" Margin="0,1.5" Text="苏瑾" />
<TextBlock Width="120" Margin="0,1.5" Text="Arthur" />
<TextBlock Width="120" Margin="0,1.5" Text="敬乎尔珍" />
<TextBlock Width="120" Margin="0,1.5" Text="御清宇" />
<TextBlock Width="120" Margin="0,1.5" Text="MJD" />
<TextBlock Width="120" Margin="0,1.5" Text="邸网管" />
<TextBlock Width="120" Margin="0,1.5" Text="chiguaba" />
<TextBlock Width="120" Margin="0,1.5" Text="清风不及君" />
<TextBlock Width="120" Margin="0,1.5" Text="万象聚今朝" />
<TextBlock Width="120" Margin="0,1.5" Text="泗木" />
<TextBlock Width="120" Margin="0,1.5" Text="正义人" />
<TextBlock Width="120" Margin="0,1.5" Text="......" />
<TextBlock Width="120" Margin="0,1.5" Text="镜千视界" />
<TextBlock Width="120" Margin="0,1.5" Text="脆脆屑人" />
<TextBlock Width="120" Margin="0,1.5" Text="海妖" />
<TextBlock Width="120" Margin="0,1.5" Text="5418ly" />
<TextBlock Width="120" Margin="0,1.5" Text="传奇阿玮" />
<TextBlock Width="120" Margin="0,1.5" Text="Qian" />
<TextBlock Width="120" Margin="0,1.5" Text="SeaSurgeX" />
<TextBlock Width="120" Margin="0,1.5" Text="hehe" />
<TextBlock Width="120" Margin="0,1.5" Text="凌憬awa" />
<TextBlock Width="120" Margin="0,1.5" Text="我当个混子就行" />
<TextBlock Width="120" Margin="0,1.5" Text="聪聪" />
<TextBlock Width="120" Margin="0,1.5" Text="Zhea" />
<TextBlock Width="120" Margin="0,1.5" Text="The_Back-Admin" />
<TextBlock Width="120" Margin="0,1.5" Text="寒雨KanU_" />
<TextBlock Width="120" Margin="0,1.5" Text="衡阳雁去" />
<TextBlock Width="120" Margin="0,1.5" Text="空月" />
<TextBlock Width="120" Margin="0,1.5" Text="IFwikidot管理员" />
<TextBlock Width="120" Margin="0,1.5" Text="是阿改哦" />
<TextBlock Width="120" Margin="0,1.5" Text="铮难弄" />
<TextBlock Width="120" Margin="0,1.5" Text="???" />
<TextBlock Width="120" Margin="0,1.5" Text="锕礸" />
<TextBlock Width="240" Margin="0,1.5" Text="我真的事仁济啊(恼)" />
<TextBlock Width="120" Margin="0,1.5" Text="初辟鸿蒙" />
<TextBlock Width="120" Margin="0,1.5" Text="火丙知日" />
<TextBlock Width="120" Margin="0,1.5" Text="李白" />
<TextBlock Width="120" Margin="0,1.5" Text="Tian_bei" />
<TextBlock Width="120" Margin="0,1.5" Text="御风任飞" />
<TextBlock Width="120" Margin="0,1.5" Text="PurplePuffCake" />
<TextBlock Width="120" Margin="0,1.5" Text="倾天" />
<TextBlock Width="120" Margin="0,1.5" Text="柚子_grapefruit_" />
<TextBlock Width="120" Margin="0,1.5" Text="qt2000" />
<TextBlock Width="120" Margin="0,1.5" Text="玉驹素海" />
<TextBlock Width="120" Margin="0,1.5" Text="忘崽小杜" />
<TextBlock Width="120" Margin="0,1.5" Text="才毅" />
<TextBlock Width="120" Margin="0,1.5" Text="smhMCJack" />
<TextBlock Width="120" Margin="0,1.5" Text="Muyiyi" />
<TextBlock Width="120" Margin="0,1.5" Text="dingyaa1" />
<TextBlock Width="120" Margin="0,1.5" Text="菍" />
<TextBlock Width="120" Margin="0,1.5" Text="明凡HD" />
<TextBlock Width="120" Margin="0,1.5" Text="SenLin233" />
<TextBlock Width="120" Margin="0,1.5" Text="zjhf" />
<TextBlock Width="120" Margin="0,1.5" Text="末影花生" />
<TextBlock Width="120" Margin="0,1.5" Text="shui素大青花" />
<TextBlock Width="120" Margin="0,1.5" Text="凌梦_dream" />
<TextBlock Width="120" Margin="0,1.5" Text="O.W.B." />
<TextBlock Width="120" Margin="0,1.5" Text="走过的四季" />
<TextBlock Width="120" Margin="0,1.5" Text="风羽" />
<TextBlock Width="120" Margin="0,1.5" Text="梧筱墨" />
<TextBlock Width="120" Margin="0,1.5" Text="StarSky" />
<TextBlock Width="120" Margin="0,1.5" Text="乌罗布罗斯" />
<TextBlock Width="120" Margin="0,1.5" Text="Kinllia" />
<TextBlock Width="120" Margin="0,1.5" Text="梦醒皆是虚无" />
<TextBlock Width="120" Margin="0,1.5" Text="ZmdNotFound" />
<TextBlock Width="120" Margin="0,1.5" Text="防水抹布" />
<TextBlock Width="120" Margin="0,1.5" Text="BBK" />
<TextBlock Width="120" Margin="0,1.5" Text="白璃是你姐姐呀" />
<TextBlock Width="120" Margin="0,1.5" Text="天之海" />
<TextBlock Width="120" Margin="0,1.5" Text="花落影" />
<TextBlock Width="120" Margin="0,1.5" Text="小渣渣" />
<TextBlock Width="120" Margin="0,1.5" Text="djhwshm" />
<TextBlock Width="120" Margin="0,1.5" Text="Sola18" />
<TextBlock Width="120" Margin="0,1.5" Text="漆黑" />
<TextBlock Width="120" Margin="0,1.5" Text="jian_ke" />
</WrapPanel> </WrapPanel>
<Grid Height="35"> <Grid Height="35">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
@@ -221,6 +221,7 @@
If(IsHintIndie, vbCrLf & "由于该版本开启了版本隔离,删除版本时该版本对应的存档、资源包、Mod 等文件也将被一并删除!", ""), If(IsHintIndie, vbCrLf & "由于该版本开启了版本隔离,删除版本时该版本对应的存档、资源包、Mod 等文件也将被一并删除!", ""),
"版本删除确认", , "取消",, True) "版本删除确认", , "取消",, True)
Case 1 Case 1
IniClearCache(Version.PathIndie & "options.txt")
IniClearCache(Version.Path & "PCL\Setup.ini") IniClearCache(Version.Path & "PCL\Setup.ini")
If IsShiftPressed Then If IsShiftPressed Then
DeleteDirectory(Version.Path) DeleteDirectory(Version.Path)
@@ -21,6 +21,7 @@
{"HintClearRubbish", New SetupEntry(0, Source:=SetupSource.Registry)}, {"HintClearRubbish", New SetupEntry(0, Source:=SetupSource.Registry)},
{"HintUpdateMod", New SetupEntry(False, Source:=SetupSource.Registry)}, {"HintUpdateMod", New SetupEntry(False, Source:=SetupSource.Registry)},
{"HintCustomCommand", New SetupEntry(False, Source:=SetupSource.Registry)}, {"HintCustomCommand", New SetupEntry(False, Source:=SetupSource.Registry)},
{"HintCustomWarn", New SetupEntry(False, Source:=SetupSource.Registry)},
{"HintMoreAdvancedSetup", New SetupEntry(False, Source:=SetupSource.Registry)}, {"HintMoreAdvancedSetup", New SetupEntry(False, Source:=SetupSource.Registry)},
{"HintIndieSetup", New SetupEntry(False, Source:=SetupSource.Registry)}, {"HintIndieSetup", New SetupEntry(False, Source:=SetupSource.Registry)},
{"HintExportConfig", New SetupEntry(False, Source:=SetupSource.Registry)}, {"HintExportConfig", New SetupEntry(False, Source:=SetupSource.Registry)},
@@ -100,7 +101,7 @@
{"LaunchArgumentWindowHeight", New SetupEntry(480)}, {"LaunchArgumentWindowHeight", New SetupEntry(480)},
{"LaunchArgumentWindowType", New SetupEntry(1)}, {"LaunchArgumentWindowType", New SetupEntry(1)},
{"LaunchArgumentRam", New SetupEntry(False, Source:=SetupSource.Registry)}, {"LaunchArgumentRam", New SetupEntry(False, Source:=SetupSource.Registry)},
{"LaunchAdvanceJvm", New SetupEntry("-Dfile.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 -XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Djdk.lang.Process.allowAmbiguousCommands=true -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true")}, {"LaunchAdvanceJvm", New SetupEntry("-XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Djdk.lang.Process.allowAmbiguousCommands=true -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true")},
{"LaunchAdvanceGame", New SetupEntry("")}, {"LaunchAdvanceGame", New SetupEntry("")},
{"LaunchAdvanceRun", New SetupEntry("")}, {"LaunchAdvanceRun", New SetupEntry("")},
{"LaunchAdvanceRunWait", New SetupEntry(True)}, {"LaunchAdvanceRunWait", New SetupEntry(True)},
@@ -592,11 +593,13 @@
FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed
FrmSetupUI.PanCustomNet.Visibility = Visibility.Collapsed FrmSetupUI.PanCustomNet.Visibility = Visibility.Collapsed
FrmSetupUI.HintCustom.Visibility = Visibility.Collapsed FrmSetupUI.HintCustom.Visibility = Visibility.Collapsed
FrmSetupUI.HintCustomWarn.Visibility = Visibility.Collapsed
Case 1 '本地 Case 1 '本地
FrmSetupUI.PanCustomPreset.Visibility = Visibility.Collapsed FrmSetupUI.PanCustomPreset.Visibility = Visibility.Collapsed
FrmSetupUI.PanCustomLocal.Visibility = Visibility.Visible FrmSetupUI.PanCustomLocal.Visibility = Visibility.Visible
FrmSetupUI.PanCustomNet.Visibility = Visibility.Collapsed FrmSetupUI.PanCustomNet.Visibility = Visibility.Collapsed
FrmSetupUI.HintCustom.Visibility = Visibility.Visible FrmSetupUI.HintCustom.Visibility = Visibility.Visible
FrmSetupUI.HintCustomWarn.Visibility = If(Setup.Get("HintCustomWarn"), Visibility.Collapsed, Visibility.Visible)
FrmSetupUI.HintCustom.Text = $"从 PCL 文件夹下的 Custom.xaml 读取主页内容。{vbCrLf}你可以手动编辑该文件,向主页添加文本、图片、常用网站、快捷启动等功能。" FrmSetupUI.HintCustom.Text = $"从 PCL 文件夹下的 Custom.xaml 读取主页内容。{vbCrLf}你可以手动编辑该文件,向主页添加文本、图片、常用网站、快捷启动等功能。"
FrmSetupUI.HintCustom.EventType = "" FrmSetupUI.HintCustom.EventType = ""
FrmSetupUI.HintCustom.EventData = "" FrmSetupUI.HintCustom.EventData = ""
@@ -605,6 +608,7 @@
FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed
FrmSetupUI.PanCustomNet.Visibility = Visibility.Visible FrmSetupUI.PanCustomNet.Visibility = Visibility.Visible
FrmSetupUI.HintCustom.Visibility = Visibility.Visible FrmSetupUI.HintCustom.Visibility = Visibility.Visible
FrmSetupUI.HintCustomWarn.Visibility = If(Setup.Get("HintCustomWarn"), Visibility.Collapsed, Visibility.Visible)
FrmSetupUI.HintCustom.Text = $"从指定网址联网获取主页内容。服主也可以用于动态更新服务器公告。{vbCrLf}如果你制作了稳定运行的联网主页,可以点击这条提示投稿,若合格即可加入预设!" FrmSetupUI.HintCustom.Text = $"从指定网址联网获取主页内容。服主也可以用于动态更新服务器公告。{vbCrLf}如果你制作了稳定运行的联网主页,可以点击这条提示投稿,若合格即可加入预设!"
FrmSetupUI.HintCustom.EventType = "打开网页" FrmSetupUI.HintCustom.EventType = "打开网页"
FrmSetupUI.HintCustom.EventData = "https://github.com/Hex-Dragon/PCL2/discussions/2528" FrmSetupUI.HintCustom.EventData = "https://github.com/Hex-Dragon/PCL2/discussions/2528"
@@ -613,6 +617,7 @@
FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed
FrmSetupUI.PanCustomNet.Visibility = Visibility.Collapsed FrmSetupUI.PanCustomNet.Visibility = Visibility.Collapsed
FrmSetupUI.HintCustom.Visibility = Visibility.Collapsed FrmSetupUI.HintCustom.Visibility = Visibility.Collapsed
FrmSetupUI.HintCustomWarn.Visibility = Visibility.Collapsed
End Select End Select
FrmSetupUI.CardCustom.TriggerForceResize() FrmSetupUI.CardCustom.TriggerForceResize()
End Sub End Sub
@@ -206,6 +206,8 @@
<local:MyRadioBox Text="读取本地文件" x:Name="RadioCustomType1" Height="22" Tag="UiCustomType/1" Grid.Column="2" /> <local:MyRadioBox Text="读取本地文件" x:Name="RadioCustomType1" Height="22" Tag="UiCustomType/1" Grid.Column="2" />
<local:MyRadioBox Text="联网更新" x:Name="RadioCustomType2" Height="22" Tag="UiCustomType/2" Grid.Column="3" /> <local:MyRadioBox Text="联网更新" x:Name="RadioCustomType2" Height="22" Tag="UiCustomType/2" Grid.Column="3" />
</Grid> </Grid>
<local:MyHint Margin="0,15,0,-9" Text="在使用陌生人提供的主页前请务必谨慎,恶意的主页可能会造成损害!" IsWarn="True" x:Name="HintCustomWarn"
CanClose="True" RelativeSetup="HintCustomWarn" />
<local:MyHint Margin="0,15,0,1" Text="内容见 ModSetup" IsWarn="False" x:Name="HintCustom" /> <local:MyHint Margin="0,15,0,1" Text="内容见 ModSetup" IsWarn="False" x:Name="HintCustom" />
<Grid Height="35" x:Name="PanCustomLocal" Visibility="Collapsed" Margin="0,10,0,5"> <Grid Height="35" x:Name="PanCustomLocal" Visibility="Collapsed" Margin="0,10,0,5">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
@@ -176,7 +176,6 @@
<System:String>"</System:String> <System:String>"</System:String>
<System:String>“</System:String> <System:String>“</System:String>
<System:String>”</System:String> <System:String>”</System:String>
<System:String>/</System:String>
<System:String>http://</System:String> <System:String>http://</System:String>
<System:String>https://</System:String> <System:String>https://</System:String>
</local:ValidateExcept.Excepts> </local:ValidateExcept.Excepts>
@@ -374,4 +374,11 @@ local:MyIconButton(图标按钮):
- Theme:设置颜色主题,Color(默认)为当前启动器的主题颜色,也可设置为 White、Black、Red - Theme:设置颜色主题,Color(默认)为当前启动器的主题颜色,也可设置为 White、Black、Red
- EventType、EventData:触发特定事件 - EventType、EventData:触发特定事件
默认会声明以下命名空间:
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:sys="clr-namespace:System;assembly=mscorlib"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:local="clr-namespace:PCL;assembly=Plain Craft Launcher 2"
除此之外,不能声明其他命名空间。
--> -->
File diff suppressed because it is too large Load Diff
Binary file not shown.