lighty_version/
version_metadata.rs1use std::collections::HashMap;
2use serde::{Deserialize, Serialize};
3
4
5#[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#[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}