2.10.9
This commit is contained in:
@@ -290,9 +290,9 @@
|
||||
Sub(MyLoader)
|
||||
Select Case MyLoader.State
|
||||
Case LoadState.Failed
|
||||
Hint(MyLoader.Name & "失败:" & MyLoader.Error.GetBrief(), HintType.Critical)
|
||||
Hint(MyLoader.Name & "失败:" & MyLoader.Error.GetBrief(), HintType.Red)
|
||||
Case LoadState.Aborted
|
||||
Hint(MyLoader.Name & "已取消!", HintType.Info)
|
||||
Hint(MyLoader.Name & "已取消!", HintType.Blue)
|
||||
Case LoadState.Loading
|
||||
Return '不重新加载版本列表
|
||||
End Select
|
||||
@@ -326,7 +326,7 @@
|
||||
Dim DefaultFolder As String = Nothing
|
||||
If File.Type <> CompType.ModPack Then
|
||||
Dim SubFolder As String = Nothing
|
||||
Select Case Project.Type
|
||||
Select Case File.Type
|
||||
Case CompType.Mod : SubFolder = "mods\"
|
||||
Case CompType.ResourcePack : SubFolder = "resourcepacks\"
|
||||
Case CompType.Shader : SubFolder = "shaderpacks\"
|
||||
@@ -346,7 +346,7 @@
|
||||
Function(Version)
|
||||
If Not Version.IsLoaded Then Version.Load()
|
||||
'只对 Mod 和数据包进行版本检测
|
||||
If Project.Type = CompType.Mod OrElse Project.Type = CompType.DataPack Then
|
||||
If File.Type = CompType.Mod OrElse File.Type = CompType.DataPack Then
|
||||
If File.GameVersions.Any(Function(v) v.Contains(".")) AndAlso
|
||||
Not File.GameVersions.Any(Function(v) v.Contains(".") AndAlso v = Version.Version.McName) Then Return False
|
||||
End If
|
||||
@@ -359,8 +359,8 @@
|
||||
Return False
|
||||
End Function
|
||||
'获取常规资源默认下载位置
|
||||
If CachedFolder.ContainsKey(Project.Type) Then
|
||||
DefaultFolder = CachedFolder(Project.Type)
|
||||
If CachedFolder.ContainsKey(File.Type) Then
|
||||
DefaultFolder = CachedFolder(File.Type)
|
||||
Log($"[Comp] 使用上次下载时的文件夹作为默认下载位置:{DefaultFolder}")
|
||||
ElseIf McVersionCurrent IsNot Nothing AndAlso IsVersionSuitable(McVersionCurrent) Then
|
||||
DefaultFolder = $"{McVersionCurrent.PathIndie}{SubFolder}"
|
||||
@@ -425,7 +425,7 @@
|
||||
If Not Target.Contains("\") Then Return
|
||||
'构造步骤加载器
|
||||
Dim LoaderName As String = Desc & "下载:" & IO.Path.GetFileNameWithoutExtension(Target) & " "
|
||||
If Target <> DefaultFolder Then CachedFolder(Project.Type) = GetPathFromFullPath(Target)
|
||||
If Target <> DefaultFolder Then CachedFolder(File.Type) = GetPathFromFullPath(Target)
|
||||
Dim Loaders As New List(Of LoaderBase)
|
||||
Loaders.Add(New LoaderDownload("下载文件", New List(Of NetFile) From {File.ToNetFile(Target)}) With {.ProgressWeight = 6, .Block = True})
|
||||
'启动
|
||||
|
||||
@@ -32,7 +32,7 @@ Public Module ModDownloadLib
|
||||
For Each OngoingLoader In LoaderTaskbar.ToList()
|
||||
If OngoingLoader.Name <> $"Minecraft {Id} 下载" Then Continue For
|
||||
If Behaviour = NetPreDownloadBehaviour.ExitWhileExistsOrDownloading Then Return OngoingLoader
|
||||
Hint("该版本正在下载中!", HintType.Critical)
|
||||
Hint("该版本正在下载中!", HintType.Red)
|
||||
Return OngoingLoader
|
||||
Next
|
||||
|
||||
@@ -223,7 +223,7 @@ Public Module ModDownloadLib
|
||||
'重复任务检查
|
||||
For Each OngoingLoader In LoaderTaskbar.ToList()
|
||||
If OngoingLoader.Name <> $"Minecraft {Id} 服务端下载" Then Continue For
|
||||
Hint("该服务端正在下载中!", HintType.Critical)
|
||||
Hint("该服务端正在下载中!", HintType.Red)
|
||||
Return
|
||||
Next
|
||||
|
||||
@@ -241,7 +241,7 @@ Public Module ModDownloadLib
|
||||
File.Delete(VersionFolder & Id & ".json")
|
||||
If Not New DirectoryInfo(VersionFolder).GetFileSystemInfos.Any() Then Directory.Delete(VersionFolder)
|
||||
Task.Output = New List(Of NetFile)
|
||||
Hint($"Mojang 没有给 Minecraft {Id} 提供官方服务端下载,没法下,撤退!", HintType.Critical)
|
||||
Hint($"Mojang 没有给 Minecraft {Id} 提供官方服务端下载,没法下,撤退!", HintType.Red)
|
||||
Thread.Sleep(2000) '等玩家把上一个提示看完
|
||||
Task.Abort()
|
||||
Return
|
||||
@@ -300,7 +300,7 @@ pause"
|
||||
'重复任务检查
|
||||
For Each OngoingLoader In LoaderTaskbar.ToList()
|
||||
If OngoingLoader.Name <> $"Minecraft {Id} 下载" Then Continue For
|
||||
Hint("该版本正在下载中!", HintType.Critical)
|
||||
Hint("该版本正在下载中!", HintType.Red)
|
||||
Return
|
||||
Next
|
||||
|
||||
@@ -401,7 +401,7 @@ pause"
|
||||
'重复任务检查
|
||||
For Each OngoingLoader In LoaderTaskbar.ToList()
|
||||
If OngoingLoader.Name <> $"OptiFine {DownloadInfo.NameDisplay} 下载" Then Continue For
|
||||
Hint("该版本正在下载中!", HintType.Critical)
|
||||
Hint("该版本正在下载中!", HintType.Red)
|
||||
Return
|
||||
Next
|
||||
|
||||
@@ -832,7 +832,7 @@ Retry:
|
||||
'重复任务检查
|
||||
For Each OngoingLoader In LoaderTaskbar.ToList()
|
||||
If OngoingLoader.Name <> $"LiteLoader {Id} 下载" Then Continue For
|
||||
Hint("该版本正在下载中!", HintType.Critical)
|
||||
Hint("该版本正在下载中!", HintType.Red)
|
||||
Return
|
||||
Next
|
||||
|
||||
@@ -866,7 +866,7 @@ Retry:
|
||||
'重复任务检查
|
||||
For Each OngoingLoader In LoaderTaskbar.ToList()
|
||||
If OngoingLoader.Name <> $"LiteLoader {Id} 下载" Then Continue For
|
||||
Hint("该版本正在下载中!", HintType.Critical)
|
||||
Hint("该版本正在下载中!", HintType.Red)
|
||||
Return
|
||||
Next
|
||||
|
||||
@@ -1048,7 +1048,7 @@ Retry:
|
||||
'重复任务检查
|
||||
For Each OngoingLoader In LoaderTaskbar.ToList()
|
||||
If OngoingLoader.Name <> $"{DisplayName} 下载" Then Continue For
|
||||
Hint("该版本正在下载中!", HintType.Critical)
|
||||
Hint("该版本正在下载中!", HintType.Red)
|
||||
Return
|
||||
Next
|
||||
|
||||
@@ -1803,7 +1803,7 @@ Retry:
|
||||
'重复任务检查
|
||||
For Each OngoingLoader In LoaderTaskbar.ToList()
|
||||
If OngoingLoader.Name <> $"Fabric {Version} 安装器下载" Then Continue For
|
||||
Hint("该版本正在下载中!", HintType.Critical)
|
||||
Hint("该版本正在下载中!", HintType.Red)
|
||||
Return
|
||||
Next
|
||||
|
||||
@@ -1986,28 +1986,28 @@ Retry:
|
||||
''' 在加载器状态改变后显示一条提示。
|
||||
''' 不会进行任何其他操作。
|
||||
''' </summary>
|
||||
Public Sub LoaderStateChangedHintOnly(Loader)
|
||||
Public Sub LoaderStateChangedHintOnly(Loader As LoaderBase)
|
||||
Select Case Loader.State
|
||||
Case LoadState.Finished
|
||||
Hint(Loader.Name & "成功!", HintType.Finish)
|
||||
Hint(Loader.Name & "成功!", HintType.Green)
|
||||
Case LoadState.Failed
|
||||
Hint(Loader.Name & "失败:" & Loader.Error.GetBrief(), HintType.Critical)
|
||||
Hint(Loader.Name & "失败:" & Loader.Error.GetBrief(), HintType.Red)
|
||||
Case LoadState.Aborted
|
||||
Hint(Loader.Name & "已取消!", HintType.Info)
|
||||
Hint(Loader.Name & "已取消!", HintType.Blue)
|
||||
End Select
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' 安装加载器状态改变后进行提示和重载文件夹列表的方法。
|
||||
''' </summary>
|
||||
Public Sub McInstallState(Loader)
|
||||
Public Sub McInstallState(Loader As LoaderBase)
|
||||
Select Case Loader.State
|
||||
Case LoadState.Finished
|
||||
WriteIni(PathMcFolder & "PCL.ini", "VersionCache", "") '清空缓存(合并安装会先生成文件夹,这会在刷新时误判为可以使用缓存)
|
||||
Hint(Loader.Name & "成功!", HintType.Finish)
|
||||
Hint(Loader.Name & "成功!", HintType.Green)
|
||||
Case LoadState.Failed
|
||||
Hint(Loader.Name & "失败:" & Loader.Error.GetBrief(), HintType.Critical)
|
||||
Hint(Loader.Name & "失败:" & Loader.Error.GetBrief(), HintType.Red)
|
||||
Case LoadState.Aborted
|
||||
Hint(Loader.Name & "已取消!", HintType.Info)
|
||||
Hint(Loader.Name & "已取消!", HintType.Blue)
|
||||
Case LoadState.Loading
|
||||
Return '不重新加载版本列表
|
||||
End Select
|
||||
@@ -2108,7 +2108,7 @@ Retry:
|
||||
|
||||
'重复版本检查
|
||||
If File.Exists($"{VersionFolder}{Request.TargetVersionName}.json") Then
|
||||
Hint("版本 " & Request.TargetVersionName & " 已经存在!", HintType.Critical)
|
||||
Hint("版本 " & Request.TargetVersionName & " 已经存在!", HintType.Red)
|
||||
Throw New CancelledException
|
||||
End If
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<Grid x:Class="MyMsgLogin"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:my="clr-namespace:PCL"
|
||||
RenderTransformOrigin="0,0.5" UseLayoutRounding="True" SnapsToDevicePixels="True" MinWidth="400" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="25">
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:PCL"
|
||||
RenderTransformOrigin="0,0.5" UseLayoutRounding="True" SnapsToDevicePixels="True" MinWidth="400" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="25">
|
||||
<Grid.RenderTransform>
|
||||
<TransformGroup>
|
||||
<RotateTransform x:Name="TransformRotate" Angle="-4" />
|
||||
@@ -23,17 +23,17 @@
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Grid.Row="0" FontSize="23" TextTrimming="None" Foreground="{DynamicResource ColorBrush2}" HorizontalAlignment="Left" Name="LabTitle" Margin="7,-1,70,9" Text="测试标题文本" VerticalAlignment="Top" SnapsToDevicePixels="False" UseLayoutRounding="False" />
|
||||
<Rectangle x:Name="ShapeLine" Grid.Row="1" Height="2" Fill="{Binding Foreground, ElementName=LabTitle}" />
|
||||
<my:MyScrollViewer Grid.Row="3" VerticalAlignment="Top" x:Name="PanCaption" Margin="0,0,0,17" Padding="7,0,15,0"
|
||||
<local:MyScrollViewer Grid.Row="3" VerticalAlignment="Top" x:Name="PanCaption" Margin="0,0,0,17" Padding="7,0,15,0"
|
||||
VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" DeltaMult="0.7">
|
||||
<TextBlock VerticalAlignment="Top" TextTrimming="None" TextWrapping="Wrap" Name="LabCaption" FontSize="15" LineHeight="18"
|
||||
Foreground="#FF5C5C5C" FontWeight="Normal" Padding="1" />
|
||||
</my:MyScrollViewer>
|
||||
</local:MyScrollViewer>
|
||||
<StackPanel Grid.Row="4" Name="PanBtn" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="150,0,8,0" Orientation="Horizontal">
|
||||
<my:MyButton ColorType="Normal" x:FieldModifier="public" Text="重新打开网页" x:Name="Btn1" Margin="12,0,0,0" TextPadding="7" SnapsToDevicePixels="False" Padding="5,0" UseLayoutRounding="False"
|
||||
EventType="打开网页" />
|
||||
<my:MyButton ColorType="Normal" x:FieldModifier="public" Text="复制代码" x:Name="Btn2" Margin="12,0,0,0" TextPadding="7" SnapsToDevicePixels="False" Padding="5,0" UseLayoutRounding="False"
|
||||
EventType="复制文本" />
|
||||
<my:MyButton ColorType="Normal" x:FieldModifier="public" Text="取消" x:Name="Btn3" Margin="12,0,0,0" TextPadding="7" SnapsToDevicePixels="False" Padding="5,0" UseLayoutRounding="False" />
|
||||
<local:MyButton ColorType="Normal" x:FieldModifier="public" Text="重新打开网页" x:Name="Btn1" Margin="12,0,0,0" TextPadding="7" SnapsToDevicePixels="False" Padding="5,0" UseLayoutRounding="False"
|
||||
local:CustomEventService.EventType="打开网页" />
|
||||
<local:MyButton ColorType="Normal" x:FieldModifier="public" Text="复制代码" x:Name="Btn2" Margin="12,0,0,0" TextPadding="7" SnapsToDevicePixels="False" Padding="5,0" UseLayoutRounding="False"
|
||||
local:CustomEventService.EventType="复制文本" />
|
||||
<local:MyButton ColorType="Normal" x:FieldModifier="public" Text="取消" x:Name="Btn3" Margin="12,0,0,0" TextPadding="7" SnapsToDevicePixels="False" Padding="5,0" UseLayoutRounding="False" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
@@ -89,14 +89,14 @@
|
||||
$"登录网页将自动开启,请在网页中输入 {UserCode}(已自动复制)。" & vbCrLf & vbCrLf &
|
||||
$"如果网络环境不佳,网页可能一直加载不出来,届时请使用加速器或 VPN 改善网络环境。" & vbCrLf &
|
||||
$"你也可以用其他设备打开 {Website} 并输入上述代码。"
|
||||
Btn1.EventData = Website
|
||||
Btn2.EventData = UserCode
|
||||
CustomEventService.SetEventData(Btn1, Website)
|
||||
CustomEventService.SetEventData(Btn2, UserCode)
|
||||
'启动工作线程
|
||||
RunInNewThread(AddressOf WorkThread, "MyMsgLogin")
|
||||
End Sub
|
||||
|
||||
Private Sub WorkThread()
|
||||
Thread.Sleep(3000)
|
||||
Thread.Sleep(2000)
|
||||
If MyConverter.IsExited Then Return
|
||||
OpenWebsite(Website)
|
||||
ClipboardSet(UserCode)
|
||||
@@ -118,7 +118,7 @@
|
||||
'获取结果
|
||||
Dim ResultJson As JObject = GetJson(Result)
|
||||
McLaunchLog($"令牌过期时间:{ResultJson("expires_in")} 秒")
|
||||
Hint("网页登录成功!", HintType.Finish)
|
||||
Hint("网页登录成功!", HintType.Green)
|
||||
Finished({ResultJson("access_token").ToString, ResultJson("refresh_token").ToString})
|
||||
Return
|
||||
Catch ex As Exception
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
Public Shared Sub Save(Loader As LoaderTask(Of EqualableList(Of String), String))
|
||||
Dim Address = Loader.Output
|
||||
If Not Loader.State = LoadState.Finished Then
|
||||
Hint("皮肤正在获取中,请稍候!", HintType.Critical)
|
||||
Hint("皮肤正在获取中,请稍候!", HintType.Red)
|
||||
If Not Loader.State = LoadState.Loading Then Loader.Start()
|
||||
Return
|
||||
End If
|
||||
@@ -61,7 +61,7 @@
|
||||
Else
|
||||
CopyFile(Address, FileAddress)
|
||||
End If
|
||||
Hint("皮肤保存成功!", HintType.Finish)
|
||||
Hint("皮肤保存成功!", HintType.Green)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Log(ex, "保存皮肤失败", LogLevel.Hint)
|
||||
@@ -143,7 +143,7 @@
|
||||
Next
|
||||
If FrmLaunchLeft IsNot Nothing AndAlso HasLoaderRunning Then
|
||||
'由于 Abort 不是实时的,暂时不会释放文件,会导致删除报错,故只能取消执行
|
||||
Hint("有正在获取中的皮肤,请稍后再试!", HintType.Info)
|
||||
Hint("有正在获取中的皮肤,请稍后再试!", HintType.Blue)
|
||||
Else
|
||||
RunInThread(
|
||||
Sub()
|
||||
@@ -161,7 +161,7 @@
|
||||
For Each SkinLoader In If(sender IsNot Nothing, {sender}, {PageLaunchLeft.SkinLegacy, PageLaunchLeft.SkinMs})
|
||||
SkinLoader.WaitForExit(IsForceRestart:=True)
|
||||
Next
|
||||
Hint("已刷新头像!", HintType.Finish)
|
||||
Hint("已刷新头像!", HintType.Green)
|
||||
Catch ex As Exception
|
||||
Log(ex, "刷新皮肤缓存失败", LogLevel.Msgbox)
|
||||
End Try
|
||||
@@ -184,7 +184,7 @@
|
||||
SkinLoader.WaitForExit(IsForceRestart:=True)
|
||||
Next
|
||||
'完成提示
|
||||
Hint("更改皮肤成功!", HintType.Finish)
|
||||
Hint("更改皮肤成功!", HintType.Green)
|
||||
Catch ex As Exception
|
||||
Log(ex, "更改正版皮肤后刷新皮肤失败", LogLevel.Feedback)
|
||||
End Try
|
||||
@@ -212,7 +212,7 @@
|
||||
Return
|
||||
End If
|
||||
If McLoginMsLoader.State = LoadState.Failed Then
|
||||
Hint("登录失败,无法更改披风!", HintType.Critical)
|
||||
Hint("登录失败,无法更改披风!", HintType.Red)
|
||||
Return
|
||||
End If
|
||||
Hint("正在获取披风列表,请稍候……")
|
||||
@@ -225,7 +225,7 @@ Retry:
|
||||
'获取登录信息
|
||||
If McLoginMsLoader.State <> LoadState.Finished Then McLoginMsLoader.WaitForExit(PageLoginMsSkin.GetLoginData())
|
||||
If McLoginMsLoader.State <> LoadState.Finished Then
|
||||
Hint("登录失败,无法更改披风!", HintType.Critical)
|
||||
Hint("登录失败,无法更改披风!", HintType.Red)
|
||||
Return
|
||||
End If
|
||||
Dim AccessToken As String = McLoginMsLoader.Output.AccessToken
|
||||
@@ -265,10 +265,10 @@ Retry:
|
||||
ContentType:="application/json",
|
||||
Headers:={{"Authorization", "Bearer " & AccessToken}})
|
||||
If Result.Contains("""errorMessage""") Then
|
||||
Hint("更改披风失败:" & GetJson(Result)("errorMessage").ToString, HintType.Critical)
|
||||
Hint("更改披风失败:" & GetJson(Result)("errorMessage").ToString, HintType.Red)
|
||||
Return
|
||||
Else
|
||||
Hint("更改披风成功!", HintType.Finish)
|
||||
Hint("更改披风成功!", HintType.Green)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Log(ex, "更改披风失败", LogLevel.Hint)
|
||||
|
||||
@@ -134,6 +134,8 @@ Public Class PageLaunchRight
|
||||
Private Sub OnlineLoaderSub(Task As LoaderTask(Of String, Integer))
|
||||
Dim Address As String = Task.Input '#3721 中连续触发两次导致内容变化
|
||||
Try
|
||||
'替换自定义变量与设置
|
||||
Address = ArgumentReplace(Address, AddressOf WebUtility.HtmlEncode)
|
||||
'获取版本校验地址
|
||||
Dim VersionAddress As String
|
||||
If Address.Contains(".xaml") Then
|
||||
@@ -146,29 +148,27 @@ Public Class PageLaunchRight
|
||||
End If
|
||||
'校验版本
|
||||
Dim Version As String = ""
|
||||
Dim NeedDownload As Boolean = True
|
||||
Try
|
||||
Version = NetRequestByClientRetry(VersionAddress)
|
||||
If Version.Length > 1000 Then Throw New Exception($"获取的主页版本过长({Version.Length} 字符)")
|
||||
Dim CurrentVersion As String = Setup.Get("CacheSavedPageVersion")
|
||||
If Version <> "" AndAlso CurrentVersion <> "" AndAlso Version = CurrentVersion Then
|
||||
Log($"[Page] 当前缓存的主页已为最新,当前版本:{Version},检查源:{VersionAddress}")
|
||||
NeedDownload = False
|
||||
Else
|
||||
Log($"[Page] 需要下载联网主页,当前版本:{Version},检查源:{VersionAddress}")
|
||||
Return
|
||||
End If
|
||||
Log($"[Page] 需要下载联网主页,当前版本:{Version},检查源:{VersionAddress}")
|
||||
Catch exx As Exception
|
||||
Log(exx, $"联网获取主页版本失败", LogLevel.Developer)
|
||||
Log($"[Page] 无法检查联网主页版本,将直接下载,检查源:{VersionAddress}")
|
||||
End Try
|
||||
'实际下载
|
||||
If Not NeedDownload Then Return
|
||||
Dim FileContent As String = NetRequestByClientRetry(Address)
|
||||
Log($"[Page] 已联网下载主页,内容长度:{FileContent.Length},来源:{Address}")
|
||||
Setup.Set("CacheSavedPageUrl", Address)
|
||||
Setup.Set("CacheSavedPageVersion", Version)
|
||||
WriteFile(PathTemp & "Cache\Custom.xaml", FileContent)
|
||||
Refresh() '要求刷新
|
||||
'若内容变更则要求刷新
|
||||
If LoadedContentHash <> FileContent.GetHashCode() Then Refresh()
|
||||
Catch ex As Exception
|
||||
Log(ex, $"下载主页失败({Address})", If(ModeDebug, LogLevel.Msgbox, LogLevel.Hint))
|
||||
End Try
|
||||
@@ -220,7 +220,7 @@ Public Class PageLaunchRight
|
||||
End If
|
||||
Dim LoadStartTime As Date = Date.Now
|
||||
'修改时应同时修改 PageOtherHelpDetail.Init
|
||||
Content = HelpArgumentReplace(Content)
|
||||
Content = ArgumentReplace(Content, AddressOf EscapeXML)
|
||||
Do While Content.Contains("xmlns")
|
||||
Content = Content.RegexReplace("xmlns[^""']*(""|')[^""']*(""|')", "").Replace("xmlns", "") '禁止声明命名空间
|
||||
Loop
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
If CType(McLoginLoader.Input, McLoginServer).ForceReselectProfile Then
|
||||
Hint("正在尝试更换,请稍候!")
|
||||
Else
|
||||
Hint("正在登录中,请稍后再更换角色!", HintType.Critical)
|
||||
Hint("正在登录中,请稍后再更换角色!", HintType.Red)
|
||||
End If
|
||||
Return
|
||||
End If
|
||||
|
||||
@@ -68,7 +68,7 @@ Public Class PageLoginLegacy
|
||||
End Sub
|
||||
Private Sub Skin_Click() Handles Skin.Click
|
||||
If (Setup.Get("UiHiddenPageSetup") OrElse Setup.Get("UiHiddenSetupLaunch")) AndAlso Not PageSetupUI.HiddenForceShow Then
|
||||
Hint("启动设置已被禁用!", HintType.Critical)
|
||||
Hint("启动设置已被禁用!", HintType.Red)
|
||||
Else
|
||||
FrmMain.PageChange(FormMain.PageType.Setup, FormMain.PageSubType.SetupLaunch) '切换到皮肤设置页面
|
||||
End If
|
||||
|
||||
@@ -27,9 +27,9 @@
|
||||
<ColumnDefinition Width="30" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<local:MyTextButton Text="» 购买正版" EventType="打开网页" EventData="https://www.xbox.com/zh-cn/games/store/minecraft-java-bedrock-edition-for-pc/9nxp44l49shj"
|
||||
<local:MyTextButton Text="» 购买正版" local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://www.xbox.com/zh-cn/games/store/minecraft-java-bedrock-edition-for-pc/9nxp44l49shj"
|
||||
Grid.Column="0" />
|
||||
<local:MyTextButton Text="» 前往官网" EventType="打开网页" EventData="https://www.minecraft.net/zh-hans"
|
||||
<local:MyTextButton Text="» 前往官网" local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://www.minecraft.net/zh-hans"
|
||||
Grid.Column="2" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
Catch ex As Exception
|
||||
If ex.Message = "$$" Then
|
||||
ElseIf ex.Message.StartsWith("$") Then
|
||||
Hint(ex.Message.TrimStart("$"), HintType.Critical)
|
||||
Hint(ex.Message.TrimStart("$"), HintType.Red)
|
||||
ElseIf TypeOf ex Is Security.Authentication.AuthenticationException AndAlso ex.Message.ContainsF("SSL/TLS") Then
|
||||
Log(ex, "正版登录验证失败,请考虑在 [设置 → 其他] 中关闭 [在正版登录时验证 SSL 证书],然后再试。" & vbCrLf & vbCrLf & "原始错误信息:", LogLevel.Msgbox)
|
||||
Else
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
Return
|
||||
End If
|
||||
If McLoginLoader.State = LoadState.Failed Then
|
||||
Hint("登录失败,无法更改皮肤!", HintType.Critical)
|
||||
Hint("登录失败,无法更改皮肤!", HintType.Red)
|
||||
Return
|
||||
End If
|
||||
Dim SkinInfo As McSkinInfo = McSkinSelect()
|
||||
@@ -106,7 +106,7 @@ Retry:
|
||||
McLoginMsLoader.Start(GetLoginData(), IsForceRestart:=True)
|
||||
GoTo Retry
|
||||
ElseIf Result.Contains("""error""") Then
|
||||
Hint("更改皮肤失败:" & GetJson(Result)("error").ToString, HintType.Critical)
|
||||
Hint("更改皮肤失败:" & GetJson(Result)("error").ToString, HintType.Red)
|
||||
Return
|
||||
End If
|
||||
'获取新皮肤地址
|
||||
@@ -122,7 +122,7 @@ Retry:
|
||||
Throw New Exception("未知错误(" & Result & ")")
|
||||
Catch ex As Exception
|
||||
If TypeOf ex Is OperationCanceledException Then
|
||||
Hint("更改皮肤失败:连接皮肤服务器超时,请稍后再试,或使用 VPN 改善网络环境", HintType.Critical)
|
||||
Hint("更改皮肤失败:连接皮肤服务器超时,请稍后再试,或使用 VPN 改善网络环境", HintType.Red)
|
||||
Else
|
||||
Log(ex, "更改皮肤失败", LogLevel.Hint)
|
||||
End If
|
||||
|
||||
@@ -8,29 +8,10 @@
|
||||
<StackPanel Name="PanMain" Margin="25,25,25,10" Grid.IsSharedSizeScope="True">
|
||||
<local:MyCard Title="关于" Margin="0,0,0,15">
|
||||
<StackPanel Margin="20,40,18,18">
|
||||
<TextBlock TextWrapping="Wrap" Text="多人联机服务由速聚授权提供,PCL 仅为速聚提供多人联机服务入口,使用中遇到的任何问题由速聚负责处理。你在使用多人联机服务过程中所遇到的任何问题与纠纷(包括其付费业务)均与 PCL 无关,应与速聚协商解决。"
|
||||
Margin="0,0,0,3" />
|
||||
<TextBlock TextWrapping="Wrap" Text="PCL 作者并不会从速聚的付费业务中获得任何分成、奖金等报酬,请不要瞎说。"
|
||||
Margin="0,0,0,6" />
|
||||
<local:MyListItem Title="速聚官网" Info="打开速聚的官方网站"
|
||||
Type="Clickable" EventType="打开网页" EventData="https://www.the.bb/zh-CN.html"
|
||||
Logo="pack://application:,,,/images/Blocks/Grass.png" />
|
||||
<local:MyListItem Title="授权协议书" Info="查看速聚与 PCL 间的授权协议书"
|
||||
Type="Clickable" EventType="打开网页" EventData="https://shimo.im/docs/0l3NVXYzeXhb903R"
|
||||
Logo="pack://application:,,,/images/Blocks/Grass.png" />
|
||||
<local:MyListItem Title="用户协议与隐私政策" Info="查看速聚的用户协议与隐私政策文档"
|
||||
Type="Clickable" EventType="打开网页" EventData="https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzkxMTMyODk3Mg==&action=getalbum&album_id=2585385685407514625&scene=173&from_msgid=2247483720&from_itemidx=1&count=3&nolastread=1#wechat_redirect"
|
||||
Logo="pack://application:,,,/images/Blocks/Grass.png" />
|
||||
</StackPanel>
|
||||
</local:MyCard>
|
||||
<local:MyCard Title="发送反馈" Margin="0,0,0,15">
|
||||
<StackPanel Margin="20,40,18,18">
|
||||
<local:MyListItem Title="联机反馈与交流" Info="加入联机模块官方 QQ 群反馈联机异常,或询问联机功能的使用方式"
|
||||
Type="Clickable" Logo="pack://application:,,,/images/Blocks/RedstoneBlock.png"
|
||||
EventType="打开网页" EventData="https://shimo.im/docs/KrkEVXz1K0frowAJ#anchor-7qQG" />
|
||||
<local:MyListItem Title="违法违规举报" Info="投诉、举报联机使用者的各类违法违规行为"
|
||||
Type="Clickable" EventType="打开网页" EventData="https://shimo.im/docs/rGrd8pY8xWkt6ryW#anchor-7x6P"
|
||||
Logo="pack://application:,,,/images/Blocks/RedstoneBlock.png" />
|
||||
</StackPanel>
|
||||
</local:MyCard>
|
||||
</StackPanel>
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
<local:ValidateRegex Regex="^[^\u4e00-\u9fa5]{6,}$" />
|
||||
</local:MyTextBox.ValidateRules>
|
||||
</local:MyTextBox>
|
||||
<local:MyButton Grid.Column="4" Grid.Row="4" Margin="0,0,15,0" Text="获取索引码" Padding="13,8" EventType="打开网页" EventData="https://shimo.im/docs/KrkEVXz1K0frowAJ" />
|
||||
<local:MyButton Grid.Column="4" Grid.Row="4" Margin="0,0,15,0" Text="获取索引码" Padding="13,8" local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://shimo.im/docs/KrkEVXz1K0frowAJ" />
|
||||
<local:MyButton x:Name="BtnCertDone" Grid.Column="5" Grid.Row="4" Text="确定" ColorType="Highlight" Padding="13,8" IsEnabled="False" />
|
||||
</Grid>
|
||||
</local:MyCard>
|
||||
@@ -229,7 +229,6 @@
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Grid x:Name="PanAlways" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="15" Opacity="0.5">
|
||||
<local:MyTextButton Text="联机服务由 速聚 授权提供" EventType="打开网页" EventData="https://www.the.bb/zh-CN.html" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</local:MyPageRight>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<local:MyLoading Text="正在加载联机模块" Margin="20,20,20,17" x:Name="Load" ShowProgress="True" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</local:MyCard>
|
||||
<Grid x:Name="PanAlways" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="15" Opacity="0.5">
|
||||
<local:MyTextButton Text="联机服务由 速聚 授权提供" EventType="打开网页" EventData="https://www.the.bb/zh-CN.html" />
|
||||
<local:MyTextButton Text="联机服务由 速聚 授权提供" local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://www.the.bb/zh-CN.html" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</local:MyPageRight>
|
||||
|
||||
@@ -121,26 +121,7 @@ Public Class PageLinkIoi
|
||||
''' 获取当前的玩家名。
|
||||
''' </summary>
|
||||
Public Shared Function GetPlayerName() As String
|
||||
'自动生成玩家名
|
||||
If AutogenPlayerName Is Nothing Then
|
||||
If IsPlayerNameValid(McLoginName) Then
|
||||
AutogenPlayerName = McLoginName()
|
||||
Else
|
||||
AutogenPlayerName = "玩家 " & CType(GetHash(If(UniqueAddress, "")) Mod 1048576, Integer).ToString("x5").ToUpper
|
||||
End If
|
||||
End If
|
||||
'获取玩家自定义的名称
|
||||
Dim CustomName As String = Setup.Get("LinkName").ToString.Trim()
|
||||
If CustomName <> "" Then
|
||||
If IsPlayerNameValid(CustomName) Then
|
||||
Return CustomName.Trim
|
||||
Else
|
||||
Hint("你所设置的玩家名存在异常,已被重置!", HintType.Critical)
|
||||
Setup.Set("LinkName", "")
|
||||
End If
|
||||
End If
|
||||
'使用自动生成的玩家名
|
||||
Return AutogenPlayerName
|
||||
Return ""
|
||||
End Function
|
||||
Private Shared AutogenPlayerName As String = Nothing '并非由玩家自定义,而是自动生成的玩家名
|
||||
''' <summary>
|
||||
|
||||
@@ -29,8 +29,10 @@
|
||||
<EllipseGeometry Center="17 17" RadiusX="17" RadiusY="17" />
|
||||
</Image.Clip>
|
||||
</Image>
|
||||
<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="赞助 PCL !" Grid.Column="2" Grid.Row="0" Height="35" ColorType="Highlight"
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://afdian.com/a/LTCat" />
|
||||
<local:MyButton Text="查看源代码" Grid.Column="2" Grid.Row="1" Height="35"
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://github.com/Hex-Dragon/PCL2" />
|
||||
</Grid>
|
||||
</local:MyCard>
|
||||
<local:MyCard Margin="0,0,0,15" Title="特别鸣谢">
|
||||
@@ -51,11 +53,11 @@
|
||||
<ColumnDefinition Width="150" />
|
||||
</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:MyButton Text="赞助镜像源" Grid.Row="0" Grid.Column="2" Height="35" EventType="打开网页" EventData="https://afdian.com/a/bangbang93" />
|
||||
<local:MyButton Text="赞助镜像源" Grid.Row="0" Grid.Column="2" Height="35" local:CustomEventService.EventType="打开网页" local:CustomEventService.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:MyButton Text="打开百科" Grid.Row="1" Grid.Column="2" Height="35" EventType="打开网页" EventData="https://www.mcmod.cn" />
|
||||
<local:MyButton Text="打开百科" Grid.Row="1" Grid.Column="2" Height="35" local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://www.mcmod.cn" />
|
||||
<local:MyListItem Title="z0z0r4" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="提供了 MCIM 社区资源镜像源和帮助库图床!" Grid.Row="2" Grid.Column="1" />
|
||||
<local:MyButton Text="MCIM 主页" Grid.Row="2" Grid.Column="2" Height="35" EventType="打开网页" EventData="https://github.com/mcmod-info-mirror" />
|
||||
<local:MyButton Text="MCIM 主页" Grid.Row="2" Grid.Column="2" Height="35" local:CustomEventService.EventType="打开网页" local:CustomEventService.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="Hao_Tian" Margin="-5,0,0,0" IsHitTestVisible="False" Grid.ColumnSpan="2" Info="在内测中找出了一大堆没人想得到的诡异 Bug,有非同寻常的 Bug 体质" Grid.Row="5" Grid.Column="1" />
|
||||
@@ -105,288 +107,217 @@
|
||||
</local:MyCard>
|
||||
<local:MyCard Margin="0,0,0,15" Title="赞助者">
|
||||
<StackPanel Margin="25,40,10,20">
|
||||
<TextBlock HorizontalAlignment="Left" Text="以下是 2025 年 8 月的高级赞助者们!感谢各位对 PCL 和伟大的咕咕咕事业的支持!" Margin="0,0,25,5.5" TextTrimming="None" TextWrapping="WrapWithOverflow" />
|
||||
<WrapPanel Margin="0,0,0,10">␍ <TextBlock Width="120" Margin="0,1.5" Text="粒子鹰" />
|
||||
<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="Claud_9527" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Qqsnd" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="☆Kiana☆" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="晓枫-橘味C" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Ferderica" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="过路人" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="寒溪" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="小咪vv" />
|
||||
<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="启233" />
|
||||
<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="listpmater" />
|
||||
<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="AAboss" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="闲来无事" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="omgddcsl" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="轻舟" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="浮生Yui" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="YangFK" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="一曲勺" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="时白Herhilo" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="寒冬落雨" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="柯基0v0" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="月兔" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="qkowo" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="沐白" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="每雨天" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="AiNo" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="木叶飞舞之处" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="wilbert_laogao" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="悠芸" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="黑白盗贼" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="PotCatawa" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="小王" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="花还没开" />
|
||||
<TextBlock Width="240" Margin="0,1.5" Text="PixelFrontier像素边界" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="坊之岬" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="HuTu" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="爱言叶ray" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="lenrin" />
|
||||
<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="QMX" />
|
||||
<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="Ciallo~(∠?ω" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="九十九" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Guuzen" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="极光" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="9331" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="钱程" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="杏坂和人" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="jinlijsbjaj" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="海豹" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="洛玉衡kale" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="柠乔" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="N0NiL" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="阿卡零" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="ADAA" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="岚瑬" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="爱料理的猫" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="01B8" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="MCDJ喜羊羊" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="hwch55" />
|
||||
<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="KGIKUY" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="初洛" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="z .e.r.o" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="独孤真菜" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="阿囊" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="rrrwcsza" />
|
||||
<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="rreorr" />
|
||||
<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="我是(⊙o⊙)啥?笔" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="北纬44" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="呼呼呼" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="嘎嘎不咕咕" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="kronos" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="有个好梦,同志" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Amojun" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="bat-744" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="那谁" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="AYOSO" />
|
||||
<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="ALPSL" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="我爱喝兽奶" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="wwq557" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="爱莉希雅" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="上善若水" />
|
||||
<TextBlock HorizontalAlignment="Left" Text="以下是 2025 年 9 月的高级赞助者们!感谢各位对 PCL 和伟大的咕咕咕事业的支持!" Margin="0,0,25,5.5" TextTrimming="None" TextWrapping="WrapWithOverflow" />
|
||||
<WrapPanel Margin="0,0,0,10">␍ <TextBlock Width="120" Margin="0,1.5" Text="lecoe" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="QIUQI" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Aquadtr" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="stb" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="mco" />
|
||||
<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="Le Play" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="烨神" />
|
||||
<TextBlock Width="240" Margin="0,1.5" Text="Kamazi_Yuka5201" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="滚动的拉布拉多" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="王牟" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Lazarus" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="幻觉" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="凌天" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="lIIIllIIllIIl" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Zsol" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="榴莲" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Night Voyager" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="JOHNJIANG" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="柒月" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="不温柔先森" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Freewind" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="纯萧子" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="扇" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Amturester" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="maigm" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="JO23" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="JCNB" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="星尘" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="姜桐桐233" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="AkaneRyoba" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="南山必胜客" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="57" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="咸菜萝卜煲" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="shawnlong" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="DDNGSZX1" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="KaguraZaka" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="谶纛" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="666" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="betwangzai" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="卑微小林" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="fjvg" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="TH-x" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Q" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="清鸢" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="P·咕·D·咕咕·F" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="顾木" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="LAZY" />
|
||||
<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="fwlqpalzmd" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="安执妄dying" />
|
||||
<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="zz" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="爱炫鱼的猫" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="玄月" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="BRfake" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Lucien_Liu" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="煎bingo子" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="对方正在输入..." />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="hakureireimu" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="wwxa2019" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="TAIGA" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="墨玉" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Jane" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="雪下丨残影" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="未命名3742" />
|
||||
<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="ATH9" />
|
||||
<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="sun次方" />
|
||||
<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="ELUCIDATE" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="兔饼干哈哈" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Styx誓约" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="V" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="月芸柔" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="灯火鬼魂" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="A" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="项刀关志" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="剑鱼776" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="叶明心" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Ashlxy" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="小时" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="fisher426" />
|
||||
<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="山有木兮325" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="37号村民" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="白承宣" />
|
||||
<TextBlock Width="240" Margin="0,1.5" Text="某蓝毛借钱不还的贝斯手" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="白狼" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="工蜂" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="封不觉" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="南樵鱼子" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="寂-御神幻狐" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="好" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="NeonSoda" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="UNICORN" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="红石beaker" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="EliasLSK" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="思考人生" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="L" />
|
||||
<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="FAMS" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="会变身的栖仔" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="baka王" />
|
||||
<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="Xc_AcE" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="@6#" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="molFish" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="雪见" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="AAALLLAAANNN" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="华氏451" />
|
||||
<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="八云蓝LIN" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="LittleBlue" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="老梦" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="动漫男主" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Red_橙子" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Junmucheng" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="无印" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="窗前露" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="1111111" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="什雨" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="七日 SEVENDAYS" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Gǔdù" />
|
||||
<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="hjhmeibao" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="网络白字话事人" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="想要点好运" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Timmy1950" />
|
||||
<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="HansOffice" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="466某某某" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="zztzzy" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="SHiao_Yui" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="一只花生" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="黑凤梨熊?" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="sdad" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="BLONG" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="787878" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="myry668" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="f三文鱼f" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="apqow" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="懒梦棉花糖" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="HaiMing" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Evernight" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="CieloNeet" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="不青盆" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Purelimiter" />
|
||||
<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="子曰" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="CyrilZ" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="笑颜如花兮" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="咸鱼超人FF酱!" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="达达利鸭" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="TFofN" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Kumo" />
|
||||
<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="Anmuer" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="青天揽明月" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="鲫鱼崽" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="PPTNPC" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="vIccvI" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="GOOD" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="归零之诗" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="ppp" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Ethanhmm1234" />
|
||||
<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="Raven" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="看看你的jjp" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="日月皆如水" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="gzwmmm" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="早上鸥" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="CJT" />
|
||||
<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="shui12dkhigl" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="豪猪" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="再相遇" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="?白樱Hakura" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="IssacPyromaniac" />
|
||||
<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="laocao" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="DLC...是什么" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="我家老米" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="TINY" />
|
||||
<TextBlock Width="240" Margin="0,1.5" Text="只会coding的农民工" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="明月一行" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="nanako" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="辛霏Aiwx" />
|
||||
<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="sadas" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="小叮当搞快点" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="leu" />
|
||||
<TextBlock Width="240" Margin="0,1.5" Text="休伯利安本来的舰长" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="天诺一字号仓鼠" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="真爱粉只因龙" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="绝望的温度" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="busituteng" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="SiC" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="契特卡拉概念机" />
|
||||
<TextBlock Width="240" Margin="0,1.5" Text="我还能再在死线挣扎一会" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="02_G1nTonic" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="渊" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="1" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="小楠" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="阿冰" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="EliasG" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="jhx" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="zyccmyk" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="luxin" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="我是我" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="13462738215" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="minecraft java" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="那是小林吖" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="GITATIG" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Musketeer" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="AuraSpeedJerry" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="luckymore" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="hcrmhj" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="我好焦灼啊" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="小王同学" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="MoDust2131" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="啊超" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Ander·Les" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Niko" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="五个麦卷" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="b0Ard" />
|
||||
<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="照井黎Terui_Rei" />
|
||||
<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="XIAOSHUAI" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="KMYLS" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="聽音" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="oPzPo" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="dream" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="123" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Zik yeung" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Coco" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Ricardo" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="2969307002" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="鬼卿" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="wihz" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="九平" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="liu" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="PickStars" />
|
||||
<TextBlock Width="240" Margin="0,1.5" Text="我真的事仁济啊(恼)" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="李白" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="霜木翔凤" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="岽龙" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="joksqp" />
|
||||
<TextBlock Width="240" Margin="0,1.5" Text="what are you 说啥嘞?" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="木得爱_没人疼" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="小黑子?" />
|
||||
<TextBlock Width="240" Margin="0,1.5" Text="删除线Strikethrough" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="REMOTE" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="H" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Parapha" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="南吕十三" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="米帝" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="zdxff" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="蔚空" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="cleverboy1066" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="烤老鼠" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="TS彦祖" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="狮某人" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="lmst_myh" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="耐·若何" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="qvq" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="刀客塔" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="mika" />
|
||||
<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="MdsR" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="诗和雨夜" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Samueldong" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="BBK" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="雪枫Sople" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="一坨灰" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="RI_CK" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="ximeng22" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="天天122_" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="李小浩&mod" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Southsheng" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="HurgerLiPy" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Crishen70400" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="孤独" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="夏末彡微凉" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="山本樱桃不是df" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="陶牧馆长" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="一二三四" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="17382073935" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="不知道" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="重庆你周哥" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="熳ai" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="Rainbow Stars" />
|
||||
<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="一只小孽QAQ" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="五度左右" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="咖喱鱼" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="千叶GG" />
|
||||
<TextBlock Width="120" Margin="0,1.5" Text="泽木_Zemu" />
|
||||
</WrapPanel>
|
||||
<Grid Height="35">
|
||||
<Grid.ColumnDefinitions>
|
||||
@@ -395,7 +326,7 @@
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="Button" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<local:MyButton x:Name="BtnDonateOutput" Grid.Column="0" MinWidth="140" Text="生成解锁码" Padding="13,0" Margin="0,0,20,0" HorizontalAlignment="Left" ColorType="Highlight" Visibility="Collapsed" />
|
||||
<local:MyButton x:Name="BtnDonateDonate" Grid.Column="0" MinWidth="140" Text="赞助作者" Padding="13,0" Margin="0,0,20,0" HorizontalAlignment="Left" ColorType="Highlight" EventType="打开网页" EventData="https://afdian.com/a/LTCat" />
|
||||
<local:MyButton x:Name="BtnDonateDonate" Grid.Column="0" MinWidth="140" Text="赞助作者" Padding="13,0" Margin="0,0,20,0" HorizontalAlignment="Left" ColorType="Highlight" local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://afdian.com/a/LTCat" />
|
||||
<local:MyButton x:Name="BtnDonateCopy" Grid.Column="1" MinWidth="140" Text="复制识别码" Padding="13,0" Margin="0,0,20,0" HorizontalAlignment="Left" />
|
||||
<local:MyButton x:Name="BtnDonateInput" Grid.Column="2" MinWidth="140" Text="输入解锁码" Padding="13,0" Margin="0,0,20,0" HorizontalAlignment="Left" />
|
||||
</Grid>
|
||||
@@ -410,8 +341,8 @@
|
||||
<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" />
|
||||
<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="140" Padding="13,0" EventType="打开网页" EventData="https://github.com/Hex-Dragon/PCL2" />
|
||||
<local:MyButton Text="用户协议与免责声明" Width="170" Padding="13,0" Margin="0,0,20,0" ColorType="Highlight" local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://shimo.im/docs/rGrd8pY8xWkt6ryW" />
|
||||
<local:MyButton Text="开源代码" Width="140" Padding="13,0" local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://github.com/Hex-Dragon/PCL2" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</local:MyCard>
|
||||
@@ -443,49 +374,49 @@
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="Java Launch Wrapper" TextWrapping="Wrap" FontWeight="Bold" />
|
||||
<TextBlock Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Text="Copyright © 2022 00ll00
Licensed under the MIT License." TextWrapping="Wrap" />
|
||||
<local:MyButton Grid.Row="1" Grid.Column="2" MinWidth="140" Text="查看来源网站" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://github.com/00ll00/java_launch_wrapper" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://github.com/00ll00/java_launch_wrapper" />
|
||||
<local:MyButton Grid.Row="1" Grid.Column="3" MinWidth="140" Text="查看许可文档" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://github.com/00ll00/java_launch_wrapper?tab=MIT-1-ov-file#readme" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://github.com/00ll00/java_launch_wrapper?tab=MIT-1-ov-file#readme" />
|
||||
|
||||
<TextBlock Grid.Row="2" Grid.Column="0" Text="Newtonsoft.Json" TextWrapping="Wrap" FontWeight="Bold" />
|
||||
<TextBlock Grid.Row="2" Grid.Column="2" Grid.ColumnSpan="2" Text="Copyright © 2007 James Newton-King
Licensed under the MIT License." TextWrapping="Wrap" />
|
||||
<local:MyButton Grid.Row="3" Grid.Column="2" MinWidth="140" Text="查看来源网站" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://www.newtonsoft.com/json" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://www.newtonsoft.com/json" />
|
||||
<local:MyButton Grid.Row="3" Grid.Column="3" MinWidth="140" Text="查看许可文档" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://opensource.org/licenses/MIT" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://opensource.org/licenses/MIT" />
|
||||
|
||||
<TextBlock Grid.Row="4" Grid.Column="0" Text="NAudio" TextWrapping="Wrap" FontWeight="Bold" />
|
||||
<TextBlock Grid.Row="4" Grid.Column="2" Grid.ColumnSpan="2" Text="Copyright © 2015 Mark Heath (mark.heath@gmail.com)
Licensed under the MIT License." TextWrapping="Wrap" />
|
||||
<local:MyButton Grid.Row="5" Grid.Column="2" MinWidth="140" Text="查看来源网站" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://github.com/naudio/NAudio" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://github.com/naudio/NAudio" />
|
||||
<local:MyButton Grid.Row="5" Grid.Column="3" MinWidth="140" Text="查看许可文档" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://github.com/naudio/NAudio/blob/master/license.txt" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://github.com/naudio/NAudio/blob/master/license.txt" />
|
||||
|
||||
<TextBlock Grid.Row="6" Grid.Column="0" Text="Ookii.Dialogs" TextWrapping="Wrap" FontWeight="Bold" />
|
||||
<TextBlock Grid.Row="6" Grid.Column="2" Grid.ColumnSpan="2" Text="Copyright © 2009 Sven Groot (Ookii.org)" TextWrapping="Wrap" />
|
||||
<local:MyButton Grid.Row="7" Grid.Column="2" MinWidth="140" Text="查看来源网站" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://www.ookii.org/Software/Dialogs/" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://www.ookii.org/Software/Dialogs/" />
|
||||
<local:MyButton Grid.Row="7" Grid.Column="3" MinWidth="140" Text="查看许可文档" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://github.com/caioproiete/ookii-dialogs-wpf/blob/master/LICENSE" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://github.com/caioproiete/ookii-dialogs-wpf/blob/master/LICENSE" />
|
||||
|
||||
<TextBlock Grid.Row="8" Grid.Column="0" Text="Iconmonstr" TextWrapping="Wrap" FontWeight="Bold" />
|
||||
<TextBlock Grid.Row="8" Grid.Column="2" Grid.ColumnSpan="2" Text="Copyright © 2019 iconmonstr (Alexander Kahlkopf)" TextWrapping="Wrap" />
|
||||
<local:MyButton Grid.Row="9" Grid.Column="2" MinWidth="140" Text="查看来源网站" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://iconmonstr.com/" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://iconmonstr.com/" />
|
||||
<local:MyButton Grid.Row="9" Grid.Column="3" MinWidth="140" Text="查看许可文档" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://iconmonstr.com/license/" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://iconmonstr.com/license/" />
|
||||
|
||||
<TextBlock Grid.Row="10" Grid.Column="0" Text="libwebp wrapper for .NET" TextWrapping="Wrap" FontWeight="Bold" />
|
||||
<TextBlock Grid.Row="10" Grid.Column="2" Grid.ColumnSpan="2" Text="Copyright © 2012 Imazen
Licensed under the MIT License." TextWrapping="Wrap" />
|
||||
<local:MyButton Grid.Row="11" Grid.Column="2" MinWidth="140" Text="查看来源网站" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://github.com/imazen/libwebp-net" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://github.com/imazen/libwebp-net" />
|
||||
<local:MyButton Grid.Row="11" Grid.Column="3" MinWidth="140" Text="查看许可文档" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://github.com/imazen/libwebp-net/blob/master/LICENSE.txt" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://github.com/imazen/libwebp-net/blob/master/LICENSE.txt" />
|
||||
|
||||
<TextBlock Grid.Row="12" Grid.Column="0" Text="Iconfont" TextWrapping="Wrap" FontWeight="Bold" />
|
||||
<TextBlock Grid.Row="12" Grid.Column="2" Grid.ColumnSpan="2" Text="Copyright © ALIMAMA MUX, powered by alimama THX." TextWrapping="Wrap" />
|
||||
<local:MyButton Grid.Row="13" Grid.Column="2" MinWidth="140" Text="查看原网站" Padding="13,0" Margin="0,7,20,18" HorizontalAlignment="Left"
|
||||
EventType="打开网页" EventData="https://www.iconfont.cn/" />
|
||||
local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://www.iconfont.cn/" />
|
||||
|
||||
</Grid>
|
||||
</local:MyCard>
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
End Sub
|
||||
|
||||
Public Shared Sub CopyUniqueAddress() Handles BtnDonateCopy.Click
|
||||
ClipboardSet(UniqueAddress)
|
||||
Public Shared Sub CopyIdentify() Handles BtnDonateCopy.Click
|
||||
ClipboardSet(Identify)
|
||||
End Sub
|
||||
Private Sub BtnDonateCodeInput_Click() Handles BtnDonateInput.Click
|
||||
DonateCodeInput()
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
Public Shared Sub OnItemClick(Entry As HelpEntry)
|
||||
Try
|
||||
If Entry.IsEvent Then
|
||||
ModEvent.ProcessCustomEvents(Entry.EventType, Entry.EventData, Nothing)
|
||||
CustomEvent.Raise(Entry.EventType, Entry.EventData)
|
||||
Else
|
||||
EnterHelpPage(Entry)
|
||||
End If
|
||||
|
||||
@@ -18,8 +18,10 @@
|
||||
If Content = "" Then Throw New Exception("帮助 xaml 文件为空")
|
||||
Try
|
||||
'修改时应同时修改 PageLaunchRight.LoadContent
|
||||
Content = HelpArgumentReplace(Content)
|
||||
If Content.Contains("xmlns") Then Content = Content.RegexReplace("xmlns[^""']*(""|')[^""']*(""|')", "").Replace("xmlns", "") '禁止声明命名空间
|
||||
Content = ArgumentReplace(Content, AddressOf EscapeXML)
|
||||
Do While Content.Contains("xmlns")
|
||||
Content = Content.RegexReplace("xmlns[^""']*(""|')[^""']*(""|')", "").Replace("xmlns", "") '禁止声明命名空间
|
||||
Loop
|
||||
Content = "<StackPanel xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:sys=""clr-namespace:System;assembly=mscorlib"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:local=""clr-namespace:PCL;assembly=Plain Craft Launcher 2"">" & Content & "</StackPanel>"
|
||||
Me.Entry = Entry
|
||||
PanCustom.Children.Clear()
|
||||
|
||||
@@ -150,14 +150,14 @@
|
||||
Dim NewFolder As String = ""
|
||||
'检查是否有下载任务
|
||||
If HasDownloadingTask() Then
|
||||
Hint("在下载任务进行时,无法添加游戏文件夹!", HintType.Critical)
|
||||
Hint("在下载任务进行时,无法添加游戏文件夹!", HintType.Red)
|
||||
Return
|
||||
End If
|
||||
Try
|
||||
'获取输入
|
||||
NewFolder = SelectFolder()
|
||||
If NewFolder = "" Then Return
|
||||
If NewFolder.Contains("!") OrElse NewFolder.Contains(";") Then Hint("Minecraft 文件夹路径中不能含有感叹号或分号!", HintType.Critical) : Return
|
||||
If NewFolder.Contains("!") OrElse NewFolder.Contains(";") Then Hint("Minecraft 文件夹路径中不能含有感叹号或分号!", HintType.Red) : Return
|
||||
'要求输入显示名称
|
||||
Dim SplitedNames As String() = NewFolder.TrimEnd("\").Split("\")
|
||||
Dim DefaultName As String = If(SplitedNames.Last = ".minecraft", If(SplitedNames.Count >= 3, SplitedNames(SplitedNames.Count - 2), ""), SplitedNames.Last)
|
||||
@@ -182,7 +182,7 @@
|
||||
'检查文件夹权限
|
||||
If Not CheckPermission(FolderPath) Then
|
||||
If ShowHint Then
|
||||
Hint("添加文件夹失败:PCL 没有访问该文件夹的权限!", HintType.Critical)
|
||||
Hint("添加文件夹失败:PCL 没有访问该文件夹的权限!", HintType.Red)
|
||||
Return
|
||||
Else
|
||||
Throw New Exception("PCL 没有访问文件夹的权限:" & FolderPath)
|
||||
@@ -207,12 +207,12 @@
|
||||
If Folder.Split(">")(1) = FolderPath Then
|
||||
IsAdded = True
|
||||
If Folder.Split(">")(0) = DisplayName Then
|
||||
If ShowHint Then Hint("此文件夹已在列表中!", HintType.Info)
|
||||
If ShowHint Then Hint("此文件夹已在列表中!", HintType.Blue)
|
||||
Return
|
||||
Else
|
||||
Folders(i) = DisplayName & ">" & FolderPath
|
||||
IsReplace = True
|
||||
If ShowHint Then Hint("文件夹名称已更新为 " & DisplayName & " !", HintType.Finish)
|
||||
If ShowHint Then Hint("文件夹名称已更新为 " & DisplayName & " !", HintType.Green)
|
||||
End If
|
||||
Exit For
|
||||
End If
|
||||
@@ -226,7 +226,7 @@
|
||||
McFolderListLoader.Start(IsForceRestart:=True)
|
||||
'提示
|
||||
If IsReplace Then Return
|
||||
If ShowHint Then Hint("文件夹 " & DisplayName & " 已添加!", HintType.Finish)
|
||||
If ShowHint Then Hint("文件夹 " & DisplayName & " 已添加!", HintType.Green)
|
||||
'检查是否为根目录整合包,自动关闭版本隔离
|
||||
'1. 根目录中存在数个 Mod
|
||||
Dim ModFolder As New DirectoryInfo(FolderPath & "mods\")
|
||||
@@ -257,7 +257,7 @@
|
||||
Public Sub Create_Click()
|
||||
'检查是否有下载任务
|
||||
If HasDownloadingTask() Then
|
||||
Hint("在下载任务进行时,无法创建游戏文件夹!", HintType.Critical)
|
||||
Hint("在下载任务进行时,无法创建游戏文件夹!", HintType.Red)
|
||||
Return
|
||||
End If
|
||||
If Not Directory.Exists(Path & ".minecraft\") Then
|
||||
@@ -265,7 +265,7 @@
|
||||
Directory.CreateDirectory(Path & ".minecraft\versions\")
|
||||
Setup.Set("LaunchFolderSelect", "$.minecraft\")
|
||||
McFolderLauncherProfilesJsonCreate(Path & ".minecraft\")
|
||||
Hint("新建 .minecraft 文件夹成功!", HintType.Finish)
|
||||
Hint("新建 .minecraft 文件夹成功!", HintType.Green)
|
||||
End If
|
||||
McFolderListLoader.Start(IsForceRestart:=True)
|
||||
End Sub
|
||||
@@ -307,7 +307,7 @@
|
||||
Next
|
||||
'保存
|
||||
Setup.Set("LaunchFolders", If(Not Folders.Any(), "", Join(Folders.ToArray, "|")))
|
||||
Hint(If(Folder.Type = McFolderType.Custom, "文件夹 " & Name & " 已从列表中移除!", "文件夹名称已复原!"), HintType.Finish)
|
||||
Hint(If(Folder.Type = McFolderType.Custom, "文件夹 " & Name & " 已从列表中移除!", "文件夹名称已复原!"), HintType.Green)
|
||||
McFolderListLoader.Start(IsForceRestart:=True)
|
||||
|
||||
Catch ex As Exception
|
||||
@@ -336,10 +336,10 @@
|
||||
Sub()
|
||||
'删除文件夹
|
||||
Try
|
||||
Hint("正在" & DeleteText & "文件夹 " & Folder.Name & "!", HintType.Info)
|
||||
Hint("正在" & DeleteText & "文件夹 " & Folder.Name & "!", HintType.Blue)
|
||||
DeleteDirectory(Folder.Path)
|
||||
If DeleteText = "清空" Then Directory.CreateDirectory(Folder.Path)
|
||||
Hint("已" & DeleteText & "文件夹 " & Folder.Name & "!", HintType.Finish)
|
||||
Hint("已" & DeleteText & "文件夹 " & Folder.Name & "!", HintType.Green)
|
||||
Catch ex As Exception
|
||||
Log(ex, DeleteText & "文件夹 " & Folder.Name & " 失败", LogLevel.Hint)
|
||||
Finally
|
||||
@@ -389,7 +389,7 @@
|
||||
Next
|
||||
'如果没有添加过,则添加进去(因为修改了默认项的名称)
|
||||
If Not IsAdded Then Folders.Add(NewName & ">" & Folder.Path)
|
||||
Hint("文件夹名称已更新为 " & NewName & " !", HintType.Finish)
|
||||
Hint("文件夹名称已更新为 " & NewName & " !", HintType.Green)
|
||||
'保存
|
||||
Setup.Set("LaunchFolders", Join(Folders.ToArray, "|"))
|
||||
McFolderListLoader.Start(IsForceRestart:=True)
|
||||
@@ -403,7 +403,7 @@
|
||||
If Not e.RaiseByMouse OrElse Not sender.Checked Then Return
|
||||
'检查是否有下载任务
|
||||
If HasDownloadingTask(True) Then
|
||||
Hint("在下载任务进行时,无法切换游戏文件夹!", HintType.Critical)
|
||||
Hint("在下载任务进行时,无法切换游戏文件夹!", HintType.Red)
|
||||
e.Handled = True
|
||||
Return
|
||||
End If
|
||||
|
||||
@@ -114,22 +114,7 @@
|
||||
Log(ex, "将版本列表转换显示时失败", LogLevel.Feedback)
|
||||
End Try
|
||||
End Sub
|
||||
Public Shared Function McVersionListItem(Version As McVersion) As MyListItem
|
||||
Dim NewItem As New MyListItem With {.Title = Version.Name, .Info = Version.Info, .Height = 42, .Tag = Version, .SnapsToDevicePixels = True, .Type = MyListItem.CheckType.Clickable}
|
||||
Try
|
||||
If Version.Logo.EndsWith("PCL\Logo.png") Then
|
||||
NewItem.Logo = Version.Path & "PCL\Logo.png" '修复老版本中,存储的自定义 Logo 使用完整路径,导致移动后无法加载的 Bug
|
||||
Else
|
||||
NewItem.Logo = Version.Logo
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Log(ex, "加载版本图标失败", LogLevel.Hint)
|
||||
NewItem.Logo = "pack://application:,,,/images/Blocks/RedstoneBlock.png"
|
||||
End Try
|
||||
NewItem.ContentHandler = AddressOf McVersionListContent
|
||||
Return NewItem
|
||||
End Function
|
||||
Private Shared Sub McVersionListContent(sender As MyListItem, e As EventArgs)
|
||||
Public Shared Sub McVersionListContent(sender As MyListItem, e As EventArgs)
|
||||
Dim Version As McVersion = sender.Tag
|
||||
'注册点击事件
|
||||
AddHandler sender.Click, AddressOf Item_Click
|
||||
@@ -225,10 +210,10 @@
|
||||
IniClearCache(Version.Path & "PCL\Setup.ini")
|
||||
If IsShiftPressed Then
|
||||
DeleteDirectory(Version.Path)
|
||||
Hint("版本 " & Version.Name & " 已永久删除!", HintType.Finish)
|
||||
Hint("版本 " & Version.Name & " 已永久删除!", HintType.Green)
|
||||
Else
|
||||
FileIO.FileSystem.DeleteDirectory(Version.Path, FileIO.UIOption.AllDialogs, FileIO.RecycleOption.SendToRecycleBin)
|
||||
Hint("版本 " & Version.Name & " 已删除到回收站!", HintType.Finish)
|
||||
Hint("版本 " & Version.Name & " 已删除!", HintType.Green)
|
||||
End If
|
||||
Case 2
|
||||
Return
|
||||
|
||||
@@ -227,7 +227,7 @@
|
||||
Me.Value = Value
|
||||
Me.Source = Source
|
||||
Me.Type = If(Value, New Object).GetType
|
||||
Me.DefaultValueEncoded = If(Encoded, SecretEncrypt(Value, "PCL" & UniqueAddress), Value)
|
||||
Me.DefaultValueEncoded = If(Encoded, SecretEncrypt(Value, "PCL" & Identify), Value)
|
||||
Catch ex As Exception
|
||||
Log(ex, "初始化 SetupEntry 失败", LogLevel.Feedback) '#5095 的 fallback
|
||||
End Try
|
||||
@@ -241,6 +241,14 @@
|
||||
Public Sub [Set](Key As String, Value As Object, Optional ForceReload As Boolean = False, Optional Version As McVersion = Nothing)
|
||||
[Set](Key, Value, SetupDict(Key), ForceReload, Version)
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' 写入某个未经加密的设置项。
|
||||
''' 若该设置项经过了加密,则会抛出异常。
|
||||
''' </summary>
|
||||
Public Sub SetSafe(Key As String, Value As Object, Optional ForceReload As Boolean = False, Optional Version As McVersion = Nothing)
|
||||
If SetupDict(Key).Encoded Then Throw New InvalidOperationException("禁止写入加密设置项:" & Key)
|
||||
[Set](Key, Version, ForceReload, Version)
|
||||
End Sub
|
||||
Private Sub [Set](Key As String, Value As Object, E As SetupEntry, ForceReload As Boolean, Version As McVersion)
|
||||
Try
|
||||
|
||||
@@ -258,7 +266,7 @@
|
||||
If E.Encoded Then
|
||||
Try
|
||||
If Value Is Nothing Then Value = ""
|
||||
Value = SecretEncrypt(Value, "PCL" & UniqueAddress)
|
||||
Value = SecretEncrypt(Value, "PCL" & Identify)
|
||||
Catch ex As Exception
|
||||
Log(ex, "加密设置失败:" & Key, LogLevel.Developer)
|
||||
End Try
|
||||
@@ -303,9 +311,17 @@
|
||||
''' 获取某个设置项的值。
|
||||
''' </summary>
|
||||
Public Function [Get](Key As String, Optional Version As McVersion = Nothing)
|
||||
If Not SetupDict.ContainsKey(Key) Then Throw New KeyNotFoundException("未找到设置项:" & Key) With {.Source = Key}
|
||||
If Not SetupDict.ContainsKey(Key) Then Throw New KeyNotFoundException("未找到设置项:" & Key)
|
||||
Return [Get](Key, SetupDict(Key), Version)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' 获取某个未经加密的设置项的值。
|
||||
''' 若该设置项经过了加密,则会抛出异常。
|
||||
''' </summary>
|
||||
Public Function GetSafe(Key As String, Optional Version As McVersion = Nothing)
|
||||
If SetupDict(Key).Encoded Then Throw New InvalidOperationException("禁止读取加密设置项:" & Key)
|
||||
Return [Get](Key, Version)
|
||||
End Function
|
||||
Private Function [Get](Key As String, E As SetupEntry, Version As McVersion)
|
||||
'获取强制值
|
||||
Dim Force As String = ForceValue(Key)
|
||||
@@ -383,7 +399,7 @@
|
||||
SourceValue = E.DefaultValue
|
||||
Else
|
||||
Try
|
||||
SourceValue = SecretDecrypt(SourceValue, "PCL" & UniqueAddress)
|
||||
SourceValue = SecretDecrypt(SourceValue, "PCL" & Identify)
|
||||
Catch ex As Exception
|
||||
Log(ex, "解密设置失败:" & Key, LogLevel.Developer)
|
||||
SourceValue = E.DefaultValue
|
||||
@@ -601,8 +617,7 @@
|
||||
FrmSetupUI.HintCustom.Visibility = Visibility.Visible
|
||||
FrmSetupUI.HintCustomWarn.Visibility = If(Setup.Get("HintCustomWarn"), Visibility.Collapsed, Visibility.Visible)
|
||||
FrmSetupUI.HintCustom.Text = $"从 PCL 文件夹下的 Custom.xaml 读取主页内容。{vbCrLf}你可以手动编辑该文件,向主页添加文本、图片、常用网站、快捷启动等功能。"
|
||||
FrmSetupUI.HintCustom.EventType = ""
|
||||
FrmSetupUI.HintCustom.EventData = ""
|
||||
CustomEventService.SetEventType(FrmSetupUI.HintCustom, CustomEvent.EventType.None)
|
||||
Case 2 '联网
|
||||
FrmSetupUI.PanCustomPreset.Visibility = Visibility.Collapsed
|
||||
FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed
|
||||
@@ -610,8 +625,8 @@
|
||||
FrmSetupUI.HintCustom.Visibility = Visibility.Visible
|
||||
FrmSetupUI.HintCustomWarn.Visibility = If(Setup.Get("HintCustomWarn"), Visibility.Collapsed, Visibility.Visible)
|
||||
FrmSetupUI.HintCustom.Text = $"从指定网址联网获取主页内容。服主也可以用于动态更新服务器公告。{vbCrLf}如果你制作了稳定运行的联网主页,可以点击这条提示投稿,若合格即可加入预设!"
|
||||
FrmSetupUI.HintCustom.EventType = "打开网页"
|
||||
FrmSetupUI.HintCustom.EventData = "https://github.com/Meloong-Git/PCL/discussions/2528"
|
||||
CustomEventService.SetEventType(FrmSetupUI.HintCustom, CustomEvent.EventType.打开网页)
|
||||
CustomEventService.SetEventData(FrmSetupUI.HintCustom, "https://github.com/Meloong-Git/PCL/discussions/2528")
|
||||
Case 3 '预设
|
||||
FrmSetupUI.PanCustomPreset.Visibility = Visibility.Visible
|
||||
FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed
|
||||
|
||||
@@ -41,9 +41,9 @@
|
||||
<local:MyComboBoxItem Content="隔离所有版本" ToolTip="不同版本之间的存档、Mod、资源包等均不互通。
这会导致不同原版版本间的存档不能共用,所以一般不推荐。" />
|
||||
</local:MyComboBox>
|
||||
<TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="游戏窗口标题" Margin="0,0,25,0" />
|
||||
<local:MyTextBox x:Name="TextArgumentTitle" Grid.Row="2" Grid.ColumnSpan="2" Tag="LaunchArgumentTitle" Grid.Column="1" ToolTip="自定义游戏窗口的标题,若留空则不进行更改。
支持以下替换标记:
 · {user}:玩家名字
 · {login}:玩家的登录方式
 · {name}:游戏版本名
 · {date}、{time}:当前的系统时间
 · {version}:游戏对应的原版版本号" HintText="默认" MaxLength="100" />
|
||||
<local:MyTextBox x:Name="TextArgumentTitle" Grid.Row="2" Grid.ColumnSpan="2" Tag="LaunchArgumentTitle" Grid.Column="1" ToolTip="自定义游戏窗口的标题,若留空则不进行更改。
你可以用替换标记来动态改变其内容,在 更多 → 帮助 中搜索 “替换标记” 以了解用法。" HintText="默认" MaxLength="100" />
|
||||
<TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="自定义信息" Margin="0,0,25,0" />
|
||||
<local:MyTextBox x:Name="TextArgumentInfo" Grid.Row="4" Grid.ColumnSpan="2" Tag="LaunchArgumentInfo" Text="PCL" Grid.Column="1" ToolTip="该信息会显示在游戏主界面的左下角,与 F3 调试页面的左上角">
|
||||
<local:MyTextBox x:Name="TextArgumentInfo" Grid.Row="4" Grid.ColumnSpan="2" Tag="LaunchArgumentInfo" Text="PCL" Grid.Column="1" ToolTip="该信息会显示在游戏主界面的左下角,与 F3 调试页面的左上角。
你可以用替换标记来动态改变其内容,在 更多 → 帮助 中搜索 “替换标记” 以了解用法。">
|
||||
<local:MyTextBox.ValidateRules>
|
||||
<local:ValidateExcept>
|
||||
<local:ValidateExcept.Excepts>
|
||||
@@ -240,13 +240,13 @@
|
||||
ToolTip="还原" ToolTipService.Placement="Right" ToolTipService.InitialShowDelay="200" ToolTipService.VerticalOffset="-1"
|
||||
Logo="M530 0c287 0 521 229 521 511s-233 511-521 511c-233 0-436-151-500-368a63 63 0 0 1 44-79 65 65 0 0 1 80 43c48 162 200 276 375 276 215 0 390-171 390-383s-174-383-390-383c-103 0-199 39-270 106l21-5a63 63 0 0 1 33 123l-157 42a65 65 0 0 1-90-42l-49-183a65 65 0 1 1 126-33l6 26A524 524 0 0 1 530 0z" LogoScale="0.9" />
|
||||
</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}。
也支持使用 PCL 的替换标记,在 更多 → 帮助 中搜索 “替换标记” 以了解用法。" MaxLength="4000"
|
||||
Height="100" AcceptsReturn="True" TextWrapping="Wrap" VerticalContentAlignment="Top" Padding="0,5" VerticalScrollBarVisibility="Auto" />
|
||||
<TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="游戏参数" Margin="0,0,25,0" />
|
||||
<local:MyTextBox x:Name="TextAdvanceGame" Grid.Row="2" Grid.ColumnSpan="2" Tag="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}。
也支持使用 PCL 的替换标记,在 更多 → 帮助 中搜索 “替换标记” 以了解用法。" />
|
||||
<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=""
|
||||
ToolTip="在 MC 启动前执行特定命令或程序,语法与 Windows 的命令提示符一致。

可以使用以下替换标记实现相对路径(路径均以 \ 结尾):
 · {path}:PCL 的 exe 文件所在的文件夹
 · {minecraft}:.minecraft 文件夹
 · {verpath}:版本文件夹(.minecraft\versions\版本名\)
 · {verindie}:开启版本隔离时等同版本文件夹,未开启时等同 .minecraft 文件夹
 · {java}:游戏运行时的 Java 文件夹

除此之外,也支持以下替换标记:
 · {user}:玩家名字
 · {login}:玩家的登录方式
 · {uuid}:玩家的 UUID
 · {name}:游戏版本名
 · {date}、{time}:当前的系统时间
 · {version}:游戏对应的原版版本号

例如:
 · "{verpath}test.exe" :运行版本文件夹下的 test.exe 程序
 · "{java}java.exe" -jar "{verpath}test.jar" :用 Java 运行版本文件夹下的 test.jar
 · notepad "{verindie}options.txt" :使用记事本打开该版本的设置文件

涉及路径的操作最好都打上双引号,以避免路径中的空格导致运行失败。
执行命令时,命令行所在的目录是当前的 .minecraft 文件夹。" />
|
||||
ToolTip="在 MC 启动前执行特定命令或程序,语法与 Windows 的命令提示符一致。

你可以用替换标记来动态改变其内容或实现相对路径,在 更多 → 帮助 中搜索 “替换标记” 以了解用法。例如:
 · "{verpath}test.exe" :运行版本文件夹下的 test.exe 程序
 · "{java}java.exe" -jar "{verpath}test.jar" :用 Java 运行版本文件夹下的 test.jar
 · notepad "{verindie}options.txt" :使用记事本打开该版本的设置文件

涉及路径的操作最好都打上双引号,以避免路径中的空格导致运行失败。
执行命令时,命令行所在的目录是当前的 .minecraft 文件夹。" />
|
||||
<local:MyCheckBox Grid.Row="5" Grid.Column="1" x:Name="CheckAdvanceRunWait" Tag="LaunchAdvanceRunWait" Visibility="Collapsed"
|
||||
Text="等待命令执行完成后再继续启动" Margin="0,8,0,7" />
|
||||
<StackPanel Margin="0,12,0,4" Grid.Row="6" Grid.ColumnSpan="2" HorizontalAlignment="Left">
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
JavaSearchLoader.Start(IsForceRestart:=True)
|
||||
|
||||
Log("[Setup] 已初始化启动设置")
|
||||
Hint("已初始化启动设置!", HintType.Finish, False)
|
||||
Hint("已初始化启动设置!", HintType.Green, False)
|
||||
Catch ex As Exception
|
||||
Log(ex, "初始化启动设置失败", LogLevel.Msgbox)
|
||||
End Try
|
||||
@@ -170,7 +170,7 @@
|
||||
Try
|
||||
File.Delete(PathAppdata & "CustomSkin.png")
|
||||
RadioSkinType0.SetChecked(True, True)
|
||||
Hint("离线皮肤已清空!", HintType.Finish)
|
||||
Hint("离线皮肤已清空!", HintType.Green)
|
||||
Catch ex As Exception
|
||||
Log(ex, "清空离线皮肤失败", LogLevel.Msgbox)
|
||||
End Try
|
||||
@@ -468,7 +468,7 @@ PreFin:
|
||||
'手动选择
|
||||
Private Sub BtnArgumentJavaSelect_Click(sender As Object, e As EventArgs) Handles BtnArgumentJavaSelect.Click
|
||||
If JavaSearchLoader.State = LoadState.Loading Then
|
||||
Hint("正在搜索 Java,请稍候!", HintType.Critical)
|
||||
Hint("正在搜索 Java,请稍候!", HintType.Red)
|
||||
Return
|
||||
End If
|
||||
'选择 Java
|
||||
@@ -489,7 +489,7 @@ PreFin:
|
||||
Setup.Set("LaunchArgumentJavaAll", JavaNewList.ToString(Newtonsoft.Json.Formatting.None))
|
||||
'重新加载列表
|
||||
JavaSearchLoader.Start(IsForceRestart:=True)
|
||||
Hint("已将该 Java 加入 Java 列表!", HintType.Finish)
|
||||
Hint("已将该 Java 加入 Java 列表!", HintType.Green)
|
||||
Catch ex As Exception
|
||||
Log(ex, "该 Java 存在异常,无法使用", LogLevel.Msgbox, "异常的 Java")
|
||||
Return
|
||||
@@ -498,7 +498,7 @@ PreFin:
|
||||
'自动查找
|
||||
Private Sub BtnArgumentJavaSearch_Click(sender As Object, e As EventArgs) Handles BtnArgumentJavaSearch.Click
|
||||
If JavaSearchLoader.State = LoadState.Loading Then
|
||||
Hint("正在搜索 Java,请稍候!", HintType.Critical)
|
||||
Hint("正在搜索 Java,请稍候!", HintType.Red)
|
||||
Return
|
||||
End If
|
||||
RunInThread(
|
||||
@@ -506,9 +506,9 @@ PreFin:
|
||||
Hint("正在搜索 Java!")
|
||||
JavaSearchLoader.WaitForExit(IsForceRestart:=True)
|
||||
If Not JavaList.Any() Then
|
||||
Hint("未找到可用的 Java!", HintType.Critical)
|
||||
Hint("未找到可用的 Java!", HintType.Red)
|
||||
Else
|
||||
Hint("已找到 " & JavaList.Count & " 个 Java,请检查下拉框查看列表!", HintType.Finish)
|
||||
Hint("已找到 " & JavaList.Count & " 个 Java,请检查下拉框查看列表!", HintType.Green)
|
||||
End If
|
||||
End Sub)
|
||||
End Sub
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
Setup.Reset("LinkHiperCertWarn")
|
||||
|
||||
Log("[Setup] 已初始化联机页设置")
|
||||
Hint("已初始化联机页设置!", HintType.Finish, False)
|
||||
Hint("已初始化联机页设置!", HintType.Green, False)
|
||||
Catch ex As Exception
|
||||
Log(ex, "初始化联机页设置失败", LogLevel.Msgbox)
|
||||
End Try
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
Setup.Reset("SystemSystemTelemetry")
|
||||
|
||||
Log("[Setup] 已初始化启动器页设置")
|
||||
Hint("已初始化启动器页设置!", HintType.Finish, False)
|
||||
Hint("已初始化启动器页设置!", HintType.Green, False)
|
||||
Catch ex As Exception
|
||||
Log(ex, "初始化启动器页设置失败", LogLevel.Msgbox)
|
||||
End Try
|
||||
@@ -136,7 +136,7 @@
|
||||
|
||||
'识别码/解锁码替代入口
|
||||
Private Sub BtnSystemIdentify_Click(sender As Object, e As MouseButtonEventArgs) Handles BtnSystemIdentify.Click
|
||||
PageOtherAbout.CopyUniqueAddress()
|
||||
PageOtherAbout.CopyIdentify()
|
||||
End Sub
|
||||
Private Sub BtnSystemUnlock_Click(sender As Object, e As MouseButtonEventArgs) Handles BtnSystemUnlock.Click
|
||||
DonateCodeInput()
|
||||
|
||||
@@ -225,7 +225,8 @@
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" Text="下载地址" Margin="0,0,25,0" />
|
||||
<local:MyTextBox x:Name="TextCustomNet" Tag="UiCustomNet" Grid.Column="1" MaxHeight="28">
|
||||
<local:MyTextBox x:Name="TextCustomNet" Tag="UiCustomNet" Grid.Column="1" MaxHeight="28"
|
||||
ToolTip="你可以用替换标记动态改变网址,以传入参数或变量。
在 更多 → 帮助 中搜索 “替换标记” 以了解用法。">
|
||||
<local:MyTextBox.ValidateRules>
|
||||
<local:ValidateNullable />
|
||||
<local:ValidateHttp />
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
Setup.Reset("UiHiddenOtherTest")
|
||||
|
||||
Log("[Setup] 已初始化个性化设置!")
|
||||
Hint("已初始化个性化设置", HintType.Finish, False)
|
||||
Hint("已初始化个性化设置", HintType.Green, False)
|
||||
Catch ex As Exception
|
||||
Log(ex, "初始化个性化设置失败", LogLevel.Msgbox)
|
||||
End Try
|
||||
@@ -215,7 +215,7 @@
|
||||
If MyMsgBox("即将删除背景图片文件夹中的所有文件。" & vbCrLf & "此操作不可撤销,是否确定?", "警告",, "取消", IsWarn:=True) = 1 Then
|
||||
DeleteDirectory(Path & "PCL\Pictures")
|
||||
BackgroundRefresh(False, True)
|
||||
Hint("背景图片已清空!", HintType.Finish)
|
||||
Hint("背景图片已清空!", HintType.Green)
|
||||
End If
|
||||
End Sub
|
||||
''' <summary>
|
||||
@@ -238,10 +238,10 @@
|
||||
If Not Pic.Any() Then
|
||||
If Refresh Then
|
||||
If FrmMain.ImgBack.Visibility = Visibility.Collapsed Then
|
||||
If IsHint Then Hint("未检测到可用背景图片!", HintType.Critical)
|
||||
If IsHint Then Hint("未检测到可用背景图片!", HintType.Red)
|
||||
Else
|
||||
FrmMain.ImgBack.Visibility = Visibility.Collapsed
|
||||
If IsHint Then Hint("背景图片已清除!", HintType.Finish)
|
||||
If IsHint Then Hint("背景图片已清除!", HintType.Green)
|
||||
End If
|
||||
End If
|
||||
If Not IsNothing(FrmSetupUI) Then FrmSetupUI.BackgroundRefreshUI(False, 0)
|
||||
@@ -253,7 +253,7 @@
|
||||
FrmMain.ImgBack.Background = New MyBitmap(Address)
|
||||
Setup.Load("UiBackgroundSuit", True)
|
||||
FrmMain.ImgBack.Visibility = Visibility.Visible
|
||||
If IsHint Then Hint("背景图片已刷新:" & GetFileNameFromPath(Address), HintType.Finish, False)
|
||||
If IsHint Then Hint("背景图片已刷新:" & GetFileNameFromPath(Address), HintType.Green, False)
|
||||
Catch ex As Exception
|
||||
If ex.Message.Contains("参数无效") Then
|
||||
Log("刷新背景图片失败,该图片文件可能并非标准格式。" & vbCrLf &
|
||||
@@ -338,7 +338,7 @@ Refresh:
|
||||
Try
|
||||
File.Delete(Path & "PCL\Logo.png")
|
||||
RadioLogoType1.SetChecked(True, True)
|
||||
Hint("标题栏图片已清空!", HintType.Finish)
|
||||
Hint("标题栏图片已清空!", HintType.Green)
|
||||
Catch ex As Exception
|
||||
Log(ex, "清空标题栏图片失败", LogLevel.Msgbox)
|
||||
End Try
|
||||
@@ -381,7 +381,7 @@ Refresh:
|
||||
'删除文件
|
||||
Try
|
||||
DeleteDirectory(Path & "PCL\Musics")
|
||||
Hint("背景音乐已删除!", HintType.Finish)
|
||||
Hint("背景音乐已删除!", HintType.Green)
|
||||
Catch ex As Exception
|
||||
Log(ex, "删除背景音乐失败", LogLevel.Msgbox)
|
||||
End Try
|
||||
@@ -410,7 +410,7 @@ Refresh:
|
||||
If MyMsgBox("当前已存在布局文件,继续生成教学文件将会覆盖现有布局文件!", "覆盖确认", "继续", "取消", IsWarn:=True) = 2 Then Return
|
||||
End If
|
||||
WriteFile(Path & "PCL\Custom.xaml", GetResources("Custom"))
|
||||
Hint("教学文件已生成!", HintType.Finish)
|
||||
Hint("教学文件已生成!", HintType.Green)
|
||||
OpenExplorer(Path & "PCL\Custom.xaml")
|
||||
Catch ex As Exception
|
||||
Log(ex, "生成教学文件失败", LogLevel.Feedback)
|
||||
@@ -418,7 +418,7 @@ Refresh:
|
||||
End Sub
|
||||
Private Sub BtnCustomRefresh_Click() Handles BtnCustomRefresh.Click
|
||||
FrmLaunchRight.ForceRefresh()
|
||||
Hint("已刷新主页!", HintType.Finish)
|
||||
Hint("已刷新主页!", HintType.Green)
|
||||
End Sub
|
||||
Private Sub BtnCustomTutorial_Click(sender As Object, e As EventArgs) Handles BtnCustomTutorial.Click
|
||||
MyMsgBox("1. 点击 生成教学文件 按钮,这会在 PCL 文件夹下生成 Custom.xaml 布局文件。" & vbCrLf &
|
||||
|
||||
@@ -96,7 +96,7 @@ Public Class PageSpeedLeft
|
||||
AddHandler Tb.MouseLeftButtonDown,
|
||||
Sub(sender As TextBlock, e As EventArgs)
|
||||
ClipboardSet(sender.Text, False)
|
||||
Hint("已复制错误详情!", HintType.Finish)
|
||||
Hint("已复制错误详情!", HintType.Green)
|
||||
End Sub
|
||||
Card.Children.Add(Tb)
|
||||
#End Region
|
||||
|
||||
@@ -262,7 +262,7 @@
|
||||
<local:MyButton Grid.Column="0" x:Name="BtnAdvancedImport" MinWidth="140" Text="读取配置" Padding="13,0" Margin="0,0,20,0" ColorType="Highlight" />
|
||||
<local:MyButton Grid.Column="1" x:Name="BtnAdvancedExport" MinWidth="140" Text="保存配置" Padding="13,0" Margin="0,0,20,0" />
|
||||
<local:MyButton Grid.Column="2" MinWidth="140" Text="整合包制作指南" Padding="13,0" Margin="0,0,20,0" x:Name="BtnAdvancedHelp"
|
||||
EventType="打开帮助" />
|
||||
local:CustomEventService.EventType="打开帮助" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</local:MyCard>
|
||||
|
||||
@@ -22,7 +22,8 @@ Public Class PageVersionExport
|
||||
Private Sub PageVersionExport_Loaded() Handles Me.Loaded
|
||||
AniControlEnabled += 1
|
||||
If CurrentVersion <> PageVersionLeft.Version.Path Then RefreshAll() '切换到了另一个版本,重置页面
|
||||
BtnAdvancedHelp.EventData = If(VersionBranchName = "Release", "指南/整合包制作 - Public.json", "指南/整合包制作 - Snapshot.json")
|
||||
CustomEventService.SetEventData(BtnAdvancedHelp,
|
||||
If(VersionBranchName = "Release", "指南/整合包制作 - Public.json", "指南/整合包制作 - Snapshot.json"))
|
||||
AniControlEnabled -= 1
|
||||
End Sub
|
||||
Public Sub RefreshAll() Implements IRefreshable.Refresh
|
||||
@@ -35,7 +36,7 @@ Public Class PageVersionExport
|
||||
TextExportVersion.HintText = "1.0.0"
|
||||
CheckAdvancedInclude.Checked = False
|
||||
CheckAdvancedModrinth.Checked = False
|
||||
GetExportOption(CheckOptionsBasic).Description = PageVersionLeft.Version.GetDefaultDescription()
|
||||
GetExportOption(CheckOptionsBasic).Description = PageVersionLeft.Version.GetVersionDescription()
|
||||
ResetConfigOverrides()
|
||||
ReloadAllSubOptions()
|
||||
RefreshAllOptionsUI()
|
||||
@@ -341,7 +342,7 @@ Public Class PageVersionExport
|
||||
ConfigLines.AddRange(GetExtraFileLines())
|
||||
'结束
|
||||
WriteFile(ConfigPath, ConfigLines.Join(vbCrLf))
|
||||
Hint("已保存配置文件:" & ConfigPath, HintType.Finish)
|
||||
Hint("已保存配置文件:" & ConfigPath, HintType.Green)
|
||||
OpenExplorer(ConfigPath)
|
||||
Catch ex As Exception
|
||||
Log(ex, "保存配置失败", LogLevel.Msgbox)
|
||||
@@ -378,7 +379,7 @@ Public Class PageVersionExport
|
||||
ExtraFiles = Nothing
|
||||
End If
|
||||
'结束
|
||||
Hint("已读取配置文件:" & ConfigPath, HintType.Finish)
|
||||
Hint("已读取配置文件:" & ConfigPath, HintType.Green)
|
||||
Catch ex As Exception
|
||||
Log(ex, "读取配置失败", LogLevel.Msgbox)
|
||||
End Try
|
||||
@@ -517,13 +518,13 @@ Public Class PageVersionExport
|
||||
If Directory.Exists(Line) Then
|
||||
CopyDirectory(Line, BaseFolder & GetFolderNameFromPath(Line) & "\")
|
||||
Else
|
||||
Hint($"未找到配置文件中指定的文件夹:{Line}", HintType.Critical)
|
||||
Hint($"未找到配置文件中指定的文件夹:{Line}", HintType.Red)
|
||||
End If
|
||||
Else
|
||||
If File.Exists(Line) Then
|
||||
CopyFile(Line, BaseFolder & GetFileNameFromPath(Line))
|
||||
Else
|
||||
Hint($"未找到配置文件中指定的单个文件:{Line}", HintType.Critical)
|
||||
Hint($"未找到配置文件中指定的单个文件:{Line}", HintType.Red)
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
@@ -306,7 +306,7 @@
|
||||
If Result.Any Then
|
||||
MyMsgBox(Join(Result, vbCrLf & vbCrLf), "Mod 检查结果")
|
||||
Else
|
||||
Hint("Mod 检查完成,未发现任何问题!", HintType.Finish)
|
||||
Hint("Mod 检查完成,未发现任何问题!", HintType.Green)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Log(ex, "进行 Mod 检查时出错", LogLevel.Feedback)
|
||||
@@ -340,7 +340,7 @@
|
||||
Log("[System] 文件为 jar/litemod 格式,尝试作为 Mod 安装")
|
||||
'检查回收站:回收站中的文件有错误的文件名
|
||||
If FilePathList.First.Contains(":\$RECYCLE.BIN\") Then
|
||||
Hint("请先将文件从回收站还原,再尝试安装!", HintType.Critical)
|
||||
Hint("请先将文件从回收站还原,再尝试安装!", HintType.Red)
|
||||
Return True
|
||||
End If
|
||||
'获取并检查目标版本
|
||||
@@ -362,9 +362,9 @@ Install:
|
||||
CopyFile(ModFile, TargetVersion.PathIndie & "mods\" & NewFileName)
|
||||
Next
|
||||
If FilePathList.Count = 1 Then
|
||||
Hint($"已安装 {GetFileNameFromPath(FilePathList.First).Replace(".disabled", "").Replace(".old", "")}!", HintType.Finish)
|
||||
Hint($"已安装 {GetFileNameFromPath(FilePathList.First).Replace(".disabled", "").Replace(".old", "")}!", HintType.Green)
|
||||
Else
|
||||
Hint($"已安装 {FilePathList.Count} 个 Mod!", HintType.Finish)
|
||||
Hint($"已安装 {FilePathList.Count} 个 Mod!", HintType.Green)
|
||||
End If
|
||||
'刷新列表
|
||||
If FrmMain.PageCurrent = FormMain.PageType.VersionSetup AndAlso FrmMain.PageCurrentSub = FormMain.PageSubType.VersionMod Then
|
||||
@@ -570,7 +570,7 @@ Install:
|
||||
If IsSuccessful Then
|
||||
RefreshBars()
|
||||
Else
|
||||
Hint("由于文件被占用,Mod 的状态切换失败,请尝试关闭正在运行的游戏后再试!", HintType.Critical)
|
||||
Hint("由于文件被占用,Mod 的状态切换失败,请尝试关闭正在运行的游戏后再试!", HintType.Red)
|
||||
ReloadModList(True)
|
||||
End If
|
||||
LoaderRun(LoaderFolderRunType.UpdateOnly)
|
||||
@@ -643,14 +643,14 @@ Install:
|
||||
Try
|
||||
For Each Entry As McMod In ModList
|
||||
If File.Exists(Entry.Path) Then
|
||||
My.Computer.FileSystem.DeleteFile(Entry.Path, FileIO.UIOption.AllDialogs, FileIO.RecycleOption.SendToRecycleBin)
|
||||
My.Computer.FileSystem.DeleteFile(Entry.Path, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin)
|
||||
Else
|
||||
Log($"[Mod] 未找到更新前的 Mod 文件,跳过对它的删除:{Entry.Path}", LogLevel.Debug)
|
||||
End If
|
||||
Next
|
||||
For Each Entry As KeyValuePair(Of String, String) In FileCopyList
|
||||
If File.Exists(Entry.Value) Then
|
||||
My.Computer.FileSystem.DeleteFile(Entry.Value, FileIO.UIOption.AllDialogs, FileIO.RecycleOption.SendToRecycleBin)
|
||||
My.Computer.FileSystem.DeleteFile(Entry.Value, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin)
|
||||
Log($"[Mod] 更新后的 Mod 文件已存在,将会把它放入回收站:{Entry.Value}", LogLevel.Debug)
|
||||
End If
|
||||
If Directory.Exists(GetPathFromFullPath(Entry.Value)) Then
|
||||
@@ -676,14 +676,14 @@ Install:
|
||||
Case 0 '一般是由于 Mod 文件被占用,然后玩家主动取消
|
||||
Log($"[Mod] 没有 Mod 被成功更新")
|
||||
Case 1
|
||||
Hint($"已成功更新 {FinishedFileNames.Single}!", HintType.Finish)
|
||||
Hint($"已成功更新 {FinishedFileNames.Single}!", HintType.Green)
|
||||
Case Else
|
||||
Hint($"已成功更新 {FinishedFileNames.Count} 个 Mod!", HintType.Finish)
|
||||
Hint($"已成功更新 {FinishedFileNames.Count} 个 Mod!", HintType.Green)
|
||||
End Select
|
||||
Case LoadState.Failed
|
||||
Hint("Mod 更新失败:" & Loader.Error.GetBrief(), HintType.Critical)
|
||||
Hint("Mod 更新失败:" & Loader.Error.GetBrief(), HintType.Red)
|
||||
Case LoadState.Aborted
|
||||
Hint("Mod 更新已中止!", HintType.Info)
|
||||
Hint("Mod 更新已中止!", HintType.Blue)
|
||||
Case Else
|
||||
Return
|
||||
End Select
|
||||
@@ -739,7 +739,7 @@ Install:
|
||||
If IsShiftPressed Then
|
||||
File.Delete(ModEntity.Path)
|
||||
Else
|
||||
My.Computer.FileSystem.DeleteFile(ModEntity.Path, FileIO.UIOption.AllDialogs, FileIO.RecycleOption.SendToRecycleBin)
|
||||
My.Computer.FileSystem.DeleteFile(ModEntity.Path, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin)
|
||||
End If
|
||||
Catch ex As OperationCanceledException
|
||||
Log(ex, "删除 Mod 被主动取消")
|
||||
@@ -760,7 +760,7 @@ Install:
|
||||
Next
|
||||
RefreshBars()
|
||||
If Not IsSuccessful Then
|
||||
Hint("由于文件被占用,Mod 删除失败,请尝试关闭正在运行的游戏后再试!", HintType.Critical)
|
||||
Hint("由于文件被占用,Mod 删除失败,请尝试关闭正在运行的游戏后再试!", HintType.Red)
|
||||
ReloadModList(True)
|
||||
ElseIf PanList.Children.Count = 0 Then
|
||||
ReloadModList(True) '删除了全部文件
|
||||
@@ -771,15 +771,15 @@ Install:
|
||||
If Not IsSuccessful Then Return
|
||||
If IsShiftPressed Then
|
||||
If ModList.Count = 1 Then
|
||||
Hint($"已彻底删除 {ModList.Single.FileName}!", HintType.Finish)
|
||||
Hint($"已彻底删除 {ModList.Single.FileName}!", HintType.Green)
|
||||
Else
|
||||
Hint($"已彻底删除 {ModList.Count} 个文件!", HintType.Finish)
|
||||
Hint($"已彻底删除 {ModList.Count} 个文件!", HintType.Green)
|
||||
End If
|
||||
Else
|
||||
If ModList.Count = 1 Then
|
||||
Hint($"已将 {ModList.Single.FileName} 删除到回收站!", HintType.Finish)
|
||||
Hint($"已将 {ModList.Single.FileName} 删除到回收站!", HintType.Green)
|
||||
Else
|
||||
Hint($"已将 {ModList.Count} 个文件删除到回收站!", HintType.Finish)
|
||||
Hint($"已将 {ModList.Count} 个文件删除到回收站!", HintType.Green)
|
||||
End If
|
||||
End If
|
||||
Catch ex As OperationCanceledException
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
BtnFolderMods.Visibility = If(PageVersionLeft.Version.Modable, Visibility.Visible, Visibility.Collapsed)
|
||||
'刷新版本显示
|
||||
PanDisplayItem.Children.Clear()
|
||||
ItemVersion = PageSelectRight.McVersionListItem(PageVersionLeft.Version)
|
||||
ItemVersion = PageVersionLeft.Version.ToListItem
|
||||
ItemVersion.IsHitTestVisible = False
|
||||
PanDisplayItem.Children.Add(ItemVersion)
|
||||
FrmMain.PageNameRefresh()
|
||||
@@ -169,7 +169,7 @@
|
||||
Log(ex, "重命名版本 json 失败")
|
||||
End Try
|
||||
'刷新与提示
|
||||
Hint("重命名成功!", HintType.Finish)
|
||||
Hint("重命名成功!", HintType.Green)
|
||||
PageVersionLeft.Version = New McVersion(NewName).Load()
|
||||
If Not IsNothing(McVersionCurrent) AndAlso McVersionCurrent.Equals(PageVersionLeft.Version) Then WriteIni(PathMcFolder & "PCL.ini", "Version", NewName)
|
||||
Reload()
|
||||
@@ -263,7 +263,7 @@
|
||||
If SavePath = "" Then Return
|
||||
'检查中断(等玩家选完弹窗指不定任务就结束了呢……)
|
||||
If McLaunchLoader.State = LoadState.Loading Then
|
||||
Hint("请在当前启动任务结束后再试!", HintType.Critical)
|
||||
Hint("请在当前启动任务结束后再试!", HintType.Red)
|
||||
Return
|
||||
End If
|
||||
'生成脚本
|
||||
@@ -284,13 +284,13 @@
|
||||
Try
|
||||
'忽略文件检查提示
|
||||
If ShouldIgnoreFileCheck(PageVersionLeft.Version) Then
|
||||
Hint("请先关闭 [版本设置 → 设置 → 高级启动选项 → 关闭文件校验],然后再尝试补全文件!", HintType.Info)
|
||||
Hint("请先关闭 [版本设置 → 设置 → 高级启动选项 → 关闭文件校验],然后再尝试补全文件!", HintType.Blue)
|
||||
Return
|
||||
End If
|
||||
'重复任务检查
|
||||
For Each OngoingLoader In LoaderTaskbar
|
||||
If OngoingLoader.Name <> PageVersionLeft.Version.Name & " 文件补全" Then Continue For
|
||||
Hint("正在处理中,请稍候!", HintType.Critical)
|
||||
Hint("正在处理中,请稍候!", HintType.Red)
|
||||
Return
|
||||
Next
|
||||
'启动
|
||||
@@ -299,11 +299,11 @@
|
||||
Sub()
|
||||
Select Case Loader.State
|
||||
Case LoadState.Finished
|
||||
Hint(Loader.Name & "成功!", HintType.Finish)
|
||||
Hint(Loader.Name & "成功!", HintType.Green)
|
||||
Case LoadState.Failed
|
||||
Hint(Loader.Name & "失败:" & Loader.Error.GetBrief(), HintType.Critical)
|
||||
Hint(Loader.Name & "失败:" & Loader.Error.GetBrief(), HintType.Red)
|
||||
Case LoadState.Aborted
|
||||
Hint(Loader.Name & "已取消!", HintType.Info)
|
||||
Hint(Loader.Name & "已取消!", HintType.Blue)
|
||||
End Select
|
||||
End Sub
|
||||
Loader.Start(PageVersionLeft.Version.Name)
|
||||
@@ -329,10 +329,10 @@
|
||||
IniClearCache(PageVersionLeft.Version.Path & "PCL\Setup.ini")
|
||||
If IsShiftPressed Then
|
||||
DeleteDirectory(PageVersionLeft.Version.Path)
|
||||
Hint("版本 " & PageVersionLeft.Version.Name & " 已永久删除!", HintType.Finish)
|
||||
Hint("版本 " & PageVersionLeft.Version.Name & " 已永久删除!", HintType.Green)
|
||||
Else
|
||||
FileIO.FileSystem.DeleteDirectory(PageVersionLeft.Version.Path, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin)
|
||||
Hint("版本 " & PageVersionLeft.Version.Name & " 已删除到回收站!", HintType.Finish)
|
||||
FileIO.FileSystem.DeleteDirectory(PageVersionLeft.Version.Path, FileIO.UIOption.AllDialogs, FileIO.RecycleOption.SendToRecycleBin)
|
||||
Hint("版本 " & PageVersionLeft.Version.Name & " 已删除到回收站!", HintType.Green)
|
||||
End If
|
||||
Case 2
|
||||
Return
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
ToolTip="与其余关闭隔离的版本共享存档、Mod 等文件。
若存在多个安装了 Mod 的版本,可能会由于 Mod 冲突而导致崩溃。" ToolTipService.HorizontalOffset="100"/>
|
||||
</local:MyComboBox>
|
||||
<TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="游戏窗口标题" Margin="0,0,25,0" />
|
||||
<local:MyTextBox x:Name="TextArgumentTitle" Grid.Row="2" Grid.ColumnSpan="2" Tag="VersionArgumentTitle" Grid.Column="1" ToolTip="自定义游戏窗口的标题,若留空则跟随全局设置的值。
支持以下替换标记:
 · {user}:玩家名字
 · {login}:玩家的登录方式
 · {name}:游戏版本名
 · {date}、{time}:当前的系统时间
 · {version}:游戏对应的原版版本号" HintText="跟随全局设置" MaxLength="100" />
|
||||
<local:MyTextBox x:Name="TextArgumentTitle" Grid.Row="2" Grid.ColumnSpan="2" Tag="VersionArgumentTitle" Grid.Column="1" ToolTip="自定义游戏窗口的标题,若留空则跟随全局设置的值。
你可以用替换标记来动态改变其内容,在 更多 → 帮助 中搜索 “替换标记” 以了解用法。" HintText="跟随全局设置" MaxLength="100" />
|
||||
<TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="自定义信息" Margin="0,0,25,0" />
|
||||
<local:MyTextBox x:Name="TextArgumentInfo" Grid.Row="4" Grid.ColumnSpan="2" Tag="VersionArgumentInfo" Grid.Column="1" HintText="跟随全局设置" ToolTip="该信息会显示在游戏主界面的左下角,与 F3 调试页面的左上角。
若留空,则跟随全局设置的值。">
|
||||
<local:MyTextBox x:Name="TextArgumentInfo" Grid.Row="4" Grid.ColumnSpan="2" Tag="VersionArgumentInfo" Grid.Column="1" HintText="跟随全局设置" ToolTip="该信息会显示在游戏主界面的左下角,与 F3 调试页面的左上角。
若留空,则跟随全局设置的值。

你可以用替换标记来动态改变其内容,在 更多 → 帮助 中搜索 “替换标记” 以了解用法。">
|
||||
<local:MyTextBox.ValidateRules>
|
||||
<local:ValidateExcept>
|
||||
<local:ValidateExcept.Excepts>
|
||||
@@ -209,13 +209,13 @@
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<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}。
也支持使用 PCL 的替换标记,在 更多 → 帮助 中搜索 “替换标记” 以了解用法。

若留空,则跟随全局设置的值。" HintText="跟随全局设置"
|
||||
Height="100" AcceptsReturn="True" TextWrapping="Wrap" VerticalContentAlignment="Top" Padding="0,5" VerticalScrollBarVisibility="Auto" />
|
||||
<TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Left" Text="游戏参数" Margin="0,0,25,0" />
|
||||
<local:MyTextBox x:Name="TextAdvanceGame" Grid.Row="2" Grid.ColumnSpan="2" Tag="VersionAdvanceGame" Grid.Column="1" ToolTip="文本框中的内容将会被直接拼合在启动参数的末尾。
例如,输入 --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}。
也支持使用 PCL 的替换标记,在 更多 → 帮助 中搜索 “替换标记” 以了解用法。

若留空,则跟随全局设置的值。" HintText="跟随全局设置" />
|
||||
<TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Text="启动前执行命令" Margin="0,0,25,3" />
|
||||
<local:MyTextBox x:Name="TextAdvanceRun" Grid.Row="4" Grid.ColumnSpan="2" Tag="VersionAdvanceRun" Grid.Column="1" HintText="" Margin="0,0,0,3"
|
||||
ToolTip="该项不会覆盖全局设置:启动时会先执行全局设置的命令,再执行版本设置的命令。

在 MC 启动前执行特定命令或程序,语法与 Windows 的命令提示符一致。

可以使用以下替换标记实现相对路径(路径均以 \ 结尾):
 · {path}:PCL 的 exe 文件所在的文件夹
 · {minecraft}:.minecraft 文件夹
 · {verpath}:版本文件夹(.minecraft\versions\版本名\)
 · {verindie}:开启版本隔离时等同版本文件夹,未开启时等同 .minecraft 文件夹
 · {java}:游戏运行时的 Java 文件夹

除此之外,也支持以下替换标记:
 · {user}:玩家名字
 · {login}:玩家的登录方式
 · {uuid}:玩家的 UUID
 · {name}:游戏版本名
 · {date}、{time}:当前的系统时间
 · {version}:游戏对应的原版版本号

例如:
 · "{verpath}test.exe" :运行版本文件夹下的 test.exe 程序
 · "{java}java.exe" -jar "{verpath}test.jar" :用 Java 运行版本文件夹下的 test.jar
 · notepad "{verindie}options.txt" :使用记事本打开该版本的设置文件

涉及路径的操作最好都打上双引号,以避免路径中的空格导致运行失败。
执行命令时,命令行所在的目录是当前的 .minecraft 文件夹。" />
|
||||
ToolTip="该项不会覆盖全局设置:启动时会先执行全局设置的命令,再执行版本设置的命令。

在 MC 启动前执行特定命令或程序,语法与 Windows 的命令提示符一致。

你可以用替换标记来动态改变其内容或实现相对路径,在 更多 → 帮助 中搜索 “替换标记” 以了解用法。例如:
 · "{verpath}test.exe" :运行版本文件夹下的 test.exe 程序
 · "{java}java.exe" -jar "{verpath}test.jar" :用 Java 运行版本文件夹下的 test.jar
 · notepad "{verindie}options.txt" :使用记事本打开该版本的设置文件

涉及路径的操作最好都打上双引号,以避免路径中的空格导致运行失败。
执行命令时,命令行所在的目录是当前的 .minecraft 文件夹。" />
|
||||
<local:MyCheckBox Grid.Row="5" Grid.Column="1" x:Name="CheckAdvanceRunWait" Tag="VersionAdvanceRunWait" Visibility="Collapsed"
|
||||
Text="等待命令执行完成后再继续启动" Margin="0,5,0,0" />
|
||||
<StackPanel Margin="0,12,0,4" Grid.Row="6" Grid.ColumnSpan="2" HorizontalAlignment="Left">
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
JavaSearchLoader.Start(IsForceRestart:=True)
|
||||
|
||||
Log("[Setup] 已初始化版本独立设置")
|
||||
Hint("已初始化版本独立设置!", HintType.Finish, False)
|
||||
Hint("已初始化版本独立设置!", HintType.Green, False)
|
||||
Catch ex As Exception
|
||||
Log(ex, "初始化版本独立设置失败", LogLevel.Msgbox)
|
||||
End Try
|
||||
|
||||
Reference in New Issue
Block a user