From e8ad2e0da78d819f23cd6fd166ea75f12d5c4b38 Mon Sep 17 00:00:00 2001 From: LynithDev <61880709+LynithDev@users.noreply.github.com> Date: Sun, 22 Dec 2024 11:18:30 +0100 Subject: [PATCH] LAUNCHER-2 fix: new PrismLauncher minecraft folder name --- packages/core/src/api/package/import/mod.rs | 2 +- .../core/src/api/package/import/multibased.rs | 87 ++++++------------- 2 files changed, 27 insertions(+), 62 deletions(-) diff --git a/packages/core/src/api/package/import/mod.rs b/packages/core/src/api/package/import/mod.rs index 099d28ac..61ae1de0 100644 --- a/packages/core/src/api/package/import/mod.rs +++ b/packages/core/src/api/package/import/mod.rs @@ -95,7 +95,7 @@ impl ImportType { pub async fn get_launcher_instances(import: ImportType, path: Option) -> crate::Result<(PathBuf, Vec)> { let base_path = &path.unwrap_or( default_launcher_path(import) - .ok_or(anyhow::anyhow!("could not get launcher base path for {import}"))? + .ok_or_else(|| anyhow::anyhow!("could not get launcher base path for {import}"))? ); let instances_dir = import.get_instances_subpath(base_path).await?; diff --git a/packages/core/src/api/package/import/multibased.rs b/packages/core/src/api/package/import/multibased.rs index 4e549b96..d4366b00 100644 --- a/packages/core/src/api/package/import/multibased.rs +++ b/packages/core/src/api/package/import/multibased.rs @@ -195,55 +195,23 @@ pub async fn import_mmc( cluster_path: cluster_path.clone(), }; - let backup_name = "Imported Modpack".to_string(); + let mut minecraft_folder = mmc_base_path + .join("instances") + .join(instance_folder); - if instance_cfg.managed_pack.unwrap_or(false) { + if minecraft_folder.join("minecraft").exists() { + minecraft_folder = minecraft_folder.join("minecraft"); + } else if minecraft_folder.join(".minecraft").exists() { + minecraft_folder = minecraft_folder.join(".minecraft"); + } + + let backup_name = if instance_cfg.managed_pack.unwrap_or(false) { match instance_cfg.managed_pack_type { - Some(MMCManagedPackType::Modrinth) => { - let backup_name = "Imported Modrinth Modpack".to_string(); - let minecraft_folder = mmc_base_path - .join("instances") - .join(instance_folder) - .join(".minecraft"); - import_mmc_unmanaged( - cluster_path, - minecraft_folder, - backup_name, - description, - mmc_pack, - ) - .await?; - } - Some(MMCManagedPackType::Flame | MMCManagedPackType::ATLauncher) => { - // Same as unmanaged, but with 'minecraft' folder instead of '.minecraft' - let minecraft_folder = mmc_base_path - .join("instances") - .join(instance_folder) - .join("minecraft"); - import_mmc_unmanaged( - cluster_path, - minecraft_folder, - backup_name, - description, - mmc_pack, - ) - .await?; - } - Some(_) => { - let backup_name = "ImportedModpack".to_string(); - let minecraft_folder = mmc_base_path - .join("instances") - .join(instance_folder) - .join(".minecraft"); - import_mmc_unmanaged( - cluster_path, - minecraft_folder, - backup_name, - description, - mmc_pack, - ) - .await?; - } + Some(MMCManagedPackType::Modrinth) => "Imported Modrinth Modpack".to_string(), + Some(MMCManagedPackType::Flame) => "Imported CurseForge Modpack".to_string(), + Some(MMCManagedPackType::ATLauncher) => "Imported ATLauncher Modpack".to_string(), + Some(_) => "ImportedModpack".to_string(), + _ => { return Err(anyhow::anyhow!( "Instance is managed, but managed pack type not specified in instance.cfg" @@ -252,20 +220,17 @@ pub async fn import_mmc( } } } else { - let backup_name = "Imported Modpack".to_string(); - let minecraft_folder = mmc_base_path - .join("instances") - .join(instance_folder) - .join(".minecraft"); - import_mmc_unmanaged( - cluster_path, - minecraft_folder, - backup_name, - description, - mmc_pack, - ) - .await?; - } + "Imported Modpack".to_string() + }; + + import_mmc_unmanaged( + cluster_path, + minecraft_folder, + backup_name, + description, + mmc_pack, + ) + .await?; Ok(()) }