1use yog_data::{Ordered, Schema, Text, Value};
4
5#[derive(Schema)]
7pub struct ModSection {
8 pub id: String,
10 pub name: Option<Text>,
12 pub version: Option<String>,
13 pub description: Option<Text>,
14 pub icon: Option<yog_data::Image>,
16 #[data(default)]
17 pub authors: Vec<String>,
18 pub license: Option<String>,
19 pub exports_license: Option<String>,
21 pub datapack: Option<String>,
25 pub edition: Option<String>,
27}
28
29#[derive(Schema)]
31pub struct DevSection {
32 pub yog_api_path: Option<String>,
34}
35
36#[derive(Schema)]
38pub struct ExternalSection {
39 #[data(default)]
40 pub items: Vec<String>,
41 #[data(default)]
42 pub blocks: Vec<String>,
43 #[data(default)]
44 pub entities: Vec<String>,
45 #[data(default)]
46 pub recipes: Vec<String>,
47}
48
49#[derive(Schema)]
51pub struct ManifestFile {
52 #[data(rename = "mod")]
53 pub module: ModSection,
54 pub dev: Option<DevSection>,
55 #[data(default)]
57 pub dependencies: Ordered<Value>,
58 #[data(rename = "dev-dependencies", default)]
59 pub dev_dependencies: Ordered<Value>,
60 #[data(default)]
61 pub external: Ordered<ExternalSection>,
62}
63
64#[derive(Schema, Debug, Clone, Default, PartialEq)]
67pub struct Built {
68 pub id: String,
69 pub name: String,
70 pub version: String,
71 #[data(default)]
72 pub description: String,
73 #[data(default)]
74 pub authors: Vec<String>,
75 #[data(default)]
76 pub license: String,
77 #[data(default)]
79 pub platforms: Vec<String>,
80 pub name_key: Option<String>,
82 pub description_key: Option<String>,
83 pub icon: Option<String>,
85 #[data(default)]
87 pub dependencies: Vec<String>,
88}