1use std::sync::LazyLock;
2use steel_utils::Identifier;
3use crate::block_transformer::{BlockTransformer, BlockTransformerRegistry};
4use crate::{feature::*, vanilla_blocks, vanilla_fluids};
5use steel_utils::value_providers::IntProvider;
6use simdnbt::owned::{NbtCompound, NbtList, NbtTag};
7use glam::IVec3;
8fn axe_nbt() -> NbtList {
9 NbtList::Compound(
10 vec![
11 { let mut compound = NbtCompound::new(); compound
12 .insert("block_state_provider", { let mut compound = NbtCompound::new();
13 compound.insert("type", "minecraft:rule_based"); compound.insert("rules",
14 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
15 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
16 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
17 NbtTag::String("minecraft:oak_wood".into())); NbtTag::Compound(compound) });
18 compound.insert("then", { let mut compound = NbtCompound::new(); compound
19 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
20 mut compound = NbtCompound::new(); compound.insert("id",
21 NbtTag::String("minecraft:stripped_oak_wood".into())); let mut properties =
22 NbtCompound::new(); properties.insert("axis", "y"); compound
23 .insert("properties", NbtTag::Compound(properties));
24 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
25 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
26 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
27 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
28 NbtTag::String("minecraft:oak_log".into())); NbtTag::Compound(compound) });
29 compound.insert("then", { let mut compound = NbtCompound::new(); compound
30 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
31 mut compound = NbtCompound::new(); compound.insert("id",
32 NbtTag::String("minecraft:stripped_oak_log".into())); let mut properties =
33 NbtCompound::new(); properties.insert("axis", "y"); compound
34 .insert("properties", NbtTag::Compound(properties));
35 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
36 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
37 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
38 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
39 NbtTag::String("minecraft:dark_oak_wood".into())); NbtTag::Compound(compound)
40 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
41 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
42 mut compound = NbtCompound::new(); compound.insert("id",
43 NbtTag::String("minecraft:stripped_dark_oak_wood".into())); let mut
44 properties = NbtCompound::new(); properties.insert("axis", "y"); compound
45 .insert("properties", NbtTag::Compound(properties));
46 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
47 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
48 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
49 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
50 NbtTag::String("minecraft:dark_oak_log".into())); NbtTag::Compound(compound)
51 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
52 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
53 mut compound = NbtCompound::new(); compound.insert("id",
54 NbtTag::String("minecraft:stripped_dark_oak_log".into())); let mut properties
55 = NbtCompound::new(); properties.insert("axis", "y"); compound
56 .insert("properties", NbtTag::Compound(properties));
57 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
58 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
59 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
60 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
61 NbtTag::String("minecraft:pale_oak_wood".into())); NbtTag::Compound(compound)
62 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
63 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
64 mut compound = NbtCompound::new(); compound.insert("id",
65 NbtTag::String("minecraft:stripped_pale_oak_wood".into())); let mut
66 properties = NbtCompound::new(); properties.insert("axis", "y"); compound
67 .insert("properties", NbtTag::Compound(properties));
68 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
69 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
70 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
71 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
72 NbtTag::String("minecraft:pale_oak_log".into())); NbtTag::Compound(compound)
73 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
74 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
75 mut compound = NbtCompound::new(); compound.insert("id",
76 NbtTag::String("minecraft:stripped_pale_oak_log".into())); let mut properties
77 = NbtCompound::new(); properties.insert("axis", "y"); compound
78 .insert("properties", NbtTag::Compound(properties));
79 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
80 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
81 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
82 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
83 NbtTag::String("minecraft:poplar_wood".into())); NbtTag::Compound(compound)
84 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
85 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
86 mut compound = NbtCompound::new(); compound.insert("id",
87 NbtTag::String("minecraft:stripped_poplar_wood".into())); let mut properties
88 = NbtCompound::new(); properties.insert("axis", "y"); compound
89 .insert("properties", NbtTag::Compound(properties));
90 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
91 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
92 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
93 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
94 NbtTag::String("minecraft:poplar_log".into())); NbtTag::Compound(compound)
95 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
96 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
97 mut compound = NbtCompound::new(); compound.insert("id",
98 NbtTag::String("minecraft:stripped_poplar_log".into())); let mut properties =
99 NbtCompound::new(); properties.insert("axis", "y"); compound
100 .insert("properties", NbtTag::Compound(properties));
101 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
102 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
103 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
104 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
105 NbtTag::String("minecraft:acacia_wood".into())); NbtTag::Compound(compound)
106 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
107 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
108 mut compound = NbtCompound::new(); compound.insert("id",
109 NbtTag::String("minecraft:stripped_acacia_wood".into())); let mut properties
110 = NbtCompound::new(); properties.insert("axis", "y"); compound
111 .insert("properties", NbtTag::Compound(properties));
112 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
113 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
114 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
115 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
116 NbtTag::String("minecraft:acacia_log".into())); NbtTag::Compound(compound)
117 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
118 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
119 mut compound = NbtCompound::new(); compound.insert("id",
120 NbtTag::String("minecraft:stripped_acacia_log".into())); let mut properties =
121 NbtCompound::new(); properties.insert("axis", "y"); compound
122 .insert("properties", NbtTag::Compound(properties));
123 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
124 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
125 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
126 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
127 NbtTag::String("minecraft:cherry_wood".into())); NbtTag::Compound(compound)
128 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
129 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
130 mut compound = NbtCompound::new(); compound.insert("id",
131 NbtTag::String("minecraft:stripped_cherry_wood".into())); let mut properties
132 = NbtCompound::new(); properties.insert("axis", "y"); compound
133 .insert("properties", NbtTag::Compound(properties));
134 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
135 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
136 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
137 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
138 NbtTag::String("minecraft:cherry_log".into())); NbtTag::Compound(compound)
139 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
140 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
141 mut compound = NbtCompound::new(); compound.insert("id",
142 NbtTag::String("minecraft:stripped_cherry_log".into())); let mut properties =
143 NbtCompound::new(); properties.insert("axis", "y"); compound
144 .insert("properties", NbtTag::Compound(properties));
145 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
146 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
147 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
148 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
149 NbtTag::String("minecraft:birch_wood".into())); NbtTag::Compound(compound)
150 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
151 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
152 mut compound = NbtCompound::new(); compound.insert("id",
153 NbtTag::String("minecraft:stripped_birch_wood".into())); let mut properties =
154 NbtCompound::new(); properties.insert("axis", "y"); compound
155 .insert("properties", NbtTag::Compound(properties));
156 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
157 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
158 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
159 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
160 NbtTag::String("minecraft:birch_log".into())); NbtTag::Compound(compound) });
161 compound.insert("then", { let mut compound = NbtCompound::new(); compound
162 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
163 mut compound = NbtCompound::new(); compound.insert("id",
164 NbtTag::String("minecraft:stripped_birch_log".into())); let mut properties =
165 NbtCompound::new(); properties.insert("axis", "y"); compound
166 .insert("properties", NbtTag::Compound(properties));
167 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
168 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
169 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
170 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
171 NbtTag::String("minecraft:jungle_wood".into())); NbtTag::Compound(compound)
172 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
173 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
174 mut compound = NbtCompound::new(); compound.insert("id",
175 NbtTag::String("minecraft:stripped_jungle_wood".into())); let mut properties
176 = NbtCompound::new(); properties.insert("axis", "y"); compound
177 .insert("properties", NbtTag::Compound(properties));
178 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
179 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
180 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
181 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
182 NbtTag::String("minecraft:jungle_log".into())); NbtTag::Compound(compound)
183 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
184 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
185 mut compound = NbtCompound::new(); compound.insert("id",
186 NbtTag::String("minecraft:stripped_jungle_log".into())); let mut properties =
187 NbtCompound::new(); properties.insert("axis", "y"); compound
188 .insert("properties", NbtTag::Compound(properties));
189 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
190 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
191 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
192 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
193 NbtTag::String("minecraft:spruce_wood".into())); NbtTag::Compound(compound)
194 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
195 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
196 mut compound = NbtCompound::new(); compound.insert("id",
197 NbtTag::String("minecraft:stripped_spruce_wood".into())); let mut properties
198 = NbtCompound::new(); properties.insert("axis", "y"); compound
199 .insert("properties", NbtTag::Compound(properties));
200 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
201 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
202 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
203 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
204 NbtTag::String("minecraft:spruce_log".into())); NbtTag::Compound(compound)
205 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
206 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
207 mut compound = NbtCompound::new(); compound.insert("id",
208 NbtTag::String("minecraft:stripped_spruce_log".into())); let mut properties =
209 NbtCompound::new(); properties.insert("axis", "y"); compound
210 .insert("properties", NbtTag::Compound(properties));
211 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
212 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
213 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
214 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
215 NbtTag::String("minecraft:warped_stem".into())); NbtTag::Compound(compound)
216 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
217 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
218 mut compound = NbtCompound::new(); compound.insert("id",
219 NbtTag::String("minecraft:stripped_warped_stem".into())); let mut properties
220 = NbtCompound::new(); properties.insert("axis", "y"); compound
221 .insert("properties", NbtTag::Compound(properties));
222 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
223 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
224 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
225 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
226 NbtTag::String("minecraft:warped_hyphae".into())); NbtTag::Compound(compound)
227 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
228 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
229 mut compound = NbtCompound::new(); compound.insert("id",
230 NbtTag::String("minecraft:stripped_warped_hyphae".into())); let mut
231 properties = NbtCompound::new(); properties.insert("axis", "y"); compound
232 .insert("properties", NbtTag::Compound(properties));
233 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
234 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
235 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
236 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
237 NbtTag::String("minecraft:crimson_stem".into())); NbtTag::Compound(compound)
238 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
239 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
240 mut compound = NbtCompound::new(); compound.insert("id",
241 NbtTag::String("minecraft:stripped_crimson_stem".into())); let mut properties
242 = NbtCompound::new(); properties.insert("axis", "y"); compound
243 .insert("properties", NbtTag::Compound(properties));
244 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
245 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
246 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
247 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
248 NbtTag::String("minecraft:crimson_hyphae".into()));
249 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
250 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
251 compound.insert("source", { let mut compound = NbtCompound::new(); compound
252 .insert("id", NbtTag::String("minecraft:stripped_crimson_hyphae".into()));
253 let mut properties = NbtCompound::new(); properties.insert("axis", "y");
254 compound.insert("properties", NbtTag::Compound(properties));
255 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
256 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
257 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
258 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
259 NbtTag::String("minecraft:mangrove_wood".into())); NbtTag::Compound(compound)
260 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
261 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
262 mut compound = NbtCompound::new(); compound.insert("id",
263 NbtTag::String("minecraft:stripped_mangrove_wood".into())); let mut
264 properties = NbtCompound::new(); properties.insert("axis", "y"); compound
265 .insert("properties", NbtTag::Compound(properties));
266 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
267 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
268 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
269 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
270 NbtTag::String("minecraft:mangrove_log".into())); NbtTag::Compound(compound)
271 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
272 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
273 mut compound = NbtCompound::new(); compound.insert("id",
274 NbtTag::String("minecraft:stripped_mangrove_log".into())); let mut properties
275 = NbtCompound::new(); properties.insert("axis", "y"); compound
276 .insert("properties", NbtTag::Compound(properties));
277 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
278 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
279 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
280 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
281 NbtTag::String("minecraft:bamboo_block".into())); NbtTag::Compound(compound)
282 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
283 .insert("type", "minecraft:copy_properties"); compound.insert("source", { let
284 mut compound = NbtCompound::new(); compound.insert("id",
285 NbtTag::String("minecraft:stripped_bamboo_block".into())); let mut properties
286 = NbtCompound::new(); properties.insert("axis", "y"); compound
287 .insert("properties", NbtTag::Compound(properties));
288 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
289 NbtTag::Compound(compound) }]))); NbtTag::Compound(compound) }); compound
290 .insert("item_damage_per_use", 1i32); compound.insert("sound",
291 "minecraft:item.axe.strip"); compound }, { let mut compound =
292 NbtCompound::new(); compound.insert("block_state_provider", { let mut
293 compound = NbtCompound::new(); compound.insert("type",
294 "minecraft:rule_based"); compound.insert("rules",
295 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
296 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
297 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
298 NbtTag::String("minecraft:exposed_copper".into()));
299 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
300 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
301 compound.insert("source", { let mut compound = NbtCompound::new(); compound
302 .insert("id", NbtTag::String("minecraft:copper_block".into()));
303 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
304 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
305 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
306 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
307 NbtTag::String("minecraft:weathered_copper".into()));
308 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
309 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
310 compound.insert("source", { let mut compound = NbtCompound::new(); compound
311 .insert("id", NbtTag::String("minecraft:exposed_copper".into()));
312 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
313 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
314 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
315 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
316 NbtTag::String("minecraft:oxidized_copper".into()));
317 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
318 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
319 compound.insert("source", { let mut compound = NbtCompound::new(); compound
320 .insert("id", NbtTag::String("minecraft:weathered_copper".into()));
321 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
322 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
323 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
324 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
325 NbtTag::String("minecraft:exposed_cut_copper".into()));
326 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
327 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
328 compound.insert("source", { let mut compound = NbtCompound::new(); compound
329 .insert("id", NbtTag::String("minecraft:cut_copper".into()));
330 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
331 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
332 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
333 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
334 NbtTag::String("minecraft:weathered_cut_copper".into()));
335 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
336 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
337 compound.insert("source", { let mut compound = NbtCompound::new(); compound
338 .insert("id", NbtTag::String("minecraft:exposed_cut_copper".into()));
339 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
340 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
341 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
342 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
343 NbtTag::String("minecraft:oxidized_cut_copper".into()));
344 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
345 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
346 compound.insert("source", { let mut compound = NbtCompound::new(); compound
347 .insert("id", NbtTag::String("minecraft:weathered_cut_copper".into()));
348 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
349 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
350 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
351 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
352 NbtTag::String("minecraft:exposed_chiseled_copper".into()));
353 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
354 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
355 compound.insert("source", { let mut compound = NbtCompound::new(); compound
356 .insert("id", NbtTag::String("minecraft:chiseled_copper".into()));
357 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
358 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
359 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
360 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
361 NbtTag::String("minecraft:weathered_chiseled_copper".into()));
362 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
363 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
364 compound.insert("source", { let mut compound = NbtCompound::new(); compound
365 .insert("id", NbtTag::String("minecraft:exposed_chiseled_copper".into()));
366 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
367 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
368 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
369 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
370 NbtTag::String("minecraft:oxidized_chiseled_copper".into()));
371 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
372 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
373 compound.insert("source", { let mut compound = NbtCompound::new(); compound
374 .insert("id", NbtTag::String("minecraft:weathered_chiseled_copper".into()));
375 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
376 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
377 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
378 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
379 NbtTag::String("minecraft:exposed_cut_copper_slab".into()));
380 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
381 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
382 compound.insert("source", { let mut compound = NbtCompound::new(); compound
383 .insert("id", NbtTag::String("minecraft:cut_copper_slab".into())); let mut
384 properties = NbtCompound::new(); properties.insert("type", "bottom");
385 properties.insert("waterlogged", "false"); compound.insert("properties",
386 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
387 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
388 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
389 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
390 compound.insert("blocks",
391 NbtTag::String("minecraft:weathered_cut_copper_slab".into()));
392 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
393 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
394 compound.insert("source", { let mut compound = NbtCompound::new(); compound
395 .insert("id", NbtTag::String("minecraft:exposed_cut_copper_slab".into()));
396 let mut properties = NbtCompound::new(); properties.insert("type", "bottom");
397 properties.insert("waterlogged", "false"); compound.insert("properties",
398 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
399 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
400 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
401 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
402 compound.insert("blocks", NbtTag::String("minecraft:oxidized_cut_copper_slab"
403 .into())); NbtTag::Compound(compound) }); compound.insert("then", { let mut
404 compound = NbtCompound::new(); compound.insert("type",
405 "minecraft:copy_properties"); compound.insert("source", { let mut compound =
406 NbtCompound::new(); compound.insert("id",
407 NbtTag::String("minecraft:weathered_cut_copper_slab".into())); let mut
408 properties = NbtCompound::new(); properties.insert("type", "bottom");
409 properties.insert("waterlogged", "false"); compound.insert("properties",
410 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
411 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
412 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
413 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
414 compound.insert("blocks",
415 NbtTag::String("minecraft:exposed_cut_copper_stairs".into()));
416 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
417 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
418 compound.insert("source", { let mut compound = NbtCompound::new(); compound
419 .insert("id", NbtTag::String("minecraft:cut_copper_stairs".into())); let mut
420 properties = NbtCompound::new(); properties.insert("facing", "north");
421 properties.insert("half", "bottom"); properties.insert("shape", "straight");
422 properties.insert("waterlogged", "false"); compound.insert("properties",
423 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
424 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
425 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
426 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
427 compound.insert("blocks",
428 NbtTag::String("minecraft:weathered_cut_copper_stairs".into()));
429 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
430 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
431 compound.insert("source", { let mut compound = NbtCompound::new(); compound
432 .insert("id", NbtTag::String("minecraft:exposed_cut_copper_stairs".into()));
433 let mut properties = NbtCompound::new(); properties.insert("facing",
434 "north"); properties.insert("half", "bottom"); properties.insert("shape",
435 "straight"); properties.insert("waterlogged", "false"); compound
436 .insert("properties", NbtTag::Compound(properties));
437 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
438 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
439 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
440 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
441 NbtTag::String("minecraft:oxidized_cut_copper_stairs".into()));
442 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
443 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
444 compound.insert("source", { let mut compound = NbtCompound::new(); compound
445 .insert("id", NbtTag::String("minecraft:weathered_cut_copper_stairs"
446 .into())); let mut properties = NbtCompound::new(); properties
447 .insert("facing", "north"); properties.insert("half", "bottom"); properties
448 .insert("shape", "straight"); properties.insert("waterlogged", "false");
449 compound.insert("properties", NbtTag::Compound(properties));
450 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
451 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
452 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
453 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
454 NbtTag::String("minecraft:exposed_copper_trapdoor".into()));
455 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
456 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
457 compound.insert("source", { let mut compound = NbtCompound::new(); compound
458 .insert("id", NbtTag::String("minecraft:copper_trapdoor".into())); let mut
459 properties = NbtCompound::new(); properties.insert("facing", "north");
460 properties.insert("half", "bottom"); properties.insert("open", "false");
461 properties.insert("powered", "false"); properties.insert("waterlogged",
462 "false"); compound.insert("properties", NbtTag::Compound(properties));
463 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
464 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
465 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
466 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
467 NbtTag::String("minecraft:weathered_copper_trapdoor".into()));
468 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
469 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
470 compound.insert("source", { let mut compound = NbtCompound::new(); compound
471 .insert("id", NbtTag::String("minecraft:exposed_copper_trapdoor".into()));
472 let mut properties = NbtCompound::new(); properties.insert("facing",
473 "north"); properties.insert("half", "bottom"); properties.insert("open",
474 "false"); properties.insert("powered", "false"); properties
475 .insert("waterlogged", "false"); compound.insert("properties",
476 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
477 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
478 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
479 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
480 compound.insert("blocks", NbtTag::String("minecraft:oxidized_copper_trapdoor"
481 .into())); NbtTag::Compound(compound) }); compound.insert("then", { let mut
482 compound = NbtCompound::new(); compound.insert("type",
483 "minecraft:copy_properties"); compound.insert("source", { let mut compound =
484 NbtCompound::new(); compound.insert("id",
485 NbtTag::String("minecraft:weathered_copper_trapdoor".into())); let mut
486 properties = NbtCompound::new(); properties.insert("facing", "north");
487 properties.insert("half", "bottom"); properties.insert("open", "false");
488 properties.insert("powered", "false"); properties.insert("waterlogged",
489 "false"); compound.insert("properties", NbtTag::Compound(properties));
490 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
491 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
492 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
493 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
494 NbtTag::String("minecraft:exposed_copper_bars".into()));
495 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
496 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
497 compound.insert("source", { let mut compound = NbtCompound::new(); compound
498 .insert("id", NbtTag::String("minecraft:copper_bars".into())); let mut
499 properties = NbtCompound::new(); properties.insert("east", "false");
500 properties.insert("north", "false"); properties.insert("south", "false");
501 properties.insert("waterlogged", "false"); properties.insert("west",
502 "false"); compound.insert("properties", NbtTag::Compound(properties));
503 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
504 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
505 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
506 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
507 NbtTag::String("minecraft:weathered_copper_bars".into()));
508 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
509 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
510 compound.insert("source", { let mut compound = NbtCompound::new(); compound
511 .insert("id", NbtTag::String("minecraft:exposed_copper_bars".into())); let
512 mut properties = NbtCompound::new(); properties.insert("east", "false");
513 properties.insert("north", "false"); properties.insert("south", "false");
514 properties.insert("waterlogged", "false"); properties.insert("west",
515 "false"); compound.insert("properties", NbtTag::Compound(properties));
516 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
517 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
518 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
519 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
520 NbtTag::String("minecraft:oxidized_copper_bars".into()));
521 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
522 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
523 compound.insert("source", { let mut compound = NbtCompound::new(); compound
524 .insert("id", NbtTag::String("minecraft:weathered_copper_bars".into())); let
525 mut properties = NbtCompound::new(); properties.insert("east", "false");
526 properties.insert("north", "false"); properties.insert("south", "false");
527 properties.insert("waterlogged", "false"); properties.insert("west",
528 "false"); compound.insert("properties", NbtTag::Compound(properties));
529 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
530 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
531 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
532 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
533 NbtTag::String("minecraft:exposed_copper_grate".into()));
534 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
535 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
536 compound.insert("source", { let mut compound = NbtCompound::new(); compound
537 .insert("id", NbtTag::String("minecraft:copper_grate".into())); let mut
538 properties = NbtCompound::new(); properties.insert("waterlogged", "false");
539 compound.insert("properties", NbtTag::Compound(properties));
540 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
541 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
542 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
543 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
544 NbtTag::String("minecraft:weathered_copper_grate".into()));
545 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
546 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
547 compound.insert("source", { let mut compound = NbtCompound::new(); compound
548 .insert("id", NbtTag::String("minecraft:exposed_copper_grate".into())); let
549 mut properties = NbtCompound::new(); properties.insert("waterlogged",
550 "false"); compound.insert("properties", NbtTag::Compound(properties));
551 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
552 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
553 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
554 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
555 NbtTag::String("minecraft:oxidized_copper_grate".into()));
556 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
557 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
558 compound.insert("source", { let mut compound = NbtCompound::new(); compound
559 .insert("id", NbtTag::String("minecraft:weathered_copper_grate".into())); let
560 mut properties = NbtCompound::new(); properties.insert("waterlogged",
561 "false"); compound.insert("properties", NbtTag::Compound(properties));
562 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
563 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
564 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
565 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
566 NbtTag::String("minecraft:exposed_copper_bulb".into()));
567 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
568 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
569 compound.insert("source", { let mut compound = NbtCompound::new(); compound
570 .insert("id", NbtTag::String("minecraft:copper_bulb".into())); let mut
571 properties = NbtCompound::new(); properties.insert("lit", "false");
572 properties.insert("powered", "false"); compound.insert("properties",
573 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
574 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
575 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
576 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
577 compound.insert("blocks", NbtTag::String("minecraft:weathered_copper_bulb"
578 .into())); NbtTag::Compound(compound) }); compound.insert("then", { let mut
579 compound = NbtCompound::new(); compound.insert("type",
580 "minecraft:copy_properties"); compound.insert("source", { let mut compound =
581 NbtCompound::new(); compound.insert("id",
582 NbtTag::String("minecraft:exposed_copper_bulb".into())); let mut properties =
583 NbtCompound::new(); properties.insert("lit", "false"); properties
584 .insert("powered", "false"); compound.insert("properties",
585 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
586 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
587 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
588 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
589 compound.insert("blocks", NbtTag::String("minecraft:oxidized_copper_bulb"
590 .into())); NbtTag::Compound(compound) }); compound.insert("then", { let mut
591 compound = NbtCompound::new(); compound.insert("type",
592 "minecraft:copy_properties"); compound.insert("source", { let mut compound =
593 NbtCompound::new(); compound.insert("id",
594 NbtTag::String("minecraft:weathered_copper_bulb".into())); let mut properties
595 = NbtCompound::new(); properties.insert("lit", "false"); properties
596 .insert("powered", "false"); compound.insert("properties",
597 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
598 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
599 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
600 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
601 compound.insert("blocks", NbtTag::String("minecraft:exposed_copper_lantern"
602 .into())); NbtTag::Compound(compound) }); compound.insert("then", { let mut
603 compound = NbtCompound::new(); compound.insert("type",
604 "minecraft:copy_properties"); compound.insert("source", { let mut compound =
605 NbtCompound::new(); compound.insert("id",
606 NbtTag::String("minecraft:copper_lantern".into())); let mut properties =
607 NbtCompound::new(); properties.insert("hanging", "false"); properties
608 .insert("waterlogged", "false"); compound.insert("properties",
609 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
610 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
611 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
612 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
613 compound.insert("blocks", NbtTag::String("minecraft:weathered_copper_lantern"
614 .into())); NbtTag::Compound(compound) }); compound.insert("then", { let mut
615 compound = NbtCompound::new(); compound.insert("type",
616 "minecraft:copy_properties"); compound.insert("source", { let mut compound =
617 NbtCompound::new(); compound.insert("id",
618 NbtTag::String("minecraft:exposed_copper_lantern".into())); let mut
619 properties = NbtCompound::new(); properties.insert("hanging", "false");
620 properties.insert("waterlogged", "false"); compound.insert("properties",
621 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
622 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
623 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
624 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
625 compound.insert("blocks", NbtTag::String("minecraft:oxidized_copper_lantern"
626 .into())); NbtTag::Compound(compound) }); compound.insert("then", { let mut
627 compound = NbtCompound::new(); compound.insert("type",
628 "minecraft:copy_properties"); compound.insert("source", { let mut compound =
629 NbtCompound::new(); compound.insert("id",
630 NbtTag::String("minecraft:weathered_copper_lantern".into())); let mut
631 properties = NbtCompound::new(); properties.insert("hanging", "false");
632 properties.insert("waterlogged", "false"); compound.insert("properties",
633 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
634 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
635 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
636 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
637 compound.insert("blocks",
638 NbtTag::String("minecraft:exposed_copper_golem_statue".into()));
639 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
640 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
641 compound.insert("source", { let mut compound = NbtCompound::new(); compound
642 .insert("id", NbtTag::String("minecraft:copper_golem_statue".into())); let
643 mut properties = NbtCompound::new(); properties.insert("copper_golem_pose",
644 "standing"); properties.insert("facing", "north"); properties
645 .insert("waterlogged", "false"); compound.insert("properties",
646 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
647 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
648 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
649 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
650 compound.insert("blocks",
651 NbtTag::String("minecraft:weathered_copper_golem_statue".into()));
652 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
653 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
654 compound.insert("source", { let mut compound = NbtCompound::new(); compound
655 .insert("id", NbtTag::String("minecraft:exposed_copper_golem_statue"
656 .into())); let mut properties = NbtCompound::new(); properties
657 .insert("copper_golem_pose", "standing"); properties.insert("facing",
658 "north"); properties.insert("waterlogged", "false"); compound
659 .insert("properties", NbtTag::Compound(properties));
660 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
661 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
662 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
663 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
664 NbtTag::String("minecraft:oxidized_copper_golem_statue".into()));
665 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
666 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
667 compound.insert("source", { let mut compound = NbtCompound::new(); compound
668 .insert("id", NbtTag::String("minecraft:weathered_copper_golem_statue"
669 .into())); let mut properties = NbtCompound::new(); properties
670 .insert("copper_golem_pose", "standing"); properties.insert("facing",
671 "north"); properties.insert("waterlogged", "false"); compound
672 .insert("properties", NbtTag::Compound(properties));
673 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
674 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
675 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
676 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
677 NbtTag::String("minecraft:exposed_lightning_rod".into()));
678 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
679 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
680 compound.insert("source", { let mut compound = NbtCompound::new(); compound
681 .insert("id", NbtTag::String("minecraft:lightning_rod".into())); let mut
682 properties = NbtCompound::new(); properties.insert("facing", "up");
683 properties.insert("powered", "false"); properties.insert("waterlogged",
684 "false"); compound.insert("properties", NbtTag::Compound(properties));
685 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
686 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
687 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
688 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
689 NbtTag::String("minecraft:weathered_lightning_rod".into()));
690 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
691 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
692 compound.insert("source", { let mut compound = NbtCompound::new(); compound
693 .insert("id", NbtTag::String("minecraft:exposed_lightning_rod".into())); let
694 mut properties = NbtCompound::new(); properties.insert("facing", "up");
695 properties.insert("powered", "false"); properties.insert("waterlogged",
696 "false"); compound.insert("properties", NbtTag::Compound(properties));
697 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
698 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
699 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
700 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
701 NbtTag::String("minecraft:oxidized_lightning_rod".into()));
702 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
703 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
704 compound.insert("source", { let mut compound = NbtCompound::new(); compound
705 .insert("id", NbtTag::String("minecraft:weathered_lightning_rod".into()));
706 let mut properties = NbtCompound::new(); properties.insert("facing", "up");
707 properties.insert("powered", "false"); properties.insert("waterlogged",
708 "false"); compound.insert("properties", NbtTag::Compound(properties));
709 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
710 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
711 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
712 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
713 NbtTag::String("minecraft:exposed_copper_chain".into()));
714 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
715 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
716 compound.insert("source", { let mut compound = NbtCompound::new(); compound
717 .insert("id", NbtTag::String("minecraft:copper_chain".into())); let mut
718 properties = NbtCompound::new(); properties.insert("axis", "y"); properties
719 .insert("waterlogged", "false"); compound.insert("properties",
720 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
721 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
722 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
723 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
724 compound.insert("blocks", NbtTag::String("minecraft:weathered_copper_chain"
725 .into())); NbtTag::Compound(compound) }); compound.insert("then", { let mut
726 compound = NbtCompound::new(); compound.insert("type",
727 "minecraft:copy_properties"); compound.insert("source", { let mut compound =
728 NbtCompound::new(); compound.insert("id",
729 NbtTag::String("minecraft:exposed_copper_chain".into())); let mut properties
730 = NbtCompound::new(); properties.insert("axis", "y"); properties
731 .insert("waterlogged", "false"); compound.insert("properties",
732 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
733 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
734 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
735 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
736 compound.insert("blocks", NbtTag::String("minecraft:oxidized_copper_chain"
737 .into())); NbtTag::Compound(compound) }); compound.insert("then", { let mut
738 compound = NbtCompound::new(); compound.insert("type",
739 "minecraft:copy_properties"); compound.insert("source", { let mut compound =
740 NbtCompound::new(); compound.insert("id",
741 NbtTag::String("minecraft:weathered_copper_chain".into())); let mut
742 properties = NbtCompound::new(); properties.insert("axis", "y"); properties
743 .insert("waterlogged", "false"); compound.insert("properties",
744 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
745 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }])));
746 NbtTag::Compound(compound) }); compound.insert("item_damage_per_use", 1i32);
747 compound.insert("particle", "scrape"); compound.insert("sound",
748 "minecraft:item.axe.scrape"); compound }, { let mut compound =
749 NbtCompound::new(); compound.insert("block_state_provider", { let mut
750 compound = NbtCompound::new(); compound.insert("type",
751 "minecraft:rule_based"); compound.insert("rules",
752 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
753 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
754 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
755 NbtTag::String("minecraft:exposed_copper_chest".into()));
756 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
757 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
758 compound.insert("source", { let mut compound = NbtCompound::new(); compound
759 .insert("id", NbtTag::String("minecraft:copper_chest".into())); let mut
760 properties = NbtCompound::new(); properties.insert("facing", "north");
761 properties.insert("type", "single"); properties.insert("waterlogged",
762 "false"); compound.insert("properties", NbtTag::Compound(properties));
763 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
764 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
765 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
766 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
767 NbtTag::String("minecraft:weathered_copper_chest".into()));
768 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
769 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
770 compound.insert("source", { let mut compound = NbtCompound::new(); compound
771 .insert("id", NbtTag::String("minecraft:exposed_copper_chest".into())); let
772 mut properties = NbtCompound::new(); properties.insert("facing", "north");
773 properties.insert("type", "single"); properties.insert("waterlogged",
774 "false"); compound.insert("properties", NbtTag::Compound(properties));
775 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
776 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
777 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
778 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
779 NbtTag::String("minecraft:oxidized_copper_chest".into()));
780 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
781 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
782 compound.insert("source", { let mut compound = NbtCompound::new(); compound
783 .insert("id", NbtTag::String("minecraft:weathered_copper_chest".into())); let
784 mut properties = NbtCompound::new(); properties.insert("facing", "north");
785 properties.insert("type", "single"); properties.insert("waterlogged",
786 "false"); compound.insert("properties", NbtTag::Compound(properties));
787 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
788 NbtTag::Compound(compound) }]))); NbtTag::Compound(compound) }); compound
789 .insert("item_damage_per_use", 1i32); compound.insert("particle", "scrape");
790 compound.insert("sound", "minecraft:item.axe.scrape"); compound
791 .insert("transform_type", "copper_chest"); compound
792 .insert("update_from_neighbors", 0i8); compound }, { let mut compound =
793 NbtCompound::new(); compound.insert("block_state_provider", { let mut
794 compound = NbtCompound::new(); compound.insert("type",
795 "minecraft:rule_based"); compound.insert("rules",
796 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
797 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
798 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
799 NbtTag::String("minecraft:exposed_copper_door".into()));
800 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
801 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
802 compound.insert("source", { let mut compound = NbtCompound::new(); compound
803 .insert("id", NbtTag::String("minecraft:copper_door".into())); let mut
804 properties = NbtCompound::new(); properties.insert("facing", "north");
805 properties.insert("half", "lower"); properties.insert("hinge", "left");
806 properties.insert("open", "false"); properties.insert("powered", "false");
807 compound.insert("properties", NbtTag::Compound(properties));
808 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
809 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
810 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
811 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
812 NbtTag::String("minecraft:weathered_copper_door".into()));
813 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
814 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
815 compound.insert("source", { let mut compound = NbtCompound::new(); compound
816 .insert("id", NbtTag::String("minecraft:exposed_copper_door".into())); let
817 mut properties = NbtCompound::new(); properties.insert("facing", "north");
818 properties.insert("half", "lower"); properties.insert("hinge", "left");
819 properties.insert("open", "false"); properties.insert("powered", "false");
820 compound.insert("properties", NbtTag::Compound(properties));
821 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
822 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
823 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
824 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
825 NbtTag::String("minecraft:oxidized_copper_door".into()));
826 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
827 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
828 compound.insert("source", { let mut compound = NbtCompound::new(); compound
829 .insert("id", NbtTag::String("minecraft:weathered_copper_door".into())); let
830 mut properties = NbtCompound::new(); properties.insert("facing", "north");
831 properties.insert("half", "lower"); properties.insert("hinge", "left");
832 properties.insert("open", "false"); properties.insert("powered", "false");
833 compound.insert("properties", NbtTag::Compound(properties));
834 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
835 NbtTag::Compound(compound) }]))); NbtTag::Compound(compound) }); compound
836 .insert("item_damage_per_use", 1i32); compound.insert("particle", "scrape");
837 compound.insert("sound", "minecraft:item.axe.scrape"); compound
838 .insert("update_from_neighbors", 0i8); compound }, { let mut compound =
839 NbtCompound::new(); compound.insert("block_state_provider", { let mut
840 compound = NbtCompound::new(); compound.insert("type",
841 "minecraft:rule_based"); compound.insert("rules",
842 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
843 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
844 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
845 NbtTag::String("minecraft:waxed_copper_block".into()));
846 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
847 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
848 compound.insert("source", { let mut compound = NbtCompound::new(); compound
849 .insert("id", NbtTag::String("minecraft:copper_block".into()));
850 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
851 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
852 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
853 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
854 NbtTag::String("minecraft:waxed_exposed_copper".into()));
855 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
856 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
857 compound.insert("source", { let mut compound = NbtCompound::new(); compound
858 .insert("id", NbtTag::String("minecraft:exposed_copper".into()));
859 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
860 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
861 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
862 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
863 NbtTag::String("minecraft:waxed_weathered_copper".into()));
864 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
865 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
866 compound.insert("source", { let mut compound = NbtCompound::new(); compound
867 .insert("id", NbtTag::String("minecraft:weathered_copper".into()));
868 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
869 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
870 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
871 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
872 NbtTag::String("minecraft:waxed_oxidized_copper".into()));
873 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
874 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
875 compound.insert("source", { let mut compound = NbtCompound::new(); compound
876 .insert("id", NbtTag::String("minecraft:oxidized_copper".into()));
877 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
878 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
879 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
880 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
881 NbtTag::String("minecraft:waxed_cut_copper".into()));
882 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
883 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
884 compound.insert("source", { let mut compound = NbtCompound::new(); compound
885 .insert("id", NbtTag::String("minecraft:cut_copper".into()));
886 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
887 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
888 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
889 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
890 NbtTag::String("minecraft:waxed_exposed_cut_copper".into()));
891 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
892 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
893 compound.insert("source", { let mut compound = NbtCompound::new(); compound
894 .insert("id", NbtTag::String("minecraft:exposed_cut_copper".into()));
895 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
896 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
897 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
898 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
899 NbtTag::String("minecraft:waxed_weathered_cut_copper".into()));
900 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
901 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
902 compound.insert("source", { let mut compound = NbtCompound::new(); compound
903 .insert("id", NbtTag::String("minecraft:weathered_cut_copper".into()));
904 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
905 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
906 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
907 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
908 NbtTag::String("minecraft:waxed_oxidized_cut_copper".into()));
909 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
910 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
911 compound.insert("source", { let mut compound = NbtCompound::new(); compound
912 .insert("id", NbtTag::String("minecraft:oxidized_cut_copper".into()));
913 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
914 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
915 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
916 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
917 NbtTag::String("minecraft:waxed_cut_copper_slab".into()));
918 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
919 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
920 compound.insert("source", { let mut compound = NbtCompound::new(); compound
921 .insert("id", NbtTag::String("minecraft:cut_copper_slab".into())); let mut
922 properties = NbtCompound::new(); properties.insert("type", "bottom");
923 properties.insert("waterlogged", "false"); compound.insert("properties",
924 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
925 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
926 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
927 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
928 compound.insert("blocks",
929 NbtTag::String("minecraft:waxed_exposed_cut_copper_slab".into()));
930 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
931 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
932 compound.insert("source", { let mut compound = NbtCompound::new(); compound
933 .insert("id", NbtTag::String("minecraft:exposed_cut_copper_slab".into()));
934 let mut properties = NbtCompound::new(); properties.insert("type", "bottom");
935 properties.insert("waterlogged", "false"); compound.insert("properties",
936 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
937 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
938 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
939 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
940 compound.insert("blocks",
941 NbtTag::String("minecraft:waxed_weathered_cut_copper_slab".into()));
942 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
943 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
944 compound.insert("source", { let mut compound = NbtCompound::new(); compound
945 .insert("id", NbtTag::String("minecraft:weathered_cut_copper_slab".into()));
946 let mut properties = NbtCompound::new(); properties.insert("type", "bottom");
947 properties.insert("waterlogged", "false"); compound.insert("properties",
948 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
949 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
950 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
951 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
952 compound.insert("blocks",
953 NbtTag::String("minecraft:waxed_oxidized_cut_copper_slab".into()));
954 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
955 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
956 compound.insert("source", { let mut compound = NbtCompound::new(); compound
957 .insert("id", NbtTag::String("minecraft:oxidized_cut_copper_slab".into()));
958 let mut properties = NbtCompound::new(); properties.insert("type", "bottom");
959 properties.insert("waterlogged", "false"); compound.insert("properties",
960 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
961 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
962 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
963 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
964 compound.insert("blocks", NbtTag::String("minecraft:waxed_cut_copper_stairs"
965 .into())); NbtTag::Compound(compound) }); compound.insert("then", { let mut
966 compound = NbtCompound::new(); compound.insert("type",
967 "minecraft:copy_properties"); compound.insert("source", { let mut compound =
968 NbtCompound::new(); compound.insert("id",
969 NbtTag::String("minecraft:cut_copper_stairs".into())); let mut properties =
970 NbtCompound::new(); properties.insert("facing", "north"); properties
971 .insert("half", "bottom"); properties.insert("shape", "straight"); properties
972 .insert("waterlogged", "false"); compound.insert("properties",
973 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
974 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
975 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
976 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
977 compound.insert("blocks",
978 NbtTag::String("minecraft:waxed_exposed_cut_copper_stairs".into()));
979 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
980 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
981 compound.insert("source", { let mut compound = NbtCompound::new(); compound
982 .insert("id", NbtTag::String("minecraft:exposed_cut_copper_stairs".into()));
983 let mut properties = NbtCompound::new(); properties.insert("facing",
984 "north"); properties.insert("half", "bottom"); properties.insert("shape",
985 "straight"); properties.insert("waterlogged", "false"); compound
986 .insert("properties", NbtTag::Compound(properties));
987 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
988 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
989 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
990 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
991 NbtTag::String("minecraft:waxed_weathered_cut_copper_stairs".into()));
992 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
993 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
994 compound.insert("source", { let mut compound = NbtCompound::new(); compound
995 .insert("id", NbtTag::String("minecraft:weathered_cut_copper_stairs"
996 .into())); let mut properties = NbtCompound::new(); properties
997 .insert("facing", "north"); properties.insert("half", "bottom"); properties
998 .insert("shape", "straight"); properties.insert("waterlogged", "false");
999 compound.insert("properties", NbtTag::Compound(properties));
1000 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1001 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1002 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1003 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1004 NbtTag::String("minecraft:waxed_oxidized_cut_copper_stairs".into()));
1005 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1006 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1007 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1008 .insert("id", NbtTag::String("minecraft:oxidized_cut_copper_stairs".into()));
1009 let mut properties = NbtCompound::new(); properties.insert("facing",
1010 "north"); properties.insert("half", "bottom"); properties.insert("shape",
1011 "straight"); properties.insert("waterlogged", "false"); compound
1012 .insert("properties", NbtTag::Compound(properties));
1013 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1014 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1015 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1016 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1017 NbtTag::String("minecraft:waxed_chiseled_copper".into()));
1018 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1019 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1020 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1021 .insert("id", NbtTag::String("minecraft:chiseled_copper".into()));
1022 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1023 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1024 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1025 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1026 NbtTag::String("minecraft:waxed_exposed_chiseled_copper".into()));
1027 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1028 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1029 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1030 .insert("id", NbtTag::String("minecraft:exposed_chiseled_copper".into()));
1031 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1032 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1033 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1034 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1035 NbtTag::String("minecraft:waxed_weathered_chiseled_copper".into()));
1036 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1037 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1038 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1039 .insert("id", NbtTag::String("minecraft:weathered_chiseled_copper".into()));
1040 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1041 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1042 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1043 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1044 NbtTag::String("minecraft:waxed_oxidized_chiseled_copper".into()));
1045 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1046 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1047 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1048 .insert("id", NbtTag::String("minecraft:oxidized_chiseled_copper".into()));
1049 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1050 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1051 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1052 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1053 NbtTag::String("minecraft:waxed_copper_trapdoor".into()));
1054 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1055 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1056 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1057 .insert("id", NbtTag::String("minecraft:copper_trapdoor".into())); let mut
1058 properties = NbtCompound::new(); properties.insert("facing", "north");
1059 properties.insert("half", "bottom"); properties.insert("open", "false");
1060 properties.insert("powered", "false"); properties.insert("waterlogged",
1061 "false"); compound.insert("properties", NbtTag::Compound(properties));
1062 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1063 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1064 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1065 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1066 NbtTag::String("minecraft:waxed_exposed_copper_trapdoor".into()));
1067 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1068 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1069 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1070 .insert("id", NbtTag::String("minecraft:exposed_copper_trapdoor".into()));
1071 let mut properties = NbtCompound::new(); properties.insert("facing",
1072 "north"); properties.insert("half", "bottom"); properties.insert("open",
1073 "false"); properties.insert("powered", "false"); properties
1074 .insert("waterlogged", "false"); compound.insert("properties",
1075 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1076 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1077 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1078 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1079 compound.insert("blocks",
1080 NbtTag::String("minecraft:waxed_weathered_copper_trapdoor".into()));
1081 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1082 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1083 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1084 .insert("id", NbtTag::String("minecraft:weathered_copper_trapdoor".into()));
1085 let mut properties = NbtCompound::new(); properties.insert("facing",
1086 "north"); properties.insert("half", "bottom"); properties.insert("open",
1087 "false"); properties.insert("powered", "false"); properties
1088 .insert("waterlogged", "false"); compound.insert("properties",
1089 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1090 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1091 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1092 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1093 compound.insert("blocks",
1094 NbtTag::String("minecraft:waxed_oxidized_copper_trapdoor".into()));
1095 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1096 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1097 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1098 .insert("id", NbtTag::String("minecraft:oxidized_copper_trapdoor".into()));
1099 let mut properties = NbtCompound::new(); properties.insert("facing",
1100 "north"); properties.insert("half", "bottom"); properties.insert("open",
1101 "false"); properties.insert("powered", "false"); properties
1102 .insert("waterlogged", "false"); compound.insert("properties",
1103 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1104 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1105 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1106 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1107 compound.insert("blocks", NbtTag::String("minecraft:waxed_copper_bars"
1108 .into())); NbtTag::Compound(compound) }); compound.insert("then", { let mut
1109 compound = NbtCompound::new(); compound.insert("type",
1110 "minecraft:copy_properties"); compound.insert("source", { let mut compound =
1111 NbtCompound::new(); compound.insert("id",
1112 NbtTag::String("minecraft:copper_bars".into())); let mut properties =
1113 NbtCompound::new(); properties.insert("east", "false"); properties
1114 .insert("north", "false"); properties.insert("south", "false"); properties
1115 .insert("waterlogged", "false"); properties.insert("west", "false"); compound
1116 .insert("properties", NbtTag::Compound(properties));
1117 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1118 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1119 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1120 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1121 NbtTag::String("minecraft:waxed_exposed_copper_bars".into()));
1122 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1123 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1124 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1125 .insert("id", NbtTag::String("minecraft:exposed_copper_bars".into())); let
1126 mut properties = NbtCompound::new(); properties.insert("east", "false");
1127 properties.insert("north", "false"); properties.insert("south", "false");
1128 properties.insert("waterlogged", "false"); properties.insert("west",
1129 "false"); compound.insert("properties", NbtTag::Compound(properties));
1130 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1131 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1132 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1133 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1134 NbtTag::String("minecraft:waxed_weathered_copper_bars".into()));
1135 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1136 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1137 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1138 .insert("id", NbtTag::String("minecraft:weathered_copper_bars".into())); let
1139 mut properties = NbtCompound::new(); properties.insert("east", "false");
1140 properties.insert("north", "false"); properties.insert("south", "false");
1141 properties.insert("waterlogged", "false"); properties.insert("west",
1142 "false"); compound.insert("properties", NbtTag::Compound(properties));
1143 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1144 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1145 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1146 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1147 NbtTag::String("minecraft:waxed_oxidized_copper_bars".into()));
1148 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1149 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1150 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1151 .insert("id", NbtTag::String("minecraft:oxidized_copper_bars".into())); let
1152 mut properties = NbtCompound::new(); properties.insert("east", "false");
1153 properties.insert("north", "false"); properties.insert("south", "false");
1154 properties.insert("waterlogged", "false"); properties.insert("west",
1155 "false"); compound.insert("properties", NbtTag::Compound(properties));
1156 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1157 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1158 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1159 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1160 NbtTag::String("minecraft:waxed_copper_grate".into()));
1161 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1162 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1163 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1164 .insert("id", NbtTag::String("minecraft:copper_grate".into())); let mut
1165 properties = NbtCompound::new(); properties.insert("waterlogged", "false");
1166 compound.insert("properties", NbtTag::Compound(properties));
1167 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1168 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1169 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1170 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1171 NbtTag::String("minecraft:waxed_exposed_copper_grate".into()));
1172 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1173 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1174 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1175 .insert("id", NbtTag::String("minecraft:exposed_copper_grate".into())); let
1176 mut properties = NbtCompound::new(); properties.insert("waterlogged",
1177 "false"); compound.insert("properties", NbtTag::Compound(properties));
1178 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1179 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1180 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1181 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1182 NbtTag::String("minecraft:waxed_weathered_copper_grate".into()));
1183 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1184 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1185 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1186 .insert("id", NbtTag::String("minecraft:weathered_copper_grate".into())); let
1187 mut properties = NbtCompound::new(); properties.insert("waterlogged",
1188 "false"); compound.insert("properties", NbtTag::Compound(properties));
1189 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1190 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1191 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1192 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1193 NbtTag::String("minecraft:waxed_oxidized_copper_grate".into()));
1194 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1195 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1196 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1197 .insert("id", NbtTag::String("minecraft:oxidized_copper_grate".into())); let
1198 mut properties = NbtCompound::new(); properties.insert("waterlogged",
1199 "false"); compound.insert("properties", NbtTag::Compound(properties));
1200 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1201 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1202 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1203 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1204 NbtTag::String("minecraft:waxed_copper_bulb".into()));
1205 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1206 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1207 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1208 .insert("id", NbtTag::String("minecraft:copper_bulb".into())); let mut
1209 properties = NbtCompound::new(); properties.insert("lit", "false");
1210 properties.insert("powered", "false"); compound.insert("properties",
1211 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1212 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1213 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1214 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1215 compound.insert("blocks",
1216 NbtTag::String("minecraft:waxed_exposed_copper_bulb".into()));
1217 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1218 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1219 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1220 .insert("id", NbtTag::String("minecraft:exposed_copper_bulb".into())); let
1221 mut properties = NbtCompound::new(); properties.insert("lit", "false");
1222 properties.insert("powered", "false"); compound.insert("properties",
1223 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1224 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1225 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1226 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1227 compound.insert("blocks",
1228 NbtTag::String("minecraft:waxed_weathered_copper_bulb".into()));
1229 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1230 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1231 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1232 .insert("id", NbtTag::String("minecraft:weathered_copper_bulb".into())); let
1233 mut properties = NbtCompound::new(); properties.insert("lit", "false");
1234 properties.insert("powered", "false"); compound.insert("properties",
1235 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1236 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1237 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1238 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1239 compound.insert("blocks",
1240 NbtTag::String("minecraft:waxed_oxidized_copper_bulb".into()));
1241 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1242 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1243 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1244 .insert("id", NbtTag::String("minecraft:oxidized_copper_bulb".into())); let
1245 mut properties = NbtCompound::new(); properties.insert("lit", "false");
1246 properties.insert("powered", "false"); compound.insert("properties",
1247 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1248 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1249 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1250 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1251 compound.insert("blocks",
1252 NbtTag::String("minecraft:waxed_copper_golem_statue".into()));
1253 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1254 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1255 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1256 .insert("id", NbtTag::String("minecraft:copper_golem_statue".into())); let
1257 mut properties = NbtCompound::new(); properties.insert("copper_golem_pose",
1258 "standing"); properties.insert("facing", "north"); properties
1259 .insert("waterlogged", "false"); compound.insert("properties",
1260 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1261 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1262 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1263 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1264 compound.insert("blocks",
1265 NbtTag::String("minecraft:waxed_exposed_copper_golem_statue".into()));
1266 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1267 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1268 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1269 .insert("id", NbtTag::String("minecraft:exposed_copper_golem_statue"
1270 .into())); let mut properties = NbtCompound::new(); properties
1271 .insert("copper_golem_pose", "standing"); properties.insert("facing",
1272 "north"); properties.insert("waterlogged", "false"); compound
1273 .insert("properties", NbtTag::Compound(properties));
1274 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1275 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1276 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1277 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1278 NbtTag::String("minecraft:waxed_weathered_copper_golem_statue".into()));
1279 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1280 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1281 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1282 .insert("id", NbtTag::String("minecraft:weathered_copper_golem_statue"
1283 .into())); let mut properties = NbtCompound::new(); properties
1284 .insert("copper_golem_pose", "standing"); properties.insert("facing",
1285 "north"); properties.insert("waterlogged", "false"); compound
1286 .insert("properties", NbtTag::Compound(properties));
1287 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1288 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1289 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1290 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1291 NbtTag::String("minecraft:waxed_oxidized_copper_golem_statue".into()));
1292 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1293 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1294 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1295 .insert("id", NbtTag::String("minecraft:oxidized_copper_golem_statue"
1296 .into())); let mut properties = NbtCompound::new(); properties
1297 .insert("copper_golem_pose", "standing"); properties.insert("facing",
1298 "north"); properties.insert("waterlogged", "false"); compound
1299 .insert("properties", NbtTag::Compound(properties));
1300 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1301 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1302 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1303 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1304 NbtTag::String("minecraft:waxed_lightning_rod".into()));
1305 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1306 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1307 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1308 .insert("id", NbtTag::String("minecraft:lightning_rod".into())); let mut
1309 properties = NbtCompound::new(); properties.insert("facing", "up");
1310 properties.insert("powered", "false"); properties.insert("waterlogged",
1311 "false"); compound.insert("properties", NbtTag::Compound(properties));
1312 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1313 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1314 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1315 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1316 NbtTag::String("minecraft:waxed_exposed_lightning_rod".into()));
1317 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1318 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1319 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1320 .insert("id", NbtTag::String("minecraft:exposed_lightning_rod".into())); let
1321 mut properties = NbtCompound::new(); properties.insert("facing", "up");
1322 properties.insert("powered", "false"); properties.insert("waterlogged",
1323 "false"); compound.insert("properties", NbtTag::Compound(properties));
1324 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1325 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1326 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1327 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1328 NbtTag::String("minecraft:waxed_weathered_lightning_rod".into()));
1329 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1330 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1331 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1332 .insert("id", NbtTag::String("minecraft:weathered_lightning_rod".into()));
1333 let mut properties = NbtCompound::new(); properties.insert("facing", "up");
1334 properties.insert("powered", "false"); properties.insert("waterlogged",
1335 "false"); compound.insert("properties", NbtTag::Compound(properties));
1336 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1337 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1338 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1339 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1340 NbtTag::String("minecraft:waxed_oxidized_lightning_rod".into()));
1341 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1342 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1343 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1344 .insert("id", NbtTag::String("minecraft:oxidized_lightning_rod".into())); let
1345 mut properties = NbtCompound::new(); properties.insert("facing", "up");
1346 properties.insert("powered", "false"); properties.insert("waterlogged",
1347 "false"); compound.insert("properties", NbtTag::Compound(properties));
1348 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1349 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1350 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1351 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1352 NbtTag::String("minecraft:waxed_copper_lantern".into()));
1353 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1354 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1355 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1356 .insert("id", NbtTag::String("minecraft:copper_lantern".into())); let mut
1357 properties = NbtCompound::new(); properties.insert("hanging", "false");
1358 properties.insert("waterlogged", "false"); compound.insert("properties",
1359 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1360 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1361 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1362 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1363 compound.insert("blocks",
1364 NbtTag::String("minecraft:waxed_exposed_copper_lantern".into()));
1365 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1366 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1367 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1368 .insert("id", NbtTag::String("minecraft:exposed_copper_lantern".into())); let
1369 mut properties = NbtCompound::new(); properties.insert("hanging", "false");
1370 properties.insert("waterlogged", "false"); compound.insert("properties",
1371 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1372 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1373 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1374 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1375 compound.insert("blocks",
1376 NbtTag::String("minecraft:waxed_weathered_copper_lantern".into()));
1377 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1378 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1379 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1380 .insert("id", NbtTag::String("minecraft:weathered_copper_lantern".into()));
1381 let mut properties = NbtCompound::new(); properties.insert("hanging",
1382 "false"); properties.insert("waterlogged", "false"); compound
1383 .insert("properties", NbtTag::Compound(properties));
1384 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1385 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1386 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1387 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1388 NbtTag::String("minecraft:waxed_oxidized_copper_lantern".into()));
1389 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1390 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1391 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1392 .insert("id", NbtTag::String("minecraft:oxidized_copper_lantern".into()));
1393 let mut properties = NbtCompound::new(); properties.insert("hanging",
1394 "false"); properties.insert("waterlogged", "false"); compound
1395 .insert("properties", NbtTag::Compound(properties));
1396 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1397 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1398 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1399 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1400 NbtTag::String("minecraft:waxed_copper_chain".into()));
1401 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1402 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1403 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1404 .insert("id", NbtTag::String("minecraft:copper_chain".into())); let mut
1405 properties = NbtCompound::new(); properties.insert("axis", "y"); properties
1406 .insert("waterlogged", "false"); compound.insert("properties",
1407 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1408 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1409 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1410 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1411 compound.insert("blocks",
1412 NbtTag::String("minecraft:waxed_exposed_copper_chain".into()));
1413 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1414 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1415 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1416 .insert("id", NbtTag::String("minecraft:exposed_copper_chain".into())); let
1417 mut properties = NbtCompound::new(); properties.insert("axis", "y");
1418 properties.insert("waterlogged", "false"); compound.insert("properties",
1419 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1420 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1421 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1422 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1423 compound.insert("blocks",
1424 NbtTag::String("minecraft:waxed_weathered_copper_chain".into()));
1425 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1426 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1427 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1428 .insert("id", NbtTag::String("minecraft:weathered_copper_chain".into())); let
1429 mut properties = NbtCompound::new(); properties.insert("axis", "y");
1430 properties.insert("waterlogged", "false"); compound.insert("properties",
1431 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1432 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
1433 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
1434 = NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
1435 compound.insert("blocks",
1436 NbtTag::String("minecraft:waxed_oxidized_copper_chain".into()));
1437 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1438 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1439 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1440 .insert("id", NbtTag::String("minecraft:oxidized_copper_chain".into())); let
1441 mut properties = NbtCompound::new(); properties.insert("axis", "y");
1442 properties.insert("waterlogged", "false"); compound.insert("properties",
1443 NbtTag::Compound(properties)); NbtTag::Compound(compound) });
1444 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }])));
1445 NbtTag::Compound(compound) }); compound.insert("item_damage_per_use", 1i32);
1446 compound.insert("particle", "wax_off"); compound.insert("sound",
1447 "minecraft:item.axe.wax_off"); compound }, { let mut compound =
1448 NbtCompound::new(); compound.insert("block_state_provider", { let mut
1449 compound = NbtCompound::new(); compound.insert("type",
1450 "minecraft:rule_based"); compound.insert("rules",
1451 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
1452 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1453 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1454 NbtTag::String("minecraft:waxed_copper_chest".into()));
1455 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1456 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1457 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1458 .insert("id", NbtTag::String("minecraft:copper_chest".into())); let mut
1459 properties = NbtCompound::new(); properties.insert("facing", "north");
1460 properties.insert("type", "single"); properties.insert("waterlogged",
1461 "false"); compound.insert("properties", NbtTag::Compound(properties));
1462 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1463 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1464 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1465 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1466 NbtTag::String("minecraft:waxed_exposed_copper_chest".into()));
1467 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1468 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1469 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1470 .insert("id", NbtTag::String("minecraft:exposed_copper_chest".into())); let
1471 mut properties = NbtCompound::new(); properties.insert("facing", "north");
1472 properties.insert("type", "single"); properties.insert("waterlogged",
1473 "false"); compound.insert("properties", NbtTag::Compound(properties));
1474 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1475 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1476 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1477 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1478 NbtTag::String("minecraft:waxed_weathered_copper_chest".into()));
1479 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1480 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1481 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1482 .insert("id", NbtTag::String("minecraft:weathered_copper_chest".into())); let
1483 mut properties = NbtCompound::new(); properties.insert("facing", "north");
1484 properties.insert("type", "single"); properties.insert("waterlogged",
1485 "false"); compound.insert("properties", NbtTag::Compound(properties));
1486 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1487 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1488 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1489 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1490 NbtTag::String("minecraft:waxed_oxidized_copper_chest".into()));
1491 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1492 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1493 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1494 .insert("id", NbtTag::String("minecraft:oxidized_copper_chest".into())); let
1495 mut properties = NbtCompound::new(); properties.insert("facing", "north");
1496 properties.insert("type", "single"); properties.insert("waterlogged",
1497 "false"); compound.insert("properties", NbtTag::Compound(properties));
1498 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1499 NbtTag::Compound(compound) }]))); NbtTag::Compound(compound) }); compound
1500 .insert("item_damage_per_use", 1i32); compound.insert("particle", "wax_off");
1501 compound.insert("sound", "minecraft:item.axe.wax_off"); compound
1502 .insert("transform_type", "copper_chest"); compound
1503 .insert("update_from_neighbors", 0i8); compound }, { let mut compound =
1504 NbtCompound::new(); compound.insert("block_state_provider", { let mut
1505 compound = NbtCompound::new(); compound.insert("type",
1506 "minecraft:rule_based"); compound.insert("rules",
1507 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
1508 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1509 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1510 NbtTag::String("minecraft:waxed_copper_door".into()));
1511 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1512 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1513 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1514 .insert("id", NbtTag::String("minecraft:copper_door".into())); let mut
1515 properties = NbtCompound::new(); properties.insert("facing", "north");
1516 properties.insert("half", "lower"); properties.insert("hinge", "left");
1517 properties.insert("open", "false"); properties.insert("powered", "false");
1518 compound.insert("properties", NbtTag::Compound(properties));
1519 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1520 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1521 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1522 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1523 NbtTag::String("minecraft:waxed_exposed_copper_door".into()));
1524 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1525 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1526 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1527 .insert("id", NbtTag::String("minecraft:exposed_copper_door".into())); let
1528 mut properties = NbtCompound::new(); properties.insert("facing", "north");
1529 properties.insert("half", "lower"); properties.insert("hinge", "left");
1530 properties.insert("open", "false"); properties.insert("powered", "false");
1531 compound.insert("properties", NbtTag::Compound(properties));
1532 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1533 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1534 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1535 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1536 NbtTag::String("minecraft:waxed_weathered_copper_door".into()));
1537 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1538 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1539 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1540 .insert("id", NbtTag::String("minecraft:weathered_copper_door".into())); let
1541 mut properties = NbtCompound::new(); properties.insert("facing", "north");
1542 properties.insert("half", "lower"); properties.insert("hinge", "left");
1543 properties.insert("open", "false"); properties.insert("powered", "false");
1544 compound.insert("properties", NbtTag::Compound(properties));
1545 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1546 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
1547 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
1548 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
1549 NbtTag::String("minecraft:waxed_oxidized_copper_door".into()));
1550 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
1551 NbtCompound::new(); compound.insert("type", "minecraft:copy_properties");
1552 compound.insert("source", { let mut compound = NbtCompound::new(); compound
1553 .insert("id", NbtTag::String("minecraft:oxidized_copper_door".into())); let
1554 mut properties = NbtCompound::new(); properties.insert("facing", "north");
1555 properties.insert("half", "lower"); properties.insert("hinge", "left");
1556 properties.insert("open", "false"); properties.insert("powered", "false");
1557 compound.insert("properties", NbtTag::Compound(properties));
1558 NbtTag::Compound(compound) }); NbtTag::Compound(compound) });
1559 NbtTag::Compound(compound) }]))); NbtTag::Compound(compound) }); compound
1560 .insert("item_damage_per_use", 1i32); compound.insert("particle", "wax_off");
1561 compound.insert("sound", "minecraft:item.axe.wax_off"); compound
1562 .insert("update_from_neighbors", 0i8); compound }
1563 ],
1564 )
1565}
1566pub static AXE: LazyLock<BlockTransformer> = LazyLock::new(|| BlockTransformer {
1567 key: Identifier::vanilla_static("axe"),
1568 transforms: vec![
1569 crate ::block_transformer::BlockTransformData { block_state_provider :
1570 BlockStateProviderKind::RuleBased { fallback : None, rules :
1571 vec![RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
1572 blocks : BlockRefList(vec![& vanilla_blocks::OAK_WOOD]), offset :
1573 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1574 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1575 : & vanilla_blocks::STRIPPED_OAK_WOOD, properties : & [("axis", "y")], } }) }, },
1576 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1577 BlockRefList(vec![& vanilla_blocks::OAK_LOG]), offset : IVec3::new(0i32, 0i32,
1578 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1579 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1580 vanilla_blocks::STRIPPED_OAK_LOG, properties : & [("axis", "y")], } }) }, },
1581 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1582 BlockRefList(vec![& vanilla_blocks::DARK_OAK_WOOD]), offset : IVec3::new(0i32,
1583 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1584 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1585 vanilla_blocks::STRIPPED_DARK_OAK_WOOD, properties : & [("axis", "y")], } }) },
1586 }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks
1587 : BlockRefList(vec![& vanilla_blocks::DARK_OAK_LOG]), offset : IVec3::new(0i32,
1588 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1589 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1590 vanilla_blocks::STRIPPED_DARK_OAK_LOG, properties : & [("axis", "y")], } }) }, },
1591 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1592 BlockRefList(vec![& vanilla_blocks::PALE_OAK_WOOD]), offset : IVec3::new(0i32,
1593 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1594 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1595 vanilla_blocks::STRIPPED_PALE_OAK_WOOD, properties : & [("axis", "y")], } }) },
1596 }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks
1597 : BlockRefList(vec![& vanilla_blocks::PALE_OAK_LOG]), offset : IVec3::new(0i32,
1598 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1599 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1600 vanilla_blocks::STRIPPED_PALE_OAK_LOG, properties : & [("axis", "y")], } }) }, },
1601 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1602 BlockRefList(vec![& vanilla_blocks::POPLAR_WOOD]), offset : IVec3::new(0i32,
1603 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1604 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1605 vanilla_blocks::STRIPPED_POPLAR_WOOD, properties : & [("axis", "y")], } }) }, },
1606 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1607 BlockRefList(vec![& vanilla_blocks::POPLAR_LOG]), offset : IVec3::new(0i32, 0i32,
1608 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1609 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1610 vanilla_blocks::STRIPPED_POPLAR_LOG, properties : & [("axis", "y")], } }) }, },
1611 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1612 BlockRefList(vec![& vanilla_blocks::ACACIA_WOOD]), offset : IVec3::new(0i32,
1613 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1614 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1615 vanilla_blocks::STRIPPED_ACACIA_WOOD, properties : & [("axis", "y")], } }) }, },
1616 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1617 BlockRefList(vec![& vanilla_blocks::ACACIA_LOG]), offset : IVec3::new(0i32, 0i32,
1618 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1619 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1620 vanilla_blocks::STRIPPED_ACACIA_LOG, properties : & [("axis", "y")], } }) }, },
1621 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1622 BlockRefList(vec![& vanilla_blocks::CHERRY_WOOD]), offset : IVec3::new(0i32,
1623 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1624 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1625 vanilla_blocks::STRIPPED_CHERRY_WOOD, properties : & [("axis", "y")], } }) }, },
1626 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1627 BlockRefList(vec![& vanilla_blocks::CHERRY_LOG]), offset : IVec3::new(0i32, 0i32,
1628 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1629 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1630 vanilla_blocks::STRIPPED_CHERRY_LOG, properties : & [("axis", "y")], } }) }, },
1631 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1632 BlockRefList(vec![& vanilla_blocks::BIRCH_WOOD]), offset : IVec3::new(0i32, 0i32,
1633 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1634 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1635 vanilla_blocks::STRIPPED_BIRCH_WOOD, properties : & [("axis", "y")], } }) }, },
1636 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1637 BlockRefList(vec![& vanilla_blocks::BIRCH_LOG]), offset : IVec3::new(0i32, 0i32,
1638 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1639 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1640 vanilla_blocks::STRIPPED_BIRCH_LOG, properties : & [("axis", "y")], } }) }, },
1641 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1642 BlockRefList(vec![& vanilla_blocks::JUNGLE_WOOD]), offset : IVec3::new(0i32,
1643 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1644 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1645 vanilla_blocks::STRIPPED_JUNGLE_WOOD, properties : & [("axis", "y")], } }) }, },
1646 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1647 BlockRefList(vec![& vanilla_blocks::JUNGLE_LOG]), offset : IVec3::new(0i32, 0i32,
1648 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1649 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1650 vanilla_blocks::STRIPPED_JUNGLE_LOG, properties : & [("axis", "y")], } }) }, },
1651 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1652 BlockRefList(vec![& vanilla_blocks::SPRUCE_WOOD]), offset : IVec3::new(0i32,
1653 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1654 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1655 vanilla_blocks::STRIPPED_SPRUCE_WOOD, properties : & [("axis", "y")], } }) }, },
1656 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1657 BlockRefList(vec![& vanilla_blocks::SPRUCE_LOG]), offset : IVec3::new(0i32, 0i32,
1658 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1659 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1660 vanilla_blocks::STRIPPED_SPRUCE_LOG, properties : & [("axis", "y")], } }) }, },
1661 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1662 BlockRefList(vec![& vanilla_blocks::WARPED_STEM]), offset : IVec3::new(0i32,
1663 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1664 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1665 vanilla_blocks::STRIPPED_WARPED_STEM, properties : & [("axis", "y")], } }) }, },
1666 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1667 BlockRefList(vec![& vanilla_blocks::WARPED_HYPHAE]), offset : IVec3::new(0i32,
1668 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1669 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1670 vanilla_blocks::STRIPPED_WARPED_HYPHAE, properties : & [("axis", "y")], } }) },
1671 }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks
1672 : BlockRefList(vec![& vanilla_blocks::CRIMSON_STEM]), offset : IVec3::new(0i32,
1673 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1674 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1675 vanilla_blocks::STRIPPED_CRIMSON_STEM, properties : & [("axis", "y")], } }) }, },
1676 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1677 BlockRefList(vec![& vanilla_blocks::CRIMSON_HYPHAE]), offset : IVec3::new(0i32,
1678 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1679 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1680 vanilla_blocks::STRIPPED_CRIMSON_HYPHAE, properties : & [("axis", "y")], } }) },
1681 }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks
1682 : BlockRefList(vec![& vanilla_blocks::MANGROVE_WOOD]), offset : IVec3::new(0i32,
1683 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1684 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1685 vanilla_blocks::STRIPPED_MANGROVE_WOOD, properties : & [("axis", "y")], } }) },
1686 }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks
1687 : BlockRefList(vec![& vanilla_blocks::MANGROVE_LOG]), offset : IVec3::new(0i32,
1688 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1689 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1690 vanilla_blocks::STRIPPED_MANGROVE_LOG, properties : & [("axis", "y")], } }) }, },
1691 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1692 BlockRefList(vec![& vanilla_blocks::BAMBOO_BLOCK]), offset : IVec3::new(0i32,
1693 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1694 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1695 vanilla_blocks::STRIPPED_BAMBOO_BLOCK, properties : & [("axis", "y")], } }) },
1696 }], }, sound : crate ::sound_event::SoundEventHolder::Registry(& crate
1697 ::sound_events::ITEM_AXE_STRIP), particle : crate
1698 ::block_transformer::TransformParticle::None, disallowed_faces : vec![], loot :
1699 None, drop_strategy : crate ::block_transformer::DropStrategy::FromMiddle,
1700 update_from_neighbors : true, transform_type : crate
1701 ::block_transformer::TransformType::SingleBlock, consume_on_use : true,
1702 item_damage_per_use : 1i32, }, crate ::block_transformer::BlockTransformData {
1703 block_state_provider : BlockStateProviderKind::RuleBased { fallback : None, rules
1704 : vec![RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
1705 blocks : BlockRefList(vec![& vanilla_blocks::EXPOSED_COPPER]), offset :
1706 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1707 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1708 : & vanilla_blocks::COPPER_BLOCK, properties : & [], } }) }, },
1709 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1710 BlockRefList(vec![& vanilla_blocks::WEATHERED_COPPER]), offset : IVec3::new(0i32,
1711 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1712 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1713 vanilla_blocks::EXPOSED_COPPER, properties : & [], } }) }, },
1714 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1715 BlockRefList(vec![& vanilla_blocks::OXIDIZED_COPPER]), offset : IVec3::new(0i32,
1716 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1717 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1718 vanilla_blocks::WEATHERED_COPPER, properties : & [], } }) }, },
1719 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1720 BlockRefList(vec![& vanilla_blocks::EXPOSED_CUT_COPPER]), offset :
1721 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1722 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1723 : & vanilla_blocks::CUT_COPPER, properties : & [], } }) }, },
1724 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1725 BlockRefList(vec![& vanilla_blocks::WEATHERED_CUT_COPPER]), offset :
1726 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1727 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1728 : & vanilla_blocks::EXPOSED_CUT_COPPER, properties : & [], } }) }, },
1729 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1730 BlockRefList(vec![& vanilla_blocks::OXIDIZED_CUT_COPPER]), offset :
1731 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1732 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1733 : & vanilla_blocks::WEATHERED_CUT_COPPER, properties : & [], } }) }, },
1734 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1735 BlockRefList(vec![& vanilla_blocks::EXPOSED_CHISELED_COPPER]), offset :
1736 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1737 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1738 : & vanilla_blocks::CHISELED_COPPER, properties : & [], } }) }, },
1739 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1740 BlockRefList(vec![& vanilla_blocks::WEATHERED_CHISELED_COPPER]), offset :
1741 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1742 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1743 : & vanilla_blocks::EXPOSED_CHISELED_COPPER, properties : & [], } }) }, },
1744 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1745 BlockRefList(vec![& vanilla_blocks::OXIDIZED_CHISELED_COPPER]), offset :
1746 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1747 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1748 : & vanilla_blocks::WEATHERED_CHISELED_COPPER, properties : & [], } }) }, },
1749 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1750 BlockRefList(vec![& vanilla_blocks::EXPOSED_CUT_COPPER_SLAB]), offset :
1751 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1752 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1753 : & vanilla_blocks::CUT_COPPER_SLAB, properties : & [("type", "bottom"),
1754 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1755 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1756 vanilla_blocks::WEATHERED_CUT_COPPER_SLAB]), offset : IVec3::new(0i32, 0i32,
1757 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1758 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1759 vanilla_blocks::EXPOSED_CUT_COPPER_SLAB, properties : & [("type", "bottom"),
1760 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1761 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1762 vanilla_blocks::OXIDIZED_CUT_COPPER_SLAB]), offset : IVec3::new(0i32, 0i32, 0i32)
1763 }, then : BlockStateProviderKind::CopyProperties { source :
1764 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1765 vanilla_blocks::WEATHERED_CUT_COPPER_SLAB, properties : & [("type", "bottom"),
1766 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1767 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1768 vanilla_blocks::EXPOSED_CUT_COPPER_STAIRS]), offset : IVec3::new(0i32, 0i32,
1769 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1770 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1771 vanilla_blocks::CUT_COPPER_STAIRS, properties : & [("facing", "north"), ("half",
1772 "bottom"), ("shape", "straight"), ("waterlogged", "false")], } }) }, },
1773 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1774 BlockRefList(vec![& vanilla_blocks::WEATHERED_CUT_COPPER_STAIRS]), offset :
1775 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1776 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1777 : & vanilla_blocks::EXPOSED_CUT_COPPER_STAIRS, properties : & [("facing",
1778 "north"), ("half", "bottom"), ("shape", "straight"), ("waterlogged", "false")], }
1779 }) }, }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
1780 blocks : BlockRefList(vec![& vanilla_blocks::OXIDIZED_CUT_COPPER_STAIRS]), offset
1781 : IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1782 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1783 : & vanilla_blocks::WEATHERED_CUT_COPPER_STAIRS, properties : & [("facing",
1784 "north"), ("half", "bottom"), ("shape", "straight"), ("waterlogged", "false")], }
1785 }) }, }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
1786 blocks : BlockRefList(vec![& vanilla_blocks::EXPOSED_COPPER_TRAPDOOR]), offset :
1787 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1788 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1789 : & vanilla_blocks::COPPER_TRAPDOOR, properties : & [("facing", "north"),
1790 ("half", "bottom"), ("open", "false"), ("powered", "false"), ("waterlogged",
1791 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1792 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1793 vanilla_blocks::WEATHERED_COPPER_TRAPDOOR]), offset : IVec3::new(0i32, 0i32,
1794 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1795 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1796 vanilla_blocks::EXPOSED_COPPER_TRAPDOOR, properties : & [("facing", "north"),
1797 ("half", "bottom"), ("open", "false"), ("powered", "false"), ("waterlogged",
1798 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1799 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1800 vanilla_blocks::OXIDIZED_COPPER_TRAPDOOR]), offset : IVec3::new(0i32, 0i32, 0i32)
1801 }, then : BlockStateProviderKind::CopyProperties { source :
1802 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1803 vanilla_blocks::WEATHERED_COPPER_TRAPDOOR, properties : & [("facing", "north"),
1804 ("half", "bottom"), ("open", "false"), ("powered", "false"), ("waterlogged",
1805 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1806 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1807 vanilla_blocks::EXPOSED_COPPER_BARS]), offset : IVec3::new(0i32, 0i32, 0i32) },
1808 then : BlockStateProviderKind::CopyProperties { source :
1809 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1810 vanilla_blocks::COPPER_BARS, properties : & [("east", "false"), ("north",
1811 "false"), ("south", "false"), ("waterlogged", "false"), ("west", "false")], } })
1812 }, }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
1813 blocks : BlockRefList(vec![& vanilla_blocks::WEATHERED_COPPER_BARS]), offset :
1814 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1815 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1816 : & vanilla_blocks::EXPOSED_COPPER_BARS, properties : & [("east", "false"),
1817 ("north", "false"), ("south", "false"), ("waterlogged", "false"), ("west",
1818 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1819 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1820 vanilla_blocks::OXIDIZED_COPPER_BARS]), offset : IVec3::new(0i32, 0i32, 0i32) },
1821 then : BlockStateProviderKind::CopyProperties { source :
1822 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1823 vanilla_blocks::WEATHERED_COPPER_BARS, properties : & [("east", "false"),
1824 ("north", "false"), ("south", "false"), ("waterlogged", "false"), ("west",
1825 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1826 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1827 vanilla_blocks::EXPOSED_COPPER_GRATE]), offset : IVec3::new(0i32, 0i32, 0i32) },
1828 then : BlockStateProviderKind::CopyProperties { source :
1829 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1830 vanilla_blocks::COPPER_GRATE, properties : & [("waterlogged", "false")], } }) },
1831 }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks
1832 : BlockRefList(vec![& vanilla_blocks::WEATHERED_COPPER_GRATE]), offset :
1833 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1834 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1835 : & vanilla_blocks::EXPOSED_COPPER_GRATE, properties : & [("waterlogged",
1836 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1837 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1838 vanilla_blocks::OXIDIZED_COPPER_GRATE]), offset : IVec3::new(0i32, 0i32, 0i32) },
1839 then : BlockStateProviderKind::CopyProperties { source :
1840 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1841 vanilla_blocks::WEATHERED_COPPER_GRATE, properties : & [("waterlogged",
1842 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1843 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1844 vanilla_blocks::EXPOSED_COPPER_BULB]), offset : IVec3::new(0i32, 0i32, 0i32) },
1845 then : BlockStateProviderKind::CopyProperties { source :
1846 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1847 vanilla_blocks::COPPER_BULB, properties : & [("lit", "false"), ("powered",
1848 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1849 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1850 vanilla_blocks::WEATHERED_COPPER_BULB]), offset : IVec3::new(0i32, 0i32, 0i32) },
1851 then : BlockStateProviderKind::CopyProperties { source :
1852 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1853 vanilla_blocks::EXPOSED_COPPER_BULB, properties : & [("lit", "false"),
1854 ("powered", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1855 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1856 vanilla_blocks::OXIDIZED_COPPER_BULB]), offset : IVec3::new(0i32, 0i32, 0i32) },
1857 then : BlockStateProviderKind::CopyProperties { source :
1858 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1859 vanilla_blocks::WEATHERED_COPPER_BULB, properties : & [("lit", "false"),
1860 ("powered", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1861 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1862 vanilla_blocks::EXPOSED_COPPER_LANTERN]), offset : IVec3::new(0i32, 0i32, 0i32)
1863 }, then : BlockStateProviderKind::CopyProperties { source :
1864 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1865 vanilla_blocks::COPPER_LANTERN, properties : & [("hanging", "false"),
1866 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1867 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1868 vanilla_blocks::WEATHERED_COPPER_LANTERN]), offset : IVec3::new(0i32, 0i32, 0i32)
1869 }, then : BlockStateProviderKind::CopyProperties { source :
1870 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1871 vanilla_blocks::EXPOSED_COPPER_LANTERN, properties : & [("hanging", "false"),
1872 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1873 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1874 vanilla_blocks::OXIDIZED_COPPER_LANTERN]), offset : IVec3::new(0i32, 0i32, 0i32)
1875 }, then : BlockStateProviderKind::CopyProperties { source :
1876 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1877 vanilla_blocks::WEATHERED_COPPER_LANTERN, properties : & [("hanging", "false"),
1878 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1879 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1880 vanilla_blocks::EXPOSED_COPPER_GOLEM_STATUE]), offset : IVec3::new(0i32, 0i32,
1881 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1882 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1883 vanilla_blocks::COPPER_GOLEM_STATUE, properties : & [("copper_golem_pose",
1884 "standing"), ("facing", "north"), ("waterlogged", "false")], } }) }, },
1885 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1886 BlockRefList(vec![& vanilla_blocks::WEATHERED_COPPER_GOLEM_STATUE]), offset :
1887 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1888 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1889 : & vanilla_blocks::EXPOSED_COPPER_GOLEM_STATUE, properties : &
1890 [("copper_golem_pose", "standing"), ("facing", "north"), ("waterlogged",
1891 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1892 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1893 vanilla_blocks::OXIDIZED_COPPER_GOLEM_STATUE]), offset : IVec3::new(0i32, 0i32,
1894 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
1895 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1896 vanilla_blocks::WEATHERED_COPPER_GOLEM_STATUE, properties : &
1897 [("copper_golem_pose", "standing"), ("facing", "north"), ("waterlogged",
1898 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1899 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1900 vanilla_blocks::EXPOSED_LIGHTNING_ROD]), offset : IVec3::new(0i32, 0i32, 0i32) },
1901 then : BlockStateProviderKind::CopyProperties { source :
1902 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1903 vanilla_blocks::LIGHTNING_ROD, properties : & [("facing", "up"), ("powered",
1904 "false"), ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule {
1905 if_true : BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1906 vanilla_blocks::WEATHERED_LIGHTNING_ROD]), offset : IVec3::new(0i32, 0i32, 0i32)
1907 }, then : BlockStateProviderKind::CopyProperties { source :
1908 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1909 vanilla_blocks::EXPOSED_LIGHTNING_ROD, properties : & [("facing", "up"),
1910 ("powered", "false"), ("waterlogged", "false")], } }) }, },
1911 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1912 BlockRefList(vec![& vanilla_blocks::OXIDIZED_LIGHTNING_ROD]), offset :
1913 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1914 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1915 : & vanilla_blocks::WEATHERED_LIGHTNING_ROD, properties : & [("facing", "up"),
1916 ("powered", "false"), ("waterlogged", "false")], } }) }, },
1917 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1918 BlockRefList(vec![& vanilla_blocks::EXPOSED_COPPER_CHAIN]), offset :
1919 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1920 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1921 : & vanilla_blocks::COPPER_CHAIN, properties : & [("axis", "y"), ("waterlogged",
1922 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1923 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1924 vanilla_blocks::WEATHERED_COPPER_CHAIN]), offset : IVec3::new(0i32, 0i32, 0i32)
1925 }, then : BlockStateProviderKind::CopyProperties { source :
1926 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1927 vanilla_blocks::EXPOSED_COPPER_CHAIN, properties : & [("axis", "y"),
1928 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
1929 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1930 vanilla_blocks::OXIDIZED_COPPER_CHAIN]), offset : IVec3::new(0i32, 0i32, 0i32) },
1931 then : BlockStateProviderKind::CopyProperties { source :
1932 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1933 vanilla_blocks::WEATHERED_COPPER_CHAIN, properties : & [("axis", "y"),
1934 ("waterlogged", "false")], } }) }, }], }, sound : crate
1935 ::sound_event::SoundEventHolder::Registry(& crate
1936 ::sound_events::ITEM_AXE_SCRAPE), particle : crate
1937 ::block_transformer::TransformParticle::Scrape, disallowed_faces : vec![], loot :
1938 None, drop_strategy : crate ::block_transformer::DropStrategy::FromMiddle,
1939 update_from_neighbors : true, transform_type : crate
1940 ::block_transformer::TransformType::SingleBlock, consume_on_use : true,
1941 item_damage_per_use : 1i32, }, crate ::block_transformer::BlockTransformData {
1942 block_state_provider : BlockStateProviderKind::RuleBased { fallback : None, rules
1943 : vec![RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
1944 blocks : BlockRefList(vec![& vanilla_blocks::EXPOSED_COPPER_CHEST]), offset :
1945 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1946 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1947 : & vanilla_blocks::COPPER_CHEST, properties : & [("facing", "north"), ("type",
1948 "single"), ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule {
1949 if_true : BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
1950 vanilla_blocks::WEATHERED_COPPER_CHEST]), offset : IVec3::new(0i32, 0i32, 0i32)
1951 }, then : BlockStateProviderKind::CopyProperties { source :
1952 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
1953 vanilla_blocks::EXPOSED_COPPER_CHEST, properties : & [("facing", "north"),
1954 ("type", "single"), ("waterlogged", "false")], } }) }, },
1955 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1956 BlockRefList(vec![& vanilla_blocks::OXIDIZED_COPPER_CHEST]), offset :
1957 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1958 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1959 : & vanilla_blocks::WEATHERED_COPPER_CHEST, properties : & [("facing", "north"),
1960 ("type", "single"), ("waterlogged", "false")], } }) }, }], }, sound : crate
1961 ::sound_event::SoundEventHolder::Registry(& crate
1962 ::sound_events::ITEM_AXE_SCRAPE), particle : crate
1963 ::block_transformer::TransformParticle::Scrape, disallowed_faces : vec![], loot :
1964 None, drop_strategy : crate ::block_transformer::DropStrategy::FromMiddle,
1965 update_from_neighbors : false, transform_type : crate
1966 ::block_transformer::TransformType::CopperChest, consume_on_use : true,
1967 item_damage_per_use : 1i32, }, crate ::block_transformer::BlockTransformData {
1968 block_state_provider : BlockStateProviderKind::RuleBased { fallback : None, rules
1969 : vec![RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
1970 blocks : BlockRefList(vec![& vanilla_blocks::EXPOSED_COPPER_DOOR]), offset :
1971 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1972 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1973 : & vanilla_blocks::COPPER_DOOR, properties : & [("facing", "north"), ("half",
1974 "lower"), ("hinge", "left"), ("open", "false"), ("powered", "false")], } }) }, },
1975 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
1976 BlockRefList(vec![& vanilla_blocks::WEATHERED_COPPER_DOOR]), offset :
1977 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1978 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1979 : & vanilla_blocks::EXPOSED_COPPER_DOOR, properties : & [("facing", "north"),
1980 ("half", "lower"), ("hinge", "left"), ("open", "false"), ("powered", "false")], }
1981 }) }, }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
1982 blocks : BlockRefList(vec![& vanilla_blocks::OXIDIZED_COPPER_DOOR]), offset :
1983 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1984 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1985 : & vanilla_blocks::WEATHERED_COPPER_DOOR, properties : & [("facing", "north"),
1986 ("half", "lower"), ("hinge", "left"), ("open", "false"), ("powered", "false")], }
1987 }) }, }], }, sound : crate ::sound_event::SoundEventHolder::Registry(& crate
1988 ::sound_events::ITEM_AXE_SCRAPE), particle : crate
1989 ::block_transformer::TransformParticle::Scrape, disallowed_faces : vec![], loot :
1990 None, drop_strategy : crate ::block_transformer::DropStrategy::FromMiddle,
1991 update_from_neighbors : false, transform_type : crate
1992 ::block_transformer::TransformType::SingleBlock, consume_on_use : true,
1993 item_damage_per_use : 1i32, }, crate ::block_transformer::BlockTransformData {
1994 block_state_provider : BlockStateProviderKind::RuleBased { fallback : None, rules
1995 : vec![RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
1996 blocks : BlockRefList(vec![& vanilla_blocks::WAXED_COPPER_BLOCK]), offset :
1997 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
1998 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
1999 : & vanilla_blocks::COPPER_BLOCK, properties : & [], } }) }, },
2000 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2001 BlockRefList(vec![& vanilla_blocks::WAXED_EXPOSED_COPPER]), offset :
2002 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2003 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2004 : & vanilla_blocks::EXPOSED_COPPER, properties : & [], } }) }, },
2005 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2006 BlockRefList(vec![& vanilla_blocks::WAXED_WEATHERED_COPPER]), offset :
2007 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2008 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2009 : & vanilla_blocks::WEATHERED_COPPER, properties : & [], } }) }, },
2010 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2011 BlockRefList(vec![& vanilla_blocks::WAXED_OXIDIZED_COPPER]), offset :
2012 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2013 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2014 : & vanilla_blocks::OXIDIZED_COPPER, properties : & [], } }) }, },
2015 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2016 BlockRefList(vec![& vanilla_blocks::WAXED_CUT_COPPER]), offset : IVec3::new(0i32,
2017 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2018 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2019 vanilla_blocks::CUT_COPPER, properties : & [], } }) }, },
2020 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2021 BlockRefList(vec![& vanilla_blocks::WAXED_EXPOSED_CUT_COPPER]), offset :
2022 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2023 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2024 : & vanilla_blocks::EXPOSED_CUT_COPPER, properties : & [], } }) }, },
2025 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2026 BlockRefList(vec![& vanilla_blocks::WAXED_WEATHERED_CUT_COPPER]), offset :
2027 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2028 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2029 : & vanilla_blocks::WEATHERED_CUT_COPPER, properties : & [], } }) }, },
2030 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2031 BlockRefList(vec![& vanilla_blocks::WAXED_OXIDIZED_CUT_COPPER]), offset :
2032 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2033 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2034 : & vanilla_blocks::OXIDIZED_CUT_COPPER, properties : & [], } }) }, },
2035 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2036 BlockRefList(vec![& vanilla_blocks::WAXED_CUT_COPPER_SLAB]), offset :
2037 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2038 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2039 : & vanilla_blocks::CUT_COPPER_SLAB, properties : & [("type", "bottom"),
2040 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2041 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2042 vanilla_blocks::WAXED_EXPOSED_CUT_COPPER_SLAB]), offset : IVec3::new(0i32, 0i32,
2043 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2044 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2045 vanilla_blocks::EXPOSED_CUT_COPPER_SLAB, properties : & [("type", "bottom"),
2046 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2047 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2048 vanilla_blocks::WAXED_WEATHERED_CUT_COPPER_SLAB]), offset : IVec3::new(0i32,
2049 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2050 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2051 vanilla_blocks::WEATHERED_CUT_COPPER_SLAB, properties : & [("type", "bottom"),
2052 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2053 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2054 vanilla_blocks::WAXED_OXIDIZED_CUT_COPPER_SLAB]), offset : IVec3::new(0i32, 0i32,
2055 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2056 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2057 vanilla_blocks::OXIDIZED_CUT_COPPER_SLAB, properties : & [("type", "bottom"),
2058 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2059 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2060 vanilla_blocks::WAXED_CUT_COPPER_STAIRS]), offset : IVec3::new(0i32, 0i32, 0i32)
2061 }, then : BlockStateProviderKind::CopyProperties { source :
2062 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2063 vanilla_blocks::CUT_COPPER_STAIRS, properties : & [("facing", "north"), ("half",
2064 "bottom"), ("shape", "straight"), ("waterlogged", "false")], } }) }, },
2065 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2066 BlockRefList(vec![& vanilla_blocks::WAXED_EXPOSED_CUT_COPPER_STAIRS]), offset :
2067 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2068 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2069 : & vanilla_blocks::EXPOSED_CUT_COPPER_STAIRS, properties : & [("facing",
2070 "north"), ("half", "bottom"), ("shape", "straight"), ("waterlogged", "false")], }
2071 }) }, }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
2072 blocks : BlockRefList(vec![& vanilla_blocks::WAXED_WEATHERED_CUT_COPPER_STAIRS]),
2073 offset : IVec3::new(0i32, 0i32, 0i32) }, then :
2074 BlockStateProviderKind::CopyProperties { source :
2075 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2076 vanilla_blocks::WEATHERED_CUT_COPPER_STAIRS, properties : & [("facing", "north"),
2077 ("half", "bottom"), ("shape", "straight"), ("waterlogged", "false")], } }) }, },
2078 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2079 BlockRefList(vec![& vanilla_blocks::WAXED_OXIDIZED_CUT_COPPER_STAIRS]), offset :
2080 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2081 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2082 : & vanilla_blocks::OXIDIZED_CUT_COPPER_STAIRS, properties : & [("facing",
2083 "north"), ("half", "bottom"), ("shape", "straight"), ("waterlogged", "false")], }
2084 }) }, }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
2085 blocks : BlockRefList(vec![& vanilla_blocks::WAXED_CHISELED_COPPER]), offset :
2086 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2087 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2088 : & vanilla_blocks::CHISELED_COPPER, properties : & [], } }) }, },
2089 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2090 BlockRefList(vec![& vanilla_blocks::WAXED_EXPOSED_CHISELED_COPPER]), offset :
2091 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2092 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2093 : & vanilla_blocks::EXPOSED_CHISELED_COPPER, properties : & [], } }) }, },
2094 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2095 BlockRefList(vec![& vanilla_blocks::WAXED_WEATHERED_CHISELED_COPPER]), offset :
2096 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2097 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2098 : & vanilla_blocks::WEATHERED_CHISELED_COPPER, properties : & [], } }) }, },
2099 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2100 BlockRefList(vec![& vanilla_blocks::WAXED_OXIDIZED_CHISELED_COPPER]), offset :
2101 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2102 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2103 : & vanilla_blocks::OXIDIZED_CHISELED_COPPER, properties : & [], } }) }, },
2104 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2105 BlockRefList(vec![& vanilla_blocks::WAXED_COPPER_TRAPDOOR]), offset :
2106 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2107 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2108 : & vanilla_blocks::COPPER_TRAPDOOR, properties : & [("facing", "north"),
2109 ("half", "bottom"), ("open", "false"), ("powered", "false"), ("waterlogged",
2110 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2111 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2112 vanilla_blocks::WAXED_EXPOSED_COPPER_TRAPDOOR]), offset : IVec3::new(0i32, 0i32,
2113 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2114 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2115 vanilla_blocks::EXPOSED_COPPER_TRAPDOOR, properties : & [("facing", "north"),
2116 ("half", "bottom"), ("open", "false"), ("powered", "false"), ("waterlogged",
2117 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2118 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2119 vanilla_blocks::WAXED_WEATHERED_COPPER_TRAPDOOR]), offset : IVec3::new(0i32,
2120 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2121 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2122 vanilla_blocks::WEATHERED_COPPER_TRAPDOOR, properties : & [("facing", "north"),
2123 ("half", "bottom"), ("open", "false"), ("powered", "false"), ("waterlogged",
2124 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2125 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2126 vanilla_blocks::WAXED_OXIDIZED_COPPER_TRAPDOOR]), offset : IVec3::new(0i32, 0i32,
2127 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2128 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2129 vanilla_blocks::OXIDIZED_COPPER_TRAPDOOR, properties : & [("facing", "north"),
2130 ("half", "bottom"), ("open", "false"), ("powered", "false"), ("waterlogged",
2131 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2132 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2133 vanilla_blocks::WAXED_COPPER_BARS]), offset : IVec3::new(0i32, 0i32, 0i32) },
2134 then : BlockStateProviderKind::CopyProperties { source :
2135 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2136 vanilla_blocks::COPPER_BARS, properties : & [("east", "false"), ("north",
2137 "false"), ("south", "false"), ("waterlogged", "false"), ("west", "false")], } })
2138 }, }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
2139 blocks : BlockRefList(vec![& vanilla_blocks::WAXED_EXPOSED_COPPER_BARS]), offset
2140 : IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2141 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2142 : & vanilla_blocks::EXPOSED_COPPER_BARS, properties : & [("east", "false"),
2143 ("north", "false"), ("south", "false"), ("waterlogged", "false"), ("west",
2144 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2145 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2146 vanilla_blocks::WAXED_WEATHERED_COPPER_BARS]), offset : IVec3::new(0i32, 0i32,
2147 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2148 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2149 vanilla_blocks::WEATHERED_COPPER_BARS, properties : & [("east", "false"),
2150 ("north", "false"), ("south", "false"), ("waterlogged", "false"), ("west",
2151 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2152 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2153 vanilla_blocks::WAXED_OXIDIZED_COPPER_BARS]), offset : IVec3::new(0i32, 0i32,
2154 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2155 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2156 vanilla_blocks::OXIDIZED_COPPER_BARS, properties : & [("east", "false"),
2157 ("north", "false"), ("south", "false"), ("waterlogged", "false"), ("west",
2158 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2159 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2160 vanilla_blocks::WAXED_COPPER_GRATE]), offset : IVec3::new(0i32, 0i32, 0i32) },
2161 then : BlockStateProviderKind::CopyProperties { source :
2162 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2163 vanilla_blocks::COPPER_GRATE, properties : & [("waterlogged", "false")], } }) },
2164 }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks
2165 : BlockRefList(vec![& vanilla_blocks::WAXED_EXPOSED_COPPER_GRATE]), offset :
2166 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2167 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2168 : & vanilla_blocks::EXPOSED_COPPER_GRATE, properties : & [("waterlogged",
2169 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2170 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2171 vanilla_blocks::WAXED_WEATHERED_COPPER_GRATE]), offset : IVec3::new(0i32, 0i32,
2172 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2173 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2174 vanilla_blocks::WEATHERED_COPPER_GRATE, properties : & [("waterlogged",
2175 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2176 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2177 vanilla_blocks::WAXED_OXIDIZED_COPPER_GRATE]), offset : IVec3::new(0i32, 0i32,
2178 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2179 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2180 vanilla_blocks::OXIDIZED_COPPER_GRATE, properties : & [("waterlogged", "false")],
2181 } }) }, }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks
2182 { blocks : BlockRefList(vec![& vanilla_blocks::WAXED_COPPER_BULB]), offset :
2183 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2184 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2185 : & vanilla_blocks::COPPER_BULB, properties : & [("lit", "false"), ("powered",
2186 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2187 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2188 vanilla_blocks::WAXED_EXPOSED_COPPER_BULB]), offset : IVec3::new(0i32, 0i32,
2189 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2190 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2191 vanilla_blocks::EXPOSED_COPPER_BULB, properties : & [("lit", "false"),
2192 ("powered", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2193 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2194 vanilla_blocks::WAXED_WEATHERED_COPPER_BULB]), offset : IVec3::new(0i32, 0i32,
2195 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2196 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2197 vanilla_blocks::WEATHERED_COPPER_BULB, properties : & [("lit", "false"),
2198 ("powered", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2199 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2200 vanilla_blocks::WAXED_OXIDIZED_COPPER_BULB]), offset : IVec3::new(0i32, 0i32,
2201 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2202 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2203 vanilla_blocks::OXIDIZED_COPPER_BULB, properties : & [("lit", "false"),
2204 ("powered", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2205 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2206 vanilla_blocks::WAXED_COPPER_GOLEM_STATUE]), offset : IVec3::new(0i32, 0i32,
2207 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2208 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2209 vanilla_blocks::COPPER_GOLEM_STATUE, properties : & [("copper_golem_pose",
2210 "standing"), ("facing", "north"), ("waterlogged", "false")], } }) }, },
2211 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2212 BlockRefList(vec![& vanilla_blocks::WAXED_EXPOSED_COPPER_GOLEM_STATUE]), offset :
2213 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2214 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2215 : & vanilla_blocks::EXPOSED_COPPER_GOLEM_STATUE, properties : &
2216 [("copper_golem_pose", "standing"), ("facing", "north"), ("waterlogged",
2217 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2218 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2219 vanilla_blocks::WAXED_WEATHERED_COPPER_GOLEM_STATUE]), offset : IVec3::new(0i32,
2220 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2221 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2222 vanilla_blocks::WEATHERED_COPPER_GOLEM_STATUE, properties : &
2223 [("copper_golem_pose", "standing"), ("facing", "north"), ("waterlogged",
2224 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2225 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2226 vanilla_blocks::WAXED_OXIDIZED_COPPER_GOLEM_STATUE]), offset : IVec3::new(0i32,
2227 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2228 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2229 vanilla_blocks::OXIDIZED_COPPER_GOLEM_STATUE, properties : &
2230 [("copper_golem_pose", "standing"), ("facing", "north"), ("waterlogged",
2231 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2232 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2233 vanilla_blocks::WAXED_LIGHTNING_ROD]), offset : IVec3::new(0i32, 0i32, 0i32) },
2234 then : BlockStateProviderKind::CopyProperties { source :
2235 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2236 vanilla_blocks::LIGHTNING_ROD, properties : & [("facing", "up"), ("powered",
2237 "false"), ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule {
2238 if_true : BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2239 vanilla_blocks::WAXED_EXPOSED_LIGHTNING_ROD]), offset : IVec3::new(0i32, 0i32,
2240 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2241 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2242 vanilla_blocks::EXPOSED_LIGHTNING_ROD, properties : & [("facing", "up"),
2243 ("powered", "false"), ("waterlogged", "false")], } }) }, },
2244 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2245 BlockRefList(vec![& vanilla_blocks::WAXED_WEATHERED_LIGHTNING_ROD]), offset :
2246 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2247 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2248 : & vanilla_blocks::WEATHERED_LIGHTNING_ROD, properties : & [("facing", "up"),
2249 ("powered", "false"), ("waterlogged", "false")], } }) }, },
2250 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2251 BlockRefList(vec![& vanilla_blocks::WAXED_OXIDIZED_LIGHTNING_ROD]), offset :
2252 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2253 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2254 : & vanilla_blocks::OXIDIZED_LIGHTNING_ROD, properties : & [("facing", "up"),
2255 ("powered", "false"), ("waterlogged", "false")], } }) }, },
2256 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2257 BlockRefList(vec![& vanilla_blocks::WAXED_COPPER_LANTERN]), offset :
2258 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2259 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2260 : & vanilla_blocks::COPPER_LANTERN, properties : & [("hanging", "false"),
2261 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2262 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2263 vanilla_blocks::WAXED_EXPOSED_COPPER_LANTERN]), offset : IVec3::new(0i32, 0i32,
2264 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2265 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2266 vanilla_blocks::EXPOSED_COPPER_LANTERN, properties : & [("hanging", "false"),
2267 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2268 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2269 vanilla_blocks::WAXED_WEATHERED_COPPER_LANTERN]), offset : IVec3::new(0i32, 0i32,
2270 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2271 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2272 vanilla_blocks::WEATHERED_COPPER_LANTERN, properties : & [("hanging", "false"),
2273 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2274 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2275 vanilla_blocks::WAXED_OXIDIZED_COPPER_LANTERN]), offset : IVec3::new(0i32, 0i32,
2276 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2277 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2278 vanilla_blocks::OXIDIZED_COPPER_LANTERN, properties : & [("hanging", "false"),
2279 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2280 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2281 vanilla_blocks::WAXED_COPPER_CHAIN]), offset : IVec3::new(0i32, 0i32, 0i32) },
2282 then : BlockStateProviderKind::CopyProperties { source :
2283 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2284 vanilla_blocks::COPPER_CHAIN, properties : & [("axis", "y"), ("waterlogged",
2285 "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2286 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2287 vanilla_blocks::WAXED_EXPOSED_COPPER_CHAIN]), offset : IVec3::new(0i32, 0i32,
2288 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2289 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2290 vanilla_blocks::EXPOSED_COPPER_CHAIN, properties : & [("axis", "y"),
2291 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2292 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2293 vanilla_blocks::WAXED_WEATHERED_COPPER_CHAIN]), offset : IVec3::new(0i32, 0i32,
2294 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2295 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2296 vanilla_blocks::WEATHERED_COPPER_CHAIN, properties : & [("axis", "y"),
2297 ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule { if_true :
2298 BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2299 vanilla_blocks::WAXED_OXIDIZED_COPPER_CHAIN]), offset : IVec3::new(0i32, 0i32,
2300 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2301 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2302 vanilla_blocks::OXIDIZED_COPPER_CHAIN, properties : & [("axis", "y"),
2303 ("waterlogged", "false")], } }) }, }], }, sound : crate
2304 ::sound_event::SoundEventHolder::Registry(& crate
2305 ::sound_events::ITEM_AXE_WAX_OFF), particle : crate
2306 ::block_transformer::TransformParticle::WaxOff, disallowed_faces : vec![], loot :
2307 None, drop_strategy : crate ::block_transformer::DropStrategy::FromMiddle,
2308 update_from_neighbors : true, transform_type : crate
2309 ::block_transformer::TransformType::SingleBlock, consume_on_use : true,
2310 item_damage_per_use : 1i32, }, crate ::block_transformer::BlockTransformData {
2311 block_state_provider : BlockStateProviderKind::RuleBased { fallback : None, rules
2312 : vec![RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
2313 blocks : BlockRefList(vec![& vanilla_blocks::WAXED_COPPER_CHEST]), offset :
2314 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2315 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2316 : & vanilla_blocks::COPPER_CHEST, properties : & [("facing", "north"), ("type",
2317 "single"), ("waterlogged", "false")], } }) }, }, RuleBasedStateProviderRule {
2318 if_true : BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2319 vanilla_blocks::WAXED_EXPOSED_COPPER_CHEST]), offset : IVec3::new(0i32, 0i32,
2320 0i32) }, then : BlockStateProviderKind::CopyProperties { source :
2321 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2322 vanilla_blocks::EXPOSED_COPPER_CHEST, properties : & [("facing", "north"),
2323 ("type", "single"), ("waterlogged", "false")], } }) }, },
2324 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2325 BlockRefList(vec![& vanilla_blocks::WAXED_WEATHERED_COPPER_CHEST]), offset :
2326 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2327 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2328 : & vanilla_blocks::WEATHERED_COPPER_CHEST, properties : & [("facing", "north"),
2329 ("type", "single"), ("waterlogged", "false")], } }) }, },
2330 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2331 BlockRefList(vec![& vanilla_blocks::WAXED_OXIDIZED_COPPER_CHEST]), offset :
2332 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2333 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2334 : & vanilla_blocks::OXIDIZED_COPPER_CHEST, properties : & [("facing", "north"),
2335 ("type", "single"), ("waterlogged", "false")], } }) }, }], }, sound : crate
2336 ::sound_event::SoundEventHolder::Registry(& crate
2337 ::sound_events::ITEM_AXE_WAX_OFF), particle : crate
2338 ::block_transformer::TransformParticle::WaxOff, disallowed_faces : vec![], loot :
2339 None, drop_strategy : crate ::block_transformer::DropStrategy::FromMiddle,
2340 update_from_neighbors : false, transform_type : crate
2341 ::block_transformer::TransformType::CopperChest, consume_on_use : true,
2342 item_damage_per_use : 1i32, }, crate ::block_transformer::BlockTransformData {
2343 block_state_provider : BlockStateProviderKind::RuleBased { fallback : None, rules
2344 : vec![RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
2345 blocks : BlockRefList(vec![& vanilla_blocks::WAXED_COPPER_DOOR]), offset :
2346 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2347 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2348 : & vanilla_blocks::COPPER_DOOR, properties : & [("facing", "north"), ("half",
2349 "lower"), ("hinge", "left"), ("open", "false"), ("powered", "false")], } }) }, },
2350 RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks { blocks :
2351 BlockRefList(vec![& vanilla_blocks::WAXED_EXPOSED_COPPER_DOOR]), offset :
2352 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2353 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2354 : & vanilla_blocks::EXPOSED_COPPER_DOOR, properties : & [("facing", "north"),
2355 ("half", "lower"), ("hinge", "left"), ("open", "false"), ("powered", "false")], }
2356 }) }, }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
2357 blocks : BlockRefList(vec![& vanilla_blocks::WAXED_WEATHERED_COPPER_DOOR]),
2358 offset : IVec3::new(0i32, 0i32, 0i32) }, then :
2359 BlockStateProviderKind::CopyProperties { source :
2360 Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block : &
2361 vanilla_blocks::WEATHERED_COPPER_DOOR, properties : & [("facing", "north"),
2362 ("half", "lower"), ("hinge", "left"), ("open", "false"), ("powered", "false")], }
2363 }) }, }, RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
2364 blocks : BlockRefList(vec![& vanilla_blocks::WAXED_OXIDIZED_COPPER_DOOR]), offset
2365 : IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::CopyProperties {
2366 source : Box::new(BlockStateProviderKind::Simple { state : BlockStateData { block
2367 : & vanilla_blocks::OXIDIZED_COPPER_DOOR, properties : & [("facing", "north"),
2368 ("half", "lower"), ("hinge", "left"), ("open", "false"), ("powered", "false")], }
2369 }) }, }], }, sound : crate ::sound_event::SoundEventHolder::Registry(& crate
2370 ::sound_events::ITEM_AXE_WAX_OFF), particle : crate
2371 ::block_transformer::TransformParticle::WaxOff, disallowed_faces : vec![], loot :
2372 None, drop_strategy : crate ::block_transformer::DropStrategy::FromMiddle,
2373 update_from_neighbors : false, transform_type : crate
2374 ::block_transformer::TransformType::SingleBlock, consume_on_use : true,
2375 item_damage_per_use : 1i32, }
2376 ],
2377 nbt: axe_nbt,
2378});
2379fn hoe_nbt() -> NbtList {
2380 NbtList::Compound(
2381 vec![
2382 { let mut compound = NbtCompound::new(); compound
2383 .insert("block_state_provider", { let mut compound = NbtCompound::new();
2384 compound.insert("type", "minecraft:rule_based"); compound.insert("rules",
2385 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
2386 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
2387 .insert("type", "minecraft:all_of"); compound.insert("predicates",
2388 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
2389 compound.insert("type", "minecraft:matching_block_tag"); compound
2390 .insert("tag", "minecraft:turns_into_farmland"); NbtTag::Compound(compound)
2391 }, { let mut compound = NbtCompound::new(); compound.insert("type",
2392 "minecraft:matching_block_tag"); compound.insert("tag", "minecraft:air");
2393 compound.insert("offset", NbtTag::IntArray(vec![0i32, 1i32, 0i32]));
2394 NbtTag::Compound(compound) }]))); NbtTag::Compound(compound) }); compound
2395 .insert("then", { let mut compound = NbtCompound::new(); compound
2396 .insert("id", NbtTag::String("minecraft:farmland".into())); let mut
2397 properties = NbtCompound::new(); properties.insert("moisture", "0"); compound
2398 .insert("properties", NbtTag::Compound(properties));
2399 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }, { let mut
2400 compound = NbtCompound::new(); compound.insert("if_true", { let mut compound
2401 = NbtCompound::new(); compound.insert("type", "minecraft:all_of"); compound
2402 .insert("predicates", NbtTag::List(NbtList::from(vec![{ let mut compound =
2403 NbtCompound::new(); compound.insert("type", "minecraft:matching_blocks");
2404 compound.insert("blocks", NbtTag::String("minecraft:coarse_dirt".into()));
2405 NbtTag::Compound(compound) }, { let mut compound = NbtCompound::new();
2406 compound.insert("type", "minecraft:matching_block_tag"); compound
2407 .insert("tag", "minecraft:air"); compound.insert("offset",
2408 NbtTag::IntArray(vec![0i32, 1i32, 0i32])); NbtTag::Compound(compound) }])));
2409 NbtTag::Compound(compound) }); compound.insert("then", { let mut compound =
2410 NbtCompound::new(); compound.insert("id", NbtTag::String("minecraft:dirt"
2411 .into())); NbtTag::Compound(compound) }); NbtTag::Compound(compound) }])));
2412 NbtTag::Compound(compound) }); compound.insert("disallowed_faces",
2413 NbtList::String(vec!["down".into()])); compound.insert("item_damage_per_use",
2414 1i32); compound.insert("sound", "minecraft:item.hoe.till"); compound }, { let
2415 mut compound = NbtCompound::new(); compound.insert("block_state_provider", {
2416 let mut compound = NbtCompound::new(); compound.insert("type",
2417 "minecraft:rule_based"); compound.insert("rules",
2418 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
2419 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
2420 .insert("type", "minecraft:matching_blocks"); compound.insert("blocks",
2421 NbtTag::String("minecraft:rooted_dirt".into())); NbtTag::Compound(compound)
2422 }); compound.insert("then", { let mut compound = NbtCompound::new(); compound
2423 .insert("id", NbtTag::String("minecraft:dirt".into()));
2424 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }])));
2425 NbtTag::Compound(compound) }); compound.insert("drop_strategy",
2426 "clicked_face"); compound.insert("item_damage_per_use", 1i32); compound
2427 .insert("loot", "minecraft:till/rooted_dirt"); compound.insert("sound",
2428 "minecraft:item.hoe.till"); compound }
2429 ],
2430 )
2431}
2432pub static HOE: LazyLock<BlockTransformer> = LazyLock::new(|| BlockTransformer {
2433 key: Identifier::vanilla_static("hoe"),
2434 transforms: vec![
2435 crate ::block_transformer::BlockTransformData { block_state_provider :
2436 BlockStateProviderKind::RuleBased { fallback : None, rules :
2437 vec![RuleBasedStateProviderRule { if_true : BlockPredicate::AllOf { predicates :
2438 vec![BlockPredicate::MatchingBlockTag { tag :
2439 Identifier::vanilla_static("turns_into_farmland"), offset : IVec3::new(0i32,
2440 0i32, 0i32) }, BlockPredicate::MatchingBlockTag { tag :
2441 Identifier::vanilla_static("air"), offset : IVec3::new(0i32, 1i32, 0i32) }] },
2442 then : BlockStateProviderKind::Simple { state : BlockStateData { block : &
2443 vanilla_blocks::FARMLAND, properties : & [("moisture", "0")], } }, },
2444 RuleBasedStateProviderRule { if_true : BlockPredicate::AllOf { predicates :
2445 vec![BlockPredicate::MatchingBlocks { blocks : BlockRefList(vec![&
2446 vanilla_blocks::COARSE_DIRT]), offset : IVec3::new(0i32, 0i32, 0i32) },
2447 BlockPredicate::MatchingBlockTag { tag : Identifier::vanilla_static("air"),
2448 offset : IVec3::new(0i32, 1i32, 0i32) }] }, then : BlockStateProviderKind::Simple
2449 { state : BlockStateData { block : & vanilla_blocks::DIRT, properties : & [], }
2450 }, }], }, sound : crate ::sound_event::SoundEventHolder::Registry(& crate
2451 ::sound_events::ITEM_HOE_TILL), particle : crate
2452 ::block_transformer::TransformParticle::None, disallowed_faces :
2453 vec![steel_utils::Direction::Down], loot : None, drop_strategy : crate
2454 ::block_transformer::DropStrategy::FromMiddle, update_from_neighbors : true,
2455 transform_type : crate ::block_transformer::TransformType::SingleBlock,
2456 consume_on_use : true, item_damage_per_use : 1i32, }, crate
2457 ::block_transformer::BlockTransformData { block_state_provider :
2458 BlockStateProviderKind::RuleBased { fallback : None, rules :
2459 vec![RuleBasedStateProviderRule { if_true : BlockPredicate::MatchingBlocks {
2460 blocks : BlockRefList(vec![& vanilla_blocks::ROOTED_DIRT]), offset :
2461 IVec3::new(0i32, 0i32, 0i32) }, then : BlockStateProviderKind::Simple { state :
2462 BlockStateData { block : & vanilla_blocks::DIRT, properties : & [], } }, }], },
2463 sound : crate ::sound_event::SoundEventHolder::Registry(& crate
2464 ::sound_events::ITEM_HOE_TILL), particle : crate
2465 ::block_transformer::TransformParticle::None, disallowed_faces : vec![], loot :
2466 Some(Identifier::new_static("minecraft", "till/rooted_dirt")), drop_strategy :
2467 crate ::block_transformer::DropStrategy::ClickedFace, update_from_neighbors :
2468 true, transform_type : crate ::block_transformer::TransformType::SingleBlock,
2469 consume_on_use : true, item_damage_per_use : 1i32, }
2470 ],
2471 nbt: hoe_nbt,
2472});
2473fn shovel_nbt() -> NbtList {
2474 NbtList::Compound(
2475 vec![
2476 { let mut compound = NbtCompound::new(); compound
2477 .insert("block_state_provider", { let mut compound = NbtCompound::new();
2478 compound.insert("type", "minecraft:rule_based"); compound.insert("rules",
2479 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
2480 compound.insert("if_true", { let mut compound = NbtCompound::new(); compound
2481 .insert("type", "minecraft:all_of"); compound.insert("predicates",
2482 NbtTag::List(NbtList::from(vec![{ let mut compound = NbtCompound::new();
2483 compound.insert("type", "minecraft:matching_block_tag"); compound
2484 .insert("tag", "minecraft:turns_into_dirt_path"); NbtTag::Compound(compound)
2485 }, { let mut compound = NbtCompound::new(); compound.insert("type",
2486 "minecraft:matching_block_tag"); compound.insert("tag", "minecraft:air");
2487 compound.insert("offset", NbtTag::IntArray(vec![0i32, 1i32, 0i32]));
2488 NbtTag::Compound(compound) }]))); NbtTag::Compound(compound) }); compound
2489 .insert("then", { let mut compound = NbtCompound::new(); compound
2490 .insert("id", NbtTag::String("minecraft:dirt_path".into()));
2491 NbtTag::Compound(compound) }); NbtTag::Compound(compound) }])));
2492 NbtTag::Compound(compound) }); compound.insert("disallowed_faces",
2493 NbtList::String(vec!["down".into()])); compound.insert("item_damage_per_use",
2494 1i32); compound.insert("sound", "minecraft:item.shovel.flatten"); compound }
2495 ],
2496 )
2497}
2498pub static SHOVEL: LazyLock<BlockTransformer> = LazyLock::new(|| BlockTransformer {
2499 key: Identifier::vanilla_static("shovel"),
2500 transforms: vec![
2501 crate ::block_transformer::BlockTransformData { block_state_provider :
2502 BlockStateProviderKind::RuleBased { fallback : None, rules :
2503 vec![RuleBasedStateProviderRule { if_true : BlockPredicate::AllOf { predicates :
2504 vec![BlockPredicate::MatchingBlockTag { tag :
2505 Identifier::vanilla_static("turns_into_dirt_path"), offset : IVec3::new(0i32,
2506 0i32, 0i32) }, BlockPredicate::MatchingBlockTag { tag :
2507 Identifier::vanilla_static("air"), offset : IVec3::new(0i32, 1i32, 0i32) }] },
2508 then : BlockStateProviderKind::Simple { state : BlockStateData { block : &
2509 vanilla_blocks::DIRT_PATH, properties : & [], } }, }], }, sound : crate
2510 ::sound_event::SoundEventHolder::Registry(& crate
2511 ::sound_events::ITEM_SHOVEL_FLATTEN), particle : crate
2512 ::block_transformer::TransformParticle::None, disallowed_faces :
2513 vec![steel_utils::Direction::Down], loot : None, drop_strategy : crate
2514 ::block_transformer::DropStrategy::FromMiddle, update_from_neighbors : true,
2515 transform_type : crate ::block_transformer::TransformType::SingleBlock,
2516 consume_on_use : true, item_damage_per_use : 1i32, }
2517 ],
2518 nbt: shovel_nbt,
2519});
2520pub fn register_block_transformers(registry: &mut BlockTransformerRegistry) {
2521 registry.register(&*AXE);
2522 registry.register(&*HOE);
2523 registry.register(&*SHOVEL);
2524}