From aa417bd4703a728fd8877465b3b6cd059808b813 Mon Sep 17 00:00:00 2001 From: alterwain Date: Sat, 15 Mar 2025 03:08:57 +0300 Subject: [PATCH] modified: Cargo.toml --- Cargo.lock | 16 ++++++++ Cargo.toml | 3 +- src/config.rs | 13 ++++++- src/launcher.rs | 4 +- src/main.rs | 8 ++++ src/www/portable.html | 87 +++++++++++++++++++++++-------------------- 6 files changed, 86 insertions(+), 45 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e6ea446..30a32ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9,6 +9,7 @@ dependencies = [ "base64 0.22.1", "dirs", "futures", + "java-locator", "rand 0.9.0", "serde", "serde_json", @@ -1544,6 +1545,12 @@ dependencies = [ "system-deps", ] +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + [[package]] name = "gloo-timers" version = "0.3.0" @@ -2061,6 +2068,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "java-locator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c46c1fe465c59b1474e665e85e1256c3893dd00927b8d55f63b09044c1e64f" +dependencies = [ + "glob", +] + [[package]] name = "javascriptcore-rs" version = "1.1.2" diff --git a/Cargo.toml b/Cargo.toml index 570e3bf..9a58e09 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,4 +15,5 @@ serde_json = "1.0" toml = "0.8.20" surf = { version = "2.3.2", features = ["hyper-client"] } base64 = "0.22.1" -zip-extract = "0.2.1" \ No newline at end of file +zip-extract = "0.2.1" +java-locator = "0.1.9" \ No newline at end of file diff --git a/src/config.rs b/src/config.rs index e5c6cd9..43a4978 100644 --- a/src/config.rs +++ b/src/config.rs @@ -7,8 +7,9 @@ use serde::{Deserialize, Serialize}; #[derive(Default, Serialize, Deserialize)] pub struct LauncherConfig { is_portable: bool, - pub user_name: String, - pub user_secret: String + user_name: String, + pub user_secret: String, + pub java_path: String } impl LauncherConfig { @@ -28,6 +29,14 @@ impl LauncherConfig { p.push("config.toml"); p } + + pub fn user_name(&self) -> &str { + &self.user_name + } + + pub fn set_username(&mut self, user_name: String) { + self.user_name = user_name; + } } pub fn get_relative_launcher_dir() -> PathBuf { diff --git a/src/launcher.rs b/src/launcher.rs index 12126da..798c9b8 100644 --- a/src/launcher.rs +++ b/src/launcher.rs @@ -55,7 +55,7 @@ impl Launcher { pub fn init_config(&mut self, user_name: String) { self.load_config(); - self.config.user_name = user_name; + self.config.set_username(user_name); self.config.user_secret = crate::util::random_string(32); self.save_config(); } @@ -145,7 +145,7 @@ impl Launcher { let mut assets_dir = self.config.launcher_dir(); assets_dir.push("assets"); - cmd.args(&["--username", &self.config.user_name, "--version", &instance_name, "--gameDir", game_dir.to_str().unwrap(), "--assetsDir", assets_dir.to_str().unwrap(), "--assetIndex", &config.assetIndex.id, "--uuid", "51820246d9fe372b81592602a5239ad9", "--accessToken", "51820246d9fe372b81592602a5239ad9", "--userProperties", "{}", "--userType", "mojang", "--width", "925", "--height", "530"]); + cmd.args(&["--username", self.config.user_name(), "--version", &instance_name, "--gameDir", game_dir.to_str().unwrap(), "--assetsDir", assets_dir.to_str().unwrap(), "--assetIndex", &config.assetIndex.id, "--uuid", "51820246d9fe372b81592602a5239ad9", "--accessToken", "51820246d9fe372b81592602a5239ad9", "--userProperties", "{}", "--userType", "mojang", "--width", "925", "--height", "530"]); cmd.spawn(); } } diff --git a/src/main.rs b/src/main.rs index 5478e60..3e89ef4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -161,6 +161,14 @@ async fn main() { let instance_name = params.unwrap().params[0].clone(); launcher.launch_instance(instance_name).await; } + "locate_java" => { + if let Ok(java_path) = java_locator::locate_file("java.exe") { + launcher.config.java_path = java_path.clone(); + responder.respond(Response::new(serde_json::to_vec(&UIMessage { params: vec!["locate_java".to_string(), [&java_path, "java.exe"].join("\\")] }).unwrap())); + } else { + // todo: implement error notifications + } + } _ => {} } } diff --git a/src/www/portable.html b/src/www/portable.html index 7726c8c..38cfc28 100644 --- a/src/www/portable.html +++ b/src/www/portable.html @@ -242,56 +242,51 @@
- -
-
+ - - -