Skip to main content

steel_registry/generated/
vanilla_block_transformers.rs

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}