Skip to content

Commit 44aea3e

Browse files
committed
2.10.0
1 parent 9c8be3a commit 44aea3e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+1273
-2000
lines changed

Plain Craft Launcher 2/Application.xaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@
209209
</Setter.Value>
210210
</Setter>
211211
</Style>
212-
<Style TargetType="local:MyScrollViewer">
212+
<Style TargetType="local:MyScrollViewer" x:Name="StyleMyScrollViewer">
213213
<Setter Property="OverridesDefaultStyle" Value="True" />
214214
<Setter Property="CanContentScroll" Value="False" />
215215
<Setter Property="PanningMode" Value="VerticalOnly" />
@@ -225,6 +225,7 @@
225225
</Setter.Value>
226226
</Setter>
227227
</Style>
228+
<Style TargetType="local:PageComp" BasedOn="{StaticResource {x:Type local:MyScrollViewer}}" />
228229
<Style TargetType="ScrollViewer" x:Key="ScrollViewerFullMargin">
229230
<Setter Property="OverridesDefaultStyle" Value="True" />
230231
<Setter Property="CanContentScroll" Value="False" />

Plain Craft Launcher 2/Application.xaml.vb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,11 @@ WaitRetry:
115115
LogStart()
116116
'添加日志
117117
Log($"[Start] 程序版本:{VersionDisplayName} ({VersionCode}{If(CommitHash = "", "", $"#{CommitHash}")})")
118+
#If RELEASE Then
119+
Log($"[Start] 识别码:{UniqueAddress}{If(ThemeCheckOne(9), "正式版", "")}")
120+
#Else
118121
Log($"[Start] 识别码:{UniqueAddress}{If(ThemeCheckOne(9), "已解锁反馈主题", "")}")
122+
#End If
119123
Log($"[Start] 程序路径:{PathWithName}")
120124
Log($"[Start] 系统编码:{Encoding.Default.HeaderName} ({Encoding.Default.CodePage}, GBK={IsGBKEncoding})")
121125
Log($"[Start] 管理员权限:{IsAdmin()}")

Plain Craft Launcher 2/Controls/MyListItem.xaml.vb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ Public Class MyListItem
345345
Return _Checked
346346
End Get
347347
Set(value As Boolean)
348-
SetChecked(value, False, value <> _Checked) '仅在值发生变化时触发动画,否则会导致UI显示不正确 (#4596)
348+
SetChecked(value, False, value <> _Checked) '仅在值发生变化时触发动画 (#4596)
349349
End Set
350350
End Property
351351
''' <summary>

Plain Craft Launcher 2/Controls/MyMsg/MyMsgInput.xaml.vb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Public Class MyMsgInput
1+
Public Class MyMsgInput
22

33
Private ReadOnly MyConverter As MyMsgBoxConverter
44
Private ReadOnly Uuid As Integer = GetUuid()
@@ -72,7 +72,7 @@ Public Class MyMsgInput
7272
End Sub
7373

7474
Public Sub Btn1_Click() Handles Btn1.Click
75-
TextArea.Validate()
75+
TextArea.Validate() '#5773
7676
If MyConverter.IsExited OrElse Not TextArea.IsValidated Then Exit Sub
7777
MyConverter.IsExited = True
7878
MyConverter.Result = TextArea.Text

Plain Craft Launcher 2/Controls/MyResizer.vb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,5 @@ Public Class MyResizer
311311
End Sub
312312

313313
Private Declare Function GetCursorPos Lib "user32.dll" (<Out()> ByRef lpPoint As PointAPI) As Boolean
314-
315314
Private Declare Function GetAsyncKeyState Lib "user32.dll" (vKey As Integer) As Short
316315
End Class

Plain Craft Launcher 2/Controls/MyScrollViewer.vb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
(GetType(ComboBox).IsAssignableFrom(SourceType) AndAlso CType(e.Source, ComboBox).IsDropDownOpen) OrElse
1313
(GetType(TextBox).IsAssignableFrom(SourceType) AndAlso CType(e.Source, TextBox).AcceptsReturn) OrElse
1414
GetType(ComboBoxItem).IsAssignableFrom(SourceType) OrElse
15-
TypeOf e.Source Is CheckBox
16-
) Then
15+
TypeOf e.Source Is CheckBox) Then
1716
'如果当前是在对有滚动条的下拉框或文本框执行,则不接管操作
1817
Exit Sub
1918
End If

Plain Craft Launcher 2/FormMain.xaml.vb

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ Public Class FormMain
1010
Dim FeatureList As New List(Of KeyValuePair(Of Integer, String))
1111
'统计更新日志条目
1212
#If BETA Then
13+
If LastVersion < 357 Then 'Release 2.10.0
14+
FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "新增:下载资源包、光影包、数据包"))
15+
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "新增:允许设置文件下载源"))
16+
FeatureCount += 9
17+
BugCount += 26
18+
End If
1319
If LastVersion < 355 Then 'Release 2.9.3
1420
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:Minecraft 会优先使用独立显卡运行"))
1521
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:简化下载新版本第二步的 UI"))
@@ -66,6 +72,12 @@ Public Class FormMain
6672
'3:BUG+ IMP* FEAT-
6773
'2:BUG* IMP-
6874
'1:BUG-
75+
If LastVersion < 356 Then 'Snapshot 2.10.0
76+
FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "新增:下载资源包、光影包、数据包"))
77+
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "新增:允许设置文件下载源"))
78+
FeatureCount += 9
79+
BugCount += 26
80+
End If
6981
If LastVersion < 354 Then 'Snapshot 2.9.3
7082
If LastVersion = 352 Then
7183
FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:低版本 MC 没有声音"))
@@ -74,7 +86,7 @@ Public Class FormMain
7486
FeatureCount += 8
7587
BugCount += 8
7688
End If
77-
If LastVersion < 353 Then 'Snapshot 2.9.2
89+
If LastVersion < 352 Then 'Snapshot 2.9.2
7890
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:Minecraft 会优先使用独立显卡运行"))
7991
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:简化下载新版本第二步的 UI"))
8092
FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:使用新的版本隔离策略"))
@@ -145,7 +157,7 @@ Public Class FormMain
145157
'整理更新日志文本
146158
Dim ContentList As New List(Of String)
147159
Dim SortedFeatures = FeatureList.OrderByDescending(Function(f) f.Key).ToList
148-
If Not SortedFeatures.Any() AndAlso FeatureCount = 0 AndAlso BugCount = 0 Then ContentList.Add("龙猫忘记写更新日志啦!可以去提醒他一下……")
160+
If Not SortedFeatures.Any() AndAlso FeatureCount = 0 AndAlso BugCount = 0 Then ContentList.Add("没有更新日志……")
149161
For i = 0 To Math.Min(9, SortedFeatures.Count - 1) '最多取 10 项
150162
ContentList.Add(SortedFeatures(i).Value)
151163
Next
@@ -311,8 +323,8 @@ Public Class FormMain
311323
'启动加载器池
312324
Try
313325
JavaListInit() '延后到同意协议后再执行,避免在初次启动时进行进程操作
314-
Thread.Sleep(200)
315-
DlClientListMojangLoader.Start(1)
326+
Thread.Sleep(100)
327+
DlClientListMojangLoader.Start(1) 'PCL 会同时根据这里的加载结果决定是否使用官方源进行下载
316328
RunCountSub()
317329
ServerLoader.Start(1)
318330
RunInNewThread(AddressOf TryClearTaskTemp, "TryClearTaskTemp", ThreadPriority.BelowNormal)
@@ -743,12 +755,12 @@ Public Class FormMain
743755
End If
744756
Next
745757
End If
746-
'自定义主页
758+
'主页
747759
Dim Extension As String = FilePath.AfterLast(".").ToLower
748760
If Extension = "xaml" Then
749-
Log("[System] 文件后缀为 XAML,作为自定义主页加载")
761+
Log("[System] 文件后缀为 XAML,作为主页加载")
750762
If File.Exists(Path & "PCL\Custom.xaml") Then
751-
If MyMsgBox("已存在一个自定义主页文件,是否要将它覆盖?", "覆盖确认", "覆盖", "取消") = 2 Then
763+
If MyMsgBox("已存在一个主页文件,是否要将它覆盖?", "覆盖确认", "覆盖", "取消") = 2 Then
752764
Exit Sub
753765
End If
754766
End If
@@ -927,9 +939,9 @@ Public Class FormMain
927939
DownloadLiteLoader = 9
928940
DownloadMod = 11
929941
DownloadPack = 12
930-
DownloadResourcePack = 13
931-
DownloadShader = 14
932-
DownloadDataPack = 15
942+
DownloadDataPack = 13
943+
DownloadResourcePack = 14
944+
DownloadShader = 15
933945
SetupLaunch = 0
934946
SetupUI = 1
935947
SetupSystem = 2
@@ -960,26 +972,9 @@ Public Class FormMain
960972
Case PageType.VersionSetup
961973
Return "版本设置 - " & If(PageVersionLeft.Version Is Nothing, "未知版本", PageVersionLeft.Version.Name)
962974
Case PageType.CompDetail
963-
Dim Project As CompProject = Stack.Additional(0)
964-
Select Case Project.Type
965-
Case CompType.Mod
966-
Return "Mod 下载 - " & Project.TranslatedName
967-
Case CompType.ModPack
968-
Return "整合包下载 - " & Project.TranslatedName
969-
Case CompType.DataPack
970-
If Project.IsMix Then
971-
Return "Mod / 数据包下载 - " & Project.TranslatedName
972-
Else
973-
Return "数据包下载 - " & Project.TranslatedName
974-
End If
975-
Case CompType.ResourcePack
976-
Return "资源包下载 - " & Project.TranslatedName
977-
Case Else 'CompType.Shader
978-
Return "光影包下载 - " & Project.TranslatedName
979-
End Select
975+
Return "资源下载 - " & CType(Stack.Additional(0), CompProject).TranslatedName
980976
Case PageType.HelpDetail
981-
Dim Entry As HelpEntry = Stack.Additional(0)
982-
Return Entry.Title
977+
Return CType(Stack.Additional(0), HelpEntry).Title
983978
Case Else
984979
Return ""
985980
End Select

Plain Craft Launcher 2/Modules/Base/ModBase.vb

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ Public Module ModBase
1313
#Region "声明"
1414

1515
'下列版本信息由更新器自动修改
16-
Public Const VersionBaseName As String = "2.9.3" '不含分支前缀的显示用版本名
17-
Public Const VersionStandardCode As String = "2.9.3." & VersionBranchCode '标准格式的四段式版本号
16+
Public Const VersionBaseName As String = "2.10.0" '不含分支前缀的显示用版本名
17+
Public Const VersionStandardCode As String = "2.10.0." & VersionBranchCode '标准格式的四段式版本号
1818
Public Const CommitHash As String = "" 'Commit Hash,由 GitHub Workflow 自动替换
1919
#If BETA Then
20-
Public Const VersionCode As Integer = 355 'Release
20+
Public Const VersionCode As Integer = 357 'Release
2121
#Else
22-
Public Const VersionCode As Integer = 354 'Snapshot
22+
Public Const VersionCode As Integer = 356 'Snapshot
2323
#End If
2424
'自动生成的版本信息
2525
Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName
@@ -745,7 +745,6 @@ Public Module ModBase
745745
Dim IsRight As Boolean = FilePath.EndsWithF("\")
746746
FilePath = Left(FilePath, Len(FilePath) - 1)
747747
GetPathFromFullPath = Left(FilePath, FilePath.LastIndexOfAny({"\", "/"})) & If(IsRight, "\", "/")
748-
If GetPathFromFullPath = "" Then Throw New Exception("不包含路径:" & FilePath)
749748
Else
750749
'是文件路径
751750
GetPathFromFullPath = Left(FilePath, FilePath.LastIndexOfAny({"\", "/"}) + 1)
@@ -2333,13 +2332,17 @@ NextElement:
23332332
''' <param name="FileName">文件名。可以为“notepad”等缩写。</param>
23342333
''' <param name="Arguments">运行参数。</param>
23352334
Public Sub ShellOnly(FileName As String, Optional Arguments As String = "")
2336-
FileName = ShortenPath(FileName)
2337-
Using Program As New Process
2338-
Program.StartInfo.Arguments = Arguments
2339-
Program.StartInfo.FileName = FileName
2340-
Log("[System] 执行外部命令:" & FileName & " " & Arguments)
2341-
Program.Start()
2342-
End Using
2335+
Try
2336+
FileName = ShortenPath(FileName)
2337+
Using Program As New Process
2338+
Program.StartInfo.Arguments = Arguments
2339+
Program.StartInfo.FileName = FileName
2340+
Log("[System] 执行外部命令:" & FileName & " " & Arguments)
2341+
Program.Start()
2342+
End Using
2343+
Catch ex As Exception
2344+
Log(ex, "打开文件或程序失败:" & FileName, LogLevel.Msgbox)
2345+
End Try
23432346
End Sub
23442347
''' <summary>
23452348
''' 前台运行文件并返回返回值。

Plain Craft Launcher 2/Modules/Base/ModLoader.vb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -625,8 +625,8 @@ Restart:
625625
End Sub
626626
Public Function LoaderTaskbarProgressGet() As Double
627627
Try
628-
If Not LoaderTaskbar.Any Then Return 1
629-
Return MathClamp(LoaderTaskbar.Where(Function(lb As LoaderBase) lb.Show).Select(Function(lb As LoaderBase) lb.Progress).Average(), 0, 1)
628+
If Not LoaderTaskbar.Where(Function(l) l.Show).Any Then Return 1
629+
Return MathClamp(LoaderTaskbar.Where(Function(l) l.Show).Select(Function(l) l.Progress).Average(), 0, 1)
630630
Catch ex As Exception
631631
Log(ex, "获取任务栏进度出错", LogLevel.Feedback)
632632
Return 0.5

Plain Craft Launcher 2/Modules/Base/ModValidate.vb

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Public Module ModValidate
99
Dim Result As String = ""
1010
For Each ValidateRule As Validate In ValidateRules
1111
Result = ValidateRule.Validate(Text)
12+
If Result Is Nothing Then Return ""
1213
If Result <> "" Then Return Result
1314
Next
1415
Return Result
@@ -21,7 +22,7 @@ End Module
2122
''' </summary>
2223
Public MustInherit Class Validate
2324
''' <summary>
24-
''' 验证某字符串是否符合验证要求。若符合,返回空字符串;若不符合,返回错误原因。
25+
''' 验证某字符串是否符合验证要求。若符合,返回空字符串;若不符合,返回错误原因;若需要中断检查并直接通过,返回 Nothing
2526
''' </summary>
2627
Public MustOverride Function Validate(Str As String) As String
2728
End Class
@@ -135,9 +136,9 @@ Public Class ValidateLength
135136
Me.Max = Max
136137
End Sub
137138
Public Overrides Function Validate(Str As String) As String
138-
If Len(Str) <> Max AndAlso Max = Min Then Return "长度必须为 " & Max & " 个字符!"
139-
If Len(Str) > Max Then Return "长度最长为 " & Max & " 个字符!"
140-
If Len(Str) < Min Then Return "长度至少需 " & Min & " 个字符!"
139+
If Len(Str) <> Max AndAlso Max = Min Then Return $"长度必须为 {Max} 个字符!"
140+
If Len(Str) > Max Then Return $"长度最长为 {Max} 个字符!"
141+
If Len(Str) < Min Then Return $"长度至少需 {Min} 个字符!"
141142
Return ""
142143
End Function
143144
End Class
@@ -234,21 +235,21 @@ Public Class ValidateFolderName
234235
Try
235236
'检查是否为空
236237
Dim LengthCheck As String = New ValidateNullOrWhiteSpace().Validate(Str)
237-
If Not LengthCheck = "" Then Return LengthCheck
238+
If LengthCheck <> "" Then Return LengthCheck
238239
'检查空格
239240
If Str.StartsWithF(" ") Then Return "文件夹名不能以空格开头!"
240241
If Str.EndsWithF(" ") Then Return "文件夹名不能以空格结尾!"
241242
'检查长度
242243
LengthCheck = New ValidateLength(1, 100).Validate(Str)
243-
If Not LengthCheck = "" Then Return LengthCheck
244+
If LengthCheck <> "" Then Return LengthCheck
244245
'检查尾部小数点
245246
If Str.EndsWithF(".") Then Return "文件夹名不能以小数点结尾!"
246247
'检查特殊字符
247248
Dim CharactCheck As String = New ValidateExcept(IO.Path.GetInvalidFileNameChars() & If(UseMinecraftCharCheck, "!;", ""), "文件夹名不可包含 % 字符!").Validate(Str)
248-
If Not CharactCheck = "" Then Return CharactCheck
249+
If CharactCheck <> "" Then Return CharactCheck
249250
'检查特殊字符串
250251
Dim InvalidStrCheck As String = New ValidateExceptSame({"CON", "PRN", "AUX", "CLOCK$", "NUL", "COM0", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT0", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}, "文件夹名不可为 %!", True).Validate(Str)
251-
If Not InvalidStrCheck = "" Then Return InvalidStrCheck
252+
If InvalidStrCheck <> "" Then Return InvalidStrCheck
252253
'检查 NTFS 8.3 文件名(#4505)
253254
If RegexCheck(Str, ".{2,}~\d") Then Return "文件夹名不能包含这一特殊格式!"
254255
'检查文件夹重名
@@ -295,15 +296,15 @@ Public Class ValidateFileName
295296
If Str.EndsWithF(" ") Then Return "文件名不能以空格结尾!"
296297
'检查长度
297298
LengthCheck = New ValidateLength(1, 253).Validate(Str & If(ParentFolder, ""))
298-
If Not LengthCheck = "" Then Return LengthCheck
299+
If LengthCheck <> "" Then Return LengthCheck
299300
'检查尾部小数点
300301
If Str.EndsWithF(".") Then Return "文件名不能以小数点结尾!"
301302
'检查特殊字符
302303
Dim CharactCheck As String = New ValidateExcept(IO.Path.GetInvalidFileNameChars() & If(UseMinecraftCharCheck, "!;", ""), "文件名不可包含 % 字符!").Validate(Str)
303-
If Not CharactCheck = "" Then Return CharactCheck
304+
If CharactCheck <> "" Then Return CharactCheck
304305
'检查特殊字符串
305306
Dim InvalidStrCheck As String = New ValidateExceptSame({"CON", "PRN", "AUX", "CLOCK$", "NUL", "COM0", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT0", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}, "文件名不可为 %!", True).Validate(Str)
306-
If Not InvalidStrCheck = "" Then Return InvalidStrCheck
307+
If InvalidStrCheck <> "" Then Return InvalidStrCheck
307308
'检查 NTFS 8.3 文件名(#4505)
308309
If RegexCheck(Str, ".{2,}~\d") Then Return "文件名不能包含这一特殊格式!"
309310
'检查文件重名
@@ -342,10 +343,10 @@ Public Class ValidateFolderPath
342343
If Not Str.TrimEnd("\").EndsWithF(":") Then Str = Str.TrimEnd("\")
343344
'检查是否为空
344345
Dim LengthCheck As String = New ValidateNullOrWhiteSpace().Validate(Str)
345-
If Not LengthCheck = "" Then Return LengthCheck
346+
If LengthCheck <> "" Then Return LengthCheck
346347
'检查长度
347348
LengthCheck = New ValidateLength(1, 254).Validate(Str)
348-
If Not LengthCheck = "" Then Return LengthCheck
349+
If LengthCheck <> "" Then Return LengthCheck
349350
'检查开头
350351
If Str.StartsWithF("\\Mac\") Then GoTo Fin
351352
For Each Drive As DriveInfo In My.Computer.FileSystem.Drives

0 commit comments

Comments
 (0)