From 66f7825ed9638606665b9e61c6f8132de013da14 Mon Sep 17 00:00:00 2001 From: HsiangNianian Date: Tue, 13 Jan 2026 15:56:20 +0800 Subject: feat: implement download functionality with progress monitoring and version management --- src-tauri/src/core/game_version.rs | 66 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src-tauri/src/core/game_version.rs (limited to 'src-tauri/src/core/game_version.rs') diff --git a/src-tauri/src/core/game_version.rs b/src-tauri/src/core/game_version.rs new file mode 100644 index 0000000..c33f99c --- /dev/null +++ b/src-tauri/src/core/game_version.rs @@ -0,0 +1,66 @@ +use serde::Deserialize; + +#[derive(Debug, Deserialize)] +pub struct GameVersion { + pub id: String, + pub downloads: Downloads, + #[serde(rename = "assetIndex")] + pub asset_index: AssetIndex, + pub libraries: Vec, + #[serde(rename = "mainClass")] + pub main_class: String, + #[serde(rename = "minecraftArguments")] + pub minecraft_arguments: Option, + pub arguments: Option, + #[serde(rename = "javaVersion")] + pub java_version: Option, +} + +#[derive(Debug, Deserialize)] +pub struct Downloads { + pub client: DownloadArtifact, + pub server: Option, +} + +#[derive(Debug, Deserialize, Clone)] +pub struct DownloadArtifact { + pub sha1: String, + pub size: u64, + pub url: String, + pub path: Option, +} + +#[derive(Debug, Deserialize)] +pub struct AssetIndex { + pub id: String, + pub sha1: String, + pub size: u64, + pub url: String, + #[serde(rename = "totalSize")] + pub total_size: u64, +} + +#[derive(Debug, Deserialize)] +pub struct Library { + pub downloads: Option, + pub name: String, +} + +#[derive(Debug, Deserialize)] +pub struct LibraryDownloads { + pub artifact: Option, + pub classifiers: Option, // Complex, simplifying for now +} + +#[derive(Debug, Deserialize)] +pub struct Arguments { + pub game: Option, + pub jvm: Option, +} + +#[derive(Debug, Deserialize)] +pub struct JavaVersion { + pub component: String, + #[serde(rename = "majorVersion")] + pub major_version: u64, +} -- cgit v1.2.3-70-g09d2