From f5147239aebe40fae86d44a456d9ed873b89a6b2 Mon Sep 17 00:00:00 2001 From: SpikeHD Date: Mon, 16 May 2022 16:58:02 -0700 Subject: [PATCH] allow custom java set --- lang/en.json | 1 + src-tauri/src/main.rs | 10 ++++++++-- src/ui/components/ServerLaunchSection.tsx | 3 ++- src/ui/components/menu/Options.tsx | 18 ++++++++++++++++++ src/utils/configuration.ts | 4 +++- 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/lang/en.json b/lang/en.json index 0d27b7e..313a5bf 100644 --- a/lang/en.json +++ b/lang/en.json @@ -12,6 +12,7 @@ "options": { "game_exec": "Set Game Executable", "grasscutter_jar": "Set Grasscutter Jar", + "java_path": "Set Custom Java Path", "grasscutter_with_game": "Automatically launch Grasscutter with game" }, "downloads": { diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 571679b..f120fb1 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -71,9 +71,15 @@ fn run_program(path: String) { } #[tauri::command] -fn run_jar(path: String, execute_in: String) { +fn run_jar(path: String, execute_in: String, java_path: String) { + let mut command = if java_path.is_empty() { + format!("java -jar {}", path) + } else { + format!("\"{}\" -jar {}", java_path, path) + }; + // Open the program from the specified path. - match open::with(format!("/k cd /D \"{}\" & java -jar {}", &execute_in, &path).to_string(), "C:\\Windows\\System32\\cmd.exe") { + match open::with(format!("/k cd /D \"{}\" & {}", &execute_in, &command).to_string(), "C:\\Windows\\System32\\cmd.exe") { Ok(_) => (), Err(e) => println!("Failed to open jar ({} from {}): {}", &path, &execute_in, e), }; diff --git a/src/ui/components/ServerLaunchSection.tsx b/src/ui/components/ServerLaunchSection.tsx index 03f7513..eb740a5 100644 --- a/src/ui/components/ServerLaunchSection.tsx +++ b/src/ui/components/ServerLaunchSection.tsx @@ -106,7 +106,8 @@ export default class ServerLaunchSection extends React.Component // Launch the jar await invoke('run_jar', { path: config.grasscutter_path, - executeIn: jarFolder + executeIn: jarFolder, + javaPath: config.java_path || '' }) } diff --git a/src/ui/components/menu/Options.tsx b/src/ui/components/menu/Options.tsx index 5b37703..85640ab 100644 --- a/src/ui/components/menu/Options.tsx +++ b/src/ui/components/menu/Options.tsx @@ -14,6 +14,7 @@ interface IProps { interface IState { game_install_path: string grasscutter_path: string + java_path: string grasscutter_with_game: boolean } @@ -24,6 +25,7 @@ export default class Options extends React.Component { this.state = { game_install_path: '', grasscutter_path: '', + java_path: '', grasscutter_with_game: false } } @@ -33,6 +35,7 @@ export default class Options extends React.Component { this.setState({ game_install_path: config.game_install_path || '', grasscutter_path: config.grasscutter_path || '', + java_path: config.java_path || '', grasscutter_with_game: config.grasscutter_with_game || false }) }) @@ -48,6 +51,10 @@ export default class Options extends React.Component { setConfigOption('grasscutter_path', value) } + setJavaPath(value: string) { + setConfigOption('java_path', value) + } + async toggleGrasscutterWithGame() { setConfigOption('grasscutter_with_game', !(await getConfigOption('grasscutter_with_game'))) } @@ -82,6 +89,17 @@ export default class Options extends React.Component { + + + +
+
+ +
+
+ +
+
) } diff --git a/src/utils/configuration.ts b/src/utils/configuration.ts index 0750735..c9922a4 100644 --- a/src/utils/configuration.ts +++ b/src/utils/configuration.ts @@ -12,7 +12,8 @@ let defaultConfig: Configuration toggle_grasscutter: false, game_install_path: 'C:\\Program Files\\Genshin Impact\\Genshin Impact game\\Genshin Impact.exe', grasscutter_with_game: false, - grasscutter_path: roamingAppData + '\\cultivation\\grasscutter.jar', + grasscutter_path: roamingAppData + '\\cultivation\\grasscutter\\grasscutter.jar', + java_path: '', close_action: 0, startup_launch: false, last_ip: '', @@ -28,6 +29,7 @@ export interface Configuration { game_install_path: string grasscutter_with_game: boolean grasscutter_path: string + java_path: string close_action: number startup_launch: boolean last_ip: string