diamondfire_actiondump/
schema.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
7pub struct IconColor {
8 red: u8,
9 green: u8,
10 blue: u8,
11}
12
13#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
17pub struct Argument {
18 #[serde(rename = "type")]
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub df_type: Option<String>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub text: Option<String>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub plural: Option<bool>,
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub optional: Option<bool>,
33
34 #[serde(skip_serializing_if = "Option::is_none")]
36 pub description: Option<Vec<String>>,
37 #[serde(skip_serializing_if = "Option::is_none")]
41 pub notes: Option<Vec<Vec<String>>>,
42}
43
44#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
46#[serde(rename_all = "camelCase")]
47pub struct CodeIcon {
48 pub name: String,
50 pub material: String,
54 #[serde(skip_serializing_if = "Option::is_none")]
56 pub advanced: Option<bool>,
57
58 pub description: Vec<String>,
60 pub example: Vec<String>,
62 pub works_with: Vec<String>,
64 pub deprecated_note: Vec<String>,
66 pub additional_info: Vec<Vec<String>>,
68
69 #[serde(skip_serializing_if = "Option::is_none")]
70 pub arguments: Option<Vec<Argument>>,
71
72 #[serde(skip_serializing_if = "Option::is_none")]
74 pub return_type: Option<String>,
75 #[serde(skip_serializing_if = "Option::is_none")]
77 pub return_description: Option<Vec<String>>,
78
79 pub required_rank: String,
81 pub require_tokens: bool,
83 pub require_rank_and_tokens: bool,
89
90 #[serde(skip_serializing_if = "Option::is_none")]
92 pub mobs_only: Option<bool>,
93
94 #[serde(skip_serializing_if = "Option::is_none")]
96 pub cancellable: Option<bool>,
97 #[serde(skip_serializing_if = "Option::is_none")]
99 pub cancelled_automatically: Option<bool>,
100
101 #[serde(skip_serializing_if = "Option::is_none")]
103 pub head: Option<String>,
104 #[serde(skip_serializing_if = "Option::is_none")]
106 pub color: Option<IconColor>,
107
108 #[serde(skip_serializing_if = "Option::is_none")]
110 pub tags: Option<u8>,
111 #[serde(skip_serializing_if = "Option::is_none")]
115 pub loaded_item: Option<String>,
116}
117
118impl CodeIcon {
119 pub fn is_legacy(&self) -> bool {
123 self.material == "STONE"
124 }
125
126 pub fn is_deprecated(&self) -> bool {
130 !self.deprecated_note.is_empty()
131 }
132}
133
134#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
136#[serde(rename_all = "camelCase")]
137pub struct CodeData {
138 #[serde(skip_serializing_if = "Option::is_none")]
140 pub name: Option<String>,
141
142 #[serde(alias = "id")]
144 #[serde(skip_serializing_if = "Option::is_none")]
145 pub identifier: Option<String>,
146
147 #[serde(alias = "particle")]
151 #[serde(alias = "potion")]
152 #[serde(alias = "sound")]
153 #[serde(skip_serializing_if = "Option::is_none")]
154 pub bukkit_name: Option<String>,
155
156 #[serde(alias = "icon")]
158 #[serde(skip_serializing_if = "Option::is_none")]
159 pub item: Option<CodeIcon>,
160
161 #[serde(skip_serializing_if = "Option::is_none")]
163 pub aliases: Option<Vec<String>>,
164
165 #[serde(skip_serializing_if = "Option::is_none")]
167 pub codeblock_name: Option<String>,
168 pub sub_action_blocks: Option<Vec<String>>,
170
171 #[serde(skip_serializing_if = "Option::is_none")]
175 pub category: Option<String>,
176 #[serde(skip_serializing_if = "Option::is_none")]
178 pub has_sub_categories: Option<bool>,
179
180 #[serde(skip_serializing_if = "Option::is_none")]
182 pub tags: Option<Vec<CodeData>>,
183
184 #[serde(skip_serializing_if = "Option::is_none")]
186 pub fields: Option<Vec<String>>,
187
188 #[serde(skip_serializing_if = "Option::is_none")]
190 pub default_option: Option<String>,
191 #[serde(skip_serializing_if = "Option::is_none")]
193 pub options: Option<Vec<CodeData>>,
194
195 #[serde(alias = "guiSlot")]
197 #[serde(skip_serializing_if = "Option::is_none")]
198 pub slot: Option<u8>,
199
200 #[serde(skip_serializing_if = "Option::is_none")]
202 pub purchasables: Option<Vec<CodeData>>,
203
204 #[serde(skip_serializing_if = "Option::is_none")]
206 pub price: Option<u16>,
207 #[serde(skip_serializing_if = "Option::is_none")]
209 pub currency_type: Option<String>,
210}
211
212impl CodeData {
213 pub fn is_legacy(&self) -> bool {
217 match &self.item {
218 Some(item) => item.is_legacy(),
219 _ => false,
220 }
221 }
222
223 pub fn is_deprecated(&self) -> bool {
227 match &self.item {
228 Some(item) => item.is_deprecated(),
229 _ => false,
230 }
231 }
232
233 pub fn is_dynamic(&self) -> bool {
238 match &self.name {
239 Some(name) => name == "dynamic",
240 _ => false,
241 }
242 }
243}