|
319 | 319 | End Select
|
320 | 320 | '确认默认保存位置
|
321 | 321 | 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 |
323 | 330 | '获取 Mod 所需的加载器种类
|
324 | 331 | Dim AllowForge As Boolean? = Nothing, AllowFabric As Boolean? = Nothing
|
325 | 332 | If File.ModLoaders.Any Then '从文件中获取
|
|
329 | 336 | AllowForge = Project.ModLoaders.Contains(CompModLoaderType.Forge) OrElse File.ModLoaders.Contains(CompModLoaderType.NeoForge)
|
330 | 337 | AllowFabric = Project.ModLoaders.Contains(CompModLoaderType.Fabric)
|
331 | 338 | 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 |
334 | 340 | AllowForge = Nothing : AllowFabric = Nothing
|
335 | 341 | End If
|
336 | 342 | Log("[Comp] 允许 Forge:" & If(AllowForge, "未知") & ",允许 Fabric:" & If(AllowFabric, "未知"))
|
337 |
| - '判断某个版本是否符合要求 |
338 |
| - Dim IsVersionSuitable As Func(Of McVersion, Boolean) = |
| 343 | + '判断某个版本是否符合 Mod 要求 |
| 344 | + IsVersionSuitable = |
339 | 345 | Function(Version)
|
340 | 346 | If Not Version.IsLoaded Then Version.Load()
|
341 | 347 | If Not Version.Modable Then Return False
|
|
346 | 352 | If AllowFabric AndAlso Version.Version.HasFabric Then Return True
|
347 | 353 | Return False
|
348 | 354 | 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 | + '获取常规资源默认下载位置 |
350 | 366 | If CachedFolder IsNot Nothing Then
|
351 | 367 | DefaultFolder = CachedFolder
|
352 | 368 | Log("[Comp] 使用上次下载时的文件夹作为默认下载位置")
|
353 | 369 | ElseIf McVersionCurrent IsNot Nothing AndAlso IsVersionSuitable(McVersionCurrent) Then
|
354 |
| - DefaultFolder = McVersionCurrent.PathIndie & "mods\" |
| 370 | + DefaultFolder = McVersionCurrent.PathIndie & $"{ResourceFolderName}\" |
355 | 371 | Directory.CreateDirectory(DefaultFolder)
|
356 |
| - Log("[Comp] 使用当前版本的 mods 文件夹作为默认下载位置(" & McVersionCurrent.Name & ")") |
| 372 | + Log($"[Comp] 使用当前版本的 {ResourceFolderName} 文件夹作为默认下载位置({McVersionCurrent.Name})") |
357 | 373 | Else
|
358 | 374 | Dim NeedLoad As Boolean = McVersionListLoader.State <> LoadState.Finished
|
359 | 375 | If NeedLoad Then
|
|
367 | 383 | If Not SuitableVersions.Any() Then
|
368 | 384 | DefaultFolder = PathMcFolder
|
369 | 385 | If NeedLoad Then
|
370 |
| - Hint("当前 MC 文件夹中没有找到适合这个 Mod 的版本!") |
| 386 | + Hint("当前 MC 文件夹中没有找到适合此资源文件的版本!") |
371 | 387 | Else
|
372 | 388 | Log("[Comp] 由于当前版本不兼容,使用当前的 MC 文件夹作为默认下载位置")
|
373 | 389 | End If
|
374 |
| - Else '选择 Mod 数量最多的版本 |
| 390 | + Else '选择资源数量最多的版本 |
375 | 391 | Dim SelectedVersion = SuitableVersions.OrderBy(
|
376 | 392 | Function(v)
|
377 |
| - Dim Info As New DirectoryInfo(v.PathIndie & "mods\") |
| 393 | + Dim Info As New DirectoryInfo(v.PathIndie & $"{ResourceFolderName}\") |
378 | 394 | Return If(Info.Exists, Info.GetFiles().Length, -1)
|
379 | 395 | End Function).LastOrDefault()
|
380 |
| - DefaultFolder = SelectedVersion.PathIndie & "mods\" |
| 396 | + DefaultFolder = SelectedVersion.PathIndie & $"{ResourceFolderName}\" |
381 | 397 | Directory.CreateDirectory(DefaultFolder)
|
382 | 398 | Log("[Comp] 使用适合的游戏版本作为默认下载位置(" & SelectedVersion.Name & ")")
|
383 | 399 | End If
|
|
0 commit comments