2.10.6
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
<Application x:Class="Application"
|
<Application x:Class="Application"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:behaviors="clr-namespace:PCL.Controls.Behaviors"
|
||||||
xmlns:local="clr-namespace:PCL"
|
xmlns:local="clr-namespace:PCL"
|
||||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||||
xmlns:behaviors="clr-namespace:PCL.Controls.Behaviors"
|
|
||||||
StartupUri="FormMain.xaml"
|
StartupUri="FormMain.xaml"
|
||||||
ShutdownMode="OnExplicitShutdown">
|
ShutdownMode="OnExplicitShutdown">
|
||||||
<Application.Resources>
|
<Application.Resources>
|
||||||
@@ -345,6 +345,7 @@
|
|||||||
</ControlTemplate>
|
</ControlTemplate>
|
||||||
</Setter.Value>
|
</Setter.Value>
|
||||||
</Setter>
|
</Setter>
|
||||||
|
<Setter Property="behaviors:ClipboardInterceptor.EnableSafeClipboard" Value="True" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<!-- ComboBox -->
|
<!-- ComboBox -->
|
||||||
|
|||||||
@@ -140,6 +140,7 @@ WaitRetry:
|
|||||||
ServicePointManager.Expect100Continue = True
|
ServicePointManager.Expect100Continue = True
|
||||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12
|
||||||
ServicePointManager.DefaultConnectionLimit = 1024
|
ServicePointManager.DefaultConnectionLimit = 1024
|
||||||
|
ServicePointManager.UseNagleAlgorithm = False
|
||||||
'计时
|
'计时
|
||||||
Log("[Start] 第一阶段加载用时:" & GetTimeTick() - ApplicationStartTick & " ms")
|
Log("[Start] 第一阶段加载用时:" & GetTimeTick() - ApplicationStartTick & " ms")
|
||||||
ApplicationStartTick = GetTimeTick()
|
ApplicationStartTick = GetTimeTick()
|
||||||
|
|||||||
@@ -320,11 +320,10 @@
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
Private _IsSwapped As Boolean = False
|
Private _IsSwapped As Boolean = False
|
||||||
|
|
||||||
''' <summary>
|
''' <summary>
|
||||||
''' 是否已被折叠。(已过时,请使用 IsSwapped)
|
''' 是否已被折叠。(已过时,请使用 IsSwapped)
|
||||||
''' </summary>
|
''' </summary>
|
||||||
<Obsolete("请使用 IsSwapped 属性,IsSwaped 存在拼写错误")>
|
<Obsolete("IsSwaped 存在拼写错误,请换用 IsSwapped 属性。")>
|
||||||
Public Property IsSwaped As Boolean
|
Public Property IsSwaped As Boolean
|
||||||
Get
|
Get
|
||||||
Return IsSwapped
|
Return IsSwapped
|
||||||
|
|||||||
@@ -11,6 +11,19 @@ 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 < 367 Then 'Release 2.10.6
|
||||||
|
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:启用 MCIM 社区资源镜像源,以缓解社区资源难以下载的问题"))
|
||||||
|
FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:正版登录出错时无法给出正确的错误信息"))
|
||||||
|
FeatureCount += 9
|
||||||
|
BugCount += 9
|
||||||
|
End If
|
||||||
|
If LastVersion < 365 Then 'Release 2.10.5
|
||||||
|
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:下载资源时,会单独记忆每种资源上次下载到的文件夹,以防混淆"))
|
||||||
|
FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:网络底层框架与下载稳定性"))
|
||||||
|
FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法启动一部分 LabyMod 和 GTNH 客户端"))
|
||||||
|
FeatureCount += 22
|
||||||
|
BugCount += 26
|
||||||
|
End If
|
||||||
If LastVersion < 361 Then 'Release 2.10.3
|
If LastVersion < 361 Then 'Release 2.10.3
|
||||||
FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:无法安装部分使用老版本 PCL 导出的整合包"))
|
FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:无法安装部分使用老版本 PCL 导出的整合包"))
|
||||||
End If
|
End If
|
||||||
@@ -83,6 +96,12 @@ Public Class FormMain
|
|||||||
'3:BUG+ IMP* FEAT-
|
'3:BUG+ IMP* FEAT-
|
||||||
'2:BUG* IMP-
|
'2:BUG* IMP-
|
||||||
'1:BUG-
|
'1:BUG-
|
||||||
|
If LastVersion < 366 Then 'Snapshot 2.10.6
|
||||||
|
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:启用 MCIM 社区资源镜像源,以缓解社区资源难以下载的问题"))
|
||||||
|
FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:正版登录出错时无法给出正确的错误信息"))
|
||||||
|
FeatureCount += 9
|
||||||
|
BugCount += 9
|
||||||
|
End If
|
||||||
If LastVersion < 364 Then 'Snapshot 2.10.5
|
If LastVersion < 364 Then 'Snapshot 2.10.5
|
||||||
If LastVersion >= 363 Then
|
If LastVersion >= 363 Then
|
||||||
FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法添加新的正版账号"))
|
FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法添加新的正版账号"))
|
||||||
@@ -268,11 +287,6 @@ Public Class FormMain
|
|||||||
AddHandler Closing, Sub() Helper.RemoveDragHook()
|
AddHandler Closing, Sub() Helper.RemoveDragHook()
|
||||||
AddHandler Helper.DragDrop, Sub() FileDrag(Helper.DropFilePaths)
|
AddHandler Helper.DragDrop, Sub() FileDrag(Helper.DropFilePaths)
|
||||||
End If
|
End If
|
||||||
'If IsAdmin() Then '下列代码没用(#2531)
|
|
||||||
' ChangeWindowMessageFilter(&H233, 1)
|
|
||||||
' ChangeWindowMessageFilter(&H4A, 1)
|
|
||||||
' ChangeWindowMessageFilter(&H49, 1)
|
|
||||||
'End If
|
|
||||||
'切换到首页
|
'切换到首页
|
||||||
If Not IsNothing(FrmLaunchLeft.Parent) Then FrmLaunchLeft.SetValue(ContentPresenter.ContentProperty, Nothing)
|
If Not IsNothing(FrmLaunchLeft.Parent) Then FrmLaunchLeft.SetValue(ContentPresenter.ContentProperty, Nothing)
|
||||||
If Not IsNothing(FrmLaunchRight.Parent) Then FrmLaunchRight.SetValue(ContentPresenter.ContentProperty, Nothing)
|
If Not IsNothing(FrmLaunchRight.Parent) Then FrmLaunchRight.SetValue(ContentPresenter.ContentProperty, Nothing)
|
||||||
@@ -389,6 +403,8 @@ Public Class FormMain
|
|||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Log(ex, "清理自动更新文件失败")
|
Log(ex, "清理自动更新文件失败")
|
||||||
End Try
|
End Try
|
||||||
|
'上报
|
||||||
|
Telemetry("启动")
|
||||||
End Sub, "初始化", ThreadPriority.Lowest)
|
End Sub, "初始化", ThreadPriority.Lowest)
|
||||||
|
|
||||||
Log("[Start] 第三阶段加载用时:" & GetTimeTick() - ApplicationStartTick & " ms")
|
Log("[Start] 第三阶段加载用时:" & GetTimeTick() - ApplicationStartTick & " ms")
|
||||||
@@ -874,7 +890,7 @@ Public Class FormMain
|
|||||||
'错误报告分析
|
'错误报告分析
|
||||||
Try
|
Try
|
||||||
Log("[System] 尝试进行错误报告分析")
|
Log("[System] 尝试进行错误报告分析")
|
||||||
Dim Analyzer As New CrashAnalyzer(GetUuid())
|
Dim Analyzer As New CrashAnalyzer
|
||||||
Analyzer.Import(FilePath)
|
Analyzer.Import(FilePath)
|
||||||
If Not Analyzer.Prepare() Then Exit Try
|
If Not Analyzer.Prepare() Then Exit Try
|
||||||
Analyzer.Analyze()
|
Analyzer.Analyze()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
Imports System.Globalization
|
Imports System.Globalization
|
||||||
Imports System.IO.Compression
|
Imports System.IO.Compression
|
||||||
Imports System.Reflection
|
Imports System.Net.Sockets
|
||||||
Imports System.Runtime.CompilerServices
|
Imports System.Runtime.CompilerServices
|
||||||
Imports System.Security.Cryptography
|
Imports System.Security.Cryptography
|
||||||
Imports System.Security.Principal
|
Imports System.Security.Principal
|
||||||
@@ -13,13 +13,13 @@ Public Module ModBase
|
|||||||
#Region "声明"
|
#Region "声明"
|
||||||
|
|
||||||
'下列版本信息由更新器自动修改
|
'下列版本信息由更新器自动修改
|
||||||
Public Const VersionBaseName As String = "2.10.5" '不含分支前缀的显示用版本名
|
Public Const VersionBaseName As String = "2.10.6" '不含分支前缀的显示用版本名
|
||||||
Public Const VersionStandardCode As String = "2.10.5." & VersionBranchCode '标准格式的四段式版本号
|
Public Const VersionStandardCode As String = "2.10.6." & 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 = 361 'Release
|
Public Const VersionCode As Integer = 367 'Release
|
||||||
#Else
|
#Else
|
||||||
Public Const VersionCode As Integer = 364 'Snapshot
|
Public Const VersionCode As Integer = 366 'Snapshot
|
||||||
#End If
|
#End If
|
||||||
'自动生成的版本信息
|
'自动生成的版本信息
|
||||||
Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName
|
Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName
|
||||||
@@ -791,8 +791,8 @@ Public Module ModBase
|
|||||||
Public Sub CopyFile(FromPath As String, ToPath As String)
|
Public Sub CopyFile(FromPath As String, ToPath As String)
|
||||||
Try
|
Try
|
||||||
'还原文件路径
|
'还原文件路径
|
||||||
If Not FromPath.Contains(":\") Then FromPath = Path & FromPath
|
FromPath = ShortenPath(If(FromPath.Contains(":\"), FromPath, Path & FromPath))
|
||||||
If Not ToPath.Contains(":\") Then ToPath = Path & ToPath
|
ToPath = ShortenPath(If(ToPath.Contains(":\"), ToPath, Path & ToPath))
|
||||||
'如果复制同一个文件则跳过
|
'如果复制同一个文件则跳过
|
||||||
If FromPath = ToPath Then Return
|
If FromPath = ToPath Then Return
|
||||||
'确保目录存在
|
'确保目录存在
|
||||||
@@ -861,7 +861,7 @@ Public Module ModBase
|
|||||||
''' <param name="Append">是否将文件内容追加到当前文件,而不是覆盖它。</param>
|
''' <param name="Append">是否将文件内容追加到当前文件,而不是覆盖它。</param>
|
||||||
Public Sub WriteFile(FilePath As String, Text As String, Optional Append As Boolean = False, Optional Encoding As Encoding = Nothing)
|
Public Sub WriteFile(FilePath As String, Text As String, Optional Append As Boolean = False, Optional Encoding As Encoding = Nothing)
|
||||||
'处理相对路径
|
'处理相对路径
|
||||||
If Not FilePath.Contains(":\") Then FilePath = Path & FilePath
|
FilePath = ShortenPath(If(FilePath.Contains(":\"), FilePath, Path & FilePath))
|
||||||
'确保目录存在
|
'确保目录存在
|
||||||
Directory.CreateDirectory(GetPathFromFullPath(FilePath))
|
Directory.CreateDirectory(GetPathFromFullPath(FilePath))
|
||||||
'写入文件
|
'写入文件
|
||||||
@@ -886,7 +886,7 @@ Public Module ModBase
|
|||||||
''' <param name="Append">是否将文件内容追加到当前文件,而不是覆盖它。</param>
|
''' <param name="Append">是否将文件内容追加到当前文件,而不是覆盖它。</param>
|
||||||
Public Sub WriteFile(FilePath As String, Content As Byte(), Optional Append As Boolean = False)
|
Public Sub WriteFile(FilePath As String, Content As Byte(), Optional Append As Boolean = False)
|
||||||
'处理相对路径
|
'处理相对路径
|
||||||
If Not FilePath.Contains(":\") Then FilePath = Path & FilePath
|
FilePath = ShortenPath(If(FilePath.Contains(":\"), FilePath, Path & FilePath))
|
||||||
'确保目录存在
|
'确保目录存在
|
||||||
Directory.CreateDirectory(GetPathFromFullPath(FilePath))
|
Directory.CreateDirectory(GetPathFromFullPath(FilePath))
|
||||||
'写入文件
|
'写入文件
|
||||||
@@ -1294,11 +1294,11 @@ Re:
|
|||||||
''' </summary>
|
''' </summary>
|
||||||
Public Sub ExtractFile(CompressFilePath As String, DestDirectory As String, Optional Encode As Encoding = Nothing,
|
Public Sub ExtractFile(CompressFilePath As String, DestDirectory As String, Optional Encode As Encoding = Nothing,
|
||||||
Optional ProgressIncrementHandler As Action(Of Double) = Nothing)
|
Optional ProgressIncrementHandler As Action(Of Double) = Nothing)
|
||||||
Directory.CreateDirectory(DestDirectory)
|
Directory.CreateDirectory(ShortenPath(DestDirectory))
|
||||||
If CompressFilePath.EndsWithF(".gz", True) Then
|
If CompressFilePath.EndsWithF(".gz", True) Then
|
||||||
'以 gz 方式解压
|
'以 gz 方式解压
|
||||||
Dim stream As New GZipStream(New FileStream(CompressFilePath, FileMode.Open, FileAccess.ReadWrite), CompressionMode.Decompress)
|
Dim stream As New GZipStream(New FileStream(CompressFilePath, FileMode.Open, FileAccess.ReadWrite), CompressionMode.Decompress)
|
||||||
Dim decompressedFile As New FileStream(DestDirectory & GetFileNameFromPath(CompressFilePath).ToLower.Replace(".tar", "").Replace(".gz", ""), FileMode.OpenOrCreate, FileAccess.Write)
|
Dim decompressedFile As New FileStream(ShortenPath(DestDirectory & GetFileNameFromPath(CompressFilePath).ToLower.Replace(".tar", "").Replace(".gz", "")), FileMode.OpenOrCreate, FileAccess.Write)
|
||||||
Dim data As Integer = stream.ReadByte()
|
Dim data As Integer = stream.ReadByte()
|
||||||
While data <> -1
|
While data <> -1
|
||||||
decompressedFile.WriteByte(data)
|
decompressedFile.WriteByte(data)
|
||||||
@@ -1309,10 +1309,10 @@ Re:
|
|||||||
Else
|
Else
|
||||||
'以 zip 方式解压
|
'以 zip 方式解压
|
||||||
Using Archive = ZipFile.Open(CompressFilePath, ZipArchiveMode.Read, If(Encode, Encoding.GetEncoding("GB18030")))
|
Using Archive = ZipFile.Open(CompressFilePath, ZipArchiveMode.Read, If(Encode, Encoding.GetEncoding("GB18030")))
|
||||||
Dim TotalCount As Integer = Archive.Entries.Count
|
Dim TotalCount As Long = Archive.Entries.Count
|
||||||
For Each Entry As ZipArchiveEntry In Archive.Entries
|
For Each Entry As ZipArchiveEntry In Archive.Entries
|
||||||
If ProgressIncrementHandler IsNot Nothing Then ProgressIncrementHandler(1 / TotalCount)
|
If ProgressIncrementHandler IsNot Nothing AndAlso TotalCount > 0 Then ProgressIncrementHandler(1 / TotalCount)
|
||||||
Dim DestinationPath As String = IO.Path.Combine(DestDirectory, Entry.FullName)
|
Dim DestinationPath As String = ShortenPath(IO.Path.Combine(DestDirectory, Entry.FullName))
|
||||||
If DestinationPath.EndsWithF("\") OrElse DestinationPath.EndsWithF("/") Then
|
If DestinationPath.EndsWithF("\") OrElse DestinationPath.EndsWithF("/") Then
|
||||||
Continue For '不创建空文件夹
|
Continue For '不创建空文件夹
|
||||||
Else
|
Else
|
||||||
@@ -1387,10 +1387,10 @@ RetryDir:
|
|||||||
ToPath = ToPath.Replace("/", "\")
|
ToPath = ToPath.Replace("/", "\")
|
||||||
If Not ToPath.EndsWithF("\") Then ToPath &= "\"
|
If Not ToPath.EndsWithF("\") Then ToPath &= "\"
|
||||||
Dim AllFiles = EnumerateFiles(FromPath).ToList
|
Dim AllFiles = EnumerateFiles(FromPath).ToList
|
||||||
Dim FileCount As Integer = AllFiles.Count
|
Dim FileCount As Long = AllFiles.Count
|
||||||
For Each File In AllFiles
|
For Each File In AllFiles
|
||||||
CopyFile(File.FullName, File.FullName.Replace(FromPath, ToPath))
|
CopyFile(File.FullName, File.FullName.Replace(FromPath, ToPath))
|
||||||
If ProgressIncrementHandler IsNot Nothing Then ProgressIncrementHandler(1 / FileCount)
|
If ProgressIncrementHandler IsNot Nothing AndAlso FileCount > 0 Then ProgressIncrementHandler(1 / FileCount)
|
||||||
Next
|
Next
|
||||||
End Sub
|
End Sub
|
||||||
''' <summary>
|
''' <summary>
|
||||||
@@ -1449,22 +1449,8 @@ RetryDir:
|
|||||||
IsInner = True
|
IsInner = True
|
||||||
Loop
|
Loop
|
||||||
|
|
||||||
'常见错误(记得同时修改下面的)
|
|
||||||
Dim CommonReason As String = Nothing
|
|
||||||
If TypeOf InnerEx Is TypeLoadException OrElse TypeOf InnerEx Is BadImageFormatException OrElse TypeOf InnerEx Is MissingMethodException OrElse TypeOf InnerEx Is NotImplementedException OrElse TypeOf InnerEx Is TypeInitializationException Then
|
|
||||||
CommonReason = "PCL 的运行环境存在问题。请尝试重新安装 .NET Framework 4.6.2 然后再试。若无法安装,请先卸载较新版本的 .NET Framework,然后再尝试安装。"
|
|
||||||
ElseIf TypeOf InnerEx Is UnauthorizedAccessException Then
|
|
||||||
CommonReason = "PCL 的权限不足。请尝试右键 PCL,选择以管理员身份运行。"
|
|
||||||
ElseIf TypeOf InnerEx Is OutOfMemoryException Then
|
|
||||||
CommonReason = "你的电脑运行内存不足,导致 PCL 无法继续运行。请在关闭一部分不需要的程序后再试。"
|
|
||||||
ElseIf TypeOf InnerEx Is Runtime.InteropServices.COMException Then
|
|
||||||
CommonReason = "由于操作系统或显卡存在问题,导致出现错误。请尝试重启 PCL。"
|
|
||||||
ElseIf {"远程主机强迫关闭了", "远程方已关闭传输流", "未能解析此远程名称", "由于目标计算机积极拒绝",
|
|
||||||
"操作已超时", "操作超时", "服务器超时", "连接超时"}.Any(Function(s) DescList.Any(Function(l) l.Contains(s))) Then
|
|
||||||
CommonReason = "你的网络环境不佳,导致难以连接到服务器。请稍后重试,或使用 VPN 以改善网络环境。"
|
|
||||||
End If
|
|
||||||
|
|
||||||
'构造输出信息
|
'构造输出信息
|
||||||
|
Dim CommonReason As String = AnalyzeCommonReason(InnerEx, DescList)
|
||||||
If CommonReason Is Nothing Then
|
If CommonReason Is Nothing Then
|
||||||
Return DescList.Join(vbCrLf)
|
Return DescList.Join(vbCrLf)
|
||||||
Else
|
Else
|
||||||
@@ -1492,22 +1478,8 @@ RetryDir:
|
|||||||
DescList = DescList.Distinct.ToList
|
DescList = DescList.Distinct.ToList
|
||||||
Dim Desc As String = Join(DescList, vbCrLf & "→ ")
|
Dim Desc As String = Join(DescList, vbCrLf & "→ ")
|
||||||
|
|
||||||
'常见错误(记得同时修改上面的)
|
|
||||||
Dim CommonReason As String = Nothing
|
|
||||||
If TypeOf InnerEx Is TypeLoadException OrElse TypeOf InnerEx Is BadImageFormatException OrElse TypeOf InnerEx Is MissingMethodException OrElse TypeOf InnerEx Is NotImplementedException OrElse TypeOf InnerEx Is TypeInitializationException Then
|
|
||||||
CommonReason = "PCL 的运行环境存在问题。请尝试重新安装 .NET Framework 4.6.2 然后再试。若无法安装,请先卸载较新版本的 .NET Framework,然后再尝试安装。"
|
|
||||||
ElseIf TypeOf InnerEx Is UnauthorizedAccessException Then
|
|
||||||
CommonReason = "PCL 的权限不足。请尝试右键 PCL,选择以管理员身份运行。"
|
|
||||||
ElseIf TypeOf InnerEx Is OutOfMemoryException Then
|
|
||||||
CommonReason = "你的电脑运行内存不足,导致 PCL 无法继续运行。请在关闭一部分不需要的程序后再试。"
|
|
||||||
ElseIf TypeOf InnerEx Is Runtime.InteropServices.COMException Then
|
|
||||||
CommonReason = "由于操作系统或显卡存在问题,导致出现错误。请尝试重启 PCL。"
|
|
||||||
ElseIf {"远程主机强迫关闭了", "远程方已关闭传输流", "未能解析此远程名称", "由于目标计算机积极拒绝",
|
|
||||||
"操作已超时", "操作超时", "服务器超时", "连接超时"}.Any(Function(s) Desc.Contains(s)) Then
|
|
||||||
CommonReason = "你的网络环境不佳,导致难以连接到服务器。请稍后重试,或使用 VPN 以改善网络环境。"
|
|
||||||
End If
|
|
||||||
|
|
||||||
'构造输出信息
|
'构造输出信息
|
||||||
|
Dim CommonReason As String = AnalyzeCommonReason(InnerEx, DescList)
|
||||||
If CommonReason IsNot Nothing Then
|
If CommonReason IsNot Nothing Then
|
||||||
Return CommonReason & "详细错误:" & DescList.First
|
Return CommonReason & "详细错误:" & DescList.First
|
||||||
Else
|
Else
|
||||||
@@ -1515,6 +1487,24 @@ RetryDir:
|
|||||||
Return Join(DescList, " ← ")
|
Return Join(DescList, " ← ")
|
||||||
End If
|
End If
|
||||||
End Function
|
End Function
|
||||||
|
Private Function AnalyzeCommonReason(InnerEx As Exception, DescList As List(Of String)) As String
|
||||||
|
If TypeOf InnerEx Is TypeLoadException OrElse TypeOf InnerEx Is BadImageFormatException OrElse TypeOf InnerEx Is MissingMethodException OrElse TypeOf InnerEx Is NotImplementedException OrElse TypeOf InnerEx Is TypeInitializationException Then
|
||||||
|
Return "PCL 的运行环境存在问题。请尝试重新安装 .NET Framework 4.6.2 然后再试。若无法安装,请先卸载较新版本的 .NET Framework,然后再尝试安装。"
|
||||||
|
ElseIf TypeOf InnerEx Is UnauthorizedAccessException Then
|
||||||
|
Return "PCL 的权限不足。请尝试右键 PCL,选择以管理员身份运行。"
|
||||||
|
ElseIf TypeOf InnerEx Is OutOfMemoryException Then
|
||||||
|
Return "你的电脑运行内存不足,导致 PCL 无法继续运行。请在关闭一部分不需要的程序后再试。"
|
||||||
|
ElseIf TypeOf InnerEx Is Runtime.InteropServices.COMException Then
|
||||||
|
Return "由于操作系统或显卡存在问题,导致出现错误。请尝试重启 PCL。"
|
||||||
|
ElseIf TypeOf InnerEx Is SocketException AndAlso DescList.Any(Function(l) l.Contains("WSAStartup")) Then
|
||||||
|
Return "请尝试卸载中国移动云盘,然后再试。"
|
||||||
|
ElseIf {"远程主机强迫关闭了", "远程方已关闭传输流", "未能解析此远程名称", "由于目标计算机积极拒绝",
|
||||||
|
"操作已超时", "操作超时", "服务器超时", "连接超时"}.Any(Function(s) DescList.Any(Function(l) l.Contains(s))) Then
|
||||||
|
Return "你的网络环境不佳,导致难以连接到服务器。请稍后重试,或使用 VPN 以改善网络环境。"
|
||||||
|
Else
|
||||||
|
Return Nothing
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
''' <summary>
|
''' <summary>
|
||||||
''' 返回一个枚举对应的字符串。
|
''' 返回一个枚举对应的字符串。
|
||||||
@@ -1556,7 +1546,7 @@ RetryDir:
|
|||||||
Return JsonConvert.DeserializeObject(Data, New JsonSerializerSettings With {.DateTimeZoneHandling = DateTimeZoneHandling.Local})
|
Return JsonConvert.DeserializeObject(Data, New JsonSerializerSettings With {.DateTimeZoneHandling = DateTimeZoneHandling.Local})
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Dim Length As Integer = If(Data, "").Length
|
Dim Length As Integer = If(Data, "").Length
|
||||||
Throw New Exception("格式化 JSON 失败:" & If(Length > 2000, Data.Substring(0, 500) & $"...(全长 {Length} 个字符)..." & Right(Data, 500), Data))
|
Throw New Exception("格式化 JSON 失败:" & If(Length > 2000, Data.Substring(0, 500) & $"...(全长 {Length} 个字符)..." & Right(Data, 500), Data), ex)
|
||||||
End Try
|
End Try
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
@@ -2641,10 +2631,6 @@ Retry:
|
|||||||
''' 相对增减控件的左边距。
|
''' 相对增减控件的左边距。
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Public Sub DeltaLeft(control As FrameworkElement, newValue As Double)
|
Public Sub DeltaLeft(control As FrameworkElement, newValue As Double)
|
||||||
'安全性检查
|
|
||||||
DebugAssert(Not Double.IsNaN(newValue))
|
|
||||||
DebugAssert(Not Double.IsInfinity(newValue))
|
|
||||||
|
|
||||||
If TypeOf control Is Window Then
|
If TypeOf control Is Window Then
|
||||||
'窗口改变
|
'窗口改变
|
||||||
CType(control, Window).Left += newValue
|
CType(control, Window).Left += newValue
|
||||||
@@ -2656,8 +2642,6 @@ Retry:
|
|||||||
Case HorizontalAlignment.Right
|
Case HorizontalAlignment.Right
|
||||||
control.Margin = New Thickness(control.Margin.Left, control.Margin.Top, control.Margin.Right - newValue, control.Margin.Bottom)
|
control.Margin = New Thickness(control.Margin.Left, control.Margin.Top, control.Margin.Right - newValue, control.Margin.Bottom)
|
||||||
'control.Margin = New Thickness(control.Margin.Left, control.Margin.Top, CType(control.Parent, Object).ActualWidth - control.ActualWidth - newValue, control.Margin.Bottom)
|
'control.Margin = New Thickness(control.Margin.Left, control.Margin.Top, CType(control.Parent, Object).ActualWidth - control.ActualWidth - newValue, control.Margin.Bottom)
|
||||||
Case Else
|
|
||||||
DebugAssert(False)
|
|
||||||
End Select
|
End Select
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
@@ -2665,17 +2649,12 @@ Retry:
|
|||||||
''' 设置控件的左边距。(仅针对置左控件)
|
''' 设置控件的左边距。(仅针对置左控件)
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Public Sub SetLeft(control As FrameworkElement, newValue As Double)
|
Public Sub SetLeft(control As FrameworkElement, newValue As Double)
|
||||||
DebugAssert(control.HorizontalAlignment = HorizontalAlignment.Left)
|
|
||||||
control.Margin = New Thickness(newValue, control.Margin.Top, control.Margin.Right, control.Margin.Bottom)
|
control.Margin = New Thickness(newValue, control.Margin.Top, control.Margin.Right, control.Margin.Bottom)
|
||||||
End Sub
|
End Sub
|
||||||
''' <summary>
|
''' <summary>
|
||||||
''' 相对增减控件的上边距。
|
''' 相对增减控件的上边距。
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Public Sub DeltaTop(control As FrameworkElement, newValue As Double)
|
Public Sub DeltaTop(control As FrameworkElement, newValue As Double)
|
||||||
'安全性检查
|
|
||||||
DebugAssert(Not Double.IsNaN(newValue))
|
|
||||||
DebugAssert(Not Double.IsInfinity(newValue))
|
|
||||||
|
|
||||||
If TypeOf control Is Window Then
|
If TypeOf control Is Window Then
|
||||||
'窗口改变
|
'窗口改变
|
||||||
CType(control, Window).Top += newValue
|
CType(control, Window).Top += newValue
|
||||||
@@ -2687,11 +2666,8 @@ Retry:
|
|||||||
Case VerticalAlignment.Bottom
|
Case VerticalAlignment.Bottom
|
||||||
control.Margin = New Thickness(control.Margin.Left, control.Margin.Top, control.Margin.Right, control.Margin.Bottom - newValue)
|
control.Margin = New Thickness(control.Margin.Left, control.Margin.Top, control.Margin.Right, control.Margin.Bottom - newValue)
|
||||||
'control.Margin = New Thickness(control.Margin.Left, control.Margin.Top, CType(control.Parent, Object).ActualWidth - control.ActualWidth - newValue, control.Margin.Bottom)
|
'control.Margin = New Thickness(control.Margin.Left, control.Margin.Top, CType(control.Parent, Object).ActualWidth - control.ActualWidth - newValue, control.Margin.Bottom)
|
||||||
Case Else
|
|
||||||
DebugAssert(False)
|
|
||||||
End Select
|
End Select
|
||||||
End If
|
End If
|
||||||
|
|
||||||
'If Double.IsNaN(newValue) OrElse Double.IsInfinity(newValue) Then Return '安全性检查
|
'If Double.IsNaN(newValue) OrElse Double.IsInfinity(newValue) Then Return '安全性检查
|
||||||
'Select Case control.VerticalAlignment
|
'Select Case control.VerticalAlignment
|
||||||
' Case VerticalAlignment.Top, VerticalAlignment.Stretch, VerticalAlignment.Center
|
' Case VerticalAlignment.Top, VerticalAlignment.Stretch, VerticalAlignment.Center
|
||||||
@@ -2705,7 +2681,6 @@ Retry:
|
|||||||
''' 设置控件的顶边距。(仅针对置上控件)
|
''' 设置控件的顶边距。(仅针对置上控件)
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Public Sub SetTop(control As FrameworkElement, newValue As Double)
|
Public Sub SetTop(control As FrameworkElement, newValue As Double)
|
||||||
DebugAssert(control.VerticalAlignment = VerticalAlignment.Top)
|
|
||||||
control.Margin = New Thickness(control.Margin.Left, newValue, control.Margin.Right, control.Margin.Bottom)
|
control.Margin = New Thickness(control.Margin.Left, newValue, control.Margin.Right, control.Margin.Bottom)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -2989,6 +2964,13 @@ Retry:
|
|||||||
End If
|
End If
|
||||||
End Select
|
End Select
|
||||||
|
|
||||||
|
'上报
|
||||||
|
If Level >= LogLevel.Hint Then
|
||||||
|
Telemetry("PCL 错误",
|
||||||
|
"Level", GetStringFromEnum(Level),
|
||||||
|
"Title", FilterUserName(FilterAccessToken(Title, "*"), "*"),
|
||||||
|
"Exception", FilterUserName(FilterAccessToken(Text, "*"), "*"))
|
||||||
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
''' <summary>
|
''' <summary>
|
||||||
''' 输出错误信息。
|
''' 输出错误信息。
|
||||||
@@ -3055,6 +3037,13 @@ Retry:
|
|||||||
End If
|
End If
|
||||||
End Select
|
End Select
|
||||||
|
|
||||||
|
'上报
|
||||||
|
If Level >= LogLevel.Hint Then
|
||||||
|
Telemetry("PCL 异常",
|
||||||
|
"Level", GetStringFromEnum(Level),
|
||||||
|
"Title", FilterUserName(FilterAccessToken(Title, "*"), "*"),
|
||||||
|
"Exception", FilterUserName(FilterAccessToken(ExFull, "*"), "*"))
|
||||||
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'反馈
|
'反馈
|
||||||
@@ -3091,9 +3080,23 @@ Retry:
|
|||||||
"文件位置:" & Path)
|
"文件位置:" & Path)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'断言
|
'遥测
|
||||||
Public Sub DebugAssert(Exp As Boolean)
|
Public Sub Telemetry([Event] As String, ParamArray Datas As String())
|
||||||
If Not Exp Then Throw New Exception("断言命中")
|
If Not Setup.Get("SystemSystemTelemetry") Then Return '用户关闭了遥测
|
||||||
|
If Not ClsBaseUrl.StartsWithF("http") Then Return '开源版没有设置遥测地址
|
||||||
|
RunInNewThread(
|
||||||
|
Sub()
|
||||||
|
Try
|
||||||
|
Log($"[System] 匿名数据上报:{[Event]}")
|
||||||
|
Dim Url As String = $"{ClsBaseUrl}&Event={WebUtility.UrlEncode([Event])}"
|
||||||
|
For i = 0 To Datas.Length - 1 Step 2
|
||||||
|
Url &= "&" & WebUtility.UrlEncode(Datas(i)) & "=" & WebUtility.UrlEncode(Datas(i + 1).Replace(vbCrLf, vbLf))
|
||||||
|
Next
|
||||||
|
NetRequestByClient(Url, MakeLog:=False)
|
||||||
|
Catch
|
||||||
|
Log("[System] 匿名数据上报失败", LogLevel.Debug)
|
||||||
|
End Try
|
||||||
|
End Sub, "Telemetry", ThreadPriority.Lowest)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'获取当前的堆栈信息
|
'获取当前的堆栈信息
|
||||||
|
|||||||
@@ -22,9 +22,6 @@ Public Module ModNet
|
|||||||
Return If(Encoding, Encoding.UTF8).GetString(SendRequest(Url, Method, Content, HeaderDictionary, Timeout:=Timeout, Encoding:=Encoding, UseBrowserUserAgent:=UseBrowserUserAgent))
|
Return If(Encoding, Encoding.UTF8).GetString(SendRequest(Url, Method, Content, HeaderDictionary, Timeout:=Timeout, Encoding:=Encoding, UseBrowserUserAgent:=UseBrowserUserAgent))
|
||||||
Catch ex As ThreadInterruptedException
|
Catch ex As ThreadInterruptedException
|
||||||
Throw
|
Throw
|
||||||
Catch ex As ResponsedWebException
|
|
||||||
If MakeLog Then Log(ex, "网络请求失败,返回内容为:" & vbCrLf & ex.Response, LogLevel.Developer)
|
|
||||||
Throw
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
If MakeLog Then Log(ex, "网络请求失败", LogLevel.Developer)
|
If MakeLog Then Log(ex, "网络请求失败", LogLevel.Developer)
|
||||||
Throw
|
Throw
|
||||||
@@ -244,7 +241,10 @@ RequestFinished:
|
|||||||
If Response.IsSuccessStatusCode Then
|
If Response.IsSuccessStatusCode Then
|
||||||
Return ResponseBytes
|
Return ResponseBytes
|
||||||
Else
|
Else
|
||||||
Throw New ResponsedWebException($"错误码 {Response.StatusCode} ({CInt(Response.StatusCode)}),{Method},{Url}", If(Encoding, Encoding.UTF8).GetString(ResponseBytes))
|
Dim ResponseMessage = If(Encoding, Encoding.UTF8).GetString(ResponseBytes)
|
||||||
|
Throw New ResponsedWebException(
|
||||||
|
$"错误码 {Response.StatusCode} ({CInt(Response.StatusCode)}),{Method},{Url}" &
|
||||||
|
If(String.IsNullOrEmpty(ResponseMessage), "", vbCrLf & ResponseMessage), ResponseMessage)
|
||||||
End If
|
End If
|
||||||
Catch ex As ThreadInterruptedException
|
Catch ex As ThreadInterruptedException
|
||||||
Throw
|
Throw
|
||||||
@@ -807,7 +807,7 @@ StartSingleThreadDownload:
|
|||||||
'是否禁用多线程,以及规定碎片大小
|
'是否禁用多线程,以及规定碎片大小
|
||||||
Dim TargetUrl As String = GetSource().Url
|
Dim TargetUrl As String = GetSource().Url
|
||||||
If TargetUrl.Contains("pcl2-server") OrElse TargetUrl.Contains("bmclapi") OrElse TargetUrl.Contains("github.com") OrElse
|
If TargetUrl.Contains("pcl2-server") OrElse TargetUrl.Contains("bmclapi") OrElse TargetUrl.Contains("github.com") OrElse
|
||||||
TargetUrl.Contains("optifine.net") OrElse TargetUrl.Contains("modrinth") Then Return Nothing
|
TargetUrl.Contains("optifine.net") OrElse TargetUrl.Contains("modrinth") OrElse TargetUrl.Contains("momot.rs") Then Return Nothing
|
||||||
'寻找最大碎片
|
'寻找最大碎片
|
||||||
'FUTURE: 下载引擎重做,计算下载源平均链接时间和线程下载速度,按最高时间节省来开启多线程
|
'FUTURE: 下载引擎重做,计算下载源平均链接时间和线程下载速度,按最高时间节省来开启多线程
|
||||||
Dim FilePieceMax As NetThread = Threads
|
Dim FilePieceMax As NetThread = Threads
|
||||||
@@ -990,7 +990,8 @@ NotSupportRange:
|
|||||||
Th.DownloadDone += RealDataCount
|
Th.DownloadDone += RealDataCount
|
||||||
ResultStream.Write(ResponseBytes, 0, RealDataCount)
|
ResultStream.Write(ResponseBytes, 0, RealDataCount)
|
||||||
'检查速度是否过慢
|
'检查速度是否过慢
|
||||||
If DeltaTime > 1500 AndAlso DeltaTime > RealDataCount Then '数据包间隔大于 1.5s,且速度小于 1.5K/s
|
If DeltaTime > 1500 AndAlso DeltaTime > RealDataCount AndAlso '数据包间隔大于 1.5s,且速度小于 1.5K/s
|
||||||
|
Th.Source.SingleThread Is Nothing Then '并非单线程下载
|
||||||
Throw New TimeoutException("由于速度过慢断开链接,下载 " & RealDataCount & " B,消耗 " & DeltaTime & " ms。")
|
Throw New TimeoutException("由于速度过慢断开链接,下载 " & RealDataCount & " B,消耗 " & DeltaTime & " ms。")
|
||||||
End If
|
End If
|
||||||
Th.LastReceiveTime = GetTimeTick()
|
Th.LastReceiveTime = GetTimeTick()
|
||||||
@@ -1027,7 +1028,8 @@ SourceBreak:
|
|||||||
End SyncLock
|
End SyncLock
|
||||||
'合并
|
'合并
|
||||||
If Not IsNoSplit Then ResultStream?.Dispose()
|
If Not IsNoSplit Then ResultStream?.Dispose()
|
||||||
If ((FileSize >= 0 AndAlso DownloadDone >= FileSize) OrElse (FileSize = -1 AndAlso DownloadDone > 0)) AndAlso State < NetState.Merge Then Merge(Th)
|
If ((FileSize >= 0 AndAlso DownloadDone >= FileSize) OrElse (FileSize = -1 AndAlso DownloadDone > 0)) AndAlso
|
||||||
|
State < NetState.Merge AndAlso Th.State <> NetState.Error Then Merge(Th)
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
Private Sub SourceFail(Th As NetThread, ex As Exception, IsMergeFailure As Boolean)
|
Private Sub SourceFail(Th As NetThread, ex As Exception, IsMergeFailure As Boolean)
|
||||||
@@ -1069,7 +1071,7 @@ SourceBreak:
|
|||||||
'当前源失败,但还有下载源:正常地继续执行
|
'当前源失败,但还有下载源:正常地继续执行
|
||||||
ElseIf Not Retried AndAlso Sources.Count > 1 Then
|
ElseIf Not Retried AndAlso Sources.Count > 1 Then
|
||||||
'合并失败或首次下载失败,未重试:将所有下载源重新标记为不允许断点续传的下载源,逐个重新尝试下载
|
'合并失败或首次下载失败,未重试:将所有下载源重新标记为不允许断点续传的下载源,逐个重新尝试下载
|
||||||
Log($"[Download] {LocalName}:文件下载失败,正在自动重试……", If(ModeDebug, LogLevel.Hint, LogLevel.Debug)) '在调试模式下给出红色提示
|
Hint($"{LocalName}:文件下载失败,正在自动重试……", If(ModeDebug, HintType.Critical, HintType.Info)) '在调试模式下给出红色提示
|
||||||
Retried = True
|
Retried = True
|
||||||
SyncLock LockSource
|
SyncLock LockSource
|
||||||
SourcesOnce.Clear()
|
SourcesOnce.Clear()
|
||||||
@@ -1525,10 +1527,14 @@ Retry:
|
|||||||
'获取实际失败的文件
|
'获取实际失败的文件
|
||||||
For Each File In Files
|
For Each File In Files
|
||||||
If File.State <> NetState.Error Then Continue For
|
If File.State <> NetState.Error Then Continue For
|
||||||
|
Dim Detail As String = Join(File.Sources.Select(Function(s) $"{If(s.Ex?.Message, "无错误信息。")}({s.Url})"), vbCrLf)
|
||||||
[Error] = New Exception("文件下载失败:" & File.LocalPath & vbCrLf &
|
[Error] = New Exception("文件下载失败:" & File.LocalPath & vbCrLf &
|
||||||
"各下载源的错误如下:" & vbCrLf &
|
"各下载源的错误如下:" & vbCrLf & Detail,
|
||||||
Join(File.Sources.Select(Function(s) $"{If(s.Ex?.Message, "无错误信息。")}({s.Url})"), vbCrLf),
|
|
||||||
[Error])
|
[Error])
|
||||||
|
'上报
|
||||||
|
Telemetry("文件下载失败",
|
||||||
|
"FileName", File.LocalName,
|
||||||
|
"Exception", Detail)
|
||||||
Exit For
|
Exit For
|
||||||
Next
|
Next
|
||||||
'在设置 Error 对象后再更改为失败,避免 WaitForExit 无法捕获错误
|
'在设置 Error 对象后再更改为失败,避免 WaitForExit 无法捕获错误
|
||||||
|
|||||||
@@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
'构造函数
|
'构造函数
|
||||||
Private TempFolder As String
|
Private TempFolder As String
|
||||||
Public Sub New(UUID As Integer)
|
Private TargetVersion As McVersion
|
||||||
|
Public Sub New(Optional TargetVersion As McVersion = Nothing)
|
||||||
|
Me.TargetVersion = TargetVersion
|
||||||
'构建文件结构
|
'构建文件结构
|
||||||
TempFolder = RequestTaskTempFolder()
|
TempFolder = RequestTaskTempFolder()
|
||||||
Directory.CreateDirectory(TempFolder & "Temp\")
|
Directory.CreateDirectory(TempFolder & "Temp\")
|
||||||
@@ -508,7 +510,7 @@ Done:
|
|||||||
If LogMc.Contains("Couldn't set pixel format") Then AppendReason(CrashReason.显卡驱动不支持导致无法设置像素格式)
|
If LogMc.Contains("Couldn't set pixel format") Then AppendReason(CrashReason.显卡驱动不支持导致无法设置像素格式)
|
||||||
If LogMc.Contains("java.lang.OutOfMemoryError") OrElse LogMc.Contains("an out of memory error") Then AppendReason(CrashReason.内存不足)
|
If LogMc.Contains("java.lang.OutOfMemoryError") OrElse LogMc.Contains("an out of memory error") Then AppendReason(CrashReason.内存不足)
|
||||||
If LogMc.Contains("java.lang.RuntimeException: Shaders Mod detected. Please remove it, OptiFine has built-in support for shaders.") Then AppendReason(CrashReason.ShadersMod与OptiFine同时安装)
|
If LogMc.Contains("java.lang.RuntimeException: Shaders Mod detected. Please remove it, OptiFine has built-in support for shaders.") Then AppendReason(CrashReason.ShadersMod与OptiFine同时安装)
|
||||||
If LogMc.Contains("java.lang.NoSuchMethodError: sun.security.util.ManifestEntryVerifier") Then AppendReason(CrashReason.低版本Forge与高版本Java不兼容)
|
If LogMc.Contains("java.lang.NoSuchMethodError: sun.security.util.ManifestEntryVerifier") OrElse LogMc.Contains("java.lang.NoSuchMethodError: 'void sun.security.util.ManifestEntryVerifier") Then AppendReason(CrashReason.低版本Forge与高版本Java不兼容)
|
||||||
If LogMc.Contains("1282: Invalid operation") Then AppendReason(CrashReason.光影或资源包导致OpenGL1282错误)
|
If LogMc.Contains("1282: Invalid operation") Then AppendReason(CrashReason.光影或资源包导致OpenGL1282错误)
|
||||||
If LogMc.Contains("signer information does not match signer information of other classes in the same package") Then AppendReason(CrashReason.文件或内容校验失败, If(RegexSeek(LogMc, "(?<=class "")[^']+(?=""'s signer information)"), "").TrimEnd(vbCrLf))
|
If LogMc.Contains("signer information does not match signer information of other classes in the same package") Then AppendReason(CrashReason.文件或内容校验失败, If(RegexSeek(LogMc, "(?<=class "")[^']+(?=""'s signer information)"), "").TrimEnd(vbCrLf))
|
||||||
If LogMc.Contains("Maybe try a lower resolution resourcepack?") Then AppendReason(CrashReason.材质过大或显卡配置不足)
|
If LogMc.Contains("Maybe try a lower resolution resourcepack?") Then AppendReason(CrashReason.材质过大或显卡配置不足)
|
||||||
@@ -856,12 +858,13 @@ NextStack:
|
|||||||
''' <summary>
|
''' <summary>
|
||||||
''' 弹出崩溃弹窗,并指导导出崩溃报告。
|
''' 弹出崩溃弹窗,并指导导出崩溃报告。
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Public Sub Output(IsHandAnalyze As Boolean, Optional ExtraFiles As List(Of String) = Nothing)
|
Public Sub Output(IsManualAnalyze As Boolean, Optional ExtraFiles As List(Of String) = Nothing)
|
||||||
'弹窗提示
|
'弹窗提示
|
||||||
FrmMain.ShowWindowToTop()
|
FrmMain.ShowWindowToTop()
|
||||||
Select Case MyMsgBox(GetAnalyzeResult(IsHandAnalyze), If(IsHandAnalyze, "错误报告分析结果", "Minecraft 出现错误"),
|
Dim Detail As String = GetAnalyzeResult(IsManualAnalyze)
|
||||||
"确定", If(IsHandAnalyze OrElse DirectFile Is Nothing, "", "查看日志"), If(IsHandAnalyze, "", "导出错误报告"),
|
Select Case MyMsgBox(Detail, If(IsManualAnalyze, "错误报告分析结果", "Minecraft 出现错误"),
|
||||||
Button2Action:=If(IsHandAnalyze OrElse DirectFile Is Nothing, Nothing,
|
"确定", If(IsManualAnalyze OrElse DirectFile Is Nothing, "", "查看日志"), If(IsManualAnalyze, "", "导出错误报告"),
|
||||||
|
Button2Action:=If(IsManualAnalyze OrElse DirectFile Is Nothing, Nothing,
|
||||||
Sub()
|
Sub()
|
||||||
'弹窗选择:查看日志
|
'弹窗选择:查看日志
|
||||||
If File.Exists(DirectFile.Value.Key) Then
|
If File.Exists(DirectFile.Value.Key) Then
|
||||||
@@ -918,6 +921,11 @@ NextStack:
|
|||||||
End Try
|
End Try
|
||||||
OpenExplorer(FileAddress)
|
OpenExplorer(FileAddress)
|
||||||
End Select
|
End Select
|
||||||
|
'上报
|
||||||
|
If IsManualAnalyze Then Return
|
||||||
|
Telemetry("Minecraft 崩溃",
|
||||||
|
"Version", If(TargetVersion Is Nothing, "null", TargetVersion.Version.ToString),
|
||||||
|
"Detail", FilterUserName(Detail, "*"))
|
||||||
End Sub
|
End Sub
|
||||||
''' <summary>
|
''' <summary>
|
||||||
''' 获取崩溃分析的结果描述。
|
''' 获取崩溃分析的结果描述。
|
||||||
@@ -1102,7 +1110,7 @@ NextStack:
|
|||||||
If(Not Results.Any(Function(r) r.EndsWithF("\h")) OrElse IsHandAnalyze, "",
|
If(Not Results.Any(Function(r) r.EndsWithF("\h")) OrElse IsHandAnalyze, "",
|
||||||
vbCrLf & "如果要寻求帮助,请把错误报告文件发给对方,而不是发送这个窗口的照片或者截图。" &
|
vbCrLf & "如果要寻求帮助,请把错误报告文件发给对方,而不是发送这个窗口的照片或者截图。" &
|
||||||
If(If(PageSetupSystem.IsLauncherNewest(), True), "",
|
If(If(PageSetupSystem.IsLauncherNewest(), True), "",
|
||||||
vbCrLf & vbCrLf & "此外,你正在使用老版本 PCL,更新 PCL 或许也能解决这个问题。" & vbCrLf & "你可以点击 设置 → 启动器 → 检查更新 来更新 PCL。"))
|
vbCrLf & vbCrLf & "此外,你正在使用老版本 PCL,更新 PCL 或许也能解决这个问题。" & vbCrLf & "你可以点击 [设置 → 其他 → 启动器 → 检查更新] 更新 PCL。"))
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -594,7 +594,7 @@
|
|||||||
VersionName = Version
|
VersionName = Version
|
||||||
Me.Version = New Version(Version)
|
Me.Version = New Version(Version)
|
||||||
Me.Inherit = Inherit
|
Me.Inherit = Inherit
|
||||||
FileVersion = Version & If(Branch Is Nothing, "", "-" & Branch)
|
FileVersion = Version & If(Branch Is Nothing, "", "-" & Branch)
|
||||||
End Sub
|
End Sub
|
||||||
End Class
|
End Class
|
||||||
|
|
||||||
@@ -1106,26 +1106,27 @@
|
|||||||
Public Function DlModRequest(Url As String, Optional Method As HttpMethod = Nothing,
|
Public Function DlModRequest(Url As String, Optional Method As HttpMethod = Nothing,
|
||||||
Optional Content As String = Nothing, Optional ContentType As String = Nothing) As JToken
|
Optional Content As String = Nothing, Optional ContentType As String = Nothing) As JToken
|
||||||
Dim Urls As New List(Of KeyValuePair(Of String, Integer))
|
Dim Urls As New List(Of KeyValuePair(Of String, Integer))
|
||||||
Urls.Add(New KeyValuePair(Of String, Integer)(Url, 10)) '至少 10s,要不然有时候远端服务器来不及完成
|
Dim McimUrl As String = DlSourceModGet(Url)
|
||||||
Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
|
If McimUrl <> Url Then
|
||||||
'Dim McimUrl As String = DlSourceModGet(Url)
|
Select Case Setup.Get("ToolDownloadMod")
|
||||||
'If McimUrl <> Url Then
|
Case 0
|
||||||
' Select Case Setup.Get("ToolDownloadMod")
|
Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 10))
|
||||||
' Case 0
|
Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 10))
|
||||||
' Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 10))
|
Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
|
||||||
' Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 30))
|
Case 1
|
||||||
' Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
|
Urls.Add(New KeyValuePair(Of String, Integer)(Url, 10)) '至少 10s,要不然有时候远端服务器来不及完成
|
||||||
' Case 1
|
Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 10))
|
||||||
' Urls.Add(New KeyValuePair(Of String, Integer)(Url, 10))
|
Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
|
||||||
' Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 10))
|
Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 30))
|
||||||
' Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
|
Case Else
|
||||||
' Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 30))
|
Urls.Add(New KeyValuePair(Of String, Integer)(Url, 10))
|
||||||
' Case Else
|
Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
|
||||||
' Urls.Add(New KeyValuePair(Of String, Integer)(Url, 10))
|
Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 30))
|
||||||
' Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
|
End Select
|
||||||
' Urls.Add(New KeyValuePair(Of String, Integer)(McimUrl, 30))
|
Else
|
||||||
' End Select
|
Urls.Add(New KeyValuePair(Of String, Integer)(Url, 10))
|
||||||
'End If
|
Urls.Add(New KeyValuePair(Of String, Integer)(Url, 30))
|
||||||
|
End If
|
||||||
Dim Exs As String = ""
|
Dim Exs As String = ""
|
||||||
For Each Source In Urls
|
For Each Source In Urls
|
||||||
Try
|
Try
|
||||||
@@ -1232,7 +1233,14 @@
|
|||||||
|
|
||||||
'Mod 下载源
|
'Mod 下载源
|
||||||
Public Function DlSourceModGet(Original As String) As String
|
Public Function DlSourceModGet(Original As String) As String
|
||||||
Return Original
|
Return Original.
|
||||||
|
Replace("api.modrinth.com", "mod.mcimirror.top/modrinth").
|
||||||
|
Replace("staging-api.modrinth.com", "mod.mcimirror.top/modrinth").
|
||||||
|
Replace("cdn.modrinth.com", "mod.mcimirror.top").
|
||||||
|
Replace("api.curseforge.com", "mod.mcimirror.top/curseforge").
|
||||||
|
Replace("edge.forgecdn.net", "mod.mcimirror.top").
|
||||||
|
Replace("mediafilez.forgecdn.net", "mod.mcimirror.top").
|
||||||
|
Replace("media.forgecdn.net", "mod.mcimirror.top")
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
'Loader 自动切换
|
'Loader 自动切换
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ Public Module ModLaunch
|
|||||||
''' </summary>
|
''' </summary>
|
||||||
Public Sub McLaunchLog(Text As String)
|
Public Sub McLaunchLog(Text As String)
|
||||||
Text = FilterUserName(FilterAccessToken(Text, "*"), "*")
|
Text = FilterUserName(FilterAccessToken(Text, "*"), "*")
|
||||||
RunInUi(Sub() FrmLaunchRight.LabLog.Text += vbCrLf & "[" & GetTimeNow() & "] " & Text)
|
RunInUi(Sub() FrmLaunchRight.LabLog.Text += $"{vbCrLf}[{GetTimeNow()}] {Text}")
|
||||||
Log("[Launch] " & Text)
|
Log("[Launch] " & Text)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -101,6 +101,8 @@ Public Module ModLaunch
|
|||||||
If Not ex.Message.StartsWithF("$$") Then Hint(ex.Message, HintType.Critical)
|
If Not ex.Message.StartsWithF("$$") Then Hint(ex.Message, HintType.Critical)
|
||||||
Throw
|
Throw
|
||||||
End Try
|
End Try
|
||||||
|
Dim IsSavingBatch As Boolean = CurrentLaunchOptions?.SaveBatch IsNot Nothing
|
||||||
|
|
||||||
'正式加载
|
'正式加载
|
||||||
Try
|
Try
|
||||||
'构造主加载器
|
'构造主加载器
|
||||||
@@ -145,9 +147,15 @@ Public Module ModLaunch
|
|||||||
Select Case LaunchLoader.State
|
Select Case LaunchLoader.State
|
||||||
Case LoadState.Finished
|
Case LoadState.Finished
|
||||||
Hint(McVersionCurrent.Name & " 启动成功!", HintType.Finish)
|
Hint(McVersionCurrent.Name & " 启动成功!", HintType.Finish)
|
||||||
|
'上报
|
||||||
|
If Not IsSavingBatch Then
|
||||||
|
Telemetry("Minecraft 启动成功",
|
||||||
|
"Version", McVersionCurrent.Version.ToString,
|
||||||
|
"LoginType", GetStringFromEnum(CType(Setup.Get("LoginType"), McLoginType)))
|
||||||
|
End If
|
||||||
Case LoadState.Aborted
|
Case LoadState.Aborted
|
||||||
If AbortHint Is Nothing Then
|
If AbortHint Is Nothing Then
|
||||||
Hint(If(CurrentLaunchOptions?.SaveBatch Is Nothing, "已取消启动!", "已取消导出启动脚本!"), HintType.Info)
|
Hint(If(IsSavingBatch, "已取消导出启动脚本!", "已取消启动!"), HintType.Info)
|
||||||
Else
|
Else
|
||||||
Hint(AbortHint, HintType.Finish)
|
Hint(AbortHint, HintType.Finish)
|
||||||
End If
|
End If
|
||||||
@@ -162,7 +170,7 @@ NextInner:
|
|||||||
If CurrentEx.Message.StartsWithF("$") Then
|
If CurrentEx.Message.StartsWithF("$") Then
|
||||||
'若有以 $ 开头的错误信息,则以此为准显示提示
|
'若有以 $ 开头的错误信息,则以此为准显示提示
|
||||||
'若错误信息为 $$,则不提示
|
'若错误信息为 $$,则不提示
|
||||||
If Not CurrentEx.Message = "$$" Then MyMsgBox(CurrentEx.Message.TrimStart("$"), If(CurrentLaunchOptions?.SaveBatch Is Nothing, "启动失败", "导出启动脚本失败"))
|
If Not CurrentEx.Message = "$$" Then MyMsgBox(CurrentEx.Message.TrimStart("$"), If(IsSavingBatch, "导出启动脚本失败", "启动失败"))
|
||||||
Throw
|
Throw
|
||||||
ElseIf CurrentEx.InnerException IsNot Nothing Then
|
ElseIf CurrentEx.InnerException IsNot Nothing Then
|
||||||
'检查下一级错误
|
'检查下一级错误
|
||||||
@@ -172,8 +180,15 @@ NextInner:
|
|||||||
'没有特殊处理过的错误信息
|
'没有特殊处理过的错误信息
|
||||||
McLaunchLog("错误:" & GetExceptionDetail(ex))
|
McLaunchLog("错误:" & GetExceptionDetail(ex))
|
||||||
Log(ex,
|
Log(ex,
|
||||||
If(CurrentLaunchOptions?.SaveBatch Is Nothing, "Minecraft 启动失败", "导出启动脚本失败"), LogLevel.Msgbox,
|
If(IsSavingBatch, "导出启动脚本失败", "Minecraft 启动失败"), LogLevel.Msgbox,
|
||||||
If(CurrentLaunchOptions?.SaveBatch Is Nothing, "启动失败", "导出启动脚本失败"))
|
If(IsSavingBatch, "导出启动脚本失败", "启动失败"))
|
||||||
|
'上报
|
||||||
|
If Not IsSavingBatch Then
|
||||||
|
Telemetry("Minecraft 启动失败",
|
||||||
|
"Version", McVersionCurrent.Version.ToString,
|
||||||
|
"LoginType", GetStringFromEnum(CType(Setup.Get("LoginType"), McLoginType)),
|
||||||
|
"Exception", FilterUserName(FilterAccessToken(GetExceptionDetail(ex), "*"), "*"))
|
||||||
|
End If
|
||||||
Throw
|
Throw
|
||||||
End If
|
End If
|
||||||
End Try
|
End Try
|
||||||
@@ -891,9 +906,9 @@ Retry:
|
|||||||
ContentType:="application/x-www-form-urlencoded",
|
ContentType:="application/x-www-form-urlencoded",
|
||||||
Headers:={{"Accept-Language", "en-US,en;q=0.5"}, {"X-Requested-With", "XMLHttpRequest"}},
|
Headers:={{"Accept-Language", "en-US,en;q=0.5"}, {"X-Requested-With", "XMLHttpRequest"}},
|
||||||
ThreadCount:=2)
|
ThreadCount:=2)
|
||||||
Catch ex As Exception
|
Catch ex As ResponsedWebException
|
||||||
If ex.Message.ContainsF("must sign in again", True) OrElse ex.Message.ContainsF("password expired", True) OrElse
|
If ex.Response.ContainsF("must sign in again", True) OrElse ex.Response.ContainsF("password expired", True) OrElse
|
||||||
(ex.Message.Contains("refresh_token") AndAlso ex.Message.Contains("is not valid")) Then '#269
|
(ex.Response.Contains("refresh_token") AndAlso ex.Response.Contains("is not valid")) Then '#269
|
||||||
Return {"Relogin", ""}
|
Return {"Relogin", ""}
|
||||||
Else
|
Else
|
||||||
Throw
|
Throw
|
||||||
@@ -942,20 +957,20 @@ Retry:
|
|||||||
Try
|
Try
|
||||||
Result = NetRequestByClientMultiple("https://xsts.auth.xboxlive.com/xsts/authorize", HttpMethod.Post,
|
Result = NetRequestByClientMultiple("https://xsts.auth.xboxlive.com/xsts/authorize", HttpMethod.Post,
|
||||||
Content:=Request, ContentType:="application/json")
|
Content:=Request, ContentType:="application/json")
|
||||||
Catch ex As Net.WebException
|
Catch ex As ResponsedWebException
|
||||||
'参考 https://github.com/PrismarineJS/prismarine-auth/blob/master/src/common/Constants.js
|
'参考 https://github.com/PrismarineJS/prismarine-auth/blob/master/src/common/Constants.js
|
||||||
If ex.Message.Contains("2148916227") Then
|
If ex.Response.Contains("2148916227") Then
|
||||||
MyMsgBox("该账号似乎已被微软封禁,无法登录。", "登录失败", "我知道了", IsWarn:=True)
|
MyMsgBox("该账号似乎已被微软封禁,无法登录。", "登录失败", "我知道了", IsWarn:=True)
|
||||||
Throw New Exception("$$")
|
Throw New Exception("$$")
|
||||||
ElseIf ex.Message.Contains("2148916233") Then
|
ElseIf ex.Response.Contains("2148916233") Then
|
||||||
If MyMsgBox("你尚未注册 Xbox 账户,请在注册后再登录。", "登录提示", "注册", "取消") = 1 Then
|
If MyMsgBox("你尚未注册 Xbox 账户,请在注册后再登录。", "登录提示", "注册", "取消") = 1 Then
|
||||||
OpenWebsite("https://signup.live.com/signup")
|
OpenWebsite("https://signup.live.com/signup")
|
||||||
End If
|
End If
|
||||||
Throw New Exception("$$")
|
Throw New Exception("$$")
|
||||||
ElseIf ex.Message.Contains("2148916235") Then
|
ElseIf ex.Response.Contains("2148916235") Then
|
||||||
MyMsgBox($"你的网络所在的国家或地区无法登录微软账号。{vbCrLf}请使用加速器或 VPN。", "登录失败", "我知道了")
|
MyMsgBox($"你的网络所在的国家或地区无法登录微软账号。{vbCrLf}请使用加速器或 VPN。", "登录失败", "我知道了")
|
||||||
Throw New Exception("$$")
|
Throw New Exception("$$")
|
||||||
ElseIf ex.Message.Contains("2148916238") Then
|
ElseIf ex.Response.Contains("2148916238") Then
|
||||||
If MyMsgBox("该账号年龄不足,你需要先修改出生日期,然后才能登录。" & vbCrLf &
|
If MyMsgBox("该账号年龄不足,你需要先修改出生日期,然后才能登录。" & vbCrLf &
|
||||||
"该账号目前填写的年龄是否在 13 岁以上?", "登录提示", "13 岁以上", "12 岁以下", "我不知道") = 1 Then
|
"该账号目前填写的年龄是否在 13 岁以上?", "登录提示", "13 岁以上", "12 岁以下", "我不知道") = 1 Then
|
||||||
OpenWebsite("https://account.live.com/editprof.aspx")
|
OpenWebsite("https://account.live.com/editprof.aspx")
|
||||||
@@ -1364,13 +1379,13 @@ Retry:
|
|||||||
McLaunchLog("新版 Game 参数获取成功")
|
McLaunchLog("新版 Game 参数获取成功")
|
||||||
End If
|
End If
|
||||||
'编码参数(#4700、#5892、#5909)
|
'编码参数(#4700、#5892、#5909)
|
||||||
|
If McLaunchJavaSelected.VersionCode >= 18 Then 'Dfile.encoding 需要放在 Dstdout.encoding 后面(#6934)
|
||||||
|
If Not Arguments.Contains("-Dfile.encoding=") Then Arguments = "-Dfile.encoding=COMPAT " & Arguments
|
||||||
|
End If
|
||||||
If McLaunchJavaSelected.VersionCode > 8 Then
|
If McLaunchJavaSelected.VersionCode > 8 Then
|
||||||
If Not Arguments.Contains("-Dstdout.encoding=") Then Arguments = "-Dstdout.encoding=UTF-8 " & Arguments
|
If Not Arguments.Contains("-Dstdout.encoding=") Then Arguments = "-Dstdout.encoding=UTF-8 " & Arguments
|
||||||
If Not Arguments.Contains("-Dstderr.encoding=") Then Arguments = "-Dstderr.encoding=UTF-8 " & Arguments
|
If Not Arguments.Contains("-Dstderr.encoding=") Then Arguments = "-Dstderr.encoding=UTF-8 " & Arguments
|
||||||
End If
|
End If
|
||||||
If McLaunchJavaSelected.VersionCode >= 18 Then
|
|
||||||
If Not Arguments.Contains("-Dfile.encoding=") Then Arguments = "-Dfile.encoding=COMPAT " & Arguments
|
|
||||||
End If
|
|
||||||
'MJSB
|
'MJSB
|
||||||
Arguments = Arguments.Replace(" -Dos.name=Windows 10", " -Dos.name=""Windows 10""")
|
Arguments = Arguments.Replace(" -Dos.name=Windows 10", " -Dos.name=""Windows 10""")
|
||||||
'全屏
|
'全屏
|
||||||
@@ -1692,7 +1707,7 @@ NextVersion:
|
|||||||
GameArguments.Add("${access_token}", McLoginLoader.Output.AccessToken)
|
GameArguments.Add("${access_token}", McLoginLoader.Output.AccessToken)
|
||||||
GameArguments.Add("${auth_session}", McLoginLoader.Output.AccessToken)
|
GameArguments.Add("${auth_session}", McLoginLoader.Output.AccessToken)
|
||||||
GameArguments.Add("${user_type}", "msa") '#1221
|
GameArguments.Add("${user_type}", "msa") '#1221
|
||||||
GameArguments.Add("${primary_jar}", Version.Path & Version.Name & ".jar")
|
GameArguments.Add("${primary_jar}", Version.Path & Version.Name & ".jar") '#6942
|
||||||
|
|
||||||
'窗口尺寸参数
|
'窗口尺寸参数
|
||||||
Dim GameSize As Size
|
Dim GameSize As Size
|
||||||
|
|||||||
@@ -989,7 +989,7 @@ ExitDataLoad:
|
|||||||
If ToString = "" Then
|
If ToString = "" Then
|
||||||
Return "原版 " & McName
|
Return "原版 " & McName
|
||||||
Else
|
Else
|
||||||
Return McName & ToString & If(ModeDebug, " (" & SortCode & "#)", "")
|
Return McName & ToString
|
||||||
End If
|
End If
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
@@ -2415,7 +2415,7 @@ NextEntry:
|
|||||||
Public Function FilterUserName(Raw As String, FilterChar As Char) As String
|
Public Function FilterUserName(Raw As String, FilterChar As Char) As String
|
||||||
If Raw.Contains(":\Users\") Then
|
If Raw.Contains(":\Users\") Then
|
||||||
For Each Token In RegexSearch(Raw, "(?<=:\\Users\\)[^\\]+")
|
For Each Token In RegexSearch(Raw, "(?<=:\\Users\\)[^\\]+")
|
||||||
Raw = Raw.Replace(Token, New String(FilterChar, Token.Count))
|
Raw = Raw.Replace("\" & Token, "\" & New String(FilterChar, Token.Count))
|
||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
Return Raw
|
Return Raw
|
||||||
|
|||||||
@@ -349,14 +349,14 @@
|
|||||||
State = MinecraftState.Crashed
|
State = MinecraftState.Crashed
|
||||||
'崩溃分析
|
'崩溃分析
|
||||||
WatcherLog("Minecraft 已崩溃,将在 2 秒后开始崩溃分析")
|
WatcherLog("Minecraft 已崩溃,将在 2 秒后开始崩溃分析")
|
||||||
Hint("检测到 Minecraft 出现错误,错误分析已开始……")
|
Hint("检测到 Minecraft 出现错误,错误分析已开始……", HintType.Critical)
|
||||||
FeedbackInfo()
|
FeedbackInfo()
|
||||||
RunInNewThread(
|
RunInNewThread(
|
||||||
Sub()
|
Sub()
|
||||||
Try
|
Try
|
||||||
Thread.Sleep(2000)
|
Thread.Sleep(2000)
|
||||||
WatcherLog("崩溃分析开始")
|
WatcherLog("崩溃分析开始")
|
||||||
Dim Analyzer As New CrashAnalyzer(PID)
|
Dim Analyzer As New CrashAnalyzer(Version)
|
||||||
Analyzer.Collect(Version.PathIndie, LatestLog.ToList)
|
Analyzer.Collect(Version.PathIndie, LatestLog.ToList)
|
||||||
Analyzer.Prepare()
|
Analyzer.Prepare()
|
||||||
Analyzer.Analyze(Version)
|
Analyzer.Analyze(Version)
|
||||||
|
|||||||
@@ -116,11 +116,8 @@
|
|||||||
End Try
|
End Try
|
||||||
|
|
||||||
Case "修改设置"
|
Case "修改设置"
|
||||||
If Setup.IsEncoded(Data(0)) Then
|
|
||||||
Throw New Exception($"无法修改受加密保护的设置:{Data(0)}")
|
|
||||||
End If
|
|
||||||
Setup.Set(Data(0), Data(1))
|
Setup.Set(Data(0), Data(1))
|
||||||
Hint("已修改设置!", HintType.Finish)
|
Hint($"已写入设置:{Data(0)} → {Data(1)}", HintType.Finish)
|
||||||
|
|
||||||
Case Else
|
Case Else
|
||||||
MyMsgBox("未知的事件类型:" & Type & vbCrLf & "请检查事件类型填写是否正确,或者 PCL 是否为最新版本。", "事件执行失败")
|
MyMsgBox("未知的事件类型:" & Type & vbCrLf & "请检查事件类型填写是否正确,或者 PCL 是否为最新版本。", "事件执行失败")
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ Friend Module ModSecret
|
|||||||
Public OAuthClientId As String = If(Environment.GetEnvironmentVariable("PCL_MS_CLIENT_ID"), "")
|
Public OAuthClientId As String = If(Environment.GetEnvironmentVariable("PCL_MS_CLIENT_ID"), "")
|
||||||
'CurseForge API Key
|
'CurseForge API Key
|
||||||
Public CurseForgeAPIKey As String = If(Environment.GetEnvironmentVariable("PCL_CURSEFORGE_API_KEY"), "")
|
Public CurseForgeAPIKey As String = If(Environment.GetEnvironmentVariable("PCL_CURSEFORGE_API_KEY"), "")
|
||||||
|
'用于匿名数据收集的腾讯云日志服务上报 URL,形如 https://{region}.cls.tencentcs.com/track?topic_id={topic_id}
|
||||||
|
Public Const ClsBaseUrl As String = ""
|
||||||
|
|
||||||
Friend Sub SecretOnApplicationStart()
|
Friend Sub SecretOnApplicationStart()
|
||||||
'提升 UI 线程优先级
|
'提升 UI 线程优先级
|
||||||
|
|||||||
+1
-1
@@ -137,7 +137,7 @@ Public Class DragHelper
|
|||||||
Dim fileCount As UInteger = DragQueryFile(wParam, UInteger.MaxValue, Nothing, 0)
|
Dim fileCount As UInteger = DragQueryFile(wParam, UInteger.MaxValue, Nothing, 0)
|
||||||
ReDim dropFilePaths(CInt(fileCount) - 1)
|
ReDim dropFilePaths(CInt(fileCount) - 1)
|
||||||
|
|
||||||
For i As UInteger = 0 To fileCount - 1
|
For i As UInteger = 0 To CInt(fileCount) - 1
|
||||||
Dim sb As New StringBuilder(MAX_PATH)
|
Dim sb As New StringBuilder(MAX_PATH)
|
||||||
Dim result As UInteger = DragQueryFile(wParam, i, sb, sb.Capacity)
|
Dim result As UInteger = DragQueryFile(wParam, i, sb, sb.Capacity)
|
||||||
If result > 0 Then dropFilePaths(i) = sb.ToString()
|
If result > 0 Then dropFilePaths(i) = sb.ToString()
|
||||||
|
|||||||
@@ -51,6 +51,6 @@ Imports System.Runtime.InteropServices
|
|||||||
' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
||||||
' 方法是按如下所示使用“*”
|
' 方法是按如下所示使用“*”
|
||||||
|
|
||||||
<Assembly: AssemblyVersion("2.10.5.0")>
|
<Assembly: AssemblyVersion("2.10.6.0")>
|
||||||
<Assembly: AssemblyFileVersion("2.10.5.0")>
|
<Assembly: AssemblyFileVersion("2.10.6.0")>
|
||||||
<Assembly: NeutralResourcesLanguage("")>
|
<Assembly: NeutralResourcesLanguage("")>
|
||||||
|
|||||||
@@ -243,19 +243,21 @@
|
|||||||
If Not IsNothing(PageNew) AndAlso Not IsNothing(PageNew.Parent) Then PageNew.SetValue(ContentPresenter.ContentProperty, Nothing)
|
If Not IsNothing(PageNew) AndAlso Not IsNothing(PageNew.Parent) Then PageNew.SetValue(ContentPresenter.ContentProperty, Nothing)
|
||||||
If Anim Then
|
If Anim Then
|
||||||
'动画
|
'动画
|
||||||
Dispatcher.Invoke(Sub()
|
Dispatcher.Invoke(
|
||||||
'执行动画
|
Sub()
|
||||||
AniStart({
|
'执行动画
|
||||||
AaOpacity(PanLogin, -PanLogin.Opacity, 100,, New AniEaseOutFluent),
|
AniStart({
|
||||||
AaCode(Sub()
|
AaOpacity(PanLogin, -PanLogin.Opacity, 100,, New AniEaseOutFluent),
|
||||||
AniControlEnabled += 1
|
AaCode(
|
||||||
PanLogin.Children.Clear()
|
Sub()
|
||||||
PanLogin.Children.Add(PageNew)
|
AniControlEnabled += 1
|
||||||
AniControlEnabled -= 1
|
PanLogin.Children.Clear()
|
||||||
End Sub, 100),
|
PanLogin.Children.Add(PageNew)
|
||||||
AaOpacity(PanLogin, 1, 100, 120, New AniEaseInFluent)
|
AniControlEnabled -= 1
|
||||||
}, "FrmLogin PageChange")
|
End Sub, 100),
|
||||||
End Sub, Threading.DispatcherPriority.Render)
|
AaOpacity(PanLogin, 1, 100, 120, New AniEaseInFluent)
|
||||||
|
}, "FrmLogin PageChange")
|
||||||
|
End Sub, Threading.DispatcherPriority.Render)
|
||||||
Else
|
Else
|
||||||
'无动画
|
'无动画
|
||||||
AniControlEnabled += 1
|
AniControlEnabled += 1
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ Download:
|
|||||||
GoTo Download
|
GoTo Download
|
||||||
Case 3
|
Case 3
|
||||||
Log("[Page] 主页预设:简单主页")
|
Log("[Page] 主页预设:简单主页")
|
||||||
Url = "https://raw.gitcode.com/mfn233/PCL-Mainpage/raw/main/Custom.xaml"
|
Url = "https://pclhomeplazaoss.lingyunawa.top:26994/d/Homepages/MFn233/Custom.xaml"
|
||||||
GoTo Download
|
GoTo Download
|
||||||
Case 4
|
Case 4
|
||||||
Log("[Page] 主页预设:每日整合包推荐")
|
Log("[Page] 主页预设:每日整合包推荐")
|
||||||
@@ -129,7 +129,7 @@ Download:
|
|||||||
GoTo Download
|
GoTo Download
|
||||||
Case 12
|
Case 12
|
||||||
Log("[Page] 主页预设:PCL GitHub 仪表盘")
|
Log("[Page] 主页预设:PCL GitHub 仪表盘")
|
||||||
Url = "https://raw.gitcode.com/Deep-Dark-Forest/PCL2-GitHub-Dashboard-Homepage/raw/main/custom.xaml"
|
Url = "https://ddf.pcl-community.org/Custom.xaml"
|
||||||
GoTo Download
|
GoTo Download
|
||||||
End Select
|
End Select
|
||||||
End Select
|
End Select
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
<ColumnDefinition Width="150" />
|
<ColumnDefinition Width="150" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<local:MyListItem IsHitTestVisible="False" Title="龙腾猫跃" Margin="-5,0,15,0" Info="Plain Craft Launcher 的作者!" Grid.Row="0" Grid.Column="1" />
|
<local:MyListItem IsHitTestVisible="False" Title="龙腾猫跃" Margin="-5,0,15,0" Info="Plain Craft Launcher 的开发者!" Grid.Row="0" Grid.Column="1" />
|
||||||
<local:MyListItem IsHitTestVisible="False" Title="Plain Craft Launcher 2" Margin="-5,0,15,0" Info="当前版本:%VERSION%(%VERSIONCODE%.%BRANCH%)" Grid.Row="1" Grid.Column="1" x:Name="ItemAboutPcl" />
|
<local:MyListItem IsHitTestVisible="False" Title="Plain Craft Launcher 2" Margin="-5,0,15,0" Info="当前版本:%VERSION%(%VERSIONCODE%.%BRANCH%)" Grid.Row="1" Grid.Column="1" x:Name="ItemAboutPcl" />
|
||||||
<Image Source="/Plain Craft Launcher 2;component/Images/Heads/Logo.png" Grid.Row="1" Margin="3">
|
<Image Source="/Plain Craft Launcher 2;component/Images/Heads/Logo.png" Grid.Row="1" Margin="3">
|
||||||
<Image.Clip>
|
<Image.Clip>
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
<EllipseGeometry Center="17 17" RadiusX="17" RadiusY="17" />
|
<EllipseGeometry Center="17 17" RadiusX="17" RadiusY="17" />
|
||||||
</Image.Clip>
|
</Image.Clip>
|
||||||
</Image>
|
</Image>
|
||||||
<local:MyButton Text="赞助作者" Grid.Column="2" Grid.Row="0" Height="35" EventType="打开网页" EventData="https://afdian.com/a/LTCat" />
|
<local:MyButton Text="赞助 PCL !" Grid.Column="2" Grid.Row="0" Height="35" EventType="打开网页" EventData="https://afdian.com/a/LTCat" ColorType="Highlight" />
|
||||||
<local:MyButton Text="查看源代码" Grid.Column="2" Grid.Row="1" Height="35" EventType="打开网页" EventData="https://github.com/Hex-Dragon/PCL2" />
|
<local:MyButton Text="查看源代码" Grid.Column="2" Grid.Row="1" Height="35" EventType="打开网页" EventData="https://github.com/Hex-Dragon/PCL2" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</local:MyCard>
|
</local:MyCard>
|
||||||
@@ -51,11 +51,12 @@
|
|||||||
<ColumnDefinition Width="150" />
|
<ColumnDefinition Width="150" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<local:MyListItem Title="bangbang93" Margin="-5,0,15,0" IsHitTestVisible="False" Info="提供 BMCLAPI 镜像源和 Forge 安装工具,详见 https://bmclapi.bangbang93.com" Grid.Row="0" Grid.Column="1" />
|
<local:MyListItem Title="bangbang93" Margin="-5,0,15,0" IsHitTestVisible="False" Info="提供 BMCLAPI 镜像源和 Forge 安装工具,详见 https://bmclapi.bangbang93.com" Grid.Row="0" Grid.Column="1" />
|
||||||
<local:MyButton x:Name="BtnAboutBmclapi" Text="赞助镜像源" Grid.Row="0" Grid.Column="2" Height="35" />
|
<local:MyButton Text="赞助镜像源" Grid.Row="0" Grid.Column="2" Height="35" EventType="打开网页" EventData="https://afdian.com/a/bangbang93" />
|
||||||
<local:MyListItem Title="MC 百科" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="提供了 Mod 名称的中文翻译和更多相关信息!" Grid.Row="1" Grid.Column="1" />
|
<local:MyListItem Title="MC 百科" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="提供了 Mod 名称的中文翻译和更多相关信息!" Grid.Row="1" Grid.Column="1" />
|
||||||
<local:MyButton x:Name="BtnAboutWiki" Text="打开百科" Grid.Row="1" Grid.Column="2" Height="35" />
|
<local:MyButton Text="打开百科" Grid.Row="1" Grid.Column="2" Height="35" EventType="打开网页" EventData="https://www.mcmod.cn" />
|
||||||
<local:MyListItem Title="00ll00" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="提供了 Java Launch Wrapper 和一些重要服务支持!" Grid.Row="2" Grid.Column="1" />
|
<local:MyListItem Title="z0z0r4" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="提供了 MCIM 社区资源镜像源和帮助库图床!" Grid.Row="2" Grid.Column="1" />
|
||||||
<local:MyListItem Title="z0z0r4" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="提供了 MCIM 中国 Mod 下载镜像源和帮助库图床!" Grid.Row="3" Grid.Column="1" />
|
<local:MyButton Text="MCIM 主页" Grid.Row="2" Grid.Column="2" Height="35" EventType="打开网页" EventData="https://github.com/mcmod-info-mirror" />
|
||||||
|
<local:MyListItem Title="00ll00" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="提供了 Java Launch Wrapper 和一些重要服务支持!" Grid.Row="3" Grid.Column="1" />
|
||||||
<local:MyListItem Title="Patrick" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="设计并制作了 PCL 图标,让我从做图标的水深火热中得到了解脱……" Grid.Row="4" Grid.Column="1" />
|
<local:MyListItem Title="Patrick" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="设计并制作了 PCL 图标,让我从做图标的水深火热中得到了解脱……" Grid.Row="4" Grid.Column="1" />
|
||||||
<local:MyListItem Title="Hao_Tian" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="在内测中找出了一大堆没人想得到的诡异 Bug,有非同寻常的 Bug 体质" Grid.Row="5" Grid.Column="1" />
|
<local:MyListItem Title="Hao_Tian" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="在内测中找出了一大堆没人想得到的诡异 Bug,有非同寻常的 Bug 体质" Grid.Row="5" Grid.Column="1" />
|
||||||
<local:MyListItem Title="Minecraft 中文论坛" Margin="-5,0,15,0" IsHitTestVisible="False" Info="虽然已经关站了,但感谢此前提供了 MCBBS 镜像源……" Grid.Row="6" Grid.Column="1" />
|
<local:MyListItem Title="Minecraft 中文论坛" Margin="-5,0,15,0" IsHitTestVisible="False" Info="虽然已经关站了,但感谢此前提供了 MCBBS 镜像源……" Grid.Row="6" Grid.Column="1" />
|
||||||
@@ -70,12 +71,12 @@
|
|||||||
<EllipseGeometry Center="17 17" RadiusX="17" RadiusY="17" />
|
<EllipseGeometry Center="17 17" RadiusX="17" RadiusY="17" />
|
||||||
</Image.Clip>
|
</Image.Clip>
|
||||||
</Image>
|
</Image>
|
||||||
<Image Source="/Plain Craft Launcher 2;component/Images/Heads/00ll00.png" Grid.Row="2" Margin="3">
|
<Image Source="/Plain Craft Launcher 2;component/Images/Heads/z0z0r4.png" Grid.Row="2" Margin="3">
|
||||||
<Image.Clip>
|
<Image.Clip>
|
||||||
<EllipseGeometry Center="17 17" RadiusX="17" RadiusY="17" />
|
<EllipseGeometry Center="17 17" RadiusX="17" RadiusY="17" />
|
||||||
</Image.Clip>
|
</Image.Clip>
|
||||||
</Image>
|
</Image>
|
||||||
<Image Source="/Plain Craft Launcher 2;component/Images/Heads/z0z0r4.png" Grid.Row="3" Margin="3">
|
<Image Source="/Plain Craft Launcher 2;component/Images/Heads/00ll00.png" Grid.Row="3" Margin="3">
|
||||||
<Image.Clip>
|
<Image.Clip>
|
||||||
<EllipseGeometry Center="17 17" RadiusX="17" RadiusY="17" />
|
<EllipseGeometry Center="17 17" RadiusX="17" RadiusY="17" />
|
||||||
</Image.Clip>
|
</Image.Clip>
|
||||||
@@ -104,289 +105,245 @@
|
|||||||
</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 年 6 月的高级赞助者们!感谢各位对 PCL 和伟大的咕咕咕事业的支持!" Margin="0,0,25,5.5" TextTrimming="None" TextWrapping="WrapWithOverflow" />
|
<TextBlock HorizontalAlignment="Left" Text="以下是 2025 年 7 月的高级赞助者们!感谢各位对 PCL 和伟大的咕咕咕事业的支持!" Margin="0,0,25,5.5" TextTrimming="None" TextWrapping="WrapWithOverflow" />
|
||||||
<WrapPanel Margin="0,0,0,10">
|
<WrapPanel Margin="0,0,0,10">
<TextBlock Width="120" Margin="0,1.5" Text="ZSF" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="星月" />
|
<TextBlock Width="120" Margin="0,1.5" Text="TizhleF" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Nemo" />
|
<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="飒黎lIlIlI" />
|
<TextBlock Width="120" Margin="0,1.5" Text="贾明志" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="hy" />
|
<TextBlock Width="120" Margin="0,1.5" Text="百瑞" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="SaDhhJe" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Flying___pig" />
|
||||||
<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="Jwac" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="W丶北辰" />
|
<TextBlock Width="120" Margin="0,1.5" Text="万玖" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="才KRE" />
|
<TextBlock Width="120" Margin="0,1.5" Text="墨忆" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Yang_mistakeof" />
|
<TextBlock Width="120" Margin="0,1.5" Text="天刹" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="close eyes" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Cess" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="顾顾" />
|
<TextBlock Width="120" Margin="0,1.5" Text="ender_glass" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="LTuuxj" />
|
<TextBlock Width="120" Margin="0,1.5" Text="TT" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="花吃" />
|
<TextBlock Width="120" Margin="0,1.5" Text="白玄.雪狼" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="FICazk" />
|
<TextBlock Width="120" Margin="0,1.5" Text="MUCT" />
|
||||||
<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="WDSJ" />
|
<TextBlock Width="120" Margin="0,1.5" Text="吾皇万岁" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Tohka" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Ander·Les" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="lz" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Eoctopus" />
|
||||||
<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="Carl7412" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="MC小满" />
|
<TextBlock Width="120" Margin="0,1.5" Text="ShinyChariot" />
|
||||||
<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="水晶OTZ" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Jinji希子" />
|
||||||
<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="zhang1232" />
|
<TextBlock Width="120" Margin="0,1.5" Text="钱尹鹏" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Never" />
|
<TextBlock Width="120" Margin="0,1.5" Text="TBONC" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Fish_pomelo" />
|
<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="ShuangDaoRen" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="小七" />
|
<TextBlock Width="120" Margin="0,1.5" Text="PXZ233" />
|
||||||
<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="_章333_" />
|
<TextBlock Width="120" Margin="0,1.5" Text="66112447" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="孙杰" />
|
<TextBlock Width="120" Margin="0,1.5" Text="夏行子" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="wby" />
|
<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="Pari~" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="zzxniubi" />
|
<TextBlock Width="120" Margin="0,1.5" Text="红云" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="炎燚火淼淼" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Link-an" />
|
||||||
<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="oran9e" />
|
<TextBlock Width="120" Margin="0,1.5" Text="被偷去的睡眠" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="赤冰雨" />
|
<TextBlock Width="120" Margin="0,1.5" Text="liuxuan" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Urizen" />
|
<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="skyqyzm" />
|
<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="额外awa" />
|
<TextBlock Width="120" Margin="0,1.5" Text="S0D1UM" />
|
||||||
<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="Crimson" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="书童呀" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Mibo_MkIX" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="sxy192425" />
|
<TextBlock Width="120" Margin="0,1.5" Text="G.snine18^7" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="李好啊" />
|
<TextBlock Width="120" Margin="0,1.5" Text="两把雨伞" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="MH_Nine" />
|
<TextBlock Width="120" Margin="0,1.5" Text="古明地苑" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="周先生" />
|
<TextBlock Width="240" Margin="0,1.5" Text="MarbleMionshevic" />
|
||||||
<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="asai" />
|
||||||
<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="DHLH" />
|
<TextBlock Width="120" Margin="0,1.5" Text="沫神鹤" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Xayj" />
|
<TextBlock Width="120" Margin="0,1.5" Text="风已消逝" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="绳网用户#37" />
|
<TextBlock Width="120" Margin="0,1.5" Text="光意留闪" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="LLLL" />
|
<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="Akapigo" />
|
<TextBlock Width="120" Margin="0,1.5" Text="冰川泥" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Shink_guns" />
|
<TextBlock Width="120" Margin="0,1.5" Text="XunWei" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Aqua 极&坏." />
|
<TextBlock Width="120" Margin="0,1.5" Text="sirous" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="大事化小蛋糕" />
|
<TextBlock Width="120" Margin="0,1.5" Text="路过某打酱油的" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Nakiya233" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Gnight07" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="花小妖" />
|
<TextBlock Width="120" Margin="0,1.5" Text="结构德古拉" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="septebr" />
|
<TextBlock Width="120" Margin="0,1.5" Text="myyukee" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="一只马喽" />
|
<TextBlock Width="240" Margin="0,1.5" Text="云之彼端约定的地方" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="下暴雨BWB" />
|
<TextBlock Width="120" Margin="0,1.5" Text="苏玖" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="QAQ" />
|
<TextBlock Width="120" Margin="0,1.5" Text="赤沃净" />
|
||||||
<TextBlock Width="240" Margin="0,1.5" Text="sl土豆社区服主B友" />
|
<TextBlock Width="120" Margin="0,1.5" Text="YYC" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Wang" />
|
<TextBlock Width="120" Margin="0,1.5" Text="晨曦酒庄高冷男" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="......" />
|
<TextBlock Width="120" Margin="0,1.5" Text="herald112" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="ResTmoW" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Foxman" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="bochibochibo" />
|
<TextBlock Width="120" Margin="0,1.5" Text="KoreQAQ" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="铸魂之灵" />
|
<TextBlock Width="120" Margin="0,1.5" Text="TechOfRevo" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="柏柏柏" />
|
<TextBlock Width="120" Margin="0,1.5" Text="lqs" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Mart1s" />
|
<TextBlock Width="120" Margin="0,1.5" Text="简某" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="KuruM148" />
|
<TextBlock Width="120" Margin="0,1.5" Text="源起于此" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="KaiTouCrow" />
|
<TextBlock Width="120" Margin="0,1.5" Text="爱莉希雅" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="LIE-SHAN" />
|
<TextBlock Width="120" Margin="0,1.5" Text=" 和忧" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="慈悲方舟" />
|
<TextBlock Width="240" Margin="0,1.5" Text="全明星小面包批发商DIO" />
|
||||||
<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="U" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="摇椅上的猫" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Dumlet" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="五个麦卷" />
|
<TextBlock Width="120" Margin="0,1.5" Text="johnqian" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Miraclepoi" />
|
<TextBlock Width="120" Margin="0,1.5" Text="KANG" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="XiaoLI" />
|
<TextBlock Width="120" Margin="0,1.5" Text="owod" />
|
||||||
<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="oppo19" />
|
<TextBlock Width="120" Margin="0,1.5" Text="壹" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="博麗靈夢" />
|
<TextBlock Width="120" Margin="0,1.5" Text="UA-Ming" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="莹 of yours" />
|
<TextBlock Width="120" Margin="0,1.5" Text="可爱小探姬" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="ChinaFZXPVP" />
|
<TextBlock Width="120" Margin="0,1.5" Text="霜月" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="城之内sama" />
|
<TextBlock Width="120" Margin="0,1.5" Text="bud" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="ENXI" />
|
<TextBlock Width="120" Margin="0,1.5" Text="小虐SAIKYO" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="steve_c418" />
|
<TextBlock Width="120" Margin="0,1.5" Text="zealotand" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="洛长安" />
|
<TextBlock Width="120" Margin="0,1.5" Text="comico" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="magic_muggle" />
|
<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="JY" />
|
<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="wlsy" />
|
<TextBlock Width="120" Margin="0,1.5" Text="LOG175" />
|
||||||
<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="scp00813" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="xioyiao" />
|
<TextBlock Width="120" Margin="0,1.5" Text="宝宝" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="BunnyMiku" />
|
<TextBlock Width="120" Margin="0,1.5" Text="9527" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="dadagga" />
|
<TextBlock Width="120" Margin="0,1.5" Text="ICE_xwx" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="无极之笔" />
|
<TextBlock Width="120" Margin="0,1.5" Text="羽笙喵喵" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="xiaoyu" />
|
<TextBlock Width="120" Margin="0,1.5" Text="ssvgg(☉ x ☉)" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="王梓杰" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Happymeals" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="wjbjjd" />
|
<TextBlock Width="120" Margin="0,1.5" Text="shen12244" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Candy_Mo" />
|
<TextBlock Width="120" Margin="0,1.5" Text="一般路过AAA" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="lettmin_" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Niko" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="七九·Alnasl" />
|
<TextBlock Width="120" Margin="0,1.5" Text="qroiwopqri" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="辉" />
|
<TextBlock Width="120" Margin="0,1.5" Text="TringDron" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="何为最优解" />
|
<TextBlock Width="120" Margin="0,1.5" Text="有屳則名" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="crazy丶天人" />
|
<TextBlock Width="120" Margin="0,1.5" Text="TX2006" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="XsBlueSky" />
|
<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="tiechui" />
|
<TextBlock Width="120" Margin="0,1.5" Text="鬼泣々离殇" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Liu2Shi2Pu2" />
|
<TextBlock Width="120" Margin="0,1.5" Text="蒼崎青子" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Yu_s" />
|
<TextBlock Width="120" Margin="0,1.5" Text="wyh114514" />
|
||||||
<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="CC" />
|
<TextBlock Width="120" Margin="0,1.5" Text="XIAOSHUAI" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Slana23" />
|
<TextBlock Width="120" Margin="0,1.5" Text="saxioh" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="MMMy" />
|
<TextBlock Width="120" Margin="0,1.5" Text="baibaibai" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Venuse" />
|
<TextBlock Width="120" Margin="0,1.5" Text="事屑Jerry" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="microjie" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Rs32" />
|
||||||
<TextBlock Width="240" Margin="0,1.5" Text="Miner#Cetyleno~^" />
|
<TextBlock Width="120" Margin="0,1.5" Text="SPDish" />
|
||||||
<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="Reg" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="AL1Su-爱丽丝" />
|
<TextBlock Width="120" Margin="0,1.5" Text="hellord" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="我木有呆毛" />
|
<TextBlock Width="120" Margin="0,1.5" Text="时本ki" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="乌羽" />
|
<TextBlock Width="120" Margin="0,1.5" Text="mamana" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="知性de含羞草" />
|
<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="IED LTAM" />
|
<TextBlock Width="120" Margin="0,1.5" Text="wddjww" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="格罗夫斯基" />
|
<TextBlock Width="120" Margin="0,1.5" Text="xiao澄" />
|
||||||
<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="OniKata_Kayoko" />
|
||||||
<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="Echo" />
|
||||||
<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="jiege45" />
|
||||||
<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="布布曼" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="." />
|
<TextBlock Width="120" Margin="0,1.5" Text="qwqewe" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="枫" />
|
<TextBlock Width="120" Margin="0,1.5" Text="114514" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="jjj" />
|
<TextBlock Width="120" Margin="0,1.5" Text="YJ_42" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="clilick" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Xricron" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="我很快乐" />
|
<TextBlock Width="120" Margin="0,1.5" Text="抛弃大脑" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Phoenix tamer" />
|
<TextBlock Width="120" Margin="0,1.5" Text="10455885" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Lsp77" />
|
<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="ikun0014" />
|
<TextBlock Width="120" Margin="0,1.5" Text="sukous" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="IncredibleYu" />
|
<TextBlock Width="120" Margin="0,1.5" Text="册那" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="在下粉毛控" />
|
<TextBlock Width="120" Margin="0,1.5" Text="KMYLS" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="SuperCrazyK" />
|
<TextBlock Width="120" Margin="0,1.5" Text="kakadeso" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="阿柔" />
|
<TextBlock Width="120" Margin="0,1.5" Text="懒猫" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="HaKNa" />
|
<TextBlock Width="120" Margin="0,1.5" Text="清岚" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="胡十一" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Atopos" />
|
||||||
<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="20018" />
|
<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="Xiao_JIA" />
|
<TextBlock Width="120" Margin="0,1.5" Text="黑夜幽灵" />
|
||||||
<TextBlock Width="240" Margin="0,1.5" Text="龙腾我是你的头号粉丝" />
|
<TextBlock Width="120" Margin="0,1.5" Text="H1saNe" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="keer1563" />
|
<TextBlock Width="120" Margin="0,1.5" Text="故风" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="百鬼まル" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="DPSYnt" />
|
|
||||||
<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="迷路的猫" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Landsilde" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="ktyxlan_lan" />
|
<TextBlock Width="120" Margin="0,1.5" Text="zzz" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="琳琅039" />
|
<TextBlock Width="120" Margin="0,1.5" Text="星期三" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="黑色额度" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Ashburn" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="sahaua" />
|
<TextBlock Width="120" Margin="0,1.5" Text="123" />
|
||||||
<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="郁子恒是FW" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="NQ" />
|
<TextBlock Width="240" Margin="0,1.5" Text="每天吃吃吃吃吃不饱" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="我志永纯" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Freezhao" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="漫城" />
|
<TextBlock Width="120" Margin="0,1.5" Text="ZHypocrite" />
|
||||||
<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="RuthlessXdream" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="祭°" />
|
<TextBlock Width="120" Margin="0,1.5" Text="zv-vz" />
|
||||||
<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="REMOTE" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="ZGW2008" />
|
<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="KNISX" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="twokness" />
|
<TextBlock Width="120" Margin="0,1.5" Text="RainbowDashRD" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="hhy7171" />
|
<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="四分白Fortenz" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="dddr" />
|
<TextBlock Width="120" Margin="0,1.5" Text="UUZ" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="天气热" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Ankairis" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Emmanuel" />
|
<TextBlock Width="120" Margin="0,1.5" Text="Jn1E" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="夕尽暮染" />
|
<TextBlock Width="120" Margin="0,1.5" Text="云山如昨好" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Bob_Marcus" />
|
<TextBlock Width="120" Margin="0,1.5" Text="LYJ0415" />
|
||||||
<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="Awfrlu+" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="461863352" />
|
<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="Xing_K" />
|
<TextBlock Width="120" Margin="0,1.5" Text="xkw" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="yzt" />
|
<TextBlock Width="120" Margin="0,1.5" Text="KINO" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="nuycn" />
|
<TextBlock Width="120" Margin="0,1.5" Text="POTATO" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="鸡人" />
|
<TextBlock Width="120" Margin="0,1.5" Text="少昊氏" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="爱无界i" />
|
<TextBlock Width="240" Margin="0,1.5" Text="狂踹瘸子那條好腿丶" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Zik yeung" />
|
<TextBlock Width="240" Margin="0,1.5" Text="Thallium_Ash【铊尘】(坨坨)" />
|
||||||
<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="bajie79" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="cai1" />
|
<TextBlock Width="120" Margin="0,1.5" Text="紘垰" />
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="小比登T^T" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="hb" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="caizzz" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="yyin" />
|
|
||||||
<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="御坂1354号" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="木子" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="萤火焱攸" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="盼盼不是Panda" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="烤肉真香" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="ZhuTan12" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="tom" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="洛竹" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="foob" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="Garylu" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="阮绍轩" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="xin822" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="BAIgivele" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="ljc" />
|
|
||||||
<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="十言" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="vvvghjvvv" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="法斯" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="DASENSUN" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="HTS" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="握不住信新心" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="sycuuj133" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="天杉大将军" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="风见翎" />
|
|
||||||
<TextBlock Width="120" Margin="0,1.5" Text="江心Rain" />
|
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
<Grid Height="35">
|
<Grid Height="35">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
@@ -403,9 +360,11 @@
|
|||||||
</local:MyCard>
|
</local:MyCard>
|
||||||
<local:MyCard Margin="0,0,0,15" Title="法律信息" IsSwapped="True" CanSwap="True">
|
<local:MyCard Margin="0,0,0,15" Title="法律信息" IsSwapped="True" CanSwap="True">
|
||||||
<StackPanel Margin="25,39,23,20">
|
<StackPanel Margin="25,39,23,20">
|
||||||
<TextBlock Text="隐私说明" TextWrapping="Wrap" Margin="0,6,0,4" FontWeight="Bold" />
|
<TextBlock Text="匿名数据收集" TextWrapping="Wrap" Margin="0,6,0,4" FontWeight="Bold" />
|
||||||
<TextBlock Margin="0,0,0,2" LineHeight="17" Text="本软件的 User Agent 中包含启动器的版本号,以统计各版本的用户数量。 除此之外,本软件不会向开发者上传任何其他信息。" TextWrapping="Wrap" />
|
<TextBlock Margin="0,0,0,2" LineHeight="17" Text="当下载失败、PCL 出错、游戏崩溃等事件时,PCL 会匿名上报信息,以通知龙猫 “哦吼,出错了”,让龙猫能更好地修 Bug……(PCL 不会上传或收集任何个人信息,包括上报的东西里面也没有!)
你可以在 设置 → 其他 → 启动器 中关闭上报,不过龙猫就不知道你遇到了什么 Bug 了……" TextWrapping="Wrap" />
|
||||||
<TextBlock Text="其他信息" TextWrapping="Wrap" Margin="0,12,0,4" FontWeight="Bold" />
|
<TextBlock Text="隐私声明与个人信息保护政策" TextWrapping="Wrap" Margin="0,10,0,4" FontWeight="Bold" />
|
||||||
|
<TextBlock Margin="0,0,0,2" LineHeight="17" Text="PCL 没有收集个人信息,所以这里其实啥都不用写……
留个这个其实只是为了让你知道 PCL 没有收集个人信息,诶嘿。" TextWrapping="Wrap" />
|
||||||
|
<TextBlock Text="其他信息" TextWrapping="Wrap" Margin="0,10,0,4" FontWeight="Bold" />
|
||||||
<TextBlock Margin="0,0,0,2" LineHeight="17" Text="Copyright © 龙腾猫跃 2016. All Rights Reserved. 计算机软件著作权登记号:2020SR0875133 违法违规行为举报投诉邮箱:hexdragon@vip.qq.com 非 MINECRAFT 官方产品。未经 MOJANG 或 MICROSOFT 批准,也不与 MOJANG 或 MICROSOFT 关联。" TextWrapping="Wrap" />
|
<TextBlock Margin="0,0,0,2" LineHeight="17" Text="Copyright © 龙腾猫跃 2016. All Rights Reserved. 计算机软件著作权登记号:2020SR0875133 违法违规行为举报投诉邮箱:hexdragon@vip.qq.com 非 MINECRAFT 官方产品。未经 MOJANG 或 MICROSOFT 批准,也不与 MOJANG 或 MICROSOFT 关联。" TextWrapping="Wrap" />
|
||||||
<StackPanel Orientation="Horizontal" Height="35" HorizontalAlignment="Left" Margin="0,12,0,0">
|
<StackPanel Orientation="Horizontal" Height="35" HorizontalAlignment="Left" Margin="0,12,0,0">
|
||||||
<local:MyButton Text="用户协议与免责声明" Width="170" Padding="13,0" Margin="0,0,20,0" ColorType="Highlight" EventType="打开网页" EventData="https://shimo.im/docs/rGrd8pY8xWkt6ryW" />
|
<local:MyButton Text="用户协议与免责声明" Width="170" Padding="13,0" Margin="0,0,20,0" ColorType="Highlight" EventType="打开网页" EventData="https://shimo.im/docs/rGrd8pY8xWkt6ryW" />
|
||||||
|
|||||||
@@ -18,12 +18,6 @@
|
|||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub BtnAboutBmclapi_Click(sender As Object, e As EventArgs) Handles BtnAboutBmclapi.Click
|
|
||||||
OpenWebsite("https://afdian.com/a/bangbang93")
|
|
||||||
End Sub
|
|
||||||
Private Sub BtnAboutWiki_Click(sender As Object, e As EventArgs) Handles BtnAboutWiki.Click
|
|
||||||
OpenWebsite("https://www.mcmod.cn")
|
|
||||||
End Sub
|
|
||||||
Public Shared Sub CopyUniqueAddress() Handles BtnDonateCopy.Click
|
Public Shared Sub CopyUniqueAddress() Handles BtnDonateCopy.Click
|
||||||
ClipboardSet(UniqueAddress)
|
ClipboardSet(UniqueAddress)
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
{"SystemSystemCache", New SetupEntry("", Source:=SetupSource.Registry)},
|
{"SystemSystemCache", New SetupEntry("", Source:=SetupSource.Registry)},
|
||||||
{"SystemSystemUpdate", New SetupEntry(0)},
|
{"SystemSystemUpdate", New SetupEntry(0)},
|
||||||
{"SystemSystemActivity", New SetupEntry(0)},
|
{"SystemSystemActivity", New SetupEntry(0)},
|
||||||
|
{"SystemSystemTelemetry", New SetupEntry(True, Source:=SetupSource.Registry)},
|
||||||
{"CacheExportConfig", New SetupEntry("", Source:=SetupSource.Registry)},
|
{"CacheExportConfig", New SetupEntry("", Source:=SetupSource.Registry)},
|
||||||
{"CacheSavedPageUrl", New SetupEntry("", Source:=SetupSource.Registry)},
|
{"CacheSavedPageUrl", New SetupEntry("", Source:=SetupSource.Registry)},
|
||||||
{"CacheSavedPageVersion", New SetupEntry("", Source:=SetupSource.Registry)},
|
{"CacheSavedPageVersion", New SetupEntry("", Source:=SetupSource.Registry)},
|
||||||
@@ -123,7 +124,7 @@
|
|||||||
{"ToolDownloadTranslateV2", New SetupEntry(1, Source:=SetupSource.Registry)},
|
{"ToolDownloadTranslateV2", New SetupEntry(1, Source:=SetupSource.Registry)},
|
||||||
{"ToolDownloadIgnoreQuilt", New SetupEntry(True, Source:=SetupSource.Registry)},
|
{"ToolDownloadIgnoreQuilt", New SetupEntry(True, Source:=SetupSource.Registry)},
|
||||||
{"ToolDownloadCert", New SetupEntry(False, Source:=SetupSource.Registry)},
|
{"ToolDownloadCert", New SetupEntry(False, Source:=SetupSource.Registry)},
|
||||||
{"ToolDownloadMod", New SetupEntry(1, Source:=SetupSource.Registry)},
|
{"ToolDownloadMod", New SetupEntry(2, Source:=SetupSource.Registry)},
|
||||||
{"ToolModLocalNameStyle", New SetupEntry(0, Source:=SetupSource.Registry)},
|
{"ToolModLocalNameStyle", New SetupEntry(0, Source:=SetupSource.Registry)},
|
||||||
{"ToolUpdateAlpha", New SetupEntry(0, Source:=SetupSource.Registry, Encoded:=True)},
|
{"ToolUpdateAlpha", New SetupEntry(0, Source:=SetupSource.Registry, Encoded:=True)},
|
||||||
{"ToolUpdateRelease", New SetupEntry(False, Source:=SetupSource.Registry)},
|
{"ToolUpdateRelease", New SetupEntry(False, Source:=SetupSource.Registry)},
|
||||||
@@ -356,13 +357,6 @@
|
|||||||
Return Not HasIniKey(Version.Path & "PCL\Setup.ini", Key)
|
Return Not HasIniKey(Version.Path & "PCL\Setup.ini", Key)
|
||||||
End Select
|
End Select
|
||||||
End Function
|
End Function
|
||||||
''' <summary>
|
|
||||||
''' 某个设置项是否加密。
|
|
||||||
''' </summary>
|
|
||||||
Public Function IsEncoded(Key As String) As Boolean
|
|
||||||
If Not SetupDict.ContainsKey(Key) Then Throw New KeyNotFoundException("未找到设置项:" & Key) With {.Source = Key}
|
|
||||||
Return SetupDict(Key).Encoded
|
|
||||||
End Function
|
|
||||||
|
|
||||||
''' <summary>
|
''' <summary>
|
||||||
''' 读取设置。
|
''' 读取设置。
|
||||||
|
|||||||
@@ -242,7 +242,7 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
<local:MyTextBox x:Name="TextAdvanceJvm" Grid.ColumnSpan="2" Tag="LaunchAdvanceJvm" Grid.Column="1" ToolTip="启动 Minecraft 时使用的额外 JVM 参数,除非有确定把握,否则请不要修改。
支持 Minecraft 版本 JSON 中的字符串替换标记,例如 ${library_directory}。" MaxLength="4000"
|
<local:MyTextBox x:Name="TextAdvanceJvm" Grid.ColumnSpan="2" Tag="LaunchAdvanceJvm" Grid.Column="1" ToolTip="启动 Minecraft 时使用的额外 JVM 参数,除非有确定把握,否则请不要修改。
支持 Minecraft 版本 JSON 中的字符串替换标记,例如 ${library_directory}。" MaxLength="4000"
|
||||||
Height="100" AcceptsReturn="True" TextWrapping="Wrap" VerticalContentAlignment="Top" Padding="0,5" VerticalScrollBarVisibility="Auto" />
|
Height="100" AcceptsReturn="True" TextWrapping="Wrap" VerticalContentAlignment="Top" Padding="0,5" VerticalScrollBarVisibility="Auto" />
|
||||||
<TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="游戏参数尾部" Margin="0,0,25,0" />
|
<TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="游戏参数" Margin="0,0,25,0" />
|
||||||
<local:MyTextBox x:Name="TextAdvanceGame" Grid.Row="2" Grid.ColumnSpan="2" Tag="LaunchAdvanceGame" Grid.Column="1" ToolTip="文本框中的内容将会被直接拼合在启动参数的末尾。
例如,输入 --demo 则会以试玩模式启动游戏。
支持 Minecraft 版本 JSON 中的字符串替换标记,例如 ${library_directory}。" />
|
<local:MyTextBox x:Name="TextAdvanceGame" Grid.Row="2" Grid.ColumnSpan="2" Tag="LaunchAdvanceGame" Grid.Column="1" ToolTip="文本框中的内容将会被直接拼合在启动参数的末尾。
例如,输入 --demo 则会以试玩模式启动游戏。
支持 Minecraft 版本 JSON 中的字符串替换标记,例如 ${library_directory}。" />
|
||||||
<TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="启动前执行命令" Margin="0,0,25,0" />
|
<TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="启动前执行命令" Margin="0,0,25,0" />
|
||||||
<local:MyTextBox x:Name="TextAdvanceRun" Grid.Row="4" Grid.ColumnSpan="2" Tag="LaunchAdvanceRun" Grid.Column="1" HintText=""
|
<local:MyTextBox x:Name="TextAdvanceRun" Grid.Row="4" Grid.ColumnSpan="2" Tag="LaunchAdvanceRun" Grid.Column="1" HintText=""
|
||||||
|
|||||||
@@ -62,16 +62,18 @@
|
|||||||
<RowDefinition Height="7" />
|
<RowDefinition Height="7" />
|
||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
<RowDefinition Height="7" />
|
<RowDefinition Height="7" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="7" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<!--<TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Left" Text="下载源" Margin="0,0,25,0" />
|
<TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Left" Text="来源" Margin="0,0,25,0" />
|
||||||
<local:MyComboBox x:Name="ComboDownloadMod" Grid.Row="0" Grid.ColumnSpan="2" Tag="ToolDownloadMod" Grid.Column="1">
|
<local:MyComboBox x:Name="ComboDownloadMod" Grid.Row="0" Grid.ColumnSpan="2" Tag="ToolDownloadMod" Grid.Column="1">
|
||||||
<local:MyComboBoxItem Content="尽量使用镜像源(暂时无效)" />
|
<local:MyComboBoxItem Content="尽量使用镜像源(可能缺少刚刚更新的版本)" />
|
||||||
<local:MyComboBoxItem Content="仅在官方源加载缓慢时改用镜像源" />
|
<local:MyComboBoxItem Content="仅在官方源加载缓慢时改用镜像源" />
|
||||||
<local:MyComboBoxItem Content="尽量使用官方源" IsSelected="True" />
|
<local:MyComboBoxItem Content="尽量使用官方源" IsSelected="True" />
|
||||||
</local:MyComboBox>-->
|
</local:MyComboBox>
|
||||||
<TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Left" Text="文件名格式" Margin="0,0,25,0" />
|
<TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="文件名格式" Margin="0,0,25,0" />
|
||||||
<local:MyComboBox Grid.Row="0" x:Name="ComboDownloadTranslateV2" Grid.ColumnSpan="2" Tag="ToolDownloadTranslateV2" Grid.Column="1"
|
<local:MyComboBox Grid.Row="2" x:Name="ComboDownloadTranslateV2" Grid.ColumnSpan="2" Tag="ToolDownloadTranslateV2" Grid.Column="1"
|
||||||
ToolTip="下载社区资源时,其默认文件名的格式">
|
ToolTip="下载社区资源时,其默认文件名的格式">
|
||||||
<local:MyComboBoxItem Content="【机械动力】create-1.21.1-6.0.4" />
|
<local:MyComboBoxItem Content="【机械动力】create-1.21.1-6.0.4" />
|
||||||
<local:MyComboBoxItem Content="[机械动力] create-1.21.1-6.0.4" IsSelected="True" />
|
<local:MyComboBoxItem Content="[机械动力] create-1.21.1-6.0.4" IsSelected="True" />
|
||||||
@@ -79,13 +81,13 @@
|
|||||||
<local:MyComboBoxItem Content="create-1.21.1-6.0.4-机械动力" />
|
<local:MyComboBoxItem Content="create-1.21.1-6.0.4-机械动力" />
|
||||||
<local:MyComboBoxItem Content="create-1.21.1-6.0.4" />
|
<local:MyComboBoxItem Content="create-1.21.1-6.0.4" />
|
||||||
</local:MyComboBox>
|
</local:MyComboBox>
|
||||||
<TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="Mod 管理样式" Margin="0,0,25,0" />
|
<TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="Mod 管理样式" Margin="0,0,25,0" />
|
||||||
<local:MyComboBox Grid.Row="2" x:Name="ComboModLocalNameStyle" Grid.ColumnSpan="2" Tag="ToolModLocalNameStyle" Grid.Column="1"
|
<local:MyComboBox Grid.Row="4" x:Name="ComboModLocalNameStyle" Grid.ColumnSpan="2" Tag="ToolModLocalNameStyle" Grid.Column="1"
|
||||||
ToolTip="在 Mod 管理页面中,Mod 项的显示方式">
|
ToolTip="在 Mod 管理页面中,Mod 项的显示方式">
|
||||||
<local:MyComboBoxItem Content="标题显示译名,详情显示文件名" IsSelected="True" />
|
<local:MyComboBoxItem Content="标题显示译名,详情显示文件名" IsSelected="True" />
|
||||||
<local:MyComboBoxItem Content="标题显示文件名,详情显示译名" />
|
<local:MyComboBoxItem Content="标题显示文件名,详情显示译名" />
|
||||||
</local:MyComboBox>
|
</local:MyComboBox>
|
||||||
<local:MyCheckBox Margin="0,2,0,4" Text="在显示 Mod 加载器时忽略 Quilt" Grid.Row="4" Height="22" Grid.ColumnSpan="2"
|
<local:MyCheckBox Margin="0,2,0,4" Text="在显示 Mod 加载器时忽略 Quilt" Grid.Row="6" Height="22" Grid.ColumnSpan="2"
|
||||||
x:Name="CheckDownloadIgnoreQuilt" Tag="ToolDownloadIgnoreQuilt" />
|
x:Name="CheckDownloadIgnoreQuilt" Tag="ToolDownloadIgnoreQuilt" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
@@ -109,7 +111,7 @@
|
|||||||
<local:MyCheckBox Text="自动设置为中文" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="5" x:Name="CheckHelpChinese" Tag="ToolHelpChinese" />
|
<local:MyCheckBox Text="自动设置为中文" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="5" x:Name="CheckHelpChinese" Tag="ToolHelpChinese" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</local:MyCard>
|
</local:MyCard>
|
||||||
<local:MyCard Margin="0,0,0,15" Title="系统">
|
<local:MyCard Margin="0,0,0,15" Title="启动器">
|
||||||
<Grid Margin="25,40,25,20">
|
<Grid Margin="25,40,25,20">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" SharedSizeGroup="Name" />
|
<ColumnDefinition Width="Auto" SharedSizeGroup="Name" />
|
||||||
@@ -124,6 +126,7 @@
|
|||||||
<RowDefinition Height="5" />
|
<RowDefinition Height="5" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" Text="启动器更新" Margin="0,0,25,0" />
|
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" Text="启动器更新" Margin="0,0,25,0" />
|
||||||
<local:MyComboBox x:Name="ComboSystemUpdate" Tag="SystemSystemUpdate" Grid.Column="1">
|
<local:MyComboBox x:Name="ComboSystemUpdate" Tag="SystemSystemUpdate" Grid.Column="1">
|
||||||
@@ -145,7 +148,10 @@
|
|||||||
<local:ValidateFolderPath UseMinecraftCharCheck="False" />
|
<local:ValidateFolderPath UseMinecraftCharCheck="False" />
|
||||||
</local:MyTextBox.ValidateRules>
|
</local:MyTextBox.ValidateRules>
|
||||||
</local:MyTextBox>
|
</local:MyTextBox>
|
||||||
<Grid Height="35" Grid.Row="6" Grid.ColumnSpan="5" Margin="0,12,0,0">
|
<local:MyCheckBox Margin="0,5,0,4" Text="匿名数据收集" Grid.Row="6" Height="22" Grid.ColumnSpan="2"
|
||||||
|
x:Name="CheckSystemTelemetry" Tag="SystemSystemTelemetry"
|
||||||
|
ToolTip="当下载失败、PCL 出错、游戏崩溃等事件时,PCL 会匿名上报情况,以通知龙猫 “哦吼,出错了”,让龙猫能更好地修 Bug……
你可以关闭上报,不过龙猫就不知道你遇到了什么 Bug 了…… PCL 不会上传或收集任何个人信息,包括上报的东西里面也没有!" />
|
||||||
|
<Grid Height="35" Grid.Row="7" Grid.ColumnSpan="5" Margin="0,12,0,0">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" SharedSizeGroup="Button" />
|
<ColumnDefinition Width="Auto" SharedSizeGroup="Button" />
|
||||||
<ColumnDefinition Width="Auto" SharedSizeGroup="Button" />
|
<ColumnDefinition Width="Auto" SharedSizeGroup="Button" />
|
||||||
@@ -155,7 +161,7 @@
|
|||||||
<local:MyButton Grid.Column="1" x:Name="BtnSystemSettingExp" MinWidth="140" Text="导出设置" Padding="13,0" Margin="0,0,20,0" />
|
<local:MyButton Grid.Column="1" x:Name="BtnSystemSettingExp" MinWidth="140" Text="导出设置" Padding="13,0" Margin="0,0,20,0" />
|
||||||
<local:MyButton Grid.Column="2" x:Name="BtnSystemSettingImp" MinWidth="140" Text="导入设置" Padding="13,0" Margin="0,0,20,0" />
|
<local:MyButton Grid.Column="2" x:Name="BtnSystemSettingImp" MinWidth="140" Text="导入设置" Padding="13,0" Margin="0,0,20,0" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid Height="35" Grid.Row="7" Grid.ColumnSpan="5" Margin="0,12,0,0" x:Name="PanDonate">
|
<Grid Height="35" Grid.Row="8" Grid.ColumnSpan="5" Margin="0,12,0,0" x:Name="PanDonate">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" SharedSizeGroup="Button" />
|
<ColumnDefinition Width="Auto" SharedSizeGroup="Button" />
|
||||||
<ColumnDefinition Width="Auto" SharedSizeGroup="Button" />
|
<ColumnDefinition Width="Auto" SharedSizeGroup="Button" />
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
'Mod 与整合包
|
'Mod 与整合包
|
||||||
ComboDownloadTranslateV2.SelectedIndex = Setup.Get("ToolDownloadTranslateV2")
|
ComboDownloadTranslateV2.SelectedIndex = Setup.Get("ToolDownloadTranslateV2")
|
||||||
'ComboDownloadMod.SelectedIndex = Setup.Get("ToolDownloadMod")
|
ComboDownloadMod.SelectedIndex = Setup.Get("ToolDownloadMod")
|
||||||
ComboModLocalNameStyle.SelectedIndex = Setup.Get("ToolModLocalNameStyle")
|
ComboModLocalNameStyle.SelectedIndex = Setup.Get("ToolModLocalNameStyle")
|
||||||
CheckDownloadIgnoreQuilt.Checked = Setup.Get("ToolDownloadIgnoreQuilt")
|
CheckDownloadIgnoreQuilt.Checked = Setup.Get("ToolDownloadIgnoreQuilt")
|
||||||
|
|
||||||
@@ -50,6 +50,7 @@
|
|||||||
ComboSystemUpdate.SelectedIndex = Setup.Get("SystemSystemUpdate")
|
ComboSystemUpdate.SelectedIndex = Setup.Get("SystemSystemUpdate")
|
||||||
ComboSystemActivity.SelectedIndex = Setup.Get("SystemSystemActivity")
|
ComboSystemActivity.SelectedIndex = Setup.Get("SystemSystemActivity")
|
||||||
TextSystemCache.Text = Setup.Get("SystemSystemCache")
|
TextSystemCache.Text = Setup.Get("SystemSystemCache")
|
||||||
|
CheckSystemTelemetry.Checked = Setup.Get("SystemSystemTelemetry")
|
||||||
|
|
||||||
'调试选项
|
'调试选项
|
||||||
CheckDebugMode.Checked = Setup.Get("SystemDebugMode")
|
CheckDebugMode.Checked = Setup.Get("SystemDebugMode")
|
||||||
@@ -81,6 +82,7 @@
|
|||||||
Setup.Reset("SystemSystemCache")
|
Setup.Reset("SystemSystemCache")
|
||||||
Setup.Reset("SystemSystemUpdate")
|
Setup.Reset("SystemSystemUpdate")
|
||||||
Setup.Reset("SystemSystemActivity")
|
Setup.Reset("SystemSystemActivity")
|
||||||
|
Setup.Reset("SystemSystemTelemetry")
|
||||||
|
|
||||||
Log("[Setup] 已初始化启动器页设置")
|
Log("[Setup] 已初始化启动器页设置")
|
||||||
Hint("已初始化启动器页设置!", HintType.Finish, False)
|
Hint("已初始化启动器页设置!", HintType.Finish, False)
|
||||||
@@ -92,13 +94,13 @@
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'将控件改变路由到设置改变
|
'将控件改变路由到设置改变
|
||||||
Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckDebugMode.Change, CheckDebugDelay.Change, CheckDebugSkipCopy.Change, CheckUpdateRelease.Change, CheckUpdateSnapshot.Change, CheckHelpChinese.Change, CheckDownloadIgnoreQuilt.Change, CheckDownloadCert.Change
|
Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckDebugMode.Change, CheckDebugDelay.Change, CheckDebugSkipCopy.Change, CheckUpdateRelease.Change, CheckUpdateSnapshot.Change, CheckHelpChinese.Change, CheckDownloadIgnoreQuilt.Change, CheckDownloadCert.Change, CheckSystemTelemetry.Change
|
||||||
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked)
|
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked)
|
||||||
End Sub
|
End Sub
|
||||||
Private Shared Sub SliderChange(sender As MySlider, e As Object) Handles SliderDebugAnim.Change, SliderDownloadThread.Change, SliderDownloadSpeed.Change
|
Private Shared Sub SliderChange(sender As MySlider, e As Object) Handles SliderDebugAnim.Change, SliderDownloadThread.Change, SliderDownloadSpeed.Change
|
||||||
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Value)
|
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Value)
|
||||||
End Sub
|
End Sub
|
||||||
Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboDownloadVersion.SelectionChanged, ComboModLocalNameStyle.SelectionChanged, ComboDownloadTranslateV2.SelectionChanged, ComboSystemUpdate.SelectionChanged, ComboSystemActivity.SelectionChanged, ComboDownloadSource.SelectionChanged
|
Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboDownloadVersion.SelectionChanged, ComboModLocalNameStyle.SelectionChanged, ComboDownloadTranslateV2.SelectionChanged, ComboSystemUpdate.SelectionChanged, ComboSystemActivity.SelectionChanged, ComboDownloadSource.SelectionChanged, ComboDownloadMod.SelectionChanged
|
||||||
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex)
|
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex)
|
||||||
End Sub
|
End Sub
|
||||||
Private Shared Sub TextBoxChange(sender As MyTextBox, e As Object) Handles TextSystemCache.ValidatedTextChanged
|
Private Shared Sub TextBoxChange(sender As MyTextBox, e As Object) Handles TextSystemCache.ValidatedTextChanged
|
||||||
|
|||||||
@@ -211,7 +211,7 @@
|
|||||||
<TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Left" Text="Java 虚拟机参数" Margin="0,0,25,0" />
|
<TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Left" Text="Java 虚拟机参数" Margin="0,0,25,0" />
|
||||||
<local:MyTextBox x:Name="TextAdvanceJvm" Grid.Row="0" Grid.ColumnSpan="2" Tag="VersionAdvanceJvm" Grid.Column="1" MaxLength="4000" ToolTip="启动 Minecraft 时使用的额外 JVM 参数,在没有确定把握的情况下请不要尝试修改。
支持 Minecraft 版本 JSON 中的字符串替换标记,例如 ${library_directory}。

若留空,则跟随全局设置的值。" HintText="跟随全局设置"
|
<local:MyTextBox x:Name="TextAdvanceJvm" Grid.Row="0" Grid.ColumnSpan="2" Tag="VersionAdvanceJvm" Grid.Column="1" MaxLength="4000" ToolTip="启动 Minecraft 时使用的额外 JVM 参数,在没有确定把握的情况下请不要尝试修改。
支持 Minecraft 版本 JSON 中的字符串替换标记,例如 ${library_directory}。

若留空,则跟随全局设置的值。" HintText="跟随全局设置"
|
||||||
Height="100" AcceptsReturn="True" TextWrapping="Wrap" VerticalContentAlignment="Top" Padding="0,5" VerticalScrollBarVisibility="Auto" />
|
Height="100" AcceptsReturn="True" TextWrapping="Wrap" VerticalContentAlignment="Top" Padding="0,5" VerticalScrollBarVisibility="Auto" />
|
||||||
<TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="游戏参数尾部" Margin="0,0,25,0" />
|
<TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="游戏参数" Margin="0,0,25,0" />
|
||||||
<local:MyTextBox x:Name="TextAdvanceGame" Grid.Row="2" Grid.ColumnSpan="2" Tag="VersionAdvanceGame" Grid.Column="1" ToolTip="文本框中的内容将会被直接拼合在启动参数的末尾。
例如,输入 --demo 则会以试玩模式启动游戏。
支持 Minecraft 版本 JSON 中的字符串替换标记,例如 ${library_directory}。

若留空,则跟随全局设置的值。" HintText="跟随全局设置" />
|
<local:MyTextBox x:Name="TextAdvanceGame" Grid.Row="2" Grid.ColumnSpan="2" Tag="VersionAdvanceGame" Grid.Column="1" ToolTip="文本框中的内容将会被直接拼合在启动参数的末尾。
例如,输入 --demo 则会以试玩模式启动游戏。
支持 Minecraft 版本 JSON 中的字符串替换标记,例如 ${library_directory}。

若留空,则跟随全局设置的值。" HintText="跟随全局设置" />
|
||||||
<TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="启动前执行命令" Margin="0,0,25,3" />
|
<TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="启动前执行命令" Margin="0,0,25,3" />
|
||||||
<local:MyTextBox x:Name="TextAdvanceRun" Grid.Row="4" Grid.ColumnSpan="2" Tag="VersionAdvanceRun" Grid.Column="1" HintText="" Margin="0,0,0,3"
|
<local:MyTextBox x:Name="TextAdvanceRun" Grid.Row="4" Grid.ColumnSpan="2" Tag="VersionAdvanceRun" Grid.Column="1" HintText="" Margin="0,0,0,3"
|
||||||
|
|||||||
@@ -355,6 +355,15 @@ PreFin:
|
|||||||
|
|
||||||
#Region "服务器"
|
#Region "服务器"
|
||||||
|
|
||||||
|
'自动替换标点
|
||||||
|
Private Sub TextServerEnter_Change() Handles TextServerEnter.TextChanged
|
||||||
|
Dim NewText = TextServerEnter.Text.Replace(":", ":").Replace("。", ".")
|
||||||
|
If NewText = TextServerEnter.Text Then Return
|
||||||
|
Dim CurrentPosition = TextServerEnter.SelectionStart '重设焦点
|
||||||
|
TextServerEnter.Text = NewText
|
||||||
|
TextServerEnter.SelectionStart = CurrentPosition
|
||||||
|
End Sub
|
||||||
|
|
||||||
'全局
|
'全局
|
||||||
Private ComboServerLoginLast As Integer
|
Private ComboServerLoginLast As Integer
|
||||||
Private Sub ComboServerLogin_Changed() Handles ComboServerLogin.SelectionChanged, TextServerNide.ValidatedTextChanged, TextServerAuthServer.ValidatedTextChanged, TextServerAuthRegister.ValidatedTextChanged
|
Private Sub ComboServerLogin_Changed() Handles ComboServerLogin.SelectionChanged, TextServerNide.ValidatedTextChanged, TextServerAuthServer.ValidatedTextChanged, TextServerAuthRegister.ValidatedTextChanged
|
||||||
@@ -399,9 +408,6 @@ PreFin:
|
|||||||
TextServerAuthName.Text = "LittleSkin 登录"
|
TextServerAuthName.Text = "LittleSkin 登录"
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Shared Sub TextServerEnter_Change(sender As MyTextBox, e As Object) Handles TextServerEnter.LostFocus
|
|
||||||
sender.Text = sender.Text.Replace(":", ":")
|
|
||||||
End Sub
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Java 选择"
|
#Region "Java 选择"
|
||||||
|
|||||||
@@ -138,6 +138,10 @@
|
|||||||
Text="· 下载版本:切换到 EventData 对应的 Minecraft 下载页面"/>
|
Text="· 下载版本:切换到 EventData 对应的 Minecraft 下载页面"/>
|
||||||
<local:MyButton Margin="0,5,0,6" Width="250" Height="35"
|
<local:MyButton Margin="0,5,0,6" Width="250" Height="35"
|
||||||
Text="下载 Minecraft 1.12.2" EventType="下载版本" EventData="1.12.2"/>
|
Text="下载 Minecraft 1.12.2" EventType="下载版本" EventData="1.12.2"/>
|
||||||
|
<TextBlock Margin="0,4,0,4"
|
||||||
|
Text="· 修改设置:将 PCL 的特定设置修改为特定值"/>
|
||||||
|
<local:MyButton Margin="0,5,0,6" Width="250" Height="35"
|
||||||
|
Text="将窗口改为半透明" EventType="修改设置" EventData="UiLauncherTransparent|400"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</local:MyCard>
|
</local:MyCard>
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user