lighty_version/
version_metadata.rs

1use std::collections::HashMap;
2use serde::{Deserialize, Serialize};
3
4
5/// Pivot universel, utilisé par tous les loaders (Vanilla, Fabric, Forge...)
6#[derive(Clone, Debug)]
7pub enum VersionMetaData {
8    JavaVersion(JavaVersion),
9    MainClass(MainClass),
10    Libraries(Vec<Library>),
11    Mods(Vec<Mods>),
12    Natives(Vec<Native>),
13    AssetsIndex(AssetIndex),
14    Assets(AssetsFile),
15    Client(Client),
16    Arguments(Arguments),
17    VersionBuilder(VersionBuilder),
18}
19
20/// Structure complète (optionnelle, si tu veux récupérer tout d'un coup)
21#[derive(Debug, Clone)]
22pub struct VersionBuilder {
23    pub main_class: MainClass,
24    pub java_version: JavaVersion,
25    pub arguments: Arguments,
26    pub libraries: Vec<Library>,
27    pub mods: Option<Vec<Mods>>,
28    pub natives: Option<Vec<Native>>,
29    pub client: Option<Client>,
30    pub assets_index: Option<AssetIndex>,
31    pub assets: Option<AssetsFile>,
32}
33
34#[derive(Debug, Clone)]
35pub struct MainClass {
36    pub main_class: String,
37}
38
39#[derive(Debug, Clone)]
40pub struct JavaVersion {
41    pub major_version: u32,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize)]
45pub struct Arguments {
46    pub game: Vec<String>,
47    pub jvm: Option<Vec<String>>,
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize)]
51pub struct Library {
52    pub name: String,
53    pub url: Option<String>,
54    pub path: Option<String>,
55    pub sha1: Option<String>,
56    pub size: Option<u64>,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
60pub struct Mods {
61    pub name: String,
62    pub url: Option<String>,
63    pub path: Option<String>,
64    pub sha1: Option<String>,
65    pub size: Option<u64>,
66}
67
68#[derive(Debug, Clone, Serialize, Deserialize)]
69pub struct Native {
70    pub name: String,
71    pub url: Option<String>,
72    pub path: Option<String>,
73    pub sha1: Option<String>,
74    pub size: Option<u64>,
75}
76
77#[derive(Debug, Clone, Serialize, Deserialize)]
78pub struct Client {
79    pub name: String,
80    pub url: Option<String>,
81    pub path: Option<String>,
82    pub sha1: Option<String>,
83    pub size: Option<u64>,
84}
85
86#[derive(Debug, Clone, Serialize, Deserialize)]
87pub struct AssetIndex {
88    pub id: String,
89    pub url: String,
90    pub sha1: String,
91    pub size: u64,
92    pub total_size: Option<u64>,
93}
94
95#[derive(Debug, Clone, Serialize, Deserialize)]
96pub struct AssetsFile {
97    pub objects: HashMap<String, Asset>,
98}
99
100#[derive(Debug, Clone, Serialize, Deserialize)]
101pub struct Asset {
102    pub hash: String,
103    pub size: u64,
104    pub url: Option<String>,
105}