Merge branch 'main' into fix#5966
This commit is contained in:
@@ -10,6 +10,14 @@ Public Class FormMain
|
||||
Dim FeatureList As New List(Of KeyValuePair(Of Integer, String))
|
||||
'统计更新日志条目
|
||||
#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
|
||||
FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "新增:导出整合包功能"))
|
||||
FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:支持在超长路径下安装、启动游戏"))
|
||||
@@ -58,6 +66,14 @@ Public Class FormMain
|
||||
'3:BUG+ IMP* FEAT-
|
||||
'2:BUG* IMP-
|
||||
'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
|
||||
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:Minecraft 会优先使用独立显卡运行"))
|
||||
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:简化下载新版本第二步的 UI"))
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
Imports System.Globalization
|
||||
Imports System.IO.Compression
|
||||
Imports System.Reflection
|
||||
Imports System.Runtime.CompilerServices
|
||||
Imports System.Security.Cryptography
|
||||
Imports System.Security.Principal
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports System.Windows.Markup
|
||||
Imports System.Xaml
|
||||
Imports Newtonsoft.Json
|
||||
|
||||
Public Module ModBase
|
||||
@@ -12,13 +13,13 @@ Public Module ModBase
|
||||
#Region "声明"
|
||||
|
||||
'下列版本信息由更新器自动修改
|
||||
Public Const VersionBaseName As String = "2.9.2" '不含分支前缀的显示用版本名
|
||||
Public Const VersionStandardCode As String = "2.9.2." & VersionBranchCode '标准格式的四段式版本号
|
||||
Public Const VersionBaseName As String = "2.9.3" '不含分支前缀的显示用版本名
|
||||
Public Const VersionStandardCode As String = "2.9.3." & VersionBranchCode '标准格式的四段式版本号
|
||||
Public Const CommitHash As String = "" 'Commit Hash,由 GitHub Workflow 自动替换
|
||||
#If BETA Then
|
||||
Public Const VersionCode As Integer = 352 'Release
|
||||
Public Const VersionCode As Integer = 355 'Release
|
||||
#Else
|
||||
Public Const VersionCode As Integer = 353 'Snapshot
|
||||
Public Const VersionCode As Integer = 354 'Snapshot
|
||||
#End If
|
||||
'自动生成的版本信息
|
||||
Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName
|
||||
@@ -1697,6 +1698,7 @@ RetryDir:
|
||||
End Function
|
||||
''' <summary>
|
||||
''' 获取处于两个子字符串之间的部分,裁切尽可能多的内容。
|
||||
''' 等效于 AfterLast 后接 BeforeFirst。
|
||||
''' 如果未找到子字符串则不裁切。
|
||||
''' </summary>
|
||||
<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>
|
||||
''' 将 XML 转换为对应 UI 对象。
|
||||
''' </summary>
|
||||
Public Function GetObjectFromXML(Str As String)
|
||||
Using Stream As New MemoryStream
|
||||
Public Function GetObjectFromXML(Str As String) As Object
|
||||
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)
|
||||
Writer.Write(Str)
|
||||
Writer.Flush()
|
||||
Stream.Position = 0
|
||||
Return XamlReader.Load(Stream)
|
||||
Return Markup.XamlReader.Load(Stream)
|
||||
End Using
|
||||
End Using
|
||||
End Function
|
||||
|
||||
@@ -150,13 +150,13 @@ Public Class ValidateExcept
|
||||
Public Property Excepts As ObjectModel.Collection(Of String) = New ObjectModel.Collection(Of String)
|
||||
Public Property ErrorMessage As String
|
||||
Public Sub New()
|
||||
ErrorMessage = "输入内容不能包含 %!"
|
||||
ErrorMessage = "输入内容不能包含 %"
|
||||
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.ErrorMessage = ErrorMessage
|
||||
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.ErrorMessage = ErrorMessage
|
||||
For Each Data As String In Excepts
|
||||
@@ -185,12 +185,12 @@ Public Class ValidateExceptSame
|
||||
Public Property IgnoreCase As Boolean = False
|
||||
Public Sub New()
|
||||
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.ErrorMessage = ErrorMessage
|
||||
Me.IgnoreCase = IgnoreCase
|
||||
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)
|
||||
For Each Data As String In Excepts
|
||||
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不兼容)
|
||||
'Mod 导致的崩溃
|
||||
If LogCrash.Contains("-- MOD ") Then
|
||||
If LogCrash.Between("-- MOD ", "Failure message:").ContainsF(".jar", True) Then
|
||||
AppendReason(CrashReason.确定Mod导致游戏崩溃, If(RegexSeek(LogCrash, "(?<=Mod File: ).+"), "").TrimEnd((vbCrLf & " ").ToCharArray))
|
||||
Dim LogCrashMod As String = LogCrash.Between("-- MOD ", "Failure message:")
|
||||
If LogCrashMod.ContainsF(".jar", True) Then
|
||||
AppendReason(CrashReason.确定Mod导致游戏崩溃, If(RegexSeek(LogCrashMod, "(?<=Mod File: ).+"), "").TrimEnd((vbCrLf & " ").ToCharArray))
|
||||
Else
|
||||
AppendReason(CrashReason.Mod加载器报错, If(RegexSeek(LogCrash, "(?<=Failure message: )[\w\W]+?(?=\tMod)"), "").Replace(vbTab, " ").TrimEnd((vbCrLf & " ").ToCharArray))
|
||||
End If
|
||||
|
||||
@@ -674,13 +674,14 @@ Wait:
|
||||
'若该目录有 Java,则加入结果
|
||||
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",
|
||||
"soft", "cache", "temp", "corretto", "roaming", "users", "craft", "program", "世界", "net",
|
||||
"游戏", "oracle", "game", "file", "data", "jvm", "服务", "server", "客户", "client", "整合",
|
||||
"应用", "运行", "前置", "mojang", "官启", "新建文件夹", "eclipse", "microsoft", "hotspot",
|
||||
"runtime", "x86", "x64", "forge", "原版", "optifine", "官方", "启动", "hmcl", "mod", "高清",
|
||||
"download", "launch", "程序", "path", "version", "baka", "pcl", "zulu", "local", "packages",
|
||||
"4297127d64ec6", "国服", "网易", "ext", "netease", "1.", "启动"}
|
||||
"4297127d64ec6", "1.", "启动"}
|
||||
For Each FolderInfo As DirectoryInfo In OriginalPath.EnumerateDirectories
|
||||
If FolderInfo.Attributes.HasFlag(FileAttributes.ReparsePoint) Then Continue For '跳过符号链接
|
||||
Dim SearchEntry = GetFolderNameFromPath(FolderInfo.Name).ToLower '用于搜索的字符串
|
||||
|
||||
@@ -220,21 +220,24 @@ NextInner:
|
||||
If CheckResult <> "" Then Throw New ArgumentException(CheckResult)
|
||||
#If BETA Then
|
||||
'求赞助
|
||||
RunInNewThread(
|
||||
Sub()
|
||||
Select Case Setup.Get("SystemLaunchCount")
|
||||
Case 10, 20, 40, 60, 80, 100, 120, 150, 200, 250, 300, 350, 400, 500, 600, 700, 800, 900, 1000, 1200, 1400, 1600, 1800, 2000
|
||||
If MyMsgBox("PCL 已经为你启动了 " & Setup.Get("SystemLaunchCount") & " 次游戏啦!" & vbCrLf &
|
||||
"如果 PCL 还算好用的话,能不能考虑赞助一下 PCL……" & vbCrLf &
|
||||
"如果没有大家的支持,PCL 很难在免费、无任何广告的情况下维持数年的更新(磕头)……!",
|
||||
Setup.Get("SystemLaunchCount") & " 次启动!", "支持 PCL!", "但是我拒绝") = 1 Then
|
||||
OpenWebsite("https://afdian.com/a/LTCat")
|
||||
End If
|
||||
End Select
|
||||
End Sub, "Donate")
|
||||
If CurrentLaunchOptions?.SaveBatch Is Nothing Then '保存脚本时不提示
|
||||
RunInNewThread(
|
||||
Sub()
|
||||
Select Case Setup.Get("SystemLaunchCount")
|
||||
Case 10, 20, 40, 60, 80, 100, 120, 150, 200, 250, 300, 350, 400, 500, 600, 700, 800, 900, 1000, 1200, 1400, 1600, 1800, 2000
|
||||
If MyMsgBox("PCL 已经为你启动了 " & Setup.Get("SystemLaunchCount") & " 次游戏啦!" & vbCrLf &
|
||||
"如果 PCL 还算好用的话,能不能考虑赞助一下 PCL……" & vbCrLf &
|
||||
"如果没有大家的支持,PCL 很难在免费、无任何广告的情况下维持数年的更新(磕头)……!",
|
||||
Setup.Get("SystemLaunchCount") & " 次启动!", "支持 PCL!", "但是我拒绝") = 1 Then
|
||||
OpenWebsite("https://afdian.com/a/LTCat")
|
||||
End If
|
||||
End Select
|
||||
End Sub, "Donate")
|
||||
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
|
||||
RunInNewThread(
|
||||
Sub()
|
||||
@@ -1347,6 +1350,12 @@ Retry:
|
||||
Arguments += " " & McLaunchArgumentsGameNew(McVersionCurrent)
|
||||
McLaunchLog("新版 Game 参数获取成功")
|
||||
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)
|
||||
If String.IsNullOrWhiteSpace(ReplaceArguments("${version_type}")) Then
|
||||
@@ -1899,7 +1908,6 @@ NextVersion:
|
||||
'1.6 ~ 10 :zh_CN 时正常,zh_cn 时自动切换为英文
|
||||
'1.11 ~ 12:zh_cn 时正常,zh_CN 时虽然显示了中文但语言设置会错误地显示选择英文
|
||||
'1.13+ :zh_cn 时正常,zh_CN 时自动切换为英文
|
||||
IniClearCache(SetupFileAddress) '清除缓存(#2294)
|
||||
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
|
||||
If(Setup.Get("ToolHelpChinese"), "zh_cn", "en_us"), CurrentLang.ToLower)
|
||||
|
||||
@@ -207,53 +207,46 @@ Public Module ModMinecraft
|
||||
''' </summary>
|
||||
Public ReadOnly Property PathIndie As String
|
||||
Get
|
||||
Return GetPathIndie(Modable)
|
||||
InitPathIndie(Modable)
|
||||
Return If(Setup.Get("VersionArgumentIndieV2", Version:=Me), Path, PathMcFolder)
|
||||
End Get
|
||||
End Property
|
||||
''' <summary>
|
||||
''' 在不加载版本的情况下获取版本隔离目录。
|
||||
''' 决定该版本是否应该被隔离。
|
||||
''' </summary>
|
||||
Public Function GetPathIndie(Modable As Boolean) As String
|
||||
'决定版本隔离类型
|
||||
If Setup.IsUnset("VersionArgumentIndieV2", Version:=Me) Then
|
||||
Dim ShouldBeIndie =
|
||||
Function() As Boolean
|
||||
'从老的版本独立设置中迁移:-1 未决定,0 使用全局设置,1 手动开启,2 手动关闭
|
||||
If Not Setup.IsUnset("VersionArgumentIndie", Version:=Me) AndAlso Setup.Get("VersionArgumentIndie", Version:=Me) > 0 Then
|
||||
Log($"[Minecraft] 版本隔离初始化({Name}):从老的版本独立设置中迁移")
|
||||
Return Setup.Get("VersionArgumentIndie", Version:=Me) = 1
|
||||
End If
|
||||
'若版本文件夹下包含 mods 或 saves 文件夹,则自动开启版本隔离
|
||||
Dim ModFolder As New DirectoryInfo(Path & "mods\")
|
||||
Dim SaveFolder As New DirectoryInfo(Path & "saves\")
|
||||
If (ModFolder.Exists AndAlso ModFolder.EnumerateFiles.Any) OrElse (SaveFolder.Exists AndAlso SaveFolder.EnumerateFiles.Any) Then
|
||||
Log($"[Minecraft] 版本隔离初始化({Name}):版本文件夹下存在 mods 或 saves 文件夹,自动开启")
|
||||
Public Sub InitPathIndie(Modable As Boolean)
|
||||
If Not Setup.IsUnset("VersionArgumentIndieV2", Version:=Me) Then Return
|
||||
Dim ShouldBeIndie =
|
||||
Function() As Boolean
|
||||
'从老的版本独立设置中迁移:-1 未决定,0 使用全局设置,1 手动开启,2 手动关闭
|
||||
If Not Setup.IsUnset("VersionArgumentIndie", Version:=Me) AndAlso Setup.Get("VersionArgumentIndie", Version:=Me) > 0 Then
|
||||
Log($"[Minecraft] 版本隔离初始化({Name}):从老的版本独立设置中迁移")
|
||||
Return Setup.Get("VersionArgumentIndie", Version:=Me) = 1
|
||||
End If
|
||||
'若版本文件夹下包含 mods 或 saves 文件夹,则自动开启版本隔离
|
||||
Dim ModFolder As New DirectoryInfo(Path & "mods\")
|
||||
Dim SaveFolder As New DirectoryInfo(Path & "saves\")
|
||||
If (ModFolder.Exists AndAlso ModFolder.EnumerateFiles.Any) OrElse (SaveFolder.Exists AndAlso SaveFolder.EnumerateFiles.Any) Then
|
||||
Log($"[Minecraft] 版本隔离初始化({Name}):版本文件夹下存在 mods 或 saves 文件夹,自动开启")
|
||||
Return True
|
||||
End If
|
||||
'根据全局的默认设置决定是否隔离
|
||||
Log($"[Minecraft] 版本隔离初始化({Name}):从全局默认设置中({Setup.Get("LaunchArgumentIndieV2")})判断")
|
||||
Select Case Setup.Get("LaunchArgumentIndieV2")
|
||||
Case 0 '关闭
|
||||
Return False
|
||||
Case 1 '仅隔离可安装 Mod 的版本
|
||||
Return Modable
|
||||
Case 2 '仅隔离非正式版
|
||||
Return State = McVersionState.Fool OrElse State = McVersionState.Old OrElse State = McVersionState.Snapshot
|
||||
Case 3 '隔离非正式版与可安装 Mod 的版本
|
||||
Return Modable OrElse State = McVersionState.Fool OrElse State = McVersionState.Old OrElse State = McVersionState.Snapshot
|
||||
Case Else '隔离所有版本
|
||||
Return True
|
||||
End If
|
||||
'根据全局的默认设置决定是否隔离
|
||||
Log($"[Minecraft] 版本隔离初始化({Name}):从全局默认设置中({Setup.Get("LaunchArgumentIndieV2")})判断")
|
||||
Select Case Setup.Get("LaunchArgumentIndieV2")
|
||||
Case 0 '关闭
|
||||
Return False
|
||||
Case 1 '仅隔离可安装 Mod 的版本
|
||||
Return Modable
|
||||
Case 2 '仅隔离非正式版
|
||||
Return State = McVersionState.Fool OrElse State = McVersionState.Old OrElse State = McVersionState.Snapshot
|
||||
Case 3 '隔离非正式版与可安装 Mod 的版本
|
||||
Return Modable OrElse State = McVersionState.Fool OrElse State = McVersionState.Old OrElse State = McVersionState.Snapshot
|
||||
Case Else '隔离所有版本
|
||||
Return True
|
||||
End Select
|
||||
End Function
|
||||
Setup.Set("VersionArgumentIndieV2", ShouldBeIndie(), Version:=Me)
|
||||
End If
|
||||
'根据隔离类型决定路径
|
||||
If Setup.Get("VersionArgumentIndieV2", Version:=Me) Then
|
||||
Return Path
|
||||
Else
|
||||
Return PathMcFolder
|
||||
End If
|
||||
End Function
|
||||
End Select
|
||||
End Function
|
||||
Setup.Set("VersionArgumentIndieV2", ShouldBeIndie(), Version:=Me)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 该版本的版本文件夹名称。
|
||||
@@ -1080,6 +1073,8 @@ ExitDataLoad:
|
||||
Return "2023 | 研究表明:玩家喜欢作出选择——越多越好!"
|
||||
ElseIf Name = "24w14potato" Then
|
||||
Return "2024 | 毒马铃薯一直都被大家忽视和低估,于是我们超级加强了它!"
|
||||
ElseIf Name = "25w14craftmine" Then
|
||||
Return "2025 | 你可以合成任何东西——包括合成你的世界!"
|
||||
Else
|
||||
Return ""
|
||||
End If
|
||||
|
||||
@@ -873,17 +873,26 @@ NextFile:
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 申请一个可用于任务缓存的临时文件夹,以 \ 结尾。
|
||||
''' 这些文件夹无需进行后续清理。
|
||||
''' 申请一个可用于任务缓存的临时文件夹,以 \ 结尾。这些文件夹无需进行后续清理。
|
||||
''' 若所有缓存位置均没有权限,会抛出异常。
|
||||
''' </summary>
|
||||
''' <param name="RequireNonSpace">是否要求路径不包含空格。</param>
|
||||
Public Function RequestTaskTempFolder(Optional RequireNonSpace As Boolean = False) As String
|
||||
TryClearTaskTemp()
|
||||
RequestTaskTempFolder = $"{PathTemp}TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}\"
|
||||
If RequireNonSpace AndAlso RequestTaskTempFolder.Contains(" ") Then
|
||||
RequestTaskTempFolder = $"{OsDrive}ProgramData\PCL\TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}\"
|
||||
End If
|
||||
Directory.CreateDirectory(RequestTaskTempFolder)
|
||||
Dim ResultFolder As String
|
||||
Try
|
||||
ResultFolder = $"{PathTemp}TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}\"
|
||||
If RequireNonSpace AndAlso ResultFolder.Contains(" ") Then Exit Try '带空格
|
||||
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 Region
|
||||
|
||||
@@ -245,7 +245,12 @@
|
||||
RunInThread(
|
||||
Sub()
|
||||
Log("[Music] 已恢复播放")
|
||||
MusicNAudio?.Play()
|
||||
Try
|
||||
MusicNAudio?.Play()
|
||||
Catch 'https://github.com/Hex-Dragon/PCL2/pull/5415#issuecomment-2751135223
|
||||
MusicNAudio?.Stop()
|
||||
MusicNAudio?.Play()
|
||||
End Try
|
||||
MusicRefreshUI()
|
||||
End Sub)
|
||||
Return True
|
||||
@@ -273,6 +278,7 @@
|
||||
'开始播放
|
||||
CurrentWave = New NAudio.Wave.WaveOutEvent()
|
||||
MusicNAudio = CurrentWave
|
||||
CurrentWave.DeviceNumber = -1
|
||||
Reader = New NAudio.Wave.AudioFileReader(MusicCurrent)
|
||||
CurrentWave.Init(Reader)
|
||||
CurrentWave.Play()
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
'由于包含加解密等安全信息,本文件中的部分代码已被删除
|
||||
|
||||
Imports System.Net
|
||||
Imports System.Reflection
|
||||
Imports System.Security.Cryptography
|
||||
|
||||
Friend Module ModSecret
|
||||
|
||||
@@ -51,6 +51,6 @@ Imports System.Runtime.InteropServices
|
||||
' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
||||
' 方法是按如下所示使用“*”
|
||||
|
||||
<Assembly: AssemblyVersion("2.9.2.0")>
|
||||
<Assembly: AssemblyFileVersion("2.9.2.0")>
|
||||
<Assembly: AssemblyVersion("2.9.3.0")>
|
||||
<Assembly: AssemblyFileVersion("2.9.3.0")>
|
||||
<Assembly: NeutralResourcesLanguage("")>
|
||||
|
||||
@@ -441,9 +441,9 @@ pause"
|
||||
'添加 Java Wrapper 作为主 Jar
|
||||
Dim Arguments As String
|
||||
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
|
||||
Arguments = $"-Duser.home=""{BaseMcFolderHome}"" -cp ""{Target}"" optifine.Installer"
|
||||
Arguments = $"-Duser.home=""{BaseMcFolderHome.TrimEnd("\")}"" -cp ""{Target}"" optifine.Installer"
|
||||
End If
|
||||
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 IsNewVersion As Boolean = DownloadInfo.Inherit.Contains("w") OrElse Val(DownloadInfo.Inherit.Split(".")(1)) >= 14
|
||||
Dim Target As String = If(IsNewVersion,
|
||||
RequestTaskTempFolder() & "temp",
|
||||
McFolder & "libraries\optifine\OptiFine\" & DownloadInfo.NameFile.Replace("OptiFine_", "").Replace(".jar", "").Replace("preview_", "") & "\" & DownloadInfo.NameFile.Replace("OptiFine_", "OptiFine-").Replace("preview_", ""))
|
||||
$"{RequestTaskTempFolder()}OptiFine.jar",
|
||||
$"{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)
|
||||
|
||||
'获取下载地址
|
||||
@@ -613,8 +613,8 @@ pause"
|
||||
Log("[Download] 检测为新版 OptiFine:" & DownloadInfo.Inherit)
|
||||
Loaders.Add(New LoaderTask(Of List(Of NetFile), Boolean)("安装 OptiFine(方式 A)",
|
||||
Sub(Task As LoaderTask(Of List(Of NetFile), Boolean))
|
||||
Dim BaseMcFolderHome As String = BaseMcFolderHome.TrimEnd("\")
|
||||
Dim BaseMcFolder As String = BaseMcFolderHome & "\.minecraft\"
|
||||
Dim BaseMcFolderHome As String = RequestTaskTempFolder()
|
||||
Dim BaseMcFolder As String = BaseMcFolderHome & ".minecraft\"
|
||||
Try
|
||||
'准备安装环境
|
||||
If Directory.Exists(BaseMcFolder & "versions\" & DownloadInfo.Inherit) Then
|
||||
@@ -2056,13 +2056,11 @@ Retry:
|
||||
''' </summary>
|
||||
''' <exception cref="CancelledException" />
|
||||
Public Function McInstallLoader(Request As McInstallRequest, Optional DontFixLibraries As Boolean = False) As List(Of LoaderBase)
|
||||
'获取缓存目录
|
||||
Dim TempMcFolder As String = RequestTaskTempFolder(
|
||||
PathTemp.Contains(" ") AndAlso '要求路径不包含空格
|
||||
(Request.OptiFineEntry IsNot Nothing OrElse Request.ForgeEntry IsNot Nothing OrElse Request.NeoForgeEntry IsNot Nothing))
|
||||
'获取缓存目录(安装 Mod 加载器的文件夹不能包含空格)
|
||||
Dim TempMcFolder As String = RequestTaskTempFolder(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)
|
||||
Dim OptiFineFolder As String = Nothing
|
||||
If Request.OptiFineVersion IsNot Nothing Then
|
||||
@@ -2088,12 +2086,14 @@ Retry:
|
||||
Dim LiteLoaderFolder As String = Nothing
|
||||
If Request.LiteLoaderEntry IsNot Nothing Then LiteLoaderFolder = TempMcFolder & "versions\" & Request.MinecraftName & "-LiteLoader"
|
||||
|
||||
'判断 OptiFine 是否作为 Mod 进行下载
|
||||
'Dim MinecraftCode As Integer = If(Request.MinecraftName.Contains("."), Val(Request.MinecraftName.Split(".")(1)), 0)
|
||||
Dim OptiFineAsMod As Boolean = Request.OptiFineEntry IsNot Nothing AndAlso
|
||||
(Request.FabricVersion IsNot Nothing OrElse Request.ForgeEntry IsNot Nothing) '选择了 OptiFine 与任意 Mod 加载器
|
||||
Dim ModsFolder As String = New McVersion(OutputFolder).GetPathIndie(True) & "mods\"
|
||||
'决定版本隔离情况(#5970)
|
||||
Dim Modable As Boolean = Request.FabricVersion IsNot Nothing OrElse Request.ForgeEntry IsNot Nothing OrElse Request.NeoForgeEntry IsNot Nothing OrElse Request.LiteLoaderEntry IsNot Nothing
|
||||
Dim Version As New McVersion(VersionFolder)
|
||||
Version.InitPathIndie(Modable)
|
||||
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
|
||||
Log("[Download] OptiFine 将作为 Mod 进行下载")
|
||||
OptiFineFolder = ModsFolder
|
||||
@@ -2108,14 +2108,14 @@ Retry:
|
||||
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)
|
||||
Throw New CancelledException
|
||||
End If
|
||||
|
||||
Dim LoaderList As New List(Of LoaderBase)
|
||||
'添加忽略标识
|
||||
LoaderList.Add(New LoaderTask(Of Integer, Integer)("添加忽略标识", Sub() WriteFile(OutputFolder & ".pclignore", "用于临时地在 PCL 的版本列表中屏蔽此版本。")) With {.Show = False, .Block = False})
|
||||
LoaderList.Add(New LoaderTask(Of Integer, Integer)("添加忽略标识", Sub() WriteFile(VersionFolder & ".pclignore", "用于临时地在 PCL 的版本列表中屏蔽此版本。")) With {.Show = False, .Block = False})
|
||||
'Fabric API
|
||||
If Request.FabricApi IsNot Nothing Then
|
||||
LoaderList.Add(New LoaderDownload("下载 Fabric API", New List(Of NetFile) From {Request.FabricApi.ToNetFile(ModsFolder)}) With {.ProgressWeight = 3, .Block = False})
|
||||
@@ -2154,7 +2154,7 @@ Retry:
|
||||
'合并安装
|
||||
LoaderList.Add(New 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
|
||||
If Directory.Exists(TempMcFolder & "libraries") Then CopyDirectory(TempMcFolder & "libraries", PathMcFolder & "libraries")
|
||||
If Directory.Exists(TempMcFolder & "mods") Then CopyDirectory(TempMcFolder & "mods", ModsFolder)
|
||||
@@ -2168,12 +2168,12 @@ Retry:
|
||||
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
|
||||
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})
|
||||
LoaderList.Add(New LoaderCombo(Of String)("下载游戏支持库文件", LoadersLib) With {.ProgressWeight = 8})
|
||||
End If
|
||||
'删除忽略标识
|
||||
LoaderList.Add(New LoaderTask(Of Integer, Integer)("删除忽略标识", Sub() File.Delete(OutputFolder & ".pclignore")) With {.Show = False})
|
||||
LoaderList.Add(New LoaderTask(Of Integer, Integer)("删除忽略标识", Sub() File.Delete(VersionFolder & ".pclignore")) With {.Show = False})
|
||||
'总加载器
|
||||
Return LoaderList
|
||||
End Function
|
||||
|
||||
@@ -756,6 +756,7 @@
|
||||
Private Sub OptiFine_Clear(sender As Object, e As MouseButtonEventArgs) Handles BtnOptiFineClear.MouseLeftButtonUp
|
||||
SelectedOptiFine = Nothing
|
||||
SelectedOptiFabric = Nothing
|
||||
AutoSelectedOptiFabric = False
|
||||
CardOptiFine.IsSwaped = True
|
||||
e.Handled = True
|
||||
Forge_Loaded()
|
||||
@@ -1025,7 +1026,9 @@
|
||||
Private Sub Fabric_Clear(sender As Object, e As MouseButtonEventArgs) Handles BtnFabricClear.MouseLeftButtonUp
|
||||
SelectedFabric = Nothing
|
||||
SelectedFabricApi = Nothing
|
||||
AutoSelectedFabricApi = False
|
||||
SelectedOptiFabric = Nothing
|
||||
AutoSelectedOptiFabric = False
|
||||
CardFabric.IsSwaped = True
|
||||
e.Handled = True
|
||||
SelectReload()
|
||||
|
||||
@@ -227,13 +227,19 @@ Download:
|
||||
Log($"[Page] 实例化:清空自定义主页 UI,来源为空")
|
||||
Return
|
||||
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
|
||||
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))
|
||||
Catch ex As UnauthorizedAccessException
|
||||
Log(ex, "加载失败的自定义主页内容:" & vbCrLf & Content)
|
||||
If MyMsgBox(ex.Message, "加载自定义主页失败", "重试", "取消") = 1 Then
|
||||
GoTo Refresh '防止 SyncLock 死锁
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Log("[Page] 加载失败的自定义主页内容:" & vbCrLf & Content)
|
||||
Log(ex, "加载失败的自定义主页内容:" & vbCrLf & Content)
|
||||
If MyMsgBox($"自定义主页内容编写有误,请根据下列错误信息进行检查:{vbCrLf}{GetExceptionSummary(ex)}", "加载自定义主页失败", "重试", "取消") = 1 Then
|
||||
GoTo Refresh '防止 SyncLock 死锁
|
||||
End If
|
||||
|
||||
@@ -104,260 +104,192 @@
|
||||
</local:MyCard>
|
||||
<local:MyCard Margin="0,0,0,15" Title="赞助者">
|
||||
<StackPanel Margin="25,40,10,20">
|
||||
<TextBlock HorizontalAlignment="Left" Text="以下是 2025 年 2 月的高级赞助者们!感谢各位对 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" />
|
||||
<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="tjsstctd" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="tangent95" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Qqwertyui1" />
|
||||
<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="240" Margin="0,1.5" Text="派大星教授加博士先生" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="海月" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="电鳗" />
|
||||
<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="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="隳之狐" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="QY熹微" />
|
||||
<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="续笙_xusheng" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="HappyGhast0123" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Tong" />
|
||||
<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="柒白绛" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="山药汤圆" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="hrjrb" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="ccd114514" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="煦翛" />
|
||||
<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="MCwsj" />
|
||||
<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="112233" />
|
||||
<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="MostxLingo" />
|
||||
<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="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="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="YukiNoa" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="柠鼠" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="xioaliepei" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="照井黎Terui_Rei" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="1w2w3w" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="奈何" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Dispaper" />
|
||||
<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="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" />
|
||||
<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="东方浅浅" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="王ZEAN" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="ayu" />
|
||||
<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="m1nato__" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="法老" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="和十奕" />
|
||||
<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="YUU" />
|
||||
<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="TylerDeng" />
|
||||
<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="Qiyue" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="CHAKKS" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Silver_1572" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="WIFTAB" />
|
||||
<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="htenet" />
|
||||
</WrapPanel>
|
||||
<Grid Height="35">
|
||||
<Grid.ColumnDefinitions>
|
||||
|
||||
@@ -221,6 +221,7 @@
|
||||
If(IsHintIndie, vbCrLf & "由于该版本开启了版本隔离,删除版本时该版本对应的存档、资源包、Mod 等文件也将被一并删除!", ""),
|
||||
"版本删除确认", , "取消",, True)
|
||||
Case 1
|
||||
IniClearCache(Version.PathIndie & "options.txt")
|
||||
IniClearCache(Version.Path & "PCL\Setup.ini")
|
||||
If IsShiftPressed Then
|
||||
DeleteDirectory(Version.Path)
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
{"HintClearRubbish", New SetupEntry(0, Source:=SetupSource.Registry)},
|
||||
{"HintUpdateMod", 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)},
|
||||
{"HintIndieSetup", New SetupEntry(False, Source:=SetupSource.Registry)},
|
||||
{"HintExportConfig", New SetupEntry(False, Source:=SetupSource.Registry)},
|
||||
@@ -100,7 +101,7 @@
|
||||
{"LaunchArgumentWindowHeight", New SetupEntry(480)},
|
||||
{"LaunchArgumentWindowType", New SetupEntry(1)},
|
||||
{"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("")},
|
||||
{"LaunchAdvanceRun", New SetupEntry("")},
|
||||
{"LaunchAdvanceRunWait", New SetupEntry(True)},
|
||||
@@ -592,11 +593,13 @@
|
||||
FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed
|
||||
FrmSetupUI.PanCustomNet.Visibility = Visibility.Collapsed
|
||||
FrmSetupUI.HintCustom.Visibility = Visibility.Collapsed
|
||||
FrmSetupUI.HintCustomWarn.Visibility = Visibility.Collapsed
|
||||
Case 1 '本地
|
||||
FrmSetupUI.PanCustomPreset.Visibility = Visibility.Collapsed
|
||||
FrmSetupUI.PanCustomLocal.Visibility = Visibility.Visible
|
||||
FrmSetupUI.PanCustomNet.Visibility = Visibility.Collapsed
|
||||
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.EventType = ""
|
||||
FrmSetupUI.HintCustom.EventData = ""
|
||||
@@ -605,6 +608,7 @@
|
||||
FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed
|
||||
FrmSetupUI.PanCustomNet.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.EventType = "打开网页"
|
||||
FrmSetupUI.HintCustom.EventData = "https://github.com/Hex-Dragon/PCL2/discussions/2528"
|
||||
@@ -613,6 +617,7 @@
|
||||
FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed
|
||||
FrmSetupUI.PanCustomNet.Visibility = Visibility.Collapsed
|
||||
FrmSetupUI.HintCustom.Visibility = Visibility.Collapsed
|
||||
FrmSetupUI.HintCustomWarn.Visibility = Visibility.Collapsed
|
||||
End Select
|
||||
FrmSetupUI.CardCustom.TriggerForceResize()
|
||||
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="RadioCustomType2" Height="22" Tag="UiCustomType/2" Grid.Column="3" />
|
||||
</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" />
|
||||
<Grid Height="35" x:Name="PanCustomLocal" Visibility="Collapsed" Margin="0,10,0,5">
|
||||
<Grid.ColumnDefinitions>
|
||||
|
||||
@@ -176,7 +176,6 @@
|
||||
<System:String>"</System:String>
|
||||
<System:String>“</System:String>
|
||||
<System:String>”</System:String>
|
||||
<System:String>/</System:String>
|
||||
<System:String>http://</System:String>
|
||||
<System:String>https://</System:String>
|
||||
</local:ValidateExcept.Excepts>
|
||||
|
||||
@@ -374,4 +374,11 @@ local:MyIconButton(图标按钮):
|
||||
- Theme:设置颜色主题,Color(默认)为当前启动器的主题颜色,也可设置为 White、Black、Red
|
||||
- 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
Reference in New Issue
Block a user