Skip to main content

mcpack/
elements.rs

1// all elements and their file extensions
2pub const ELEMENT_TYPES: &[(&str, &str)] = &[
3    ("function", ".mcfunction"),
4    ("tag", ".json"),
5    ("advancement", ".json"),
6    ("banner_pattern", ".json"),
7    ("chat_type", ".json"),
8    ("damage_type", ".json"),
9    ("enchantment", ".json"),
10    ("enchantment_provider", ".json"),
11    ("instrument", ".json"),
12    ("item_modifier", ".json"),
13    ("jukebox_song", ".json"),
14    ("loot_table", ".json"),
15    ("painting_variant", ".json"),
16    ("predicate", ".json"),
17    ("recipe", ".json"),
18    ("trim_material", ".json"),
19    ("trim_pattern", ".json"),
20    ("walk_variant", ".json"),
21];
22
23// check if an element type is valid
24pub fn is_valid_element_type(element_type: &str) -> bool {
25    ELEMENT_TYPES.iter().any(|(name, _)| *name == element_type)
26}
27
28// all elements and their template files
29pub fn get_sample_content(element_type: &str) -> String {
30    match element_type {
31        "function" => String::new(),
32        "advancement" => serde_json::to_string_pretty(&serde_json::json!({
33          "criteria": {}
34        }))
35        .unwrap(),
36        "banner_pattern" => serde_json::to_string_pretty(&serde_json::json!({
37          "asset_id": "",
38          "translation_key": ""
39        }))
40        .unwrap(),
41        "chat_type" => serde_json::to_string_pretty(&serde_json::json!({
42          "chat": {
43            "translation_key": "",
44            "parameters": []
45          },
46          "narration": {
47            "translation_key": "",
48            "parameters": []
49          }
50        }))
51        .unwrap(),
52        "damage_type" => serde_json::to_string_pretty(&serde_json::json!({
53          "message_id": "",
54          "exhaustion": 0,
55          "scaling": "never"
56        }))
57        .unwrap(),
58        "enchantment" => serde_json::to_string_pretty(&serde_json::json!({
59          "description": "",
60          "supported_items": "",
61          "weight": 1,
62          "max_level": 1,
63          "min_cost": {
64            "base": 0,
65            "per_level_above_first": 0
66          },
67          "max_cost": {
68            "base": 0,
69            "per_level_above_first": 0
70          },
71          "anvil_cost": 0,
72          "slots": []
73        }))
74        .unwrap(),
75        "enchantment_provider" => serde_json::to_string_pretty(&serde_json::json!({
76          "type": "minecraft:single",
77          "enchantment": ""
78        }))
79        .unwrap(),
80        "instrument" => serde_json::to_string_pretty(&serde_json::json!({
81          "sound_event": "",
82          "range": 1,
83          "use_duration": 1,
84          "description": ""
85        }))
86        .unwrap(),
87        "item_modifier" => serde_json::to_string_pretty(&serde_json::json!({
88          "function": ""
89        }))
90        .unwrap(),
91        "jukebox_song" => serde_json::to_string_pretty(&serde_json::json!({
92          "description": "",
93          "comparator_output": 0,
94          "length_in_seconds": 1,
95          "sound_event": ""
96        }))
97        .unwrap(),
98        "loot_table" => serde_json::to_string_pretty(&serde_json::json!({
99          "type": ""
100        }))
101        .unwrap(),
102        "painting_variant" => serde_json::to_string_pretty(&serde_json::json!({
103          "asset_id": "",
104          "width": 1,
105          "height": 1,
106          "title": "",
107          "author": ""
108        }))
109        .unwrap(),
110        "predicate" => serde_json::to_string_pretty(&serde_json::json!({
111          "condition": ""
112        }))
113        .unwrap(),
114        "recipe" => serde_json::to_string_pretty(&serde_json::json!({
115          "type": ""
116        }))
117        .unwrap(),
118        "tag" => serde_json::to_string_pretty(&serde_json::json!({
119            "values": ["minecraft:stone"]
120        }))
121        .unwrap(),
122        "trim_material" => serde_json::to_string_pretty(&serde_json::json!({
123          "asset_name": "",
124          "description": "",
125          "ingredient": "",
126          "item_model_index": 0
127        }))
128        .unwrap(),
129        "trim_pattern" => serde_json::to_string_pretty(&serde_json::json!({
130          "asset_id": "",
131          "description": "",
132          "template_item": ""
133        }))
134        .unwrap(),
135        "wolf_variant" => serde_json::to_string_pretty(&serde_json::json!({
136          "biomes": "",
137          "wild_texture": "",
138          "tame_texture": "",
139          "angry_texture": ""
140        }))
141        .unwrap(),
142        _ => serde_json::to_string_pretty(&serde_json::json!({})).unwrap(),
143    }
144}