From a2c50b743a3f5af020e52b4c7d05eaaf5abdcc53 Mon Sep 17 00:00:00 2001 From: Warren Hood Date: Mon, 19 Aug 2024 01:20:52 +0200 Subject: [PATCH] Preserve game and loader overrides for automatic transitive deps --- src/providers/modrinth.rs | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/providers/modrinth.rs b/src/providers/modrinth.rs index ee202c8..b32166a 100644 --- a/src/providers/modrinth.rs +++ b/src/providers/modrinth.rs @@ -16,7 +16,7 @@ pub struct Modrinth { struct ModrinthProject { slug: String, client_side: String, - server_side: String + server_side: String, } #[derive(Serialize, Deserialize, Debug)] @@ -90,17 +90,27 @@ impl Modrinth { project_id, pack_meta, false, // TODO: Change this to allow specific versions of mods for the wrong version to be installed - loader_override, - game_version_override, + loader_override.clone(), + game_version_override.clone(), ) .await?; let project_slug = self.get_project(project_id).await?.slug; for version in project_versions.iter() { if project_version.is_none() || project_version.unwrap_or("*") == version.id { - return Ok(ModMeta::new(&project_slug)? + let mut mod_meta = ModMeta::new(&project_slug)? .provider(ModProvider::Modrinth) - .version(&version.version_number.to_string())); + .version(&version.version_number.to_string()); + + if let Some(loader) = loader_override { + mod_meta.loader = Some(loader.clone()); + } + + if let Some(mc_version) = game_version_override { + mod_meta = mod_meta.mc_version(&mc_version); + } + + return Ok(mod_meta); } } Err(format!( @@ -171,7 +181,7 @@ impl Modrinth { url: f.url.clone(), sha1: f.hashes.sha1.clone(), sha512: f.hashes.sha512.clone(), - filename: f.filename.clone() + filename: f.filename.clone(), }) .collect(), version: package.version_number.clone(), @@ -185,7 +195,7 @@ impl Modrinth { None }, server_side: project.server_side != "unsupported", - client_side: project.client_side != "unsupported" + client_side: project.client_side != "unsupported", }) }