diff --git a/packages/oneclient_core/src/game/launch.rs b/packages/oneclient_core/src/game/launch.rs index ca2dec8d..11c6d021 100644 --- a/packages/oneclient_core/src/game/launch.rs +++ b/packages/oneclient_core/src/game/launch.rs @@ -321,7 +321,6 @@ async fn start( )?; let mut jvm_args = arguments::java_arguments( - updated, arg_map.get(&ArgumentType::Jvm).map(Vec::as_slice), &natives, &libraries, @@ -347,7 +346,6 @@ async fn start( } let mut mc_args = arguments::minecraft_arguments( - updated, arg_map.get(&ArgumentType::Game).map(Vec::as_slice), version_info.minecraft_arguments.as_deref(), &account.access_token, diff --git a/packages/oneclient_mc/src/arguments.rs b/packages/oneclient_mc/src/arguments.rs index 5b91da4c..adf91ff8 100644 --- a/packages/oneclient_mc/src/arguments.rs +++ b/packages/oneclient_mc/src/arguments.rs @@ -14,7 +14,6 @@ use oneclient_common::paths; #[allow(clippy::too_many_arguments)] pub fn java_arguments( - version_updated: bool, arguments: Option<&[Argument]>, natives_path: &Path, libraries_path: &Path, @@ -28,7 +27,6 @@ pub fn java_arguments( let mut parsed = Vec::new(); if let Some(args) = arguments { parse_arguments( - version_updated, args, &mut parsed, |a| { @@ -172,7 +170,6 @@ fn split_custom_args(raw: &str) -> Vec { #[allow(clippy::too_many_arguments)] pub fn minecraft_arguments( - version_updated: bool, args: Option<&[Argument]>, legacy_args: Option<&str>, access_token: &str, @@ -209,7 +206,6 @@ pub fn minecraft_arguments( if let Some(args) = args { parse_arguments( - version_updated, args, &mut parsed, |arg| { @@ -562,7 +558,6 @@ pub fn get_library(libraries_path: &Path, library: &str, allow_missing: bool) -> } fn parse_arguments( - version_updated: bool, args: &[Argument], parsed: &mut Vec, parse_function: ParseFn, @@ -580,7 +575,7 @@ where } } Argument::Ruled { rules, value } => { - if validate_rules(rules, java_arch, version_updated) { + if validate_rules(rules, java_arch, true) { match value { ArgumentValue::Single(arg) => { parsed.push(parse_function(&arg.replace(' ', DUMMY_REPLACE_NEWLINE))?); @@ -1032,7 +1027,6 @@ mod tests { let natives = std::env::temp_dir(); let args = java_arguments( - false, Some(&loader_jvm), &natives, &natives, @@ -1051,6 +1045,34 @@ mod tests { assert!(args.iter().any(|a| a.starts_with("-Djava.library.path="))); } + #[test] + fn an_osx_ruled_loader_flag_reaches_the_jvm_only_on_macos() { + let loader_jvm: Vec = serde_json::from_str( + r#"["-Dfabric.fixPackageAccess=true", "-Dfabric.gameVersion=1.8.9", + {"rules": [{"action": "allow", "os": {"name": "osx"}}], "value": "-XstartOnFirstThread"}]"#, + ) + .unwrap(); + let natives = std::env::temp_dir(); + + let args = java_arguments( + Some(&loader_jvm), + &natives, + &natives, + "/libs/fabric-loader.jar", + "1.8.9", + 2048, + String::new(), + "aarch64", + 25, + ) + .unwrap(); + + assert_eq!( + args.contains(&"-XstartOnFirstThread".to_string()), + cfg!(target_os = "macos") + ); + } + #[test] fn a_loader_game_argument_does_not_replace_the_legacy_string() { let loader_game: Vec = @@ -1058,7 +1080,6 @@ mod tests { let dir = std::env::temp_dir(); let args = minecraft_arguments( - false, Some(&loader_game), Some("--username ${auth_player_name} --gameDir ${game_directory}"), "token", @@ -1089,7 +1110,6 @@ mod tests { let dir = std::env::temp_dir(); let args = minecraft_arguments( - false, Some(&loader_game), Some( "--username ${auth_player_name} --gameDir ${game_directory} --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker",