Fix launcher overrides (#7)
* Fix launcher overrides * Remove none set * Patch to work with legacy versions * remove mc
This commit is contained in:
parent
6512dbae1c
commit
3db00534c2
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "daedalus"
|
||||
version = "0.1.20"
|
||||
version = "0.1.21"
|
||||
authors = ["Jai A <jaiagr+gpg@pm.me>"]
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
|
||||
@ -327,7 +327,22 @@ pub fn merge_partial_library(
|
||||
mut merge: Library,
|
||||
) -> Library {
|
||||
if let Some(downloads) = partial.downloads {
|
||||
merge.downloads = Some(downloads)
|
||||
if let Some(merge_downloads) = &mut merge.downloads {
|
||||
if let Some(artifact) = downloads.artifact {
|
||||
merge_downloads.artifact = Some(artifact);
|
||||
}
|
||||
if let Some(classifiers) = downloads.classifiers {
|
||||
if let Some(merge_classifiers) = &mut merge_downloads.classifiers {
|
||||
for classifier in classifiers {
|
||||
merge_classifiers.insert(classifier.0, classifier.1);
|
||||
}
|
||||
} else {
|
||||
merge_downloads.classifiers = Some(classifiers);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
merge.downloads = Some(downloads)
|
||||
}
|
||||
}
|
||||
if let Some(extract) = partial.extract {
|
||||
merge.extract = Some(extract)
|
||||
@ -339,10 +354,22 @@ pub fn merge_partial_library(
|
||||
merge.url = Some(url)
|
||||
}
|
||||
if let Some(natives) = partial.natives {
|
||||
merge.natives = Some(natives)
|
||||
if let Some(merge_natives) = &mut merge.natives {
|
||||
for native in natives {
|
||||
merge_natives.insert(native.0, native.1);
|
||||
}
|
||||
} else {
|
||||
merge.natives = Some(natives);
|
||||
}
|
||||
}
|
||||
if let Some(rules) = partial.rules {
|
||||
merge.rules = Some(rules)
|
||||
if let Some(merge_rules) = &mut merge.rules {
|
||||
for rule in rules {
|
||||
merge_rules.push(rule);
|
||||
}
|
||||
} else {
|
||||
merge.rules = Some(rules)
|
||||
}
|
||||
}
|
||||
if let Some(checksums) = partial.checksums {
|
||||
merge.checksums = Some(checksums)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "daedalus_client"
|
||||
version = "0.1.20"
|
||||
version = "0.1.21"
|
||||
authors = ["Jai A <jaiagr+gpg@pm.me>"]
|
||||
edition = "2018"
|
||||
|
||||
|
||||
2020
daedalus_client/library-patches.json
Normal file
2020
daedalus_client/library-patches.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,7 @@
|
||||
use crate::download_file;
|
||||
use crate::{format_url, upload_file_to_bucket, Error};
|
||||
use daedalus::get_hash;
|
||||
use daedalus::minecraft::{
|
||||
merge_partial_library, Library, PartialLibrary, VersionManifest,
|
||||
};
|
||||
use daedalus::minecraft::{merge_partial_library, Library, PartialLibrary, VersionManifest, VersionInfo};
|
||||
use log::info;
|
||||
use serde::Deserialize;
|
||||
use std::sync::Arc;
|
||||
@ -66,7 +64,7 @@ pub async fn retrieve_data(
|
||||
let mut version_info =
|
||||
daedalus::minecraft::fetch_version_info(version).await?;
|
||||
|
||||
fn patch_library(patches: &Vec<LibraryPatch>, mut library: Library) -> Vec<Library> {
|
||||
fn patch_library(patches: &Vec<LibraryPatch>, mut library: Library, version_info: &VersionInfo) -> Vec<Library> {
|
||||
let mut val = Vec::new();
|
||||
|
||||
let actual_patches = patches
|
||||
@ -77,22 +75,26 @@ pub async fn retrieve_data(
|
||||
if !actual_patches.is_empty()
|
||||
{
|
||||
for patch in actual_patches {
|
||||
println!("{} {}", version_info.id, patch._comment);
|
||||
|
||||
if let Some(override_) = &patch.override_ {
|
||||
library = merge_partial_library(
|
||||
override_.clone(),
|
||||
library,
|
||||
);
|
||||
}
|
||||
|
||||
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());
|
||||
let mut libs = patch_library(patches, additional_library.clone(), &version_info);
|
||||
val.append(&mut libs)
|
||||
} else {
|
||||
val.push(additional_library.clone());
|
||||
}
|
||||
}
|
||||
} else if let Some(override_) = &patch.override_ {
|
||||
library = merge_partial_library(
|
||||
override_.clone(),
|
||||
library,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,8 +107,8 @@ pub async fn retrieve_data(
|
||||
}
|
||||
|
||||
let mut new_libraries = Vec::new();
|
||||
for library in version_info.libraries {
|
||||
let mut libs = patch_library(&patches, library);
|
||||
for library in version_info.libraries.clone() {
|
||||
let mut libs = patch_library(&patches, library, &version_info);
|
||||
new_libraries.append(&mut libs)
|
||||
}
|
||||
version_info.libraries = new_libraries;
|
||||
@ -266,12 +268,6 @@ async fn fetch_library_patches(
|
||||
url: Option<&str>,
|
||||
semaphore: Arc<Semaphore>,
|
||||
) -> Result<Vec<LibraryPatch>, Error> {
|
||||
Ok(serde_json::from_slice(
|
||||
&download_file(
|
||||
url.unwrap_or(&format_url("library-patches.json")),
|
||||
None,
|
||||
semaphore,
|
||||
)
|
||||
.await?,
|
||||
)?)
|
||||
let patches = include_bytes!("../library-patches.json");
|
||||
Ok(serde_json::from_slice(patches)?)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user