1pub 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
23pub fn is_valid_element_type(element_type: &str) -> bool {
25 ELEMENT_TYPES.iter().any(|(name, _)| *name == element_type)
26}
27
28pub 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}