From 16047ca6aa8eea7f5495e938faebb01bf96d09de Mon Sep 17 00:00:00 2001 From: HsiangNianian Date: Sun, 18 Jan 2026 12:14:44 +0800 Subject: fix(forge): check if installer created version JSON before manual creation The Forge installer may or may not create the version.json file depending on the installer version. Check if the file exists after running the installer before manually creating it to avoid overwriting any installer-generated configuration. --- src-tauri/src/main.rs | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 2871b03..4086066 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -1917,10 +1917,28 @@ async fn install_forge( "Forge installer completed, creating version profile...".to_string() ); - // Now create the version JSON - let result = core::forge::install_forge(&game_dir, &game_version, &forge_version) - .await - .map_err(|e| e.to_string())?; + // Check if the version JSON already exists + let version_id = core::forge::generate_version_id(&game_version, &forge_version); + let json_path = game_dir.join("versions").join(&version_id).join(format!("{}.json", version_id)); + + let result = if json_path.exists() { + // Version JSON was created by the installer, load it + emit_log!( + window, + "Using version profile created by Forge installer".to_string() + ); + core::forge::InstalledForgeVersion { + id: version_id, + minecraft_version: game_version.clone(), + forge_version: forge_version.clone(), + path: json_path, + } + } else { + // Installer didn't create JSON, create it manually + core::forge::install_forge(&game_dir, &game_version, &forge_version) + .await + .map_err(|e| e.to_string())? + }; emit_log!( window, -- cgit v1.2.3-70-g09d2