Skip to content

Commit 83856e5

Browse files
authored
Merge pull request #6247 from PCL-Community/feat#6246
feat(PageDownloadCompDetail): 支持为资源包和光影包选择默认下载位置
2 parents 81d6e50 + e6d7c06 commit 83856e5

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed

Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.vb

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,14 @@
319319
End Select
320320
'确认默认保存位置
321321
Dim DefaultFolder As String = Nothing
322-
If File.Type = CompType.Mod Then
322+
Dim ResourceFolderName As String = ""
323+
Select Case Project.Type
324+
Case CompType.Mod : ResourceFolderName = "mods"
325+
Case CompType.ResourcePack : ResourceFolderName = "resourcepacks"
326+
Case CompType.Shader : ResourceFolderName = "shaderpacks"
327+
End Select
328+
Dim IsVersionSuitable As Func(Of McVersion, Boolean)
329+
If Project.Type = CompType.Mod Then
323330
'获取 Mod 所需的加载器种类
324331
Dim AllowForge As Boolean? = Nothing, AllowFabric As Boolean? = Nothing
325332
If File.ModLoaders.Any Then '从文件中获取
@@ -329,13 +336,12 @@
329336
AllowForge = Project.ModLoaders.Contains(CompModLoaderType.Forge) OrElse File.ModLoaders.Contains(CompModLoaderType.NeoForge)
330337
AllowFabric = Project.ModLoaders.Contains(CompModLoaderType.Fabric)
331338
End If
332-
If AllowForge IsNot Nothing AndAlso Not AllowForge AndAlso
333-
AllowFabric IsNot Nothing AndAlso Not AllowFabric Then
339+
If AllowForge IsNot Nothing AndAlso Not AllowForge AndAlso AllowFabric IsNot Nothing AndAlso Not AllowFabric Then
334340
AllowForge = Nothing : AllowFabric = Nothing
335341
End If
336342
Log("[Comp] 允许 Forge:" & If(AllowForge, "未知") & ",允许 Fabric:" & If(AllowFabric, "未知"))
337-
'判断某个版本是否符合要求
338-
Dim IsVersionSuitable As Func(Of McVersion, Boolean) =
343+
'判断某个版本是否符合 Mod 要求
344+
IsVersionSuitable =
339345
Function(Version)
340346
If Not Version.IsLoaded Then Version.Load()
341347
If Not Version.Modable Then Return False
@@ -346,14 +352,24 @@
346352
If AllowFabric AndAlso Version.Version.HasFabric Then Return True
347353
Return False
348354
End Function
349-
'获取 Mod 默认下载位置
355+
ElseIf {CompType.ResourcePack, CompType.Shader}.Contains(Project.Type) Then
356+
'判断某个版本是否符合资源包和光影要求
357+
IsVersionSuitable =
358+
Function(Version)
359+
If Not Version.IsLoaded Then Version.Load()
360+
If File.GameVersions.Any(Function(v) v.Contains(".") AndAlso v = Version.Version.McName) Then Return True
361+
Return False
362+
End Function
363+
End If
364+
If Not String.IsNullOrWhiteSpace(ResourceFolderName) AndAlso IsVersionSuitable IsNot Nothing Then
365+
'获取常规资源默认下载位置
350366
If CachedFolder IsNot Nothing Then
351367
DefaultFolder = CachedFolder
352368
Log("[Comp] 使用上次下载时的文件夹作为默认下载位置")
353369
ElseIf McVersionCurrent IsNot Nothing AndAlso IsVersionSuitable(McVersionCurrent) Then
354-
DefaultFolder = McVersionCurrent.PathIndie & "mods\"
370+
DefaultFolder = McVersionCurrent.PathIndie & $"{ResourceFolderName}\"
355371
Directory.CreateDirectory(DefaultFolder)
356-
Log("[Comp] 使用当前版本的 mods 文件夹作为默认下载位置(" & McVersionCurrent.Name & ")")
372+
Log($"[Comp] 使用当前版本的 {ResourceFolderName} 文件夹作为默认下载位置({McVersionCurrent.Name})")
357373
Else
358374
Dim NeedLoad As Boolean = McVersionListLoader.State <> LoadState.Finished
359375
If NeedLoad Then
@@ -367,17 +383,17 @@
367383
If Not SuitableVersions.Any() Then
368384
DefaultFolder = PathMcFolder
369385
If NeedLoad Then
370-
Hint("当前 MC 文件夹中没有找到适合这个 Mod 的版本!")
386+
Hint("当前 MC 文件夹中没有找到适合此资源文件的版本!")
371387
Else
372388
Log("[Comp] 由于当前版本不兼容,使用当前的 MC 文件夹作为默认下载位置")
373389
End If
374-
Else '选择 Mod 数量最多的版本
390+
Else '选择资源数量最多的版本
375391
Dim SelectedVersion = SuitableVersions.OrderBy(
376392
Function(v)
377-
Dim Info As New DirectoryInfo(v.PathIndie & "mods\")
393+
Dim Info As New DirectoryInfo(v.PathIndie & $"{ResourceFolderName}\")
378394
Return If(Info.Exists, Info.GetFiles().Length, -1)
379395
End Function).LastOrDefault()
380-
DefaultFolder = SelectedVersion.PathIndie & "mods\"
396+
DefaultFolder = SelectedVersion.PathIndie & $"{ResourceFolderName}\"
381397
Directory.CreateDirectory(DefaultFolder)
382398
Log("[Comp] 使用适合的游戏版本作为默认下载位置(" & SelectedVersion.Name & ")")
383399
End If

0 commit comments

Comments
 (0)