From 3afda713499294d6e1f9744019df7b5d72ccfda6 Mon Sep 17 00:00:00 2001 From: Jai A Date: Wed, 26 Apr 2023 10:41:43 -0700 Subject: [PATCH] fix some data --- daedalus_client/src/minecraft.rs | 64 ++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/daedalus_client/src/minecraft.rs b/daedalus_client/src/minecraft.rs index 30cf7f099..113456a04 100644 --- a/daedalus_client/src/minecraft.rs +++ b/daedalus_client/src/minecraft.rs @@ -66,30 +66,48 @@ pub async fn retrieve_data( let mut version_info = daedalus::minecraft::fetch_version_info(version).await?; + fn patch_library(patches: &Vec, mut library: Library) -> Vec { + let mut val = Vec::new(); + + let actual_patches = patches + .iter() + .filter(|x| x.match_.contains(&library.name)) + .collect::>(); + + if !actual_patches.is_empty() + { + for patch in actual_patches { + if let Some(additional_libraries) = + &patch.additional_libraries + { + for additional_library in additional_libraries { + if patch.patch_additional_libraries.unwrap_or(false) { + let mut libs = patch_library(patches, additional_library.clone()); + val.append(&mut libs) + } else { + val.push(additional_library.clone()); + } + } + } else if let Some(override_) = &patch.override_ { + library = merge_partial_library( + override_.clone(), + library, + ); + } + } + + val.push(library); + } else { + val.push(library); + } + + val + } + let mut new_libraries = Vec::new(); for library in version_info.libraries { - if let Some(patch) = patches - .iter() - .find(|x| x.match_.contains(&library.name)) - { - if let Some(additional_libraries) = - &patch.additional_libraries - { - new_libraries.push(library); - for additional_library in additional_libraries { - new_libraries.push(additional_library.clone()); - } - } else if let Some(override_) = &patch.override_ { - new_libraries.push(merge_partial_library( - override_.clone(), - library, - )); - } else { - new_libraries.push(library); - } - } else { - new_libraries.push(library); - } + let mut libs = patch_library(&patches, library); + new_libraries.append(&mut libs) } version_info.libraries = new_libraries; @@ -240,7 +258,7 @@ struct LibraryPatch { pub additional_libraries: Option>, #[serde(rename = "override")] pub override_: Option, - // pub patch_additional_libraries: Option, + pub patch_additional_libraries: Option, } /// Fetches the list of fabric versions