From 1a71b72ab9612f7b8735962e2ea97ea465b2a7fa Mon Sep 17 00:00:00 2001 From: wyc-26 Date: Thu, 1 May 2025 09:33:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(PageDownloadCompDetail):=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E4=B8=BA=E8=B5=84=E6=BA=90=E5=8C=85=E5=92=8C=E5=85=89?= =?UTF-8?q?=E5=BD=B1=E5=8C=85=E9=80=89=E6=8B=A9=E9=BB=98=E8=AE=A4=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Comp/PageDownloadCompDetail.xaml.vb | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.vb b/Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.vb index 2da61cc..33fdde5 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.vb @@ -382,6 +382,42 @@ Log("[Comp] 使用适合的游戏版本作为默认下载位置(" & SelectedVersion.Name & ")") End If End If + ElseIf File.Type = CompType.ResourcePack OrElse File.Type = CompType.Shader Then + Dim IsVersionSuitable As Func(Of McVersion, Boolean) = + Function(Version) + If Not Version.IsLoaded Then Version.Load() + 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 + Return False + End Function + If McVersionCurrent IsNot Nothing Then + DefaultFolder = McVersionCurrent.PathIndie & If(File.Type = CompType.ResourcePack, "resourcepacks\", "shaderpacks\") + Directory.CreateDirectory(DefaultFolder) + Log("[Comp] 使用当前版本的对应资源文件夹作为默认下载位置(" & McVersionCurrent.Name & ")") + Else + Dim NeedLoad As Boolean = McVersionListLoader.State <> LoadState.Finished + If NeedLoad Then + Hint("正在查找适合的游戏版本……") + LoaderFolderRun(McVersionListLoader, PathMcFolder, LoaderFolderRunType.ForceRun, MaxDepth:=1, ExtraPath:="versions\", WaitForExit:=True) + End If + Dim SuitableVersions As New List(Of McVersion) + For Each Version As McVersion In McVersionList.Values.SelectMany(Function(l) l) + If IsVersionSuitable(Version) Then SuitableVersions.Add(Version) + Next + If Not SuitableVersions.Any() Then + DefaultFolder = PathMcFolder + If NeedLoad Then + Hint("当前 MC 文件夹中没有找到适合这个资源的版本!") + Else + Log("[Comp] 由于当前版本不兼容,使用当前的 MC 文件夹作为默认下载位置") + End If + Else + Dim SelectedVersion = SuitableVersions.LastOrDefault() + DefaultFolder = SelectedVersion.PathIndie & If(File.Type = CompType.ResourcePack, "resourcepacks\", "shaderpacks\") + Directory.CreateDirectory(DefaultFolder) + Log("[Comp] 使用适合的游戏版本作为默认下载位置(" & SelectedVersion.Name & ")") + End If + End If End If '获取基本信息 Dim FileName As String