azalea_registry/tags/
blocks.rs

1// This file was generated by codegen/lib/code/tags.py, don't edit it manually!
2
3use std::{collections::HashSet, sync::LazyLock};
4
5use crate::Block;
6
7pub static ACACIA_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
8    HashSet::from_iter(vec![
9        Block::AcaciaLog,
10        Block::AcaciaWood,
11        Block::StrippedAcaciaLog,
12        Block::StrippedAcaciaWood,
13    ])
14});
15pub static AIR: LazyLock<HashSet<Block>> =
16    LazyLock::new(|| HashSet::from_iter(vec![Block::Air, Block::VoidAir, Block::CaveAir]));
17pub static ALL_HANGING_SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
18    HashSet::from_iter(vec![
19        Block::OakHangingSign,
20        Block::SpruceHangingSign,
21        Block::BirchHangingSign,
22        Block::AcaciaHangingSign,
23        Block::CherryHangingSign,
24        Block::JungleHangingSign,
25        Block::DarkOakHangingSign,
26        Block::PaleOakHangingSign,
27        Block::CrimsonHangingSign,
28        Block::WarpedHangingSign,
29        Block::MangroveHangingSign,
30        Block::BambooHangingSign,
31        Block::OakWallHangingSign,
32        Block::SpruceWallHangingSign,
33        Block::BirchWallHangingSign,
34        Block::AcaciaWallHangingSign,
35        Block::CherryWallHangingSign,
36        Block::JungleWallHangingSign,
37        Block::DarkOakWallHangingSign,
38        Block::PaleOakWallHangingSign,
39        Block::CrimsonWallHangingSign,
40        Block::WarpedWallHangingSign,
41        Block::MangroveWallHangingSign,
42        Block::BambooWallHangingSign,
43    ])
44});
45pub static ALL_SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
46    HashSet::from_iter(vec![
47        Block::OakSign,
48        Block::SpruceSign,
49        Block::BirchSign,
50        Block::AcaciaSign,
51        Block::JungleSign,
52        Block::DarkOakSign,
53        Block::PaleOakSign,
54        Block::CrimsonSign,
55        Block::WarpedSign,
56        Block::MangroveSign,
57        Block::BambooSign,
58        Block::CherrySign,
59        Block::OakWallSign,
60        Block::SpruceWallSign,
61        Block::BirchWallSign,
62        Block::AcaciaWallSign,
63        Block::JungleWallSign,
64        Block::DarkOakWallSign,
65        Block::PaleOakWallSign,
66        Block::CrimsonWallSign,
67        Block::WarpedWallSign,
68        Block::MangroveWallSign,
69        Block::BambooWallSign,
70        Block::CherryWallSign,
71        Block::OakHangingSign,
72        Block::SpruceHangingSign,
73        Block::BirchHangingSign,
74        Block::AcaciaHangingSign,
75        Block::CherryHangingSign,
76        Block::JungleHangingSign,
77        Block::DarkOakHangingSign,
78        Block::PaleOakHangingSign,
79        Block::CrimsonHangingSign,
80        Block::WarpedHangingSign,
81        Block::MangroveHangingSign,
82        Block::BambooHangingSign,
83        Block::OakWallHangingSign,
84        Block::SpruceWallHangingSign,
85        Block::BirchWallHangingSign,
86        Block::AcaciaWallHangingSign,
87        Block::CherryWallHangingSign,
88        Block::JungleWallHangingSign,
89        Block::DarkOakWallHangingSign,
90        Block::PaleOakWallHangingSign,
91        Block::CrimsonWallHangingSign,
92        Block::WarpedWallHangingSign,
93        Block::MangroveWallHangingSign,
94        Block::BambooWallHangingSign,
95    ])
96});
97pub static ANCIENT_CITY_REPLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
98    HashSet::from_iter(vec![
99        Block::Deepslate,
100        Block::DeepslateBricks,
101        Block::DeepslateTiles,
102        Block::DeepslateBrickSlab,
103        Block::DeepslateTileSlab,
104        Block::DeepslateBrickStairs,
105        Block::DeepslateTileWall,
106        Block::DeepslateBrickWall,
107        Block::CobbledDeepslate,
108        Block::CrackedDeepslateBricks,
109        Block::CrackedDeepslateTiles,
110        Block::GrayWool,
111    ])
112});
113pub static ANIMALS_SPAWNABLE_ON: LazyLock<HashSet<Block>> =
114    LazyLock::new(|| HashSet::from_iter(vec![Block::GrassBlock]));
115pub static ANVIL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
116    HashSet::from_iter(vec![Block::Anvil, Block::ChippedAnvil, Block::DamagedAnvil])
117});
118pub static ARMADILLO_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
119    HashSet::from_iter(vec![
120        Block::RedSand,
121        Block::CoarseDirt,
122        Block::GrassBlock,
123        Block::Terracotta,
124        Block::WhiteTerracotta,
125        Block::YellowTerracotta,
126        Block::OrangeTerracotta,
127        Block::RedTerracotta,
128        Block::BrownTerracotta,
129        Block::LightGrayTerracotta,
130    ])
131});
132pub static AXOLOTLS_SPAWNABLE_ON: LazyLock<HashSet<Block>> =
133    LazyLock::new(|| HashSet::from_iter(vec![Block::Clay]));
134pub static AZALEA_GROWS_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
135    HashSet::from_iter(vec![
136        Block::SnowBlock,
137        Block::PowderSnow,
138        Block::Dirt,
139        Block::GrassBlock,
140        Block::Podzol,
141        Block::CoarseDirt,
142        Block::Mycelium,
143        Block::RootedDirt,
144        Block::MossBlock,
145        Block::PaleMossBlock,
146        Block::Mud,
147        Block::MuddyMangroveRoots,
148        Block::Sand,
149        Block::RedSand,
150        Block::SuspiciousSand,
151        Block::SuspiciousSand,
152        Block::Terracotta,
153        Block::WhiteTerracotta,
154        Block::OrangeTerracotta,
155        Block::MagentaTerracotta,
156        Block::LightBlueTerracotta,
157        Block::YellowTerracotta,
158        Block::LimeTerracotta,
159        Block::PinkTerracotta,
160        Block::GrayTerracotta,
161        Block::LightGrayTerracotta,
162        Block::CyanTerracotta,
163        Block::PurpleTerracotta,
164        Block::BlueTerracotta,
165        Block::BrownTerracotta,
166        Block::GreenTerracotta,
167        Block::RedTerracotta,
168        Block::BlackTerracotta,
169    ])
170});
171pub static AZALEA_ROOT_REPLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
172    HashSet::from_iter(vec![
173        Block::RedSand,
174        Block::Clay,
175        Block::Gravel,
176        Block::Sand,
177        Block::SnowBlock,
178        Block::PowderSnow,
179        Block::Stone,
180        Block::Granite,
181        Block::Diorite,
182        Block::Andesite,
183        Block::Tuff,
184        Block::Deepslate,
185        Block::Dirt,
186        Block::GrassBlock,
187        Block::Podzol,
188        Block::CoarseDirt,
189        Block::Mycelium,
190        Block::RootedDirt,
191        Block::MossBlock,
192        Block::PaleMossBlock,
193        Block::Mud,
194        Block::MuddyMangroveRoots,
195        Block::Terracotta,
196        Block::WhiteTerracotta,
197        Block::OrangeTerracotta,
198        Block::MagentaTerracotta,
199        Block::LightBlueTerracotta,
200        Block::YellowTerracotta,
201        Block::LimeTerracotta,
202        Block::PinkTerracotta,
203        Block::GrayTerracotta,
204        Block::LightGrayTerracotta,
205        Block::CyanTerracotta,
206        Block::PurpleTerracotta,
207        Block::BlueTerracotta,
208        Block::BrownTerracotta,
209        Block::GreenTerracotta,
210        Block::RedTerracotta,
211        Block::BlackTerracotta,
212    ])
213});
214pub static BADLANDS_TERRACOTTA: LazyLock<HashSet<Block>> = LazyLock::new(|| {
215    HashSet::from_iter(vec![
216        Block::Terracotta,
217        Block::WhiteTerracotta,
218        Block::YellowTerracotta,
219        Block::OrangeTerracotta,
220        Block::RedTerracotta,
221        Block::BrownTerracotta,
222        Block::LightGrayTerracotta,
223    ])
224});
225pub static BAMBOO_BLOCKS: LazyLock<HashSet<Block>> =
226    LazyLock::new(|| HashSet::from_iter(vec![Block::BambooBlock, Block::StrippedBambooBlock]));
227pub static BAMBOO_PLANTABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
228    HashSet::from_iter(vec![
229        Block::Bamboo,
230        Block::BambooSapling,
231        Block::Gravel,
232        Block::SuspiciousGravel,
233        Block::Sand,
234        Block::RedSand,
235        Block::SuspiciousSand,
236        Block::SuspiciousSand,
237        Block::Dirt,
238        Block::GrassBlock,
239        Block::Podzol,
240        Block::CoarseDirt,
241        Block::Mycelium,
242        Block::RootedDirt,
243        Block::MossBlock,
244        Block::PaleMossBlock,
245        Block::Mud,
246        Block::MuddyMangroveRoots,
247    ])
248});
249pub static BANNERS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
250    HashSet::from_iter(vec![
251        Block::WhiteBanner,
252        Block::OrangeBanner,
253        Block::MagentaBanner,
254        Block::LightBlueBanner,
255        Block::YellowBanner,
256        Block::LimeBanner,
257        Block::PinkBanner,
258        Block::GrayBanner,
259        Block::LightGrayBanner,
260        Block::CyanBanner,
261        Block::PurpleBanner,
262        Block::BlueBanner,
263        Block::BrownBanner,
264        Block::GreenBanner,
265        Block::RedBanner,
266        Block::BlackBanner,
267        Block::WhiteWallBanner,
268        Block::OrangeWallBanner,
269        Block::MagentaWallBanner,
270        Block::LightBlueWallBanner,
271        Block::YellowWallBanner,
272        Block::LimeWallBanner,
273        Block::PinkWallBanner,
274        Block::GrayWallBanner,
275        Block::LightGrayWallBanner,
276        Block::CyanWallBanner,
277        Block::PurpleWallBanner,
278        Block::BlueWallBanner,
279        Block::BrownWallBanner,
280        Block::GreenWallBanner,
281        Block::RedWallBanner,
282        Block::BlackWallBanner,
283    ])
284});
285pub static BASE_STONE_NETHER: LazyLock<HashSet<Block>> =
286    LazyLock::new(|| HashSet::from_iter(vec![Block::Netherrack, Block::Basalt, Block::Blackstone]));
287pub static BASE_STONE_OVERWORLD: LazyLock<HashSet<Block>> = LazyLock::new(|| {
288    HashSet::from_iter(vec![
289        Block::Stone,
290        Block::Granite,
291        Block::Diorite,
292        Block::Andesite,
293        Block::Tuff,
294        Block::Deepslate,
295    ])
296});
297pub static BATS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
298    HashSet::from_iter(vec![
299        Block::Stone,
300        Block::Granite,
301        Block::Diorite,
302        Block::Andesite,
303        Block::Tuff,
304        Block::Deepslate,
305    ])
306});
307pub static BEACON_BASE_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
308    HashSet::from_iter(vec![
309        Block::NetheriteBlock,
310        Block::EmeraldBlock,
311        Block::DiamondBlock,
312        Block::GoldBlock,
313        Block::IronBlock,
314    ])
315});
316pub static BEDS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
317    HashSet::from_iter(vec![
318        Block::RedBed,
319        Block::BlackBed,
320        Block::BlueBed,
321        Block::BrownBed,
322        Block::CyanBed,
323        Block::GrayBed,
324        Block::GreenBed,
325        Block::LightBlueBed,
326        Block::LightGrayBed,
327        Block::LimeBed,
328        Block::MagentaBed,
329        Block::OrangeBed,
330        Block::PinkBed,
331        Block::PurpleBed,
332        Block::WhiteBed,
333        Block::YellowBed,
334    ])
335});
336pub static BEE_ATTRACTIVE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
337    HashSet::from_iter(vec![
338        Block::Dandelion,
339        Block::OpenEyeblossom,
340        Block::Poppy,
341        Block::BlueOrchid,
342        Block::Allium,
343        Block::AzureBluet,
344        Block::RedTulip,
345        Block::OrangeTulip,
346        Block::WhiteTulip,
347        Block::PinkTulip,
348        Block::OxeyeDaisy,
349        Block::Cornflower,
350        Block::LilyOfTheValley,
351        Block::WitherRose,
352        Block::Torchflower,
353        Block::Sunflower,
354        Block::Lilac,
355        Block::Peony,
356        Block::RoseBush,
357        Block::PitcherPlant,
358        Block::FloweringAzaleaLeaves,
359        Block::FloweringAzalea,
360        Block::MangrovePropagule,
361        Block::CherryLeaves,
362        Block::PinkPetals,
363        Block::Wildflowers,
364        Block::ChorusFlower,
365        Block::SporeBlossom,
366        Block::CactusFlower,
367    ])
368});
369pub static BEE_GROWABLES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
370    HashSet::from_iter(vec![
371        Block::SweetBerryBush,
372        Block::CaveVines,
373        Block::CaveVinesPlant,
374        Block::Beetroots,
375        Block::Carrots,
376        Block::Potatoes,
377        Block::Wheat,
378        Block::MelonStem,
379        Block::PumpkinStem,
380        Block::TorchflowerCrop,
381        Block::PitcherCrop,
382    ])
383});
384pub static BEEHIVES: LazyLock<HashSet<Block>> =
385    LazyLock::new(|| HashSet::from_iter(vec![Block::BeeNest, Block::Beehive]));
386pub static BIG_DRIPLEAF_PLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
387    HashSet::from_iter(vec![
388        Block::Dirt,
389        Block::GrassBlock,
390        Block::Podzol,
391        Block::CoarseDirt,
392        Block::Mycelium,
393        Block::RootedDirt,
394        Block::MossBlock,
395        Block::Mud,
396        Block::MuddyMangroveRoots,
397        Block::Farmland,
398        Block::Clay,
399        Block::MossBlock,
400    ])
401});
402pub static BIRCH_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
403    HashSet::from_iter(vec![
404        Block::BirchLog,
405        Block::BirchWood,
406        Block::StrippedBirchLog,
407        Block::StrippedBirchWood,
408    ])
409});
410pub static BLOCKS_WIND_CHARGE_EXPLOSIONS: LazyLock<HashSet<Block>> =
411    LazyLock::new(|| HashSet::from_iter(vec![Block::Barrier, Block::Bedrock]));
412pub static BUTTONS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
413    HashSet::from_iter(vec![
414        Block::OakButton,
415        Block::SpruceButton,
416        Block::BirchButton,
417        Block::JungleButton,
418        Block::AcaciaButton,
419        Block::DarkOakButton,
420        Block::PaleOakButton,
421        Block::CrimsonButton,
422        Block::WarpedButton,
423        Block::MangroveButton,
424        Block::BambooButton,
425        Block::CherryButton,
426        Block::StoneButton,
427        Block::PolishedBlackstoneButton,
428    ])
429});
430pub static CAMEL_SAND_STEP_SOUND_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
431    HashSet::from_iter(vec![
432        Block::Sand,
433        Block::RedSand,
434        Block::SuspiciousSand,
435        Block::SuspiciousSand,
436        Block::WhiteConcretePowder,
437        Block::OrangeConcretePowder,
438        Block::MagentaConcretePowder,
439        Block::LightBlueConcretePowder,
440        Block::YellowConcretePowder,
441        Block::LimeConcretePowder,
442        Block::PinkConcretePowder,
443        Block::GrayConcretePowder,
444        Block::LightGrayConcretePowder,
445        Block::CyanConcretePowder,
446        Block::PurpleConcretePowder,
447        Block::BlueConcretePowder,
448        Block::BrownConcretePowder,
449        Block::GreenConcretePowder,
450        Block::RedConcretePowder,
451        Block::BlackConcretePowder,
452    ])
453});
454pub static CAMELS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
455    HashSet::from_iter(vec![
456        Block::Sand,
457        Block::RedSand,
458        Block::SuspiciousSand,
459        Block::SuspiciousSand,
460    ])
461});
462pub static CAMPFIRES: LazyLock<HashSet<Block>> =
463    LazyLock::new(|| HashSet::from_iter(vec![Block::Campfire, Block::SoulCampfire]));
464pub static CANDLE_CAKES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
465    HashSet::from_iter(vec![
466        Block::CandleCake,
467        Block::WhiteCandleCake,
468        Block::OrangeCandleCake,
469        Block::MagentaCandleCake,
470        Block::LightBlueCandleCake,
471        Block::YellowCandleCake,
472        Block::LimeCandleCake,
473        Block::PinkCandleCake,
474        Block::GrayCandleCake,
475        Block::LightGrayCandleCake,
476        Block::CyanCandleCake,
477        Block::PurpleCandleCake,
478        Block::BlueCandleCake,
479        Block::BrownCandleCake,
480        Block::GreenCandleCake,
481        Block::RedCandleCake,
482        Block::BlackCandleCake,
483    ])
484});
485pub static CANDLES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
486    HashSet::from_iter(vec![
487        Block::Candle,
488        Block::WhiteCandle,
489        Block::OrangeCandle,
490        Block::MagentaCandle,
491        Block::LightBlueCandle,
492        Block::YellowCandle,
493        Block::LimeCandle,
494        Block::PinkCandle,
495        Block::GrayCandle,
496        Block::LightGrayCandle,
497        Block::CyanCandle,
498        Block::PurpleCandle,
499        Block::BlueCandle,
500        Block::BrownCandle,
501        Block::GreenCandle,
502        Block::RedCandle,
503        Block::BlackCandle,
504    ])
505});
506pub static CAULDRONS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
507    HashSet::from_iter(vec![
508        Block::Cauldron,
509        Block::WaterCauldron,
510        Block::LavaCauldron,
511        Block::PowderSnowCauldron,
512    ])
513});
514pub static CAVE_VINES: LazyLock<HashSet<Block>> =
515    LazyLock::new(|| HashSet::from_iter(vec![Block::CaveVinesPlant, Block::CaveVines]));
516pub static CEILING_HANGING_SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
517    HashSet::from_iter(vec![
518        Block::OakHangingSign,
519        Block::SpruceHangingSign,
520        Block::BirchHangingSign,
521        Block::AcaciaHangingSign,
522        Block::CherryHangingSign,
523        Block::JungleHangingSign,
524        Block::DarkOakHangingSign,
525        Block::PaleOakHangingSign,
526        Block::CrimsonHangingSign,
527        Block::WarpedHangingSign,
528        Block::MangroveHangingSign,
529        Block::BambooHangingSign,
530    ])
531});
532pub static CHERRY_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
533    HashSet::from_iter(vec![
534        Block::CherryLog,
535        Block::CherryWood,
536        Block::StrippedCherryLog,
537        Block::StrippedCherryWood,
538    ])
539});
540pub static CLIMBABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
541    HashSet::from_iter(vec![
542        Block::Ladder,
543        Block::Vine,
544        Block::Scaffolding,
545        Block::WeepingVines,
546        Block::WeepingVinesPlant,
547        Block::TwistingVines,
548        Block::TwistingVinesPlant,
549        Block::CaveVines,
550        Block::CaveVinesPlant,
551    ])
552});
553pub static COAL_ORES: LazyLock<HashSet<Block>> =
554    LazyLock::new(|| HashSet::from_iter(vec![Block::CoalOre, Block::DeepslateCoalOre]));
555pub static COMBINATION_STEP_SOUND_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
556    HashSet::from_iter(vec![
557        Block::MossCarpet,
558        Block::PaleMossCarpet,
559        Block::Snow,
560        Block::NetherSprouts,
561        Block::WarpedRoots,
562        Block::CrimsonRoots,
563        Block::ResinClump,
564        Block::WhiteCarpet,
565        Block::OrangeCarpet,
566        Block::MagentaCarpet,
567        Block::LightBlueCarpet,
568        Block::YellowCarpet,
569        Block::LimeCarpet,
570        Block::PinkCarpet,
571        Block::GrayCarpet,
572        Block::LightGrayCarpet,
573        Block::CyanCarpet,
574        Block::PurpleCarpet,
575        Block::BlueCarpet,
576        Block::BrownCarpet,
577        Block::GreenCarpet,
578        Block::RedCarpet,
579        Block::BlackCarpet,
580    ])
581});
582pub static COMPLETES_FIND_TREE_TUTORIAL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
583    HashSet::from_iter(vec![
584        Block::JungleLeaves,
585        Block::OakLeaves,
586        Block::SpruceLeaves,
587        Block::PaleOakLeaves,
588        Block::DarkOakLeaves,
589        Block::AcaciaLeaves,
590        Block::BirchLeaves,
591        Block::AzaleaLeaves,
592        Block::FloweringAzaleaLeaves,
593        Block::MangroveLeaves,
594        Block::CherryLeaves,
595        Block::NetherWartBlock,
596        Block::WarpedWartBlock,
597        Block::CrimsonStem,
598        Block::StrippedCrimsonStem,
599        Block::CrimsonHyphae,
600        Block::StrippedCrimsonHyphae,
601        Block::WarpedStem,
602        Block::StrippedWarpedStem,
603        Block::WarpedHyphae,
604        Block::StrippedWarpedHyphae,
605        Block::DarkOakLog,
606        Block::DarkOakWood,
607        Block::StrippedDarkOakLog,
608        Block::StrippedDarkOakWood,
609        Block::PaleOakLog,
610        Block::PaleOakWood,
611        Block::StrippedPaleOakLog,
612        Block::StrippedPaleOakWood,
613        Block::OakLog,
614        Block::OakWood,
615        Block::StrippedOakLog,
616        Block::StrippedOakWood,
617        Block::AcaciaLog,
618        Block::AcaciaWood,
619        Block::StrippedAcaciaLog,
620        Block::StrippedAcaciaWood,
621        Block::BirchLog,
622        Block::BirchWood,
623        Block::StrippedBirchLog,
624        Block::StrippedBirchWood,
625        Block::JungleLog,
626        Block::JungleWood,
627        Block::StrippedJungleLog,
628        Block::StrippedJungleWood,
629        Block::SpruceLog,
630        Block::SpruceWood,
631        Block::StrippedSpruceLog,
632        Block::StrippedSpruceWood,
633        Block::MangroveLog,
634        Block::MangroveWood,
635        Block::StrippedMangroveLog,
636        Block::StrippedMangroveWood,
637        Block::CherryLog,
638        Block::CherryWood,
639        Block::StrippedCherryLog,
640        Block::StrippedCherryWood,
641    ])
642});
643pub static CONCRETE_POWDER: LazyLock<HashSet<Block>> = LazyLock::new(|| {
644    HashSet::from_iter(vec![
645        Block::WhiteConcretePowder,
646        Block::OrangeConcretePowder,
647        Block::MagentaConcretePowder,
648        Block::LightBlueConcretePowder,
649        Block::YellowConcretePowder,
650        Block::LimeConcretePowder,
651        Block::PinkConcretePowder,
652        Block::GrayConcretePowder,
653        Block::LightGrayConcretePowder,
654        Block::CyanConcretePowder,
655        Block::PurpleConcretePowder,
656        Block::BlueConcretePowder,
657        Block::BrownConcretePowder,
658        Block::GreenConcretePowder,
659        Block::RedConcretePowder,
660        Block::BlackConcretePowder,
661    ])
662});
663pub static CONVERTABLE_TO_MUD: LazyLock<HashSet<Block>> =
664    LazyLock::new(|| HashSet::from_iter(vec![Block::Dirt, Block::CoarseDirt, Block::RootedDirt]));
665pub static COPPER_ORES: LazyLock<HashSet<Block>> =
666    LazyLock::new(|| HashSet::from_iter(vec![Block::CopperOre, Block::DeepslateCopperOre]));
667pub static CORAL_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
668    HashSet::from_iter(vec![
669        Block::TubeCoralBlock,
670        Block::BrainCoralBlock,
671        Block::BubbleCoralBlock,
672        Block::FireCoralBlock,
673        Block::HornCoralBlock,
674    ])
675});
676pub static CORAL_PLANTS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
677    HashSet::from_iter(vec![
678        Block::TubeCoral,
679        Block::BrainCoral,
680        Block::BubbleCoral,
681        Block::FireCoral,
682        Block::HornCoral,
683    ])
684});
685pub static CORALS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
686    HashSet::from_iter(vec![
687        Block::TubeCoralFan,
688        Block::BrainCoralFan,
689        Block::BubbleCoralFan,
690        Block::FireCoralFan,
691        Block::HornCoralFan,
692        Block::TubeCoral,
693        Block::BrainCoral,
694        Block::BubbleCoral,
695        Block::FireCoral,
696        Block::HornCoral,
697    ])
698});
699pub static CRIMSON_STEMS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
700    HashSet::from_iter(vec![
701        Block::CrimsonStem,
702        Block::StrippedCrimsonStem,
703        Block::CrimsonHyphae,
704        Block::StrippedCrimsonHyphae,
705    ])
706});
707pub static CROPS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
708    HashSet::from_iter(vec![
709        Block::Beetroots,
710        Block::Carrots,
711        Block::Potatoes,
712        Block::Wheat,
713        Block::MelonStem,
714        Block::PumpkinStem,
715        Block::TorchflowerCrop,
716        Block::PitcherCrop,
717    ])
718});
719pub static CRYSTAL_SOUND_BLOCKS: LazyLock<HashSet<Block>> =
720    LazyLock::new(|| HashSet::from_iter(vec![Block::AmethystBlock, Block::BuddingAmethyst]));
721pub static DAMPENS_VIBRATIONS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
722    HashSet::from_iter(vec![
723        Block::WhiteWool,
724        Block::OrangeWool,
725        Block::MagentaWool,
726        Block::LightBlueWool,
727        Block::YellowWool,
728        Block::LimeWool,
729        Block::PinkWool,
730        Block::GrayWool,
731        Block::LightGrayWool,
732        Block::CyanWool,
733        Block::PurpleWool,
734        Block::BlueWool,
735        Block::BrownWool,
736        Block::GreenWool,
737        Block::RedWool,
738        Block::BlackWool,
739        Block::WhiteCarpet,
740        Block::OrangeCarpet,
741        Block::MagentaCarpet,
742        Block::LightBlueCarpet,
743        Block::YellowCarpet,
744        Block::LimeCarpet,
745        Block::PinkCarpet,
746        Block::GrayCarpet,
747        Block::LightGrayCarpet,
748        Block::CyanCarpet,
749        Block::PurpleCarpet,
750        Block::BlueCarpet,
751        Block::BrownCarpet,
752        Block::GreenCarpet,
753        Block::RedCarpet,
754        Block::BlackCarpet,
755    ])
756});
757pub static DARK_OAK_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
758    HashSet::from_iter(vec![
759        Block::DarkOakLog,
760        Block::DarkOakWood,
761        Block::StrippedDarkOakLog,
762        Block::StrippedDarkOakWood,
763    ])
764});
765pub static DEEPSLATE_ORE_REPLACEABLES: LazyLock<HashSet<Block>> =
766    LazyLock::new(|| HashSet::from_iter(vec![Block::Deepslate, Block::Tuff]));
767pub static DIAMOND_ORES: LazyLock<HashSet<Block>> =
768    LazyLock::new(|| HashSet::from_iter(vec![Block::DiamondOre, Block::DeepslateDiamondOre]));
769pub static DIRT: LazyLock<HashSet<Block>> = LazyLock::new(|| {
770    HashSet::from_iter(vec![
771        Block::Dirt,
772        Block::GrassBlock,
773        Block::Podzol,
774        Block::CoarseDirt,
775        Block::Mycelium,
776        Block::RootedDirt,
777        Block::MossBlock,
778        Block::PaleMossBlock,
779        Block::Mud,
780        Block::MuddyMangroveRoots,
781    ])
782});
783pub static DOES_NOT_BLOCK_HOPPERS: LazyLock<HashSet<Block>> =
784    LazyLock::new(|| HashSet::from_iter(vec![Block::BeeNest, Block::Beehive]));
785pub static DOORS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
786    HashSet::from_iter(vec![
787        Block::CopperDoor,
788        Block::ExposedCopperDoor,
789        Block::WeatheredCopperDoor,
790        Block::OxidizedCopperDoor,
791        Block::WaxedCopperDoor,
792        Block::WaxedExposedCopperDoor,
793        Block::WaxedWeatheredCopperDoor,
794        Block::WaxedOxidizedCopperDoor,
795        Block::IronDoor,
796        Block::OakDoor,
797        Block::SpruceDoor,
798        Block::BirchDoor,
799        Block::JungleDoor,
800        Block::AcaciaDoor,
801        Block::DarkOakDoor,
802        Block::PaleOakDoor,
803        Block::CrimsonDoor,
804        Block::WarpedDoor,
805        Block::MangroveDoor,
806        Block::BambooDoor,
807        Block::CherryDoor,
808    ])
809});
810pub static DRAGON_IMMUNE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
811    HashSet::from_iter(vec![
812        Block::Barrier,
813        Block::Bedrock,
814        Block::EndPortal,
815        Block::EndPortalFrame,
816        Block::EndGateway,
817        Block::CommandBlock,
818        Block::RepeatingCommandBlock,
819        Block::ChainCommandBlock,
820        Block::StructureBlock,
821        Block::Jigsaw,
822        Block::MovingPiston,
823        Block::Obsidian,
824        Block::CryingObsidian,
825        Block::EndStone,
826        Block::IronBars,
827        Block::RespawnAnchor,
828        Block::ReinforcedDeepslate,
829        Block::TestBlock,
830        Block::TestInstanceBlock,
831    ])
832});
833pub static DRAGON_TRANSPARENT: LazyLock<HashSet<Block>> =
834    LazyLock::new(|| HashSet::from_iter(vec![Block::Light, Block::Fire, Block::SoulFire]));
835pub static DRIPSTONE_REPLACEABLE_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
836    HashSet::from_iter(vec![
837        Block::Stone,
838        Block::Granite,
839        Block::Diorite,
840        Block::Andesite,
841        Block::Tuff,
842        Block::Deepslate,
843    ])
844});
845pub static DRY_VEGETATION_MAY_PLACE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
846    HashSet::from_iter(vec![
847        Block::Farmland,
848        Block::Sand,
849        Block::RedSand,
850        Block::SuspiciousSand,
851        Block::SuspiciousSand,
852        Block::Terracotta,
853        Block::WhiteTerracotta,
854        Block::OrangeTerracotta,
855        Block::MagentaTerracotta,
856        Block::LightBlueTerracotta,
857        Block::YellowTerracotta,
858        Block::LimeTerracotta,
859        Block::PinkTerracotta,
860        Block::GrayTerracotta,
861        Block::LightGrayTerracotta,
862        Block::CyanTerracotta,
863        Block::PurpleTerracotta,
864        Block::BlueTerracotta,
865        Block::BrownTerracotta,
866        Block::GreenTerracotta,
867        Block::RedTerracotta,
868        Block::BlackTerracotta,
869        Block::Dirt,
870        Block::GrassBlock,
871        Block::Podzol,
872        Block::CoarseDirt,
873        Block::Mycelium,
874        Block::RootedDirt,
875        Block::MossBlock,
876        Block::PaleMossBlock,
877        Block::Mud,
878        Block::MuddyMangroveRoots,
879    ])
880});
881pub static EDIBLE_FOR_SHEEP: LazyLock<HashSet<Block>> = LazyLock::new(|| {
882    HashSet::from_iter(vec![
883        Block::ShortGrass,
884        Block::ShortDryGrass,
885        Block::TallDryGrass,
886        Block::Fern,
887    ])
888});
889pub static EMERALD_ORES: LazyLock<HashSet<Block>> =
890    LazyLock::new(|| HashSet::from_iter(vec![Block::EmeraldOre, Block::DeepslateEmeraldOre]));
891pub static ENCHANTMENT_POWER_PROVIDER: LazyLock<HashSet<Block>> =
892    LazyLock::new(|| HashSet::from_iter(vec![Block::Bookshelf]));
893pub static ENCHANTMENT_POWER_TRANSMITTER: LazyLock<HashSet<Block>> = LazyLock::new(|| {
894    HashSet::from_iter(vec![
895        Block::Air,
896        Block::Water,
897        Block::Lava,
898        Block::ShortGrass,
899        Block::Fern,
900        Block::DeadBush,
901        Block::Bush,
902        Block::ShortDryGrass,
903        Block::TallDryGrass,
904        Block::Seagrass,
905        Block::TallSeagrass,
906        Block::Fire,
907        Block::SoulFire,
908        Block::Snow,
909        Block::Vine,
910        Block::GlowLichen,
911        Block::ResinClump,
912        Block::Light,
913        Block::TallGrass,
914        Block::LargeFern,
915        Block::StructureVoid,
916        Block::VoidAir,
917        Block::CaveAir,
918        Block::BubbleColumn,
919        Block::WarpedRoots,
920        Block::NetherSprouts,
921        Block::CrimsonRoots,
922        Block::LeafLitter,
923        Block::HangingRoots,
924    ])
925});
926pub static ENDERMAN_HOLDABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
927    HashSet::from_iter(vec![
928        Block::Sand,
929        Block::RedSand,
930        Block::Gravel,
931        Block::BrownMushroom,
932        Block::RedMushroom,
933        Block::Tnt,
934        Block::Cactus,
935        Block::Clay,
936        Block::Pumpkin,
937        Block::CarvedPumpkin,
938        Block::Melon,
939        Block::CrimsonFungus,
940        Block::CrimsonNylium,
941        Block::CrimsonRoots,
942        Block::WarpedFungus,
943        Block::WarpedNylium,
944        Block::WarpedRoots,
945        Block::CactusFlower,
946        Block::Dandelion,
947        Block::OpenEyeblossom,
948        Block::Poppy,
949        Block::BlueOrchid,
950        Block::Allium,
951        Block::AzureBluet,
952        Block::RedTulip,
953        Block::OrangeTulip,
954        Block::WhiteTulip,
955        Block::PinkTulip,
956        Block::OxeyeDaisy,
957        Block::Cornflower,
958        Block::LilyOfTheValley,
959        Block::WitherRose,
960        Block::Torchflower,
961        Block::ClosedEyeblossom,
962        Block::Dirt,
963        Block::GrassBlock,
964        Block::Podzol,
965        Block::CoarseDirt,
966        Block::Mycelium,
967        Block::RootedDirt,
968        Block::MossBlock,
969        Block::PaleMossBlock,
970        Block::Mud,
971        Block::MuddyMangroveRoots,
972    ])
973});
974pub static FALL_DAMAGE_RESETTING: LazyLock<HashSet<Block>> = LazyLock::new(|| {
975    HashSet::from_iter(vec![
976        Block::SweetBerryBush,
977        Block::Cobweb,
978        Block::Ladder,
979        Block::Vine,
980        Block::Scaffolding,
981        Block::WeepingVines,
982        Block::WeepingVinesPlant,
983        Block::TwistingVines,
984        Block::TwistingVinesPlant,
985        Block::CaveVines,
986        Block::CaveVinesPlant,
987    ])
988});
989pub static FEATURES_CANNOT_REPLACE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
990    HashSet::from_iter(vec![
991        Block::Bedrock,
992        Block::Spawner,
993        Block::Chest,
994        Block::EndPortalFrame,
995        Block::ReinforcedDeepslate,
996        Block::TrialSpawner,
997        Block::Vault,
998    ])
999});
1000pub static FENCE_GATES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1001    HashSet::from_iter(vec![
1002        Block::AcaciaFenceGate,
1003        Block::BirchFenceGate,
1004        Block::DarkOakFenceGate,
1005        Block::PaleOakFenceGate,
1006        Block::JungleFenceGate,
1007        Block::OakFenceGate,
1008        Block::SpruceFenceGate,
1009        Block::CrimsonFenceGate,
1010        Block::WarpedFenceGate,
1011        Block::MangroveFenceGate,
1012        Block::BambooFenceGate,
1013        Block::CherryFenceGate,
1014    ])
1015});
1016pub static FENCES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1017    HashSet::from_iter(vec![
1018        Block::NetherBrickFence,
1019        Block::OakFence,
1020        Block::AcaciaFence,
1021        Block::DarkOakFence,
1022        Block::PaleOakFence,
1023        Block::SpruceFence,
1024        Block::BirchFence,
1025        Block::JungleFence,
1026        Block::CrimsonFence,
1027        Block::WarpedFence,
1028        Block::MangroveFence,
1029        Block::BambooFence,
1030        Block::CherryFence,
1031    ])
1032});
1033pub static FIRE: LazyLock<HashSet<Block>> =
1034    LazyLock::new(|| HashSet::from_iter(vec![Block::Fire, Block::SoulFire]));
1035pub static FLOWER_POTS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1036    HashSet::from_iter(vec![
1037        Block::FlowerPot,
1038        Block::PottedOpenEyeblossom,
1039        Block::PottedClosedEyeblossom,
1040        Block::PottedPoppy,
1041        Block::PottedBlueOrchid,
1042        Block::PottedAllium,
1043        Block::PottedAzureBluet,
1044        Block::PottedRedTulip,
1045        Block::PottedOrangeTulip,
1046        Block::PottedWhiteTulip,
1047        Block::PottedPinkTulip,
1048        Block::PottedOxeyeDaisy,
1049        Block::PottedDandelion,
1050        Block::PottedOakSapling,
1051        Block::PottedSpruceSapling,
1052        Block::PottedBirchSapling,
1053        Block::PottedJungleSapling,
1054        Block::PottedAcaciaSapling,
1055        Block::PottedDarkOakSapling,
1056        Block::PottedPaleOakSapling,
1057        Block::PottedRedMushroom,
1058        Block::PottedBrownMushroom,
1059        Block::PottedDeadBush,
1060        Block::PottedFern,
1061        Block::PottedCactus,
1062        Block::PottedCornflower,
1063        Block::PottedLilyOfTheValley,
1064        Block::PottedWitherRose,
1065        Block::PottedBamboo,
1066        Block::PottedCrimsonFungus,
1067        Block::PottedWarpedFungus,
1068        Block::PottedCrimsonRoots,
1069        Block::PottedWarpedRoots,
1070        Block::PottedAzaleaBush,
1071        Block::PottedFloweringAzaleaBush,
1072        Block::PottedMangrovePropagule,
1073        Block::PottedCherrySapling,
1074        Block::PottedTorchflower,
1075    ])
1076});
1077pub static FLOWERS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1078    HashSet::from_iter(vec![
1079        Block::Sunflower,
1080        Block::Lilac,
1081        Block::Peony,
1082        Block::RoseBush,
1083        Block::PitcherPlant,
1084        Block::FloweringAzaleaLeaves,
1085        Block::FloweringAzalea,
1086        Block::MangrovePropagule,
1087        Block::CherryLeaves,
1088        Block::PinkPetals,
1089        Block::Wildflowers,
1090        Block::ChorusFlower,
1091        Block::SporeBlossom,
1092        Block::CactusFlower,
1093        Block::Dandelion,
1094        Block::OpenEyeblossom,
1095        Block::Poppy,
1096        Block::BlueOrchid,
1097        Block::Allium,
1098        Block::AzureBluet,
1099        Block::RedTulip,
1100        Block::OrangeTulip,
1101        Block::WhiteTulip,
1102        Block::PinkTulip,
1103        Block::OxeyeDaisy,
1104        Block::Cornflower,
1105        Block::LilyOfTheValley,
1106        Block::WitherRose,
1107        Block::Torchflower,
1108        Block::ClosedEyeblossom,
1109    ])
1110});
1111pub static FOXES_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1112    HashSet::from_iter(vec![
1113        Block::GrassBlock,
1114        Block::Snow,
1115        Block::SnowBlock,
1116        Block::Podzol,
1117        Block::CoarseDirt,
1118    ])
1119});
1120pub static FROG_PREFER_JUMP_TO: LazyLock<HashSet<Block>> =
1121    LazyLock::new(|| HashSet::from_iter(vec![Block::LilyPad, Block::BigDripleaf]));
1122pub static FROGS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1123    HashSet::from_iter(vec![
1124        Block::GrassBlock,
1125        Block::Mud,
1126        Block::MangroveRoots,
1127        Block::MuddyMangroveRoots,
1128    ])
1129});
1130pub static GEODE_INVALID_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1131    HashSet::from_iter(vec![
1132        Block::Bedrock,
1133        Block::Water,
1134        Block::Lava,
1135        Block::Ice,
1136        Block::PackedIce,
1137        Block::BlueIce,
1138    ])
1139});
1140pub static GOATS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1141    HashSet::from_iter(vec![
1142        Block::Stone,
1143        Block::Snow,
1144        Block::SnowBlock,
1145        Block::PackedIce,
1146        Block::Gravel,
1147        Block::GrassBlock,
1148    ])
1149});
1150pub static GOLD_ORES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1151    HashSet::from_iter(vec![
1152        Block::GoldOre,
1153        Block::NetherGoldOre,
1154        Block::DeepslateGoldOre,
1155    ])
1156});
1157pub static GUARDED_BY_PIGLINS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1158    HashSet::from_iter(vec![
1159        Block::GoldBlock,
1160        Block::Barrel,
1161        Block::Chest,
1162        Block::EnderChest,
1163        Block::GildedBlackstone,
1164        Block::TrappedChest,
1165        Block::RawGoldBlock,
1166        Block::ShulkerBox,
1167        Block::BlackShulkerBox,
1168        Block::BlueShulkerBox,
1169        Block::BrownShulkerBox,
1170        Block::CyanShulkerBox,
1171        Block::GrayShulkerBox,
1172        Block::GreenShulkerBox,
1173        Block::LightBlueShulkerBox,
1174        Block::LightGrayShulkerBox,
1175        Block::LimeShulkerBox,
1176        Block::MagentaShulkerBox,
1177        Block::OrangeShulkerBox,
1178        Block::PinkShulkerBox,
1179        Block::PurpleShulkerBox,
1180        Block::RedShulkerBox,
1181        Block::WhiteShulkerBox,
1182        Block::YellowShulkerBox,
1183        Block::GoldOre,
1184        Block::NetherGoldOre,
1185        Block::DeepslateGoldOre,
1186    ])
1187});
1188pub static HOGLIN_REPELLENTS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1189    HashSet::from_iter(vec![
1190        Block::WarpedFungus,
1191        Block::PottedWarpedFungus,
1192        Block::NetherPortal,
1193        Block::RespawnAnchor,
1194    ])
1195});
1196pub static ICE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1197    HashSet::from_iter(vec![
1198        Block::Ice,
1199        Block::PackedIce,
1200        Block::BlueIce,
1201        Block::FrostedIce,
1202    ])
1203});
1204pub static IMPERMEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1205    HashSet::from_iter(vec![
1206        Block::Glass,
1207        Block::WhiteStainedGlass,
1208        Block::OrangeStainedGlass,
1209        Block::MagentaStainedGlass,
1210        Block::LightBlueStainedGlass,
1211        Block::YellowStainedGlass,
1212        Block::LimeStainedGlass,
1213        Block::PinkStainedGlass,
1214        Block::GrayStainedGlass,
1215        Block::LightGrayStainedGlass,
1216        Block::CyanStainedGlass,
1217        Block::PurpleStainedGlass,
1218        Block::BlueStainedGlass,
1219        Block::BrownStainedGlass,
1220        Block::GreenStainedGlass,
1221        Block::RedStainedGlass,
1222        Block::BlackStainedGlass,
1223        Block::TintedGlass,
1224    ])
1225});
1226pub static INCORRECT_FOR_DIAMOND_TOOL: LazyLock<HashSet<Block>> =
1227    LazyLock::new(|| HashSet::from_iter(vec![]));
1228pub static INCORRECT_FOR_GOLD_TOOL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1229    HashSet::from_iter(vec![
1230        Block::Obsidian,
1231        Block::CryingObsidian,
1232        Block::NetheriteBlock,
1233        Block::RespawnAnchor,
1234        Block::AncientDebris,
1235        Block::DiamondBlock,
1236        Block::DiamondOre,
1237        Block::DeepslateDiamondOre,
1238        Block::EmeraldOre,
1239        Block::DeepslateEmeraldOre,
1240        Block::EmeraldBlock,
1241        Block::GoldBlock,
1242        Block::RawGoldBlock,
1243        Block::GoldOre,
1244        Block::DeepslateGoldOre,
1245        Block::RedstoneOre,
1246        Block::DeepslateRedstoneOre,
1247        Block::IronBlock,
1248        Block::RawIronBlock,
1249        Block::IronOre,
1250        Block::DeepslateIronOre,
1251        Block::LapisBlock,
1252        Block::LapisOre,
1253        Block::DeepslateLapisOre,
1254        Block::CopperBlock,
1255        Block::RawCopperBlock,
1256        Block::CopperOre,
1257        Block::DeepslateCopperOre,
1258        Block::CutCopperSlab,
1259        Block::CutCopperStairs,
1260        Block::CutCopper,
1261        Block::WeatheredCopper,
1262        Block::WeatheredCutCopperSlab,
1263        Block::WeatheredCutCopperStairs,
1264        Block::WeatheredCutCopper,
1265        Block::OxidizedCopper,
1266        Block::OxidizedCutCopperSlab,
1267        Block::OxidizedCutCopperStairs,
1268        Block::OxidizedCutCopper,
1269        Block::ExposedCopper,
1270        Block::ExposedCutCopperSlab,
1271        Block::ExposedCutCopperStairs,
1272        Block::ExposedCutCopper,
1273        Block::WaxedCopperBlock,
1274        Block::WaxedCutCopperSlab,
1275        Block::WaxedCutCopperStairs,
1276        Block::WaxedCutCopper,
1277        Block::WaxedWeatheredCopper,
1278        Block::WaxedWeatheredCutCopperSlab,
1279        Block::WaxedWeatheredCutCopperStairs,
1280        Block::WaxedWeatheredCutCopper,
1281        Block::WaxedExposedCopper,
1282        Block::WaxedExposedCutCopperSlab,
1283        Block::WaxedExposedCutCopperStairs,
1284        Block::WaxedExposedCutCopper,
1285        Block::WaxedOxidizedCopper,
1286        Block::WaxedOxidizedCutCopperSlab,
1287        Block::WaxedOxidizedCutCopperStairs,
1288        Block::WaxedOxidizedCutCopper,
1289        Block::LightningRod,
1290        Block::Crafter,
1291        Block::ChiseledCopper,
1292        Block::ExposedChiseledCopper,
1293        Block::WeatheredChiseledCopper,
1294        Block::OxidizedChiseledCopper,
1295        Block::WaxedChiseledCopper,
1296        Block::WaxedExposedChiseledCopper,
1297        Block::WaxedWeatheredChiseledCopper,
1298        Block::WaxedOxidizedChiseledCopper,
1299        Block::CopperGrate,
1300        Block::ExposedCopperGrate,
1301        Block::WeatheredCopperGrate,
1302        Block::OxidizedCopperGrate,
1303        Block::WaxedCopperGrate,
1304        Block::WaxedExposedCopperGrate,
1305        Block::WaxedWeatheredCopperGrate,
1306        Block::WaxedOxidizedCopperGrate,
1307        Block::CopperBulb,
1308        Block::ExposedCopperBulb,
1309        Block::WeatheredCopperBulb,
1310        Block::OxidizedCopperBulb,
1311        Block::WaxedCopperBulb,
1312        Block::WaxedExposedCopperBulb,
1313        Block::WaxedWeatheredCopperBulb,
1314        Block::WaxedOxidizedCopperBulb,
1315        Block::CopperTrapdoor,
1316        Block::ExposedCopperTrapdoor,
1317        Block::WeatheredCopperTrapdoor,
1318        Block::OxidizedCopperTrapdoor,
1319        Block::WaxedCopperTrapdoor,
1320        Block::WaxedExposedCopperTrapdoor,
1321        Block::WaxedWeatheredCopperTrapdoor,
1322        Block::WaxedOxidizedCopperTrapdoor,
1323    ])
1324});
1325pub static INCORRECT_FOR_IRON_TOOL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1326    HashSet::from_iter(vec![
1327        Block::Obsidian,
1328        Block::CryingObsidian,
1329        Block::NetheriteBlock,
1330        Block::RespawnAnchor,
1331        Block::AncientDebris,
1332    ])
1333});
1334pub static INCORRECT_FOR_NETHERITE_TOOL: LazyLock<HashSet<Block>> =
1335    LazyLock::new(|| HashSet::from_iter(vec![]));
1336pub static INCORRECT_FOR_STONE_TOOL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1337    HashSet::from_iter(vec![
1338        Block::Obsidian,
1339        Block::CryingObsidian,
1340        Block::NetheriteBlock,
1341        Block::RespawnAnchor,
1342        Block::AncientDebris,
1343        Block::DiamondBlock,
1344        Block::DiamondOre,
1345        Block::DeepslateDiamondOre,
1346        Block::EmeraldOre,
1347        Block::DeepslateEmeraldOre,
1348        Block::EmeraldBlock,
1349        Block::GoldBlock,
1350        Block::RawGoldBlock,
1351        Block::GoldOre,
1352        Block::DeepslateGoldOre,
1353        Block::RedstoneOre,
1354        Block::DeepslateRedstoneOre,
1355    ])
1356});
1357pub static INCORRECT_FOR_WOODEN_TOOL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1358    HashSet::from_iter(vec![
1359        Block::Obsidian,
1360        Block::CryingObsidian,
1361        Block::NetheriteBlock,
1362        Block::RespawnAnchor,
1363        Block::AncientDebris,
1364        Block::DiamondBlock,
1365        Block::DiamondOre,
1366        Block::DeepslateDiamondOre,
1367        Block::EmeraldOre,
1368        Block::DeepslateEmeraldOre,
1369        Block::EmeraldBlock,
1370        Block::GoldBlock,
1371        Block::RawGoldBlock,
1372        Block::GoldOre,
1373        Block::DeepslateGoldOre,
1374        Block::RedstoneOre,
1375        Block::DeepslateRedstoneOre,
1376        Block::IronBlock,
1377        Block::RawIronBlock,
1378        Block::IronOre,
1379        Block::DeepslateIronOre,
1380        Block::LapisBlock,
1381        Block::LapisOre,
1382        Block::DeepslateLapisOre,
1383        Block::CopperBlock,
1384        Block::RawCopperBlock,
1385        Block::CopperOre,
1386        Block::DeepslateCopperOre,
1387        Block::CutCopperSlab,
1388        Block::CutCopperStairs,
1389        Block::CutCopper,
1390        Block::WeatheredCopper,
1391        Block::WeatheredCutCopperSlab,
1392        Block::WeatheredCutCopperStairs,
1393        Block::WeatheredCutCopper,
1394        Block::OxidizedCopper,
1395        Block::OxidizedCutCopperSlab,
1396        Block::OxidizedCutCopperStairs,
1397        Block::OxidizedCutCopper,
1398        Block::ExposedCopper,
1399        Block::ExposedCutCopperSlab,
1400        Block::ExposedCutCopperStairs,
1401        Block::ExposedCutCopper,
1402        Block::WaxedCopperBlock,
1403        Block::WaxedCutCopperSlab,
1404        Block::WaxedCutCopperStairs,
1405        Block::WaxedCutCopper,
1406        Block::WaxedWeatheredCopper,
1407        Block::WaxedWeatheredCutCopperSlab,
1408        Block::WaxedWeatheredCutCopperStairs,
1409        Block::WaxedWeatheredCutCopper,
1410        Block::WaxedExposedCopper,
1411        Block::WaxedExposedCutCopperSlab,
1412        Block::WaxedExposedCutCopperStairs,
1413        Block::WaxedExposedCutCopper,
1414        Block::WaxedOxidizedCopper,
1415        Block::WaxedOxidizedCutCopperSlab,
1416        Block::WaxedOxidizedCutCopperStairs,
1417        Block::WaxedOxidizedCutCopper,
1418        Block::LightningRod,
1419        Block::Crafter,
1420        Block::ChiseledCopper,
1421        Block::ExposedChiseledCopper,
1422        Block::WeatheredChiseledCopper,
1423        Block::OxidizedChiseledCopper,
1424        Block::WaxedChiseledCopper,
1425        Block::WaxedExposedChiseledCopper,
1426        Block::WaxedWeatheredChiseledCopper,
1427        Block::WaxedOxidizedChiseledCopper,
1428        Block::CopperGrate,
1429        Block::ExposedCopperGrate,
1430        Block::WeatheredCopperGrate,
1431        Block::OxidizedCopperGrate,
1432        Block::WaxedCopperGrate,
1433        Block::WaxedExposedCopperGrate,
1434        Block::WaxedWeatheredCopperGrate,
1435        Block::WaxedOxidizedCopperGrate,
1436        Block::CopperBulb,
1437        Block::ExposedCopperBulb,
1438        Block::WeatheredCopperBulb,
1439        Block::OxidizedCopperBulb,
1440        Block::WaxedCopperBulb,
1441        Block::WaxedExposedCopperBulb,
1442        Block::WaxedWeatheredCopperBulb,
1443        Block::WaxedOxidizedCopperBulb,
1444        Block::CopperTrapdoor,
1445        Block::ExposedCopperTrapdoor,
1446        Block::WeatheredCopperTrapdoor,
1447        Block::OxidizedCopperTrapdoor,
1448        Block::WaxedCopperTrapdoor,
1449        Block::WaxedExposedCopperTrapdoor,
1450        Block::WaxedWeatheredCopperTrapdoor,
1451        Block::WaxedOxidizedCopperTrapdoor,
1452    ])
1453});
1454pub static INFINIBURN_END: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1455    HashSet::from_iter(vec![Block::Bedrock, Block::Netherrack, Block::MagmaBlock])
1456});
1457pub static INFINIBURN_NETHER: LazyLock<HashSet<Block>> =
1458    LazyLock::new(|| HashSet::from_iter(vec![Block::Netherrack, Block::MagmaBlock]));
1459pub static INFINIBURN_OVERWORLD: LazyLock<HashSet<Block>> =
1460    LazyLock::new(|| HashSet::from_iter(vec![Block::Netherrack, Block::MagmaBlock]));
1461pub static INSIDE_STEP_SOUND_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1462    HashSet::from_iter(vec![
1463        Block::PowderSnow,
1464        Block::SculkVein,
1465        Block::GlowLichen,
1466        Block::LilyPad,
1467        Block::SmallAmethystBud,
1468        Block::PinkPetals,
1469        Block::Wildflowers,
1470        Block::LeafLitter,
1471    ])
1472});
1473pub static INVALID_SPAWN_INSIDE: LazyLock<HashSet<Block>> =
1474    LazyLock::new(|| HashSet::from_iter(vec![Block::EndPortal, Block::EndGateway]));
1475pub static IRON_ORES: LazyLock<HashSet<Block>> =
1476    LazyLock::new(|| HashSet::from_iter(vec![Block::IronOre, Block::DeepslateIronOre]));
1477pub static JUNGLE_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1478    HashSet::from_iter(vec![
1479        Block::JungleLog,
1480        Block::JungleWood,
1481        Block::StrippedJungleLog,
1482        Block::StrippedJungleWood,
1483    ])
1484});
1485pub static LAPIS_ORES: LazyLock<HashSet<Block>> =
1486    LazyLock::new(|| HashSet::from_iter(vec![Block::LapisOre, Block::DeepslateLapisOre]));
1487pub static LAVA_POOL_STONE_CANNOT_REPLACE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1488    HashSet::from_iter(vec![
1489        Block::Bedrock,
1490        Block::Spawner,
1491        Block::Chest,
1492        Block::EndPortalFrame,
1493        Block::ReinforcedDeepslate,
1494        Block::TrialSpawner,
1495        Block::Vault,
1496        Block::JungleLeaves,
1497        Block::OakLeaves,
1498        Block::SpruceLeaves,
1499        Block::PaleOakLeaves,
1500        Block::DarkOakLeaves,
1501        Block::AcaciaLeaves,
1502        Block::BirchLeaves,
1503        Block::AzaleaLeaves,
1504        Block::FloweringAzaleaLeaves,
1505        Block::MangroveLeaves,
1506        Block::CherryLeaves,
1507        Block::CrimsonStem,
1508        Block::StrippedCrimsonStem,
1509        Block::CrimsonHyphae,
1510        Block::StrippedCrimsonHyphae,
1511        Block::WarpedStem,
1512        Block::StrippedWarpedStem,
1513        Block::WarpedHyphae,
1514        Block::StrippedWarpedHyphae,
1515        Block::DarkOakLog,
1516        Block::DarkOakWood,
1517        Block::StrippedDarkOakLog,
1518        Block::StrippedDarkOakWood,
1519        Block::PaleOakLog,
1520        Block::PaleOakWood,
1521        Block::StrippedPaleOakLog,
1522        Block::StrippedPaleOakWood,
1523        Block::OakLog,
1524        Block::OakWood,
1525        Block::StrippedOakLog,
1526        Block::StrippedOakWood,
1527        Block::AcaciaLog,
1528        Block::AcaciaWood,
1529        Block::StrippedAcaciaLog,
1530        Block::StrippedAcaciaWood,
1531        Block::BirchLog,
1532        Block::BirchWood,
1533        Block::StrippedBirchLog,
1534        Block::StrippedBirchWood,
1535        Block::JungleLog,
1536        Block::JungleWood,
1537        Block::StrippedJungleLog,
1538        Block::StrippedJungleWood,
1539        Block::SpruceLog,
1540        Block::SpruceWood,
1541        Block::StrippedSpruceLog,
1542        Block::StrippedSpruceWood,
1543        Block::MangroveLog,
1544        Block::MangroveWood,
1545        Block::StrippedMangroveLog,
1546        Block::StrippedMangroveWood,
1547        Block::CherryLog,
1548        Block::CherryWood,
1549        Block::StrippedCherryLog,
1550        Block::StrippedCherryWood,
1551    ])
1552});
1553pub static LEAVES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1554    HashSet::from_iter(vec![
1555        Block::JungleLeaves,
1556        Block::OakLeaves,
1557        Block::SpruceLeaves,
1558        Block::PaleOakLeaves,
1559        Block::DarkOakLeaves,
1560        Block::AcaciaLeaves,
1561        Block::BirchLeaves,
1562        Block::AzaleaLeaves,
1563        Block::FloweringAzaleaLeaves,
1564        Block::MangroveLeaves,
1565        Block::CherryLeaves,
1566    ])
1567});
1568pub static LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1569    HashSet::from_iter(vec![
1570        Block::CrimsonStem,
1571        Block::StrippedCrimsonStem,
1572        Block::CrimsonHyphae,
1573        Block::StrippedCrimsonHyphae,
1574        Block::WarpedStem,
1575        Block::StrippedWarpedStem,
1576        Block::WarpedHyphae,
1577        Block::StrippedWarpedHyphae,
1578        Block::DarkOakLog,
1579        Block::DarkOakWood,
1580        Block::StrippedDarkOakLog,
1581        Block::StrippedDarkOakWood,
1582        Block::PaleOakLog,
1583        Block::PaleOakWood,
1584        Block::StrippedPaleOakLog,
1585        Block::StrippedPaleOakWood,
1586        Block::OakLog,
1587        Block::OakWood,
1588        Block::StrippedOakLog,
1589        Block::StrippedOakWood,
1590        Block::AcaciaLog,
1591        Block::AcaciaWood,
1592        Block::StrippedAcaciaLog,
1593        Block::StrippedAcaciaWood,
1594        Block::BirchLog,
1595        Block::BirchWood,
1596        Block::StrippedBirchLog,
1597        Block::StrippedBirchWood,
1598        Block::JungleLog,
1599        Block::JungleWood,
1600        Block::StrippedJungleLog,
1601        Block::StrippedJungleWood,
1602        Block::SpruceLog,
1603        Block::SpruceWood,
1604        Block::StrippedSpruceLog,
1605        Block::StrippedSpruceWood,
1606        Block::MangroveLog,
1607        Block::MangroveWood,
1608        Block::StrippedMangroveLog,
1609        Block::StrippedMangroveWood,
1610        Block::CherryLog,
1611        Block::CherryWood,
1612        Block::StrippedCherryLog,
1613        Block::StrippedCherryWood,
1614    ])
1615});
1616pub static LOGS_THAT_BURN: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1617    HashSet::from_iter(vec![
1618        Block::DarkOakLog,
1619        Block::DarkOakWood,
1620        Block::StrippedDarkOakLog,
1621        Block::StrippedDarkOakWood,
1622        Block::PaleOakLog,
1623        Block::PaleOakWood,
1624        Block::StrippedPaleOakLog,
1625        Block::StrippedPaleOakWood,
1626        Block::OakLog,
1627        Block::OakWood,
1628        Block::StrippedOakLog,
1629        Block::StrippedOakWood,
1630        Block::AcaciaLog,
1631        Block::AcaciaWood,
1632        Block::StrippedAcaciaLog,
1633        Block::StrippedAcaciaWood,
1634        Block::BirchLog,
1635        Block::BirchWood,
1636        Block::StrippedBirchLog,
1637        Block::StrippedBirchWood,
1638        Block::JungleLog,
1639        Block::JungleWood,
1640        Block::StrippedJungleLog,
1641        Block::StrippedJungleWood,
1642        Block::SpruceLog,
1643        Block::SpruceWood,
1644        Block::StrippedSpruceLog,
1645        Block::StrippedSpruceWood,
1646        Block::MangroveLog,
1647        Block::MangroveWood,
1648        Block::StrippedMangroveLog,
1649        Block::StrippedMangroveWood,
1650        Block::CherryLog,
1651        Block::CherryWood,
1652        Block::StrippedCherryLog,
1653        Block::StrippedCherryWood,
1654    ])
1655});
1656pub static LUSH_GROUND_REPLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1657    HashSet::from_iter(vec![
1658        Block::Clay,
1659        Block::Gravel,
1660        Block::Sand,
1661        Block::Stone,
1662        Block::Granite,
1663        Block::Diorite,
1664        Block::Andesite,
1665        Block::Tuff,
1666        Block::Deepslate,
1667        Block::CaveVinesPlant,
1668        Block::CaveVines,
1669        Block::Dirt,
1670        Block::GrassBlock,
1671        Block::Podzol,
1672        Block::CoarseDirt,
1673        Block::Mycelium,
1674        Block::RootedDirt,
1675        Block::MossBlock,
1676        Block::PaleMossBlock,
1677        Block::Mud,
1678        Block::MuddyMangroveRoots,
1679    ])
1680});
1681pub static MAINTAINS_FARMLAND: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1682    HashSet::from_iter(vec![
1683        Block::PumpkinStem,
1684        Block::AttachedPumpkinStem,
1685        Block::MelonStem,
1686        Block::AttachedMelonStem,
1687        Block::Beetroots,
1688        Block::Carrots,
1689        Block::Potatoes,
1690        Block::TorchflowerCrop,
1691        Block::Torchflower,
1692        Block::PitcherCrop,
1693        Block::Wheat,
1694    ])
1695});
1696pub static MANGROVE_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1697    HashSet::from_iter(vec![
1698        Block::MangroveLog,
1699        Block::MangroveWood,
1700        Block::StrippedMangroveLog,
1701        Block::StrippedMangroveWood,
1702    ])
1703});
1704pub static MANGROVE_LOGS_CAN_GROW_THROUGH: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1705    HashSet::from_iter(vec![
1706        Block::Mud,
1707        Block::MuddyMangroveRoots,
1708        Block::MangroveRoots,
1709        Block::MangroveLeaves,
1710        Block::MangroveLog,
1711        Block::MangrovePropagule,
1712        Block::MossCarpet,
1713        Block::Vine,
1714    ])
1715});
1716pub static MANGROVE_ROOTS_CAN_GROW_THROUGH: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1717    HashSet::from_iter(vec![
1718        Block::Mud,
1719        Block::MuddyMangroveRoots,
1720        Block::MangroveRoots,
1721        Block::MossCarpet,
1722        Block::Vine,
1723        Block::MangrovePropagule,
1724        Block::Snow,
1725    ])
1726});
1727pub static MINEABLE_AXE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1728    HashSet::from_iter(vec![
1729        Block::NoteBlock,
1730        Block::Bamboo,
1731        Block::Barrel,
1732        Block::BeeNest,
1733        Block::Beehive,
1734        Block::BigDripleafStem,
1735        Block::BigDripleaf,
1736        Block::Bookshelf,
1737        Block::BrownMushroomBlock,
1738        Block::Campfire,
1739        Block::CartographyTable,
1740        Block::CarvedPumpkin,
1741        Block::Chest,
1742        Block::ChorusFlower,
1743        Block::ChorusPlant,
1744        Block::Cocoa,
1745        Block::Composter,
1746        Block::CraftingTable,
1747        Block::DaylightDetector,
1748        Block::FletchingTable,
1749        Block::GlowLichen,
1750        Block::JackOLantern,
1751        Block::Jukebox,
1752        Block::Ladder,
1753        Block::Lectern,
1754        Block::Loom,
1755        Block::Melon,
1756        Block::MushroomStem,
1757        Block::Pumpkin,
1758        Block::RedMushroomBlock,
1759        Block::SmithingTable,
1760        Block::SoulCampfire,
1761        Block::TrappedChest,
1762        Block::Vine,
1763        Block::MangroveRoots,
1764        Block::BambooMosaic,
1765        Block::BambooMosaicSlab,
1766        Block::BambooMosaicStairs,
1767        Block::ChiseledBookshelf,
1768        Block::CreakingHeart,
1769        Block::WhiteBanner,
1770        Block::OrangeBanner,
1771        Block::MagentaBanner,
1772        Block::LightBlueBanner,
1773        Block::YellowBanner,
1774        Block::LimeBanner,
1775        Block::PinkBanner,
1776        Block::GrayBanner,
1777        Block::LightGrayBanner,
1778        Block::CyanBanner,
1779        Block::PurpleBanner,
1780        Block::BlueBanner,
1781        Block::BrownBanner,
1782        Block::GreenBanner,
1783        Block::RedBanner,
1784        Block::BlackBanner,
1785        Block::WhiteWallBanner,
1786        Block::OrangeWallBanner,
1787        Block::MagentaWallBanner,
1788        Block::LightBlueWallBanner,
1789        Block::YellowWallBanner,
1790        Block::LimeWallBanner,
1791        Block::PinkWallBanner,
1792        Block::GrayWallBanner,
1793        Block::LightGrayWallBanner,
1794        Block::CyanWallBanner,
1795        Block::PurpleWallBanner,
1796        Block::BlueWallBanner,
1797        Block::BrownWallBanner,
1798        Block::GreenWallBanner,
1799        Block::RedWallBanner,
1800        Block::BlackWallBanner,
1801        Block::AcaciaFenceGate,
1802        Block::BirchFenceGate,
1803        Block::DarkOakFenceGate,
1804        Block::PaleOakFenceGate,
1805        Block::JungleFenceGate,
1806        Block::OakFenceGate,
1807        Block::SpruceFenceGate,
1808        Block::CrimsonFenceGate,
1809        Block::WarpedFenceGate,
1810        Block::MangroveFenceGate,
1811        Block::BambooFenceGate,
1812        Block::CherryFenceGate,
1813        Block::OakPlanks,
1814        Block::SprucePlanks,
1815        Block::BirchPlanks,
1816        Block::JunglePlanks,
1817        Block::AcaciaPlanks,
1818        Block::DarkOakPlanks,
1819        Block::PaleOakPlanks,
1820        Block::CrimsonPlanks,
1821        Block::WarpedPlanks,
1822        Block::MangrovePlanks,
1823        Block::BambooPlanks,
1824        Block::CherryPlanks,
1825        Block::OakButton,
1826        Block::SpruceButton,
1827        Block::BirchButton,
1828        Block::JungleButton,
1829        Block::AcaciaButton,
1830        Block::DarkOakButton,
1831        Block::PaleOakButton,
1832        Block::CrimsonButton,
1833        Block::WarpedButton,
1834        Block::MangroveButton,
1835        Block::BambooButton,
1836        Block::CherryButton,
1837        Block::OakDoor,
1838        Block::SpruceDoor,
1839        Block::BirchDoor,
1840        Block::JungleDoor,
1841        Block::AcaciaDoor,
1842        Block::DarkOakDoor,
1843        Block::PaleOakDoor,
1844        Block::CrimsonDoor,
1845        Block::WarpedDoor,
1846        Block::MangroveDoor,
1847        Block::BambooDoor,
1848        Block::CherryDoor,
1849        Block::OakFence,
1850        Block::AcaciaFence,
1851        Block::DarkOakFence,
1852        Block::PaleOakFence,
1853        Block::SpruceFence,
1854        Block::BirchFence,
1855        Block::JungleFence,
1856        Block::CrimsonFence,
1857        Block::WarpedFence,
1858        Block::MangroveFence,
1859        Block::BambooFence,
1860        Block::CherryFence,
1861        Block::OakPressurePlate,
1862        Block::SprucePressurePlate,
1863        Block::BirchPressurePlate,
1864        Block::JunglePressurePlate,
1865        Block::AcaciaPressurePlate,
1866        Block::DarkOakPressurePlate,
1867        Block::PaleOakPressurePlate,
1868        Block::CrimsonPressurePlate,
1869        Block::WarpedPressurePlate,
1870        Block::MangrovePressurePlate,
1871        Block::BambooPressurePlate,
1872        Block::CherryPressurePlate,
1873        Block::OakSlab,
1874        Block::SpruceSlab,
1875        Block::BirchSlab,
1876        Block::JungleSlab,
1877        Block::AcaciaSlab,
1878        Block::DarkOakSlab,
1879        Block::PaleOakSlab,
1880        Block::CrimsonSlab,
1881        Block::WarpedSlab,
1882        Block::MangroveSlab,
1883        Block::BambooSlab,
1884        Block::CherrySlab,
1885        Block::OakStairs,
1886        Block::SpruceStairs,
1887        Block::BirchStairs,
1888        Block::JungleStairs,
1889        Block::AcaciaStairs,
1890        Block::DarkOakStairs,
1891        Block::PaleOakStairs,
1892        Block::CrimsonStairs,
1893        Block::WarpedStairs,
1894        Block::MangroveStairs,
1895        Block::BambooStairs,
1896        Block::CherryStairs,
1897        Block::AcaciaTrapdoor,
1898        Block::BirchTrapdoor,
1899        Block::DarkOakTrapdoor,
1900        Block::PaleOakTrapdoor,
1901        Block::JungleTrapdoor,
1902        Block::OakTrapdoor,
1903        Block::SpruceTrapdoor,
1904        Block::CrimsonTrapdoor,
1905        Block::WarpedTrapdoor,
1906        Block::MangroveTrapdoor,
1907        Block::BambooTrapdoor,
1908        Block::CherryTrapdoor,
1909        Block::BambooBlock,
1910        Block::StrippedBambooBlock,
1911        Block::CrimsonStem,
1912        Block::StrippedCrimsonStem,
1913        Block::CrimsonHyphae,
1914        Block::StrippedCrimsonHyphae,
1915        Block::WarpedStem,
1916        Block::StrippedWarpedStem,
1917        Block::WarpedHyphae,
1918        Block::StrippedWarpedHyphae,
1919        Block::OakSign,
1920        Block::SpruceSign,
1921        Block::BirchSign,
1922        Block::AcaciaSign,
1923        Block::JungleSign,
1924        Block::DarkOakSign,
1925        Block::PaleOakSign,
1926        Block::CrimsonSign,
1927        Block::WarpedSign,
1928        Block::MangroveSign,
1929        Block::BambooSign,
1930        Block::CherrySign,
1931        Block::OakWallSign,
1932        Block::SpruceWallSign,
1933        Block::BirchWallSign,
1934        Block::AcaciaWallSign,
1935        Block::JungleWallSign,
1936        Block::DarkOakWallSign,
1937        Block::PaleOakWallSign,
1938        Block::CrimsonWallSign,
1939        Block::WarpedWallSign,
1940        Block::MangroveWallSign,
1941        Block::BambooWallSign,
1942        Block::CherryWallSign,
1943        Block::OakHangingSign,
1944        Block::SpruceHangingSign,
1945        Block::BirchHangingSign,
1946        Block::AcaciaHangingSign,
1947        Block::CherryHangingSign,
1948        Block::JungleHangingSign,
1949        Block::DarkOakHangingSign,
1950        Block::PaleOakHangingSign,
1951        Block::CrimsonHangingSign,
1952        Block::WarpedHangingSign,
1953        Block::MangroveHangingSign,
1954        Block::BambooHangingSign,
1955        Block::OakWallHangingSign,
1956        Block::SpruceWallHangingSign,
1957        Block::BirchWallHangingSign,
1958        Block::AcaciaWallHangingSign,
1959        Block::CherryWallHangingSign,
1960        Block::JungleWallHangingSign,
1961        Block::DarkOakWallHangingSign,
1962        Block::PaleOakWallHangingSign,
1963        Block::CrimsonWallHangingSign,
1964        Block::WarpedWallHangingSign,
1965        Block::MangroveWallHangingSign,
1966        Block::BambooWallHangingSign,
1967        Block::DarkOakLog,
1968        Block::DarkOakWood,
1969        Block::StrippedDarkOakLog,
1970        Block::StrippedDarkOakWood,
1971        Block::PaleOakLog,
1972        Block::PaleOakWood,
1973        Block::StrippedPaleOakLog,
1974        Block::StrippedPaleOakWood,
1975        Block::OakLog,
1976        Block::OakWood,
1977        Block::StrippedOakLog,
1978        Block::StrippedOakWood,
1979        Block::AcaciaLog,
1980        Block::AcaciaWood,
1981        Block::StrippedAcaciaLog,
1982        Block::StrippedAcaciaWood,
1983        Block::BirchLog,
1984        Block::BirchWood,
1985        Block::StrippedBirchLog,
1986        Block::StrippedBirchWood,
1987        Block::JungleLog,
1988        Block::JungleWood,
1989        Block::StrippedJungleLog,
1990        Block::StrippedJungleWood,
1991        Block::SpruceLog,
1992        Block::SpruceWood,
1993        Block::StrippedSpruceLog,
1994        Block::StrippedSpruceWood,
1995        Block::MangroveLog,
1996        Block::MangroveWood,
1997        Block::StrippedMangroveLog,
1998        Block::StrippedMangroveWood,
1999        Block::CherryLog,
2000        Block::CherryWood,
2001        Block::StrippedCherryLog,
2002        Block::StrippedCherryWood,
2003    ])
2004});
2005pub static MINEABLE_HOE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2006    HashSet::from_iter(vec![
2007        Block::NetherWartBlock,
2008        Block::WarpedWartBlock,
2009        Block::HayBlock,
2010        Block::DriedKelpBlock,
2011        Block::Target,
2012        Block::Shroomlight,
2013        Block::Sponge,
2014        Block::WetSponge,
2015        Block::SculkSensor,
2016        Block::CalibratedSculkSensor,
2017        Block::MossBlock,
2018        Block::MossCarpet,
2019        Block::PaleMossBlock,
2020        Block::PaleMossCarpet,
2021        Block::Sculk,
2022        Block::SculkCatalyst,
2023        Block::SculkVein,
2024        Block::SculkShrieker,
2025        Block::JungleLeaves,
2026        Block::OakLeaves,
2027        Block::SpruceLeaves,
2028        Block::PaleOakLeaves,
2029        Block::DarkOakLeaves,
2030        Block::AcaciaLeaves,
2031        Block::BirchLeaves,
2032        Block::AzaleaLeaves,
2033        Block::FloweringAzaleaLeaves,
2034        Block::MangroveLeaves,
2035        Block::CherryLeaves,
2036    ])
2037});
2038pub static MINEABLE_PICKAXE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2039    HashSet::from_iter(vec![
2040        Block::Stone,
2041        Block::Granite,
2042        Block::PolishedGranite,
2043        Block::Diorite,
2044        Block::PolishedDiorite,
2045        Block::Andesite,
2046        Block::PolishedAndesite,
2047        Block::Cobblestone,
2048        Block::GoldOre,
2049        Block::DeepslateGoldOre,
2050        Block::IronOre,
2051        Block::DeepslateIronOre,
2052        Block::CoalOre,
2053        Block::DeepslateCoalOre,
2054        Block::NetherGoldOre,
2055        Block::LapisOre,
2056        Block::DeepslateLapisOre,
2057        Block::LapisBlock,
2058        Block::Dispenser,
2059        Block::Sandstone,
2060        Block::ChiseledSandstone,
2061        Block::CutSandstone,
2062        Block::GoldBlock,
2063        Block::IronBlock,
2064        Block::Bricks,
2065        Block::MossyCobblestone,
2066        Block::Obsidian,
2067        Block::Spawner,
2068        Block::DiamondOre,
2069        Block::DeepslateDiamondOre,
2070        Block::DiamondBlock,
2071        Block::Furnace,
2072        Block::CobblestoneStairs,
2073        Block::StonePressurePlate,
2074        Block::IronDoor,
2075        Block::RedstoneOre,
2076        Block::DeepslateRedstoneOre,
2077        Block::Netherrack,
2078        Block::Basalt,
2079        Block::PolishedBasalt,
2080        Block::StoneBricks,
2081        Block::MossyStoneBricks,
2082        Block::CrackedStoneBricks,
2083        Block::ChiseledStoneBricks,
2084        Block::IronBars,
2085        Block::Chain,
2086        Block::BrickStairs,
2087        Block::StoneBrickStairs,
2088        Block::NetherBricks,
2089        Block::NetherBrickFence,
2090        Block::NetherBrickStairs,
2091        Block::EnchantingTable,
2092        Block::BrewingStand,
2093        Block::EndStone,
2094        Block::SandstoneStairs,
2095        Block::EmeraldOre,
2096        Block::DeepslateEmeraldOre,
2097        Block::EnderChest,
2098        Block::EmeraldBlock,
2099        Block::LightWeightedPressurePlate,
2100        Block::HeavyWeightedPressurePlate,
2101        Block::RedstoneBlock,
2102        Block::NetherQuartzOre,
2103        Block::Hopper,
2104        Block::QuartzBlock,
2105        Block::ChiseledQuartzBlock,
2106        Block::QuartzPillar,
2107        Block::QuartzStairs,
2108        Block::Dropper,
2109        Block::WhiteTerracotta,
2110        Block::OrangeTerracotta,
2111        Block::MagentaTerracotta,
2112        Block::LightBlueTerracotta,
2113        Block::YellowTerracotta,
2114        Block::LimeTerracotta,
2115        Block::PinkTerracotta,
2116        Block::GrayTerracotta,
2117        Block::LightGrayTerracotta,
2118        Block::CyanTerracotta,
2119        Block::PurpleTerracotta,
2120        Block::BlueTerracotta,
2121        Block::BrownTerracotta,
2122        Block::GreenTerracotta,
2123        Block::RedTerracotta,
2124        Block::BlackTerracotta,
2125        Block::IronTrapdoor,
2126        Block::Prismarine,
2127        Block::PrismarineBricks,
2128        Block::DarkPrismarine,
2129        Block::PrismarineStairs,
2130        Block::PrismarineBrickStairs,
2131        Block::DarkPrismarineStairs,
2132        Block::PrismarineSlab,
2133        Block::PrismarineBrickSlab,
2134        Block::DarkPrismarineSlab,
2135        Block::Terracotta,
2136        Block::CoalBlock,
2137        Block::RedSandstone,
2138        Block::ChiseledRedSandstone,
2139        Block::CutRedSandstone,
2140        Block::RedSandstoneStairs,
2141        Block::StoneSlab,
2142        Block::SmoothStoneSlab,
2143        Block::SandstoneSlab,
2144        Block::CutSandstoneSlab,
2145        Block::PetrifiedOakSlab,
2146        Block::CobblestoneSlab,
2147        Block::BrickSlab,
2148        Block::StoneBrickSlab,
2149        Block::NetherBrickSlab,
2150        Block::QuartzSlab,
2151        Block::RedSandstoneSlab,
2152        Block::CutRedSandstoneSlab,
2153        Block::PurpurSlab,
2154        Block::SmoothStone,
2155        Block::SmoothSandstone,
2156        Block::SmoothQuartz,
2157        Block::SmoothRedSandstone,
2158        Block::PurpurBlock,
2159        Block::PurpurPillar,
2160        Block::PurpurStairs,
2161        Block::EndStoneBricks,
2162        Block::MagmaBlock,
2163        Block::RedNetherBricks,
2164        Block::BoneBlock,
2165        Block::Observer,
2166        Block::WhiteGlazedTerracotta,
2167        Block::OrangeGlazedTerracotta,
2168        Block::MagentaGlazedTerracotta,
2169        Block::LightBlueGlazedTerracotta,
2170        Block::YellowGlazedTerracotta,
2171        Block::LimeGlazedTerracotta,
2172        Block::PinkGlazedTerracotta,
2173        Block::GrayGlazedTerracotta,
2174        Block::LightGrayGlazedTerracotta,
2175        Block::CyanGlazedTerracotta,
2176        Block::PurpleGlazedTerracotta,
2177        Block::BlueGlazedTerracotta,
2178        Block::BrownGlazedTerracotta,
2179        Block::GreenGlazedTerracotta,
2180        Block::RedGlazedTerracotta,
2181        Block::BlackGlazedTerracotta,
2182        Block::WhiteConcrete,
2183        Block::OrangeConcrete,
2184        Block::MagentaConcrete,
2185        Block::LightBlueConcrete,
2186        Block::YellowConcrete,
2187        Block::LimeConcrete,
2188        Block::PinkConcrete,
2189        Block::GrayConcrete,
2190        Block::LightGrayConcrete,
2191        Block::CyanConcrete,
2192        Block::PurpleConcrete,
2193        Block::BlueConcrete,
2194        Block::BrownConcrete,
2195        Block::GreenConcrete,
2196        Block::RedConcrete,
2197        Block::BlackConcrete,
2198        Block::DeadTubeCoralBlock,
2199        Block::DeadBrainCoralBlock,
2200        Block::DeadBubbleCoralBlock,
2201        Block::DeadFireCoralBlock,
2202        Block::DeadHornCoralBlock,
2203        Block::TubeCoralBlock,
2204        Block::BrainCoralBlock,
2205        Block::BubbleCoralBlock,
2206        Block::FireCoralBlock,
2207        Block::HornCoralBlock,
2208        Block::DeadTubeCoral,
2209        Block::DeadBrainCoral,
2210        Block::DeadBubbleCoral,
2211        Block::DeadFireCoral,
2212        Block::DeadHornCoral,
2213        Block::DeadTubeCoralFan,
2214        Block::DeadBrainCoralFan,
2215        Block::DeadBubbleCoralFan,
2216        Block::DeadFireCoralFan,
2217        Block::DeadHornCoralFan,
2218        Block::DeadTubeCoralWallFan,
2219        Block::DeadBrainCoralWallFan,
2220        Block::DeadBubbleCoralWallFan,
2221        Block::DeadFireCoralWallFan,
2222        Block::DeadHornCoralWallFan,
2223        Block::PolishedGraniteStairs,
2224        Block::SmoothRedSandstoneStairs,
2225        Block::MossyStoneBrickStairs,
2226        Block::PolishedDioriteStairs,
2227        Block::MossyCobblestoneStairs,
2228        Block::EndStoneBrickStairs,
2229        Block::StoneStairs,
2230        Block::SmoothSandstoneStairs,
2231        Block::SmoothQuartzStairs,
2232        Block::GraniteStairs,
2233        Block::AndesiteStairs,
2234        Block::RedNetherBrickStairs,
2235        Block::PolishedAndesiteStairs,
2236        Block::DioriteStairs,
2237        Block::PolishedGraniteSlab,
2238        Block::SmoothRedSandstoneSlab,
2239        Block::MossyStoneBrickSlab,
2240        Block::PolishedDioriteSlab,
2241        Block::MossyCobblestoneSlab,
2242        Block::EndStoneBrickSlab,
2243        Block::SmoothSandstoneSlab,
2244        Block::SmoothQuartzSlab,
2245        Block::GraniteSlab,
2246        Block::AndesiteSlab,
2247        Block::RedNetherBrickSlab,
2248        Block::PolishedAndesiteSlab,
2249        Block::DioriteSlab,
2250        Block::Smoker,
2251        Block::BlastFurnace,
2252        Block::Grindstone,
2253        Block::Stonecutter,
2254        Block::Bell,
2255        Block::Lantern,
2256        Block::SoulLantern,
2257        Block::WarpedNylium,
2258        Block::CrimsonNylium,
2259        Block::NetheriteBlock,
2260        Block::AncientDebris,
2261        Block::CryingObsidian,
2262        Block::RespawnAnchor,
2263        Block::Lodestone,
2264        Block::Blackstone,
2265        Block::BlackstoneStairs,
2266        Block::BlackstoneSlab,
2267        Block::PolishedBlackstone,
2268        Block::PolishedBlackstoneBricks,
2269        Block::CrackedPolishedBlackstoneBricks,
2270        Block::ChiseledPolishedBlackstone,
2271        Block::PolishedBlackstoneBrickSlab,
2272        Block::PolishedBlackstoneBrickStairs,
2273        Block::GildedBlackstone,
2274        Block::PolishedBlackstoneStairs,
2275        Block::PolishedBlackstoneSlab,
2276        Block::PolishedBlackstonePressurePlate,
2277        Block::ChiseledNetherBricks,
2278        Block::CrackedNetherBricks,
2279        Block::QuartzBricks,
2280        Block::Tuff,
2281        Block::Calcite,
2282        Block::OxidizedCopper,
2283        Block::WeatheredCopper,
2284        Block::ExposedCopper,
2285        Block::CopperBlock,
2286        Block::CopperOre,
2287        Block::DeepslateCopperOre,
2288        Block::OxidizedCutCopper,
2289        Block::WeatheredCutCopper,
2290        Block::ExposedCutCopper,
2291        Block::CutCopper,
2292        Block::OxidizedCutCopperStairs,
2293        Block::WeatheredCutCopperStairs,
2294        Block::ExposedCutCopperStairs,
2295        Block::CutCopperStairs,
2296        Block::OxidizedCutCopperSlab,
2297        Block::WeatheredCutCopperSlab,
2298        Block::ExposedCutCopperSlab,
2299        Block::CutCopperSlab,
2300        Block::WaxedCopperBlock,
2301        Block::WaxedWeatheredCopper,
2302        Block::WaxedExposedCopper,
2303        Block::WaxedOxidizedCopper,
2304        Block::WaxedOxidizedCutCopper,
2305        Block::WaxedWeatheredCutCopper,
2306        Block::WaxedExposedCutCopper,
2307        Block::WaxedCutCopper,
2308        Block::WaxedOxidizedCutCopperStairs,
2309        Block::WaxedWeatheredCutCopperStairs,
2310        Block::WaxedExposedCutCopperStairs,
2311        Block::WaxedCutCopperStairs,
2312        Block::WaxedOxidizedCutCopperSlab,
2313        Block::WaxedWeatheredCutCopperSlab,
2314        Block::WaxedExposedCutCopperSlab,
2315        Block::WaxedCutCopperSlab,
2316        Block::LightningRod,
2317        Block::PointedDripstone,
2318        Block::DripstoneBlock,
2319        Block::Deepslate,
2320        Block::CobbledDeepslate,
2321        Block::CobbledDeepslateStairs,
2322        Block::CobbledDeepslateSlab,
2323        Block::PolishedDeepslate,
2324        Block::PolishedDeepslateStairs,
2325        Block::PolishedDeepslateSlab,
2326        Block::DeepslateTiles,
2327        Block::DeepslateTileStairs,
2328        Block::DeepslateTileSlab,
2329        Block::DeepslateBricks,
2330        Block::DeepslateBrickStairs,
2331        Block::DeepslateBrickSlab,
2332        Block::ChiseledDeepslate,
2333        Block::CrackedDeepslateBricks,
2334        Block::CrackedDeepslateTiles,
2335        Block::SmoothBasalt,
2336        Block::RawIronBlock,
2337        Block::RawCopperBlock,
2338        Block::RawGoldBlock,
2339        Block::Ice,
2340        Block::PackedIce,
2341        Block::BlueIce,
2342        Block::Piston,
2343        Block::StickyPiston,
2344        Block::PistonHead,
2345        Block::AmethystCluster,
2346        Block::SmallAmethystBud,
2347        Block::MediumAmethystBud,
2348        Block::LargeAmethystBud,
2349        Block::AmethystBlock,
2350        Block::BuddingAmethyst,
2351        Block::InfestedCobblestone,
2352        Block::InfestedChiseledStoneBricks,
2353        Block::InfestedCrackedStoneBricks,
2354        Block::InfestedDeepslate,
2355        Block::InfestedStone,
2356        Block::InfestedMossyStoneBricks,
2357        Block::InfestedStoneBricks,
2358        Block::Conduit,
2359        Block::MudBricks,
2360        Block::MudBrickStairs,
2361        Block::MudBrickSlab,
2362        Block::PackedMud,
2363        Block::Crafter,
2364        Block::TuffSlab,
2365        Block::TuffStairs,
2366        Block::TuffWall,
2367        Block::ChiseledTuff,
2368        Block::PolishedTuff,
2369        Block::PolishedTuffSlab,
2370        Block::PolishedTuffStairs,
2371        Block::PolishedTuffWall,
2372        Block::TuffBricks,
2373        Block::TuffBrickSlab,
2374        Block::TuffBrickStairs,
2375        Block::TuffBrickWall,
2376        Block::ChiseledTuffBricks,
2377        Block::ChiseledCopper,
2378        Block::ExposedChiseledCopper,
2379        Block::WeatheredChiseledCopper,
2380        Block::OxidizedChiseledCopper,
2381        Block::WaxedChiseledCopper,
2382        Block::WaxedExposedChiseledCopper,
2383        Block::WaxedWeatheredChiseledCopper,
2384        Block::WaxedOxidizedChiseledCopper,
2385        Block::CopperGrate,
2386        Block::ExposedCopperGrate,
2387        Block::WeatheredCopperGrate,
2388        Block::OxidizedCopperGrate,
2389        Block::WaxedCopperGrate,
2390        Block::WaxedExposedCopperGrate,
2391        Block::WaxedWeatheredCopperGrate,
2392        Block::WaxedOxidizedCopperGrate,
2393        Block::CopperBulb,
2394        Block::ExposedCopperBulb,
2395        Block::WeatheredCopperBulb,
2396        Block::OxidizedCopperBulb,
2397        Block::WaxedCopperBulb,
2398        Block::WaxedExposedCopperBulb,
2399        Block::WaxedWeatheredCopperBulb,
2400        Block::WaxedOxidizedCopperBulb,
2401        Block::CopperDoor,
2402        Block::ExposedCopperDoor,
2403        Block::WeatheredCopperDoor,
2404        Block::OxidizedCopperDoor,
2405        Block::WaxedCopperDoor,
2406        Block::WaxedExposedCopperDoor,
2407        Block::WaxedWeatheredCopperDoor,
2408        Block::WaxedOxidizedCopperDoor,
2409        Block::CopperTrapdoor,
2410        Block::ExposedCopperTrapdoor,
2411        Block::WeatheredCopperTrapdoor,
2412        Block::OxidizedCopperTrapdoor,
2413        Block::WaxedCopperTrapdoor,
2414        Block::WaxedExposedCopperTrapdoor,
2415        Block::WaxedWeatheredCopperTrapdoor,
2416        Block::WaxedOxidizedCopperTrapdoor,
2417        Block::HeavyCore,
2418        Block::ResinBricks,
2419        Block::ResinBrickSlab,
2420        Block::ResinBrickWall,
2421        Block::ResinBrickStairs,
2422        Block::ChiseledResinBricks,
2423        Block::StoneButton,
2424        Block::PolishedBlackstoneButton,
2425        Block::CobblestoneWall,
2426        Block::MossyCobblestoneWall,
2427        Block::BrickWall,
2428        Block::PrismarineWall,
2429        Block::RedSandstoneWall,
2430        Block::MossyStoneBrickWall,
2431        Block::GraniteWall,
2432        Block::StoneBrickWall,
2433        Block::NetherBrickWall,
2434        Block::AndesiteWall,
2435        Block::RedNetherBrickWall,
2436        Block::SandstoneWall,
2437        Block::EndStoneBrickWall,
2438        Block::DioriteWall,
2439        Block::BlackstoneWall,
2440        Block::PolishedBlackstoneBrickWall,
2441        Block::PolishedBlackstoneWall,
2442        Block::CobbledDeepslateWall,
2443        Block::PolishedDeepslateWall,
2444        Block::DeepslateTileWall,
2445        Block::DeepslateBrickWall,
2446        Block::MudBrickWall,
2447        Block::TuffWall,
2448        Block::PolishedTuffWall,
2449        Block::TuffBrickWall,
2450        Block::ResinBrickWall,
2451        Block::ShulkerBox,
2452        Block::BlackShulkerBox,
2453        Block::BlueShulkerBox,
2454        Block::BrownShulkerBox,
2455        Block::CyanShulkerBox,
2456        Block::GrayShulkerBox,
2457        Block::GreenShulkerBox,
2458        Block::LightBlueShulkerBox,
2459        Block::LightGrayShulkerBox,
2460        Block::LimeShulkerBox,
2461        Block::MagentaShulkerBox,
2462        Block::OrangeShulkerBox,
2463        Block::PinkShulkerBox,
2464        Block::PurpleShulkerBox,
2465        Block::RedShulkerBox,
2466        Block::WhiteShulkerBox,
2467        Block::YellowShulkerBox,
2468        Block::Anvil,
2469        Block::ChippedAnvil,
2470        Block::DamagedAnvil,
2471        Block::Cauldron,
2472        Block::WaterCauldron,
2473        Block::LavaCauldron,
2474        Block::PowderSnowCauldron,
2475        Block::Rail,
2476        Block::PoweredRail,
2477        Block::DetectorRail,
2478        Block::ActivatorRail,
2479    ])
2480});
2481pub static MINEABLE_SHOVEL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2482    HashSet::from_iter(vec![
2483        Block::Clay,
2484        Block::Dirt,
2485        Block::CoarseDirt,
2486        Block::Podzol,
2487        Block::Farmland,
2488        Block::GrassBlock,
2489        Block::Gravel,
2490        Block::Mycelium,
2491        Block::Sand,
2492        Block::RedSand,
2493        Block::SnowBlock,
2494        Block::Snow,
2495        Block::SoulSand,
2496        Block::DirtPath,
2497        Block::SoulSoil,
2498        Block::RootedDirt,
2499        Block::MuddyMangroveRoots,
2500        Block::Mud,
2501        Block::SuspiciousSand,
2502        Block::SuspiciousGravel,
2503        Block::WhiteConcretePowder,
2504        Block::OrangeConcretePowder,
2505        Block::MagentaConcretePowder,
2506        Block::LightBlueConcretePowder,
2507        Block::YellowConcretePowder,
2508        Block::LimeConcretePowder,
2509        Block::PinkConcretePowder,
2510        Block::GrayConcretePowder,
2511        Block::LightGrayConcretePowder,
2512        Block::CyanConcretePowder,
2513        Block::PurpleConcretePowder,
2514        Block::BlueConcretePowder,
2515        Block::BrownConcretePowder,
2516        Block::GreenConcretePowder,
2517        Block::RedConcretePowder,
2518        Block::BlackConcretePowder,
2519    ])
2520});
2521pub static MOB_INTERACTABLE_DOORS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2522    HashSet::from_iter(vec![
2523        Block::CopperDoor,
2524        Block::ExposedCopperDoor,
2525        Block::WeatheredCopperDoor,
2526        Block::OxidizedCopperDoor,
2527        Block::WaxedCopperDoor,
2528        Block::WaxedExposedCopperDoor,
2529        Block::WaxedWeatheredCopperDoor,
2530        Block::WaxedOxidizedCopperDoor,
2531        Block::OakDoor,
2532        Block::SpruceDoor,
2533        Block::BirchDoor,
2534        Block::JungleDoor,
2535        Block::AcaciaDoor,
2536        Block::DarkOakDoor,
2537        Block::PaleOakDoor,
2538        Block::CrimsonDoor,
2539        Block::WarpedDoor,
2540        Block::MangroveDoor,
2541        Block::BambooDoor,
2542        Block::CherryDoor,
2543    ])
2544});
2545pub static MOOSHROOMS_SPAWNABLE_ON: LazyLock<HashSet<Block>> =
2546    LazyLock::new(|| HashSet::from_iter(vec![Block::Mycelium]));
2547pub static MOSS_REPLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2548    HashSet::from_iter(vec![
2549        Block::Stone,
2550        Block::Granite,
2551        Block::Diorite,
2552        Block::Andesite,
2553        Block::Tuff,
2554        Block::Deepslate,
2555        Block::CaveVinesPlant,
2556        Block::CaveVines,
2557        Block::Dirt,
2558        Block::GrassBlock,
2559        Block::Podzol,
2560        Block::CoarseDirt,
2561        Block::Mycelium,
2562        Block::RootedDirt,
2563        Block::MossBlock,
2564        Block::PaleMossBlock,
2565        Block::Mud,
2566        Block::MuddyMangroveRoots,
2567    ])
2568});
2569pub static MUSHROOM_GROW_BLOCK: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2570    HashSet::from_iter(vec![
2571        Block::Mycelium,
2572        Block::Podzol,
2573        Block::CrimsonNylium,
2574        Block::WarpedNylium,
2575    ])
2576});
2577pub static NEEDS_DIAMOND_TOOL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2578    HashSet::from_iter(vec![
2579        Block::Obsidian,
2580        Block::CryingObsidian,
2581        Block::NetheriteBlock,
2582        Block::RespawnAnchor,
2583        Block::AncientDebris,
2584    ])
2585});
2586pub static NEEDS_IRON_TOOL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2587    HashSet::from_iter(vec![
2588        Block::DiamondBlock,
2589        Block::DiamondOre,
2590        Block::DeepslateDiamondOre,
2591        Block::EmeraldOre,
2592        Block::DeepslateEmeraldOre,
2593        Block::EmeraldBlock,
2594        Block::GoldBlock,
2595        Block::RawGoldBlock,
2596        Block::GoldOre,
2597        Block::DeepslateGoldOre,
2598        Block::RedstoneOre,
2599        Block::DeepslateRedstoneOre,
2600    ])
2601});
2602pub static NEEDS_STONE_TOOL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2603    HashSet::from_iter(vec![
2604        Block::IronBlock,
2605        Block::RawIronBlock,
2606        Block::IronOre,
2607        Block::DeepslateIronOre,
2608        Block::LapisBlock,
2609        Block::LapisOre,
2610        Block::DeepslateLapisOre,
2611        Block::CopperBlock,
2612        Block::RawCopperBlock,
2613        Block::CopperOre,
2614        Block::DeepslateCopperOre,
2615        Block::CutCopperSlab,
2616        Block::CutCopperStairs,
2617        Block::CutCopper,
2618        Block::WeatheredCopper,
2619        Block::WeatheredCutCopperSlab,
2620        Block::WeatheredCutCopperStairs,
2621        Block::WeatheredCutCopper,
2622        Block::OxidizedCopper,
2623        Block::OxidizedCutCopperSlab,
2624        Block::OxidizedCutCopperStairs,
2625        Block::OxidizedCutCopper,
2626        Block::ExposedCopper,
2627        Block::ExposedCutCopperSlab,
2628        Block::ExposedCutCopperStairs,
2629        Block::ExposedCutCopper,
2630        Block::WaxedCopperBlock,
2631        Block::WaxedCutCopperSlab,
2632        Block::WaxedCutCopperStairs,
2633        Block::WaxedCutCopper,
2634        Block::WaxedWeatheredCopper,
2635        Block::WaxedWeatheredCutCopperSlab,
2636        Block::WaxedWeatheredCutCopperStairs,
2637        Block::WaxedWeatheredCutCopper,
2638        Block::WaxedExposedCopper,
2639        Block::WaxedExposedCutCopperSlab,
2640        Block::WaxedExposedCutCopperStairs,
2641        Block::WaxedExposedCutCopper,
2642        Block::WaxedOxidizedCopper,
2643        Block::WaxedOxidizedCutCopperSlab,
2644        Block::WaxedOxidizedCutCopperStairs,
2645        Block::WaxedOxidizedCutCopper,
2646        Block::LightningRod,
2647        Block::Crafter,
2648        Block::ChiseledCopper,
2649        Block::ExposedChiseledCopper,
2650        Block::WeatheredChiseledCopper,
2651        Block::OxidizedChiseledCopper,
2652        Block::WaxedChiseledCopper,
2653        Block::WaxedExposedChiseledCopper,
2654        Block::WaxedWeatheredChiseledCopper,
2655        Block::WaxedOxidizedChiseledCopper,
2656        Block::CopperGrate,
2657        Block::ExposedCopperGrate,
2658        Block::WeatheredCopperGrate,
2659        Block::OxidizedCopperGrate,
2660        Block::WaxedCopperGrate,
2661        Block::WaxedExposedCopperGrate,
2662        Block::WaxedWeatheredCopperGrate,
2663        Block::WaxedOxidizedCopperGrate,
2664        Block::CopperBulb,
2665        Block::ExposedCopperBulb,
2666        Block::WeatheredCopperBulb,
2667        Block::OxidizedCopperBulb,
2668        Block::WaxedCopperBulb,
2669        Block::WaxedExposedCopperBulb,
2670        Block::WaxedWeatheredCopperBulb,
2671        Block::WaxedOxidizedCopperBulb,
2672        Block::CopperTrapdoor,
2673        Block::ExposedCopperTrapdoor,
2674        Block::WeatheredCopperTrapdoor,
2675        Block::OxidizedCopperTrapdoor,
2676        Block::WaxedCopperTrapdoor,
2677        Block::WaxedExposedCopperTrapdoor,
2678        Block::WaxedWeatheredCopperTrapdoor,
2679        Block::WaxedOxidizedCopperTrapdoor,
2680    ])
2681});
2682pub static NETHER_CARVER_REPLACEABLES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2683    HashSet::from_iter(vec![
2684        Block::SoulSand,
2685        Block::SoulSoil,
2686        Block::Stone,
2687        Block::Granite,
2688        Block::Diorite,
2689        Block::Andesite,
2690        Block::Tuff,
2691        Block::Deepslate,
2692        Block::Netherrack,
2693        Block::Basalt,
2694        Block::Blackstone,
2695        Block::Dirt,
2696        Block::GrassBlock,
2697        Block::Podzol,
2698        Block::CoarseDirt,
2699        Block::Mycelium,
2700        Block::RootedDirt,
2701        Block::MossBlock,
2702        Block::PaleMossBlock,
2703        Block::Mud,
2704        Block::MuddyMangroveRoots,
2705        Block::CrimsonNylium,
2706        Block::WarpedNylium,
2707        Block::NetherWartBlock,
2708        Block::WarpedWartBlock,
2709    ])
2710});
2711pub static NYLIUM: LazyLock<HashSet<Block>> =
2712    LazyLock::new(|| HashSet::from_iter(vec![Block::CrimsonNylium, Block::WarpedNylium]));
2713pub static OAK_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2714    HashSet::from_iter(vec![
2715        Block::OakLog,
2716        Block::OakWood,
2717        Block::StrippedOakLog,
2718        Block::StrippedOakWood,
2719    ])
2720});
2721pub static OCCLUDES_VIBRATION_SIGNALS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2722    HashSet::from_iter(vec![
2723        Block::WhiteWool,
2724        Block::OrangeWool,
2725        Block::MagentaWool,
2726        Block::LightBlueWool,
2727        Block::YellowWool,
2728        Block::LimeWool,
2729        Block::PinkWool,
2730        Block::GrayWool,
2731        Block::LightGrayWool,
2732        Block::CyanWool,
2733        Block::PurpleWool,
2734        Block::BlueWool,
2735        Block::BrownWool,
2736        Block::GreenWool,
2737        Block::RedWool,
2738        Block::BlackWool,
2739    ])
2740});
2741pub static OVERWORLD_CARVER_REPLACEABLES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2742    HashSet::from_iter(vec![
2743        Block::Water,
2744        Block::Gravel,
2745        Block::SuspiciousGravel,
2746        Block::Sandstone,
2747        Block::RedSandstone,
2748        Block::Calcite,
2749        Block::PackedIce,
2750        Block::RawIronBlock,
2751        Block::RawCopperBlock,
2752        Block::Stone,
2753        Block::Granite,
2754        Block::Diorite,
2755        Block::Andesite,
2756        Block::Tuff,
2757        Block::Deepslate,
2758        Block::Dirt,
2759        Block::GrassBlock,
2760        Block::Podzol,
2761        Block::CoarseDirt,
2762        Block::Mycelium,
2763        Block::RootedDirt,
2764        Block::MossBlock,
2765        Block::PaleMossBlock,
2766        Block::Mud,
2767        Block::MuddyMangroveRoots,
2768        Block::Sand,
2769        Block::RedSand,
2770        Block::SuspiciousSand,
2771        Block::SuspiciousSand,
2772        Block::Terracotta,
2773        Block::WhiteTerracotta,
2774        Block::OrangeTerracotta,
2775        Block::MagentaTerracotta,
2776        Block::LightBlueTerracotta,
2777        Block::YellowTerracotta,
2778        Block::LimeTerracotta,
2779        Block::PinkTerracotta,
2780        Block::GrayTerracotta,
2781        Block::LightGrayTerracotta,
2782        Block::CyanTerracotta,
2783        Block::PurpleTerracotta,
2784        Block::BlueTerracotta,
2785        Block::BrownTerracotta,
2786        Block::GreenTerracotta,
2787        Block::RedTerracotta,
2788        Block::BlackTerracotta,
2789        Block::IronOre,
2790        Block::DeepslateIronOre,
2791        Block::CopperOre,
2792        Block::DeepslateCopperOre,
2793        Block::Snow,
2794        Block::SnowBlock,
2795        Block::PowderSnow,
2796    ])
2797});
2798pub static OVERWORLD_NATURAL_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2799    HashSet::from_iter(vec![
2800        Block::AcaciaLog,
2801        Block::BirchLog,
2802        Block::OakLog,
2803        Block::JungleLog,
2804        Block::SpruceLog,
2805        Block::DarkOakLog,
2806        Block::PaleOakLog,
2807        Block::MangroveLog,
2808        Block::CherryLog,
2809    ])
2810});
2811pub static PALE_OAK_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2812    HashSet::from_iter(vec![
2813        Block::PaleOakLog,
2814        Block::PaleOakWood,
2815        Block::StrippedPaleOakLog,
2816        Block::StrippedPaleOakWood,
2817    ])
2818});
2819pub static PARROTS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2820    HashSet::from_iter(vec![
2821        Block::GrassBlock,
2822        Block::Air,
2823        Block::JungleLeaves,
2824        Block::OakLeaves,
2825        Block::SpruceLeaves,
2826        Block::PaleOakLeaves,
2827        Block::DarkOakLeaves,
2828        Block::AcaciaLeaves,
2829        Block::BirchLeaves,
2830        Block::AzaleaLeaves,
2831        Block::FloweringAzaleaLeaves,
2832        Block::MangroveLeaves,
2833        Block::CherryLeaves,
2834        Block::CrimsonStem,
2835        Block::StrippedCrimsonStem,
2836        Block::CrimsonHyphae,
2837        Block::StrippedCrimsonHyphae,
2838        Block::WarpedStem,
2839        Block::StrippedWarpedStem,
2840        Block::WarpedHyphae,
2841        Block::StrippedWarpedHyphae,
2842        Block::DarkOakLog,
2843        Block::DarkOakWood,
2844        Block::StrippedDarkOakLog,
2845        Block::StrippedDarkOakWood,
2846        Block::PaleOakLog,
2847        Block::PaleOakWood,
2848        Block::StrippedPaleOakLog,
2849        Block::StrippedPaleOakWood,
2850        Block::OakLog,
2851        Block::OakWood,
2852        Block::StrippedOakLog,
2853        Block::StrippedOakWood,
2854        Block::AcaciaLog,
2855        Block::AcaciaWood,
2856        Block::StrippedAcaciaLog,
2857        Block::StrippedAcaciaWood,
2858        Block::BirchLog,
2859        Block::BirchWood,
2860        Block::StrippedBirchLog,
2861        Block::StrippedBirchWood,
2862        Block::JungleLog,
2863        Block::JungleWood,
2864        Block::StrippedJungleLog,
2865        Block::StrippedJungleWood,
2866        Block::SpruceLog,
2867        Block::SpruceWood,
2868        Block::StrippedSpruceLog,
2869        Block::StrippedSpruceWood,
2870        Block::MangroveLog,
2871        Block::MangroveWood,
2872        Block::StrippedMangroveLog,
2873        Block::StrippedMangroveWood,
2874        Block::CherryLog,
2875        Block::CherryWood,
2876        Block::StrippedCherryLog,
2877        Block::StrippedCherryWood,
2878    ])
2879});
2880pub static PIGLIN_REPELLENTS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2881    HashSet::from_iter(vec![
2882        Block::SoulFire,
2883        Block::SoulTorch,
2884        Block::SoulLantern,
2885        Block::SoulWallTorch,
2886        Block::SoulCampfire,
2887    ])
2888});
2889pub static PLANKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2890    HashSet::from_iter(vec![
2891        Block::OakPlanks,
2892        Block::SprucePlanks,
2893        Block::BirchPlanks,
2894        Block::JunglePlanks,
2895        Block::AcaciaPlanks,
2896        Block::DarkOakPlanks,
2897        Block::PaleOakPlanks,
2898        Block::CrimsonPlanks,
2899        Block::WarpedPlanks,
2900        Block::MangrovePlanks,
2901        Block::BambooPlanks,
2902        Block::CherryPlanks,
2903    ])
2904});
2905pub static PLAYS_AMBIENT_DESERT_BLOCK_SOUNDS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2906    HashSet::from_iter(vec![
2907        Block::Sand,
2908        Block::RedSand,
2909        Block::Terracotta,
2910        Block::WhiteTerracotta,
2911        Block::OrangeTerracotta,
2912        Block::MagentaTerracotta,
2913        Block::LightBlueTerracotta,
2914        Block::YellowTerracotta,
2915        Block::LimeTerracotta,
2916        Block::PinkTerracotta,
2917        Block::GrayTerracotta,
2918        Block::LightGrayTerracotta,
2919        Block::CyanTerracotta,
2920        Block::PurpleTerracotta,
2921        Block::BlueTerracotta,
2922        Block::BrownTerracotta,
2923        Block::GreenTerracotta,
2924        Block::RedTerracotta,
2925        Block::BlackTerracotta,
2926    ])
2927});
2928pub static POLAR_BEARS_SPAWNABLE_ON_ALTERNATE: LazyLock<HashSet<Block>> =
2929    LazyLock::new(|| HashSet::from_iter(vec![Block::Ice]));
2930pub static PORTALS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2931    HashSet::from_iter(vec![
2932        Block::NetherPortal,
2933        Block::EndPortal,
2934        Block::EndGateway,
2935    ])
2936});
2937pub static PRESSURE_PLATES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2938    HashSet::from_iter(vec![
2939        Block::LightWeightedPressurePlate,
2940        Block::HeavyWeightedPressurePlate,
2941        Block::OakPressurePlate,
2942        Block::SprucePressurePlate,
2943        Block::BirchPressurePlate,
2944        Block::JunglePressurePlate,
2945        Block::AcaciaPressurePlate,
2946        Block::DarkOakPressurePlate,
2947        Block::PaleOakPressurePlate,
2948        Block::CrimsonPressurePlate,
2949        Block::WarpedPressurePlate,
2950        Block::MangrovePressurePlate,
2951        Block::BambooPressurePlate,
2952        Block::CherryPressurePlate,
2953        Block::StonePressurePlate,
2954        Block::PolishedBlackstonePressurePlate,
2955    ])
2956});
2957pub static PREVENT_MOB_SPAWNING_INSIDE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2958    HashSet::from_iter(vec![
2959        Block::Rail,
2960        Block::PoweredRail,
2961        Block::DetectorRail,
2962        Block::ActivatorRail,
2963    ])
2964});
2965pub static RABBITS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2966    HashSet::from_iter(vec![
2967        Block::GrassBlock,
2968        Block::Snow,
2969        Block::SnowBlock,
2970        Block::Sand,
2971    ])
2972});
2973pub static RAILS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2974    HashSet::from_iter(vec![
2975        Block::Rail,
2976        Block::PoweredRail,
2977        Block::DetectorRail,
2978        Block::ActivatorRail,
2979    ])
2980});
2981pub static REDSTONE_ORES: LazyLock<HashSet<Block>> =
2982    LazyLock::new(|| HashSet::from_iter(vec![Block::RedstoneOre, Block::DeepslateRedstoneOre]));
2983pub static REPLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2984    HashSet::from_iter(vec![
2985        Block::Air,
2986        Block::Water,
2987        Block::Lava,
2988        Block::ShortGrass,
2989        Block::Fern,
2990        Block::DeadBush,
2991        Block::Bush,
2992        Block::ShortDryGrass,
2993        Block::TallDryGrass,
2994        Block::Seagrass,
2995        Block::TallSeagrass,
2996        Block::Fire,
2997        Block::SoulFire,
2998        Block::Snow,
2999        Block::Vine,
3000        Block::GlowLichen,
3001        Block::ResinClump,
3002        Block::Light,
3003        Block::TallGrass,
3004        Block::LargeFern,
3005        Block::StructureVoid,
3006        Block::VoidAir,
3007        Block::CaveAir,
3008        Block::BubbleColumn,
3009        Block::WarpedRoots,
3010        Block::NetherSprouts,
3011        Block::CrimsonRoots,
3012        Block::LeafLitter,
3013        Block::HangingRoots,
3014    ])
3015});
3016pub static REPLACEABLE_BY_MUSHROOMS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3017    HashSet::from_iter(vec![
3018        Block::PaleMossCarpet,
3019        Block::ShortGrass,
3020        Block::Fern,
3021        Block::DeadBush,
3022        Block::Vine,
3023        Block::GlowLichen,
3024        Block::Sunflower,
3025        Block::Lilac,
3026        Block::RoseBush,
3027        Block::Peony,
3028        Block::TallGrass,
3029        Block::LargeFern,
3030        Block::HangingRoots,
3031        Block::PitcherPlant,
3032        Block::Water,
3033        Block::Seagrass,
3034        Block::TallSeagrass,
3035        Block::BrownMushroom,
3036        Block::RedMushroom,
3037        Block::BrownMushroomBlock,
3038        Block::RedMushroomBlock,
3039        Block::WarpedRoots,
3040        Block::NetherSprouts,
3041        Block::CrimsonRoots,
3042        Block::LeafLitter,
3043        Block::ShortDryGrass,
3044        Block::TallDryGrass,
3045        Block::Bush,
3046        Block::FireflyBush,
3047        Block::JungleLeaves,
3048        Block::OakLeaves,
3049        Block::SpruceLeaves,
3050        Block::PaleOakLeaves,
3051        Block::DarkOakLeaves,
3052        Block::AcaciaLeaves,
3053        Block::BirchLeaves,
3054        Block::AzaleaLeaves,
3055        Block::FloweringAzaleaLeaves,
3056        Block::MangroveLeaves,
3057        Block::CherryLeaves,
3058        Block::Dandelion,
3059        Block::OpenEyeblossom,
3060        Block::Poppy,
3061        Block::BlueOrchid,
3062        Block::Allium,
3063        Block::AzureBluet,
3064        Block::RedTulip,
3065        Block::OrangeTulip,
3066        Block::WhiteTulip,
3067        Block::PinkTulip,
3068        Block::OxeyeDaisy,
3069        Block::Cornflower,
3070        Block::LilyOfTheValley,
3071        Block::WitherRose,
3072        Block::Torchflower,
3073        Block::ClosedEyeblossom,
3074    ])
3075});
3076pub static REPLACEABLE_BY_TREES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3077    HashSet::from_iter(vec![
3078        Block::PaleMossCarpet,
3079        Block::ShortGrass,
3080        Block::Fern,
3081        Block::DeadBush,
3082        Block::Vine,
3083        Block::GlowLichen,
3084        Block::Sunflower,
3085        Block::Lilac,
3086        Block::RoseBush,
3087        Block::Peony,
3088        Block::TallGrass,
3089        Block::LargeFern,
3090        Block::HangingRoots,
3091        Block::PitcherPlant,
3092        Block::Water,
3093        Block::Seagrass,
3094        Block::TallSeagrass,
3095        Block::Bush,
3096        Block::FireflyBush,
3097        Block::WarpedRoots,
3098        Block::NetherSprouts,
3099        Block::CrimsonRoots,
3100        Block::LeafLitter,
3101        Block::ShortDryGrass,
3102        Block::TallDryGrass,
3103        Block::JungleLeaves,
3104        Block::OakLeaves,
3105        Block::SpruceLeaves,
3106        Block::PaleOakLeaves,
3107        Block::DarkOakLeaves,
3108        Block::AcaciaLeaves,
3109        Block::BirchLeaves,
3110        Block::AzaleaLeaves,
3111        Block::FloweringAzaleaLeaves,
3112        Block::MangroveLeaves,
3113        Block::CherryLeaves,
3114        Block::Dandelion,
3115        Block::OpenEyeblossom,
3116        Block::Poppy,
3117        Block::BlueOrchid,
3118        Block::Allium,
3119        Block::AzureBluet,
3120        Block::RedTulip,
3121        Block::OrangeTulip,
3122        Block::WhiteTulip,
3123        Block::PinkTulip,
3124        Block::OxeyeDaisy,
3125        Block::Cornflower,
3126        Block::LilyOfTheValley,
3127        Block::WitherRose,
3128        Block::Torchflower,
3129        Block::ClosedEyeblossom,
3130    ])
3131});
3132pub static SAND: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3133    HashSet::from_iter(vec![
3134        Block::Sand,
3135        Block::RedSand,
3136        Block::SuspiciousSand,
3137        Block::SuspiciousSand,
3138    ])
3139});
3140pub static SAPLINGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3141    HashSet::from_iter(vec![
3142        Block::OakSapling,
3143        Block::SpruceSapling,
3144        Block::BirchSapling,
3145        Block::JungleSapling,
3146        Block::AcaciaSapling,
3147        Block::DarkOakSapling,
3148        Block::PaleOakSapling,
3149        Block::Azalea,
3150        Block::FloweringAzalea,
3151        Block::MangrovePropagule,
3152        Block::CherrySapling,
3153    ])
3154});
3155pub static SCULK_REPLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3156    HashSet::from_iter(vec![
3157        Block::Sand,
3158        Block::RedSand,
3159        Block::Gravel,
3160        Block::SoulSand,
3161        Block::SoulSoil,
3162        Block::Calcite,
3163        Block::SmoothBasalt,
3164        Block::Clay,
3165        Block::DripstoneBlock,
3166        Block::EndStone,
3167        Block::RedSandstone,
3168        Block::Sandstone,
3169        Block::Stone,
3170        Block::Granite,
3171        Block::Diorite,
3172        Block::Andesite,
3173        Block::Tuff,
3174        Block::Deepslate,
3175        Block::Dirt,
3176        Block::GrassBlock,
3177        Block::Podzol,
3178        Block::CoarseDirt,
3179        Block::Mycelium,
3180        Block::RootedDirt,
3181        Block::MossBlock,
3182        Block::PaleMossBlock,
3183        Block::Mud,
3184        Block::MuddyMangroveRoots,
3185        Block::Terracotta,
3186        Block::WhiteTerracotta,
3187        Block::OrangeTerracotta,
3188        Block::MagentaTerracotta,
3189        Block::LightBlueTerracotta,
3190        Block::YellowTerracotta,
3191        Block::LimeTerracotta,
3192        Block::PinkTerracotta,
3193        Block::GrayTerracotta,
3194        Block::LightGrayTerracotta,
3195        Block::CyanTerracotta,
3196        Block::PurpleTerracotta,
3197        Block::BlueTerracotta,
3198        Block::BrownTerracotta,
3199        Block::GreenTerracotta,
3200        Block::RedTerracotta,
3201        Block::BlackTerracotta,
3202        Block::CrimsonNylium,
3203        Block::WarpedNylium,
3204        Block::Netherrack,
3205        Block::Basalt,
3206        Block::Blackstone,
3207    ])
3208});
3209pub static SCULK_REPLACEABLE_WORLD_GEN: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3210    HashSet::from_iter(vec![
3211        Block::DeepslateBricks,
3212        Block::DeepslateTiles,
3213        Block::CobbledDeepslate,
3214        Block::CrackedDeepslateBricks,
3215        Block::CrackedDeepslateTiles,
3216        Block::PolishedDeepslate,
3217        Block::Sand,
3218        Block::RedSand,
3219        Block::Gravel,
3220        Block::SoulSand,
3221        Block::SoulSoil,
3222        Block::Calcite,
3223        Block::SmoothBasalt,
3224        Block::Clay,
3225        Block::DripstoneBlock,
3226        Block::EndStone,
3227        Block::RedSandstone,
3228        Block::Sandstone,
3229        Block::Stone,
3230        Block::Granite,
3231        Block::Diorite,
3232        Block::Andesite,
3233        Block::Tuff,
3234        Block::Deepslate,
3235        Block::Dirt,
3236        Block::GrassBlock,
3237        Block::Podzol,
3238        Block::CoarseDirt,
3239        Block::Mycelium,
3240        Block::RootedDirt,
3241        Block::MossBlock,
3242        Block::PaleMossBlock,
3243        Block::Mud,
3244        Block::MuddyMangroveRoots,
3245        Block::Terracotta,
3246        Block::WhiteTerracotta,
3247        Block::OrangeTerracotta,
3248        Block::MagentaTerracotta,
3249        Block::LightBlueTerracotta,
3250        Block::YellowTerracotta,
3251        Block::LimeTerracotta,
3252        Block::PinkTerracotta,
3253        Block::GrayTerracotta,
3254        Block::LightGrayTerracotta,
3255        Block::CyanTerracotta,
3256        Block::PurpleTerracotta,
3257        Block::BlueTerracotta,
3258        Block::BrownTerracotta,
3259        Block::GreenTerracotta,
3260        Block::RedTerracotta,
3261        Block::BlackTerracotta,
3262        Block::CrimsonNylium,
3263        Block::WarpedNylium,
3264        Block::Netherrack,
3265        Block::Basalt,
3266        Block::Blackstone,
3267    ])
3268});
3269pub static SHULKER_BOXES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3270    HashSet::from_iter(vec![
3271        Block::ShulkerBox,
3272        Block::BlackShulkerBox,
3273        Block::BlueShulkerBox,
3274        Block::BrownShulkerBox,
3275        Block::CyanShulkerBox,
3276        Block::GrayShulkerBox,
3277        Block::GreenShulkerBox,
3278        Block::LightBlueShulkerBox,
3279        Block::LightGrayShulkerBox,
3280        Block::LimeShulkerBox,
3281        Block::MagentaShulkerBox,
3282        Block::OrangeShulkerBox,
3283        Block::PinkShulkerBox,
3284        Block::PurpleShulkerBox,
3285        Block::RedShulkerBox,
3286        Block::WhiteShulkerBox,
3287        Block::YellowShulkerBox,
3288    ])
3289});
3290pub static SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3291    HashSet::from_iter(vec![
3292        Block::OakSign,
3293        Block::SpruceSign,
3294        Block::BirchSign,
3295        Block::AcaciaSign,
3296        Block::JungleSign,
3297        Block::DarkOakSign,
3298        Block::PaleOakSign,
3299        Block::CrimsonSign,
3300        Block::WarpedSign,
3301        Block::MangroveSign,
3302        Block::BambooSign,
3303        Block::CherrySign,
3304        Block::OakWallSign,
3305        Block::SpruceWallSign,
3306        Block::BirchWallSign,
3307        Block::AcaciaWallSign,
3308        Block::JungleWallSign,
3309        Block::DarkOakWallSign,
3310        Block::PaleOakWallSign,
3311        Block::CrimsonWallSign,
3312        Block::WarpedWallSign,
3313        Block::MangroveWallSign,
3314        Block::BambooWallSign,
3315        Block::CherryWallSign,
3316    ])
3317});
3318pub static SLABS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3319    HashSet::from_iter(vec![
3320        Block::BambooMosaicSlab,
3321        Block::StoneSlab,
3322        Block::SmoothStoneSlab,
3323        Block::StoneBrickSlab,
3324        Block::SandstoneSlab,
3325        Block::PurpurSlab,
3326        Block::QuartzSlab,
3327        Block::RedSandstoneSlab,
3328        Block::BrickSlab,
3329        Block::CobblestoneSlab,
3330        Block::NetherBrickSlab,
3331        Block::PetrifiedOakSlab,
3332        Block::PrismarineSlab,
3333        Block::PrismarineBrickSlab,
3334        Block::DarkPrismarineSlab,
3335        Block::PolishedGraniteSlab,
3336        Block::SmoothRedSandstoneSlab,
3337        Block::MossyStoneBrickSlab,
3338        Block::PolishedDioriteSlab,
3339        Block::MossyCobblestoneSlab,
3340        Block::EndStoneBrickSlab,
3341        Block::SmoothSandstoneSlab,
3342        Block::SmoothQuartzSlab,
3343        Block::GraniteSlab,
3344        Block::AndesiteSlab,
3345        Block::RedNetherBrickSlab,
3346        Block::PolishedAndesiteSlab,
3347        Block::DioriteSlab,
3348        Block::CutSandstoneSlab,
3349        Block::CutRedSandstoneSlab,
3350        Block::BlackstoneSlab,
3351        Block::PolishedBlackstoneBrickSlab,
3352        Block::PolishedBlackstoneSlab,
3353        Block::CobbledDeepslateSlab,
3354        Block::PolishedDeepslateSlab,
3355        Block::DeepslateTileSlab,
3356        Block::DeepslateBrickSlab,
3357        Block::WaxedWeatheredCutCopperSlab,
3358        Block::WaxedExposedCutCopperSlab,
3359        Block::WaxedCutCopperSlab,
3360        Block::OxidizedCutCopperSlab,
3361        Block::WeatheredCutCopperSlab,
3362        Block::ExposedCutCopperSlab,
3363        Block::CutCopperSlab,
3364        Block::WaxedOxidizedCutCopperSlab,
3365        Block::MudBrickSlab,
3366        Block::TuffSlab,
3367        Block::PolishedTuffSlab,
3368        Block::TuffBrickSlab,
3369        Block::ResinBrickSlab,
3370        Block::OakSlab,
3371        Block::SpruceSlab,
3372        Block::BirchSlab,
3373        Block::JungleSlab,
3374        Block::AcaciaSlab,
3375        Block::DarkOakSlab,
3376        Block::PaleOakSlab,
3377        Block::CrimsonSlab,
3378        Block::WarpedSlab,
3379        Block::MangroveSlab,
3380        Block::BambooSlab,
3381        Block::CherrySlab,
3382    ])
3383});
3384pub static SMALL_DRIPLEAF_PLACEABLE: LazyLock<HashSet<Block>> =
3385    LazyLock::new(|| HashSet::from_iter(vec![Block::Clay, Block::MossBlock]));
3386pub static SMALL_FLOWERS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3387    HashSet::from_iter(vec![
3388        Block::Dandelion,
3389        Block::OpenEyeblossom,
3390        Block::Poppy,
3391        Block::BlueOrchid,
3392        Block::Allium,
3393        Block::AzureBluet,
3394        Block::RedTulip,
3395        Block::OrangeTulip,
3396        Block::WhiteTulip,
3397        Block::PinkTulip,
3398        Block::OxeyeDaisy,
3399        Block::Cornflower,
3400        Block::LilyOfTheValley,
3401        Block::WitherRose,
3402        Block::Torchflower,
3403        Block::ClosedEyeblossom,
3404    ])
3405});
3406pub static SMELTS_TO_GLASS: LazyLock<HashSet<Block>> =
3407    LazyLock::new(|| HashSet::from_iter(vec![Block::Sand, Block::RedSand]));
3408pub static SNAPS_GOAT_HORN: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3409    HashSet::from_iter(vec![
3410        Block::Stone,
3411        Block::PackedIce,
3412        Block::IronOre,
3413        Block::CoalOre,
3414        Block::CopperOre,
3415        Block::EmeraldOre,
3416        Block::AcaciaLog,
3417        Block::BirchLog,
3418        Block::OakLog,
3419        Block::JungleLog,
3420        Block::SpruceLog,
3421        Block::DarkOakLog,
3422        Block::PaleOakLog,
3423        Block::MangroveLog,
3424        Block::CherryLog,
3425    ])
3426});
3427pub static SNIFFER_DIGGABLE_BLOCK: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3428    HashSet::from_iter(vec![
3429        Block::Dirt,
3430        Block::GrassBlock,
3431        Block::Podzol,
3432        Block::CoarseDirt,
3433        Block::RootedDirt,
3434        Block::MossBlock,
3435        Block::PaleMossBlock,
3436        Block::Mud,
3437        Block::MuddyMangroveRoots,
3438    ])
3439});
3440pub static SNIFFER_EGG_HATCH_BOOST: LazyLock<HashSet<Block>> =
3441    LazyLock::new(|| HashSet::from_iter(vec![Block::MossBlock]));
3442pub static SNOW: LazyLock<HashSet<Block>> =
3443    LazyLock::new(|| HashSet::from_iter(vec![Block::Snow, Block::SnowBlock, Block::PowderSnow]));
3444pub static SNOW_LAYER_CAN_SURVIVE_ON: LazyLock<HashSet<Block>> =
3445    LazyLock::new(|| HashSet::from_iter(vec![Block::HoneyBlock, Block::SoulSand, Block::Mud]));
3446pub static SNOW_LAYER_CANNOT_SURVIVE_ON: LazyLock<HashSet<Block>> =
3447    LazyLock::new(|| HashSet::from_iter(vec![Block::Ice, Block::PackedIce, Block::Barrier]));
3448pub static SOUL_FIRE_BASE_BLOCKS: LazyLock<HashSet<Block>> =
3449    LazyLock::new(|| HashSet::from_iter(vec![Block::SoulSand, Block::SoulSoil]));
3450pub static SOUL_SPEED_BLOCKS: LazyLock<HashSet<Block>> =
3451    LazyLock::new(|| HashSet::from_iter(vec![Block::SoulSand, Block::SoulSoil]));
3452pub static SPRUCE_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3453    HashSet::from_iter(vec![
3454        Block::SpruceLog,
3455        Block::SpruceWood,
3456        Block::StrippedSpruceLog,
3457        Block::StrippedSpruceWood,
3458    ])
3459});
3460pub static STAIRS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3461    HashSet::from_iter(vec![
3462        Block::BambooMosaicStairs,
3463        Block::CobblestoneStairs,
3464        Block::SandstoneStairs,
3465        Block::NetherBrickStairs,
3466        Block::StoneBrickStairs,
3467        Block::BrickStairs,
3468        Block::PurpurStairs,
3469        Block::QuartzStairs,
3470        Block::RedSandstoneStairs,
3471        Block::PrismarineBrickStairs,
3472        Block::PrismarineStairs,
3473        Block::DarkPrismarineStairs,
3474        Block::PolishedGraniteStairs,
3475        Block::SmoothRedSandstoneStairs,
3476        Block::MossyStoneBrickStairs,
3477        Block::PolishedDioriteStairs,
3478        Block::MossyCobblestoneStairs,
3479        Block::EndStoneBrickStairs,
3480        Block::StoneStairs,
3481        Block::SmoothSandstoneStairs,
3482        Block::SmoothQuartzStairs,
3483        Block::GraniteStairs,
3484        Block::AndesiteStairs,
3485        Block::RedNetherBrickStairs,
3486        Block::PolishedAndesiteStairs,
3487        Block::DioriteStairs,
3488        Block::BlackstoneStairs,
3489        Block::PolishedBlackstoneBrickStairs,
3490        Block::PolishedBlackstoneStairs,
3491        Block::CobbledDeepslateStairs,
3492        Block::PolishedDeepslateStairs,
3493        Block::DeepslateTileStairs,
3494        Block::DeepslateBrickStairs,
3495        Block::OxidizedCutCopperStairs,
3496        Block::WeatheredCutCopperStairs,
3497        Block::ExposedCutCopperStairs,
3498        Block::CutCopperStairs,
3499        Block::WaxedWeatheredCutCopperStairs,
3500        Block::WaxedExposedCutCopperStairs,
3501        Block::WaxedCutCopperStairs,
3502        Block::WaxedOxidizedCutCopperStairs,
3503        Block::MudBrickStairs,
3504        Block::TuffStairs,
3505        Block::PolishedTuffStairs,
3506        Block::TuffBrickStairs,
3507        Block::ResinBrickStairs,
3508        Block::OakStairs,
3509        Block::SpruceStairs,
3510        Block::BirchStairs,
3511        Block::JungleStairs,
3512        Block::AcaciaStairs,
3513        Block::DarkOakStairs,
3514        Block::PaleOakStairs,
3515        Block::CrimsonStairs,
3516        Block::WarpedStairs,
3517        Block::MangroveStairs,
3518        Block::BambooStairs,
3519        Block::CherryStairs,
3520    ])
3521});
3522pub static STANDING_SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3523    HashSet::from_iter(vec![
3524        Block::OakSign,
3525        Block::SpruceSign,
3526        Block::BirchSign,
3527        Block::AcaciaSign,
3528        Block::JungleSign,
3529        Block::DarkOakSign,
3530        Block::PaleOakSign,
3531        Block::CrimsonSign,
3532        Block::WarpedSign,
3533        Block::MangroveSign,
3534        Block::BambooSign,
3535        Block::CherrySign,
3536    ])
3537});
3538pub static STONE_BRICKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3539    HashSet::from_iter(vec![
3540        Block::StoneBricks,
3541        Block::MossyStoneBricks,
3542        Block::CrackedStoneBricks,
3543        Block::ChiseledStoneBricks,
3544    ])
3545});
3546pub static STONE_BUTTONS: LazyLock<HashSet<Block>> =
3547    LazyLock::new(|| HashSet::from_iter(vec![Block::StoneButton, Block::PolishedBlackstoneButton]));
3548pub static STONE_ORE_REPLACEABLES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3549    HashSet::from_iter(vec![
3550        Block::Stone,
3551        Block::Granite,
3552        Block::Diorite,
3553        Block::Andesite,
3554    ])
3555});
3556pub static STONE_PRESSURE_PLATES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3557    HashSet::from_iter(vec![
3558        Block::StonePressurePlate,
3559        Block::PolishedBlackstonePressurePlate,
3560    ])
3561});
3562pub static STRIDER_WARM_BLOCKS: LazyLock<HashSet<Block>> =
3563    LazyLock::new(|| HashSet::from_iter(vec![Block::Lava]));
3564pub static SWORD_EFFICIENT: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3565    HashSet::from_iter(vec![
3566        Block::Vine,
3567        Block::GlowLichen,
3568        Block::Pumpkin,
3569        Block::CarvedPumpkin,
3570        Block::JackOLantern,
3571        Block::Melon,
3572        Block::Cocoa,
3573        Block::BigDripleaf,
3574        Block::BigDripleafStem,
3575        Block::ChorusPlant,
3576        Block::ChorusFlower,
3577        Block::JungleLeaves,
3578        Block::OakLeaves,
3579        Block::SpruceLeaves,
3580        Block::PaleOakLeaves,
3581        Block::DarkOakLeaves,
3582        Block::AcaciaLeaves,
3583        Block::BirchLeaves,
3584        Block::AzaleaLeaves,
3585        Block::FloweringAzaleaLeaves,
3586        Block::MangroveLeaves,
3587        Block::CherryLeaves,
3588    ])
3589});
3590pub static SWORD_INSTANTLY_MINES: LazyLock<HashSet<Block>> =
3591    LazyLock::new(|| HashSet::from_iter(vec![Block::Bamboo, Block::BambooSapling]));
3592pub static TERRACOTTA: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3593    HashSet::from_iter(vec![
3594        Block::Terracotta,
3595        Block::WhiteTerracotta,
3596        Block::OrangeTerracotta,
3597        Block::MagentaTerracotta,
3598        Block::LightBlueTerracotta,
3599        Block::YellowTerracotta,
3600        Block::LimeTerracotta,
3601        Block::PinkTerracotta,
3602        Block::GrayTerracotta,
3603        Block::LightGrayTerracotta,
3604        Block::CyanTerracotta,
3605        Block::PurpleTerracotta,
3606        Block::BlueTerracotta,
3607        Block::BrownTerracotta,
3608        Block::GreenTerracotta,
3609        Block::RedTerracotta,
3610        Block::BlackTerracotta,
3611    ])
3612});
3613pub static TRAIL_RUINS_REPLACEABLE: LazyLock<HashSet<Block>> =
3614    LazyLock::new(|| HashSet::from_iter(vec![Block::Gravel]));
3615pub static TRAPDOORS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3616    HashSet::from_iter(vec![
3617        Block::IronTrapdoor,
3618        Block::CopperTrapdoor,
3619        Block::ExposedCopperTrapdoor,
3620        Block::WeatheredCopperTrapdoor,
3621        Block::OxidizedCopperTrapdoor,
3622        Block::WaxedCopperTrapdoor,
3623        Block::WaxedExposedCopperTrapdoor,
3624        Block::WaxedWeatheredCopperTrapdoor,
3625        Block::WaxedOxidizedCopperTrapdoor,
3626        Block::AcaciaTrapdoor,
3627        Block::BirchTrapdoor,
3628        Block::DarkOakTrapdoor,
3629        Block::PaleOakTrapdoor,
3630        Block::JungleTrapdoor,
3631        Block::OakTrapdoor,
3632        Block::SpruceTrapdoor,
3633        Block::CrimsonTrapdoor,
3634        Block::WarpedTrapdoor,
3635        Block::MangroveTrapdoor,
3636        Block::BambooTrapdoor,
3637        Block::CherryTrapdoor,
3638    ])
3639});
3640pub static UNDERWATER_BONEMEALS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3641    HashSet::from_iter(vec![
3642        Block::Seagrass,
3643        Block::TubeCoralFan,
3644        Block::BrainCoralFan,
3645        Block::BubbleCoralFan,
3646        Block::FireCoralFan,
3647        Block::HornCoralFan,
3648        Block::TubeCoralWallFan,
3649        Block::BrainCoralWallFan,
3650        Block::BubbleCoralWallFan,
3651        Block::FireCoralWallFan,
3652        Block::HornCoralWallFan,
3653        Block::TubeCoral,
3654        Block::BrainCoral,
3655        Block::BubbleCoral,
3656        Block::FireCoral,
3657        Block::HornCoral,
3658    ])
3659});
3660pub static UNSTABLE_BOTTOM_CENTER: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3661    HashSet::from_iter(vec![
3662        Block::AcaciaFenceGate,
3663        Block::BirchFenceGate,
3664        Block::DarkOakFenceGate,
3665        Block::PaleOakFenceGate,
3666        Block::JungleFenceGate,
3667        Block::OakFenceGate,
3668        Block::SpruceFenceGate,
3669        Block::CrimsonFenceGate,
3670        Block::WarpedFenceGate,
3671        Block::MangroveFenceGate,
3672        Block::BambooFenceGate,
3673        Block::CherryFenceGate,
3674    ])
3675});
3676pub static VALID_SPAWN: LazyLock<HashSet<Block>> =
3677    LazyLock::new(|| HashSet::from_iter(vec![Block::GrassBlock, Block::Podzol]));
3678pub static VIBRATION_RESONATORS: LazyLock<HashSet<Block>> =
3679    LazyLock::new(|| HashSet::from_iter(vec![Block::AmethystBlock]));
3680pub static WALL_CORALS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3681    HashSet::from_iter(vec![
3682        Block::TubeCoralWallFan,
3683        Block::BrainCoralWallFan,
3684        Block::BubbleCoralWallFan,
3685        Block::FireCoralWallFan,
3686        Block::HornCoralWallFan,
3687    ])
3688});
3689pub static WALL_HANGING_SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3690    HashSet::from_iter(vec![
3691        Block::OakWallHangingSign,
3692        Block::SpruceWallHangingSign,
3693        Block::BirchWallHangingSign,
3694        Block::AcaciaWallHangingSign,
3695        Block::CherryWallHangingSign,
3696        Block::JungleWallHangingSign,
3697        Block::DarkOakWallHangingSign,
3698        Block::PaleOakWallHangingSign,
3699        Block::CrimsonWallHangingSign,
3700        Block::WarpedWallHangingSign,
3701        Block::MangroveWallHangingSign,
3702        Block::BambooWallHangingSign,
3703    ])
3704});
3705pub static WALL_POST_OVERRIDE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3706    HashSet::from_iter(vec![
3707        Block::Torch,
3708        Block::SoulTorch,
3709        Block::RedstoneTorch,
3710        Block::Tripwire,
3711        Block::CactusFlower,
3712        Block::WhiteBanner,
3713        Block::OrangeBanner,
3714        Block::MagentaBanner,
3715        Block::LightBlueBanner,
3716        Block::YellowBanner,
3717        Block::LimeBanner,
3718        Block::PinkBanner,
3719        Block::GrayBanner,
3720        Block::LightGrayBanner,
3721        Block::CyanBanner,
3722        Block::PurpleBanner,
3723        Block::BlueBanner,
3724        Block::BrownBanner,
3725        Block::GreenBanner,
3726        Block::RedBanner,
3727        Block::BlackBanner,
3728        Block::WhiteWallBanner,
3729        Block::OrangeWallBanner,
3730        Block::MagentaWallBanner,
3731        Block::LightBlueWallBanner,
3732        Block::YellowWallBanner,
3733        Block::LimeWallBanner,
3734        Block::PinkWallBanner,
3735        Block::GrayWallBanner,
3736        Block::LightGrayWallBanner,
3737        Block::CyanWallBanner,
3738        Block::PurpleWallBanner,
3739        Block::BlueWallBanner,
3740        Block::BrownWallBanner,
3741        Block::GreenWallBanner,
3742        Block::RedWallBanner,
3743        Block::BlackWallBanner,
3744        Block::LightWeightedPressurePlate,
3745        Block::HeavyWeightedPressurePlate,
3746        Block::OakSign,
3747        Block::SpruceSign,
3748        Block::BirchSign,
3749        Block::AcaciaSign,
3750        Block::JungleSign,
3751        Block::DarkOakSign,
3752        Block::PaleOakSign,
3753        Block::CrimsonSign,
3754        Block::WarpedSign,
3755        Block::MangroveSign,
3756        Block::BambooSign,
3757        Block::CherrySign,
3758        Block::OakWallSign,
3759        Block::SpruceWallSign,
3760        Block::BirchWallSign,
3761        Block::AcaciaWallSign,
3762        Block::JungleWallSign,
3763        Block::DarkOakWallSign,
3764        Block::PaleOakWallSign,
3765        Block::CrimsonWallSign,
3766        Block::WarpedWallSign,
3767        Block::MangroveWallSign,
3768        Block::BambooWallSign,
3769        Block::CherryWallSign,
3770        Block::OakPressurePlate,
3771        Block::SprucePressurePlate,
3772        Block::BirchPressurePlate,
3773        Block::JunglePressurePlate,
3774        Block::AcaciaPressurePlate,
3775        Block::DarkOakPressurePlate,
3776        Block::PaleOakPressurePlate,
3777        Block::CrimsonPressurePlate,
3778        Block::WarpedPressurePlate,
3779        Block::MangrovePressurePlate,
3780        Block::BambooPressurePlate,
3781        Block::CherryPressurePlate,
3782        Block::StonePressurePlate,
3783        Block::PolishedBlackstonePressurePlate,
3784    ])
3785});
3786pub static WALL_SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3787    HashSet::from_iter(vec![
3788        Block::OakWallSign,
3789        Block::SpruceWallSign,
3790        Block::BirchWallSign,
3791        Block::AcaciaWallSign,
3792        Block::JungleWallSign,
3793        Block::DarkOakWallSign,
3794        Block::PaleOakWallSign,
3795        Block::CrimsonWallSign,
3796        Block::WarpedWallSign,
3797        Block::MangroveWallSign,
3798        Block::BambooWallSign,
3799        Block::CherryWallSign,
3800    ])
3801});
3802pub static WALLS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3803    HashSet::from_iter(vec![
3804        Block::CobblestoneWall,
3805        Block::MossyCobblestoneWall,
3806        Block::BrickWall,
3807        Block::PrismarineWall,
3808        Block::RedSandstoneWall,
3809        Block::MossyStoneBrickWall,
3810        Block::GraniteWall,
3811        Block::StoneBrickWall,
3812        Block::NetherBrickWall,
3813        Block::AndesiteWall,
3814        Block::RedNetherBrickWall,
3815        Block::SandstoneWall,
3816        Block::EndStoneBrickWall,
3817        Block::DioriteWall,
3818        Block::BlackstoneWall,
3819        Block::PolishedBlackstoneBrickWall,
3820        Block::PolishedBlackstoneWall,
3821        Block::CobbledDeepslateWall,
3822        Block::PolishedDeepslateWall,
3823        Block::DeepslateTileWall,
3824        Block::DeepslateBrickWall,
3825        Block::MudBrickWall,
3826        Block::TuffWall,
3827        Block::PolishedTuffWall,
3828        Block::TuffBrickWall,
3829        Block::ResinBrickWall,
3830    ])
3831});
3832pub static WARPED_STEMS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3833    HashSet::from_iter(vec![
3834        Block::WarpedStem,
3835        Block::StrippedWarpedStem,
3836        Block::WarpedHyphae,
3837        Block::StrippedWarpedHyphae,
3838    ])
3839});
3840pub static WART_BLOCKS: LazyLock<HashSet<Block>> =
3841    LazyLock::new(|| HashSet::from_iter(vec![Block::NetherWartBlock, Block::WarpedWartBlock]));
3842pub static WITHER_IMMUNE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3843    HashSet::from_iter(vec![
3844        Block::Barrier,
3845        Block::Bedrock,
3846        Block::EndPortal,
3847        Block::EndPortalFrame,
3848        Block::EndGateway,
3849        Block::CommandBlock,
3850        Block::RepeatingCommandBlock,
3851        Block::ChainCommandBlock,
3852        Block::StructureBlock,
3853        Block::Jigsaw,
3854        Block::MovingPiston,
3855        Block::Light,
3856        Block::ReinforcedDeepslate,
3857        Block::TestBlock,
3858        Block::TestInstanceBlock,
3859    ])
3860});
3861pub static WITHER_SUMMON_BASE_BLOCKS: LazyLock<HashSet<Block>> =
3862    LazyLock::new(|| HashSet::from_iter(vec![Block::SoulSand, Block::SoulSoil]));
3863pub static WOLVES_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3864    HashSet::from_iter(vec![
3865        Block::GrassBlock,
3866        Block::Snow,
3867        Block::SnowBlock,
3868        Block::CoarseDirt,
3869        Block::Podzol,
3870    ])
3871});
3872pub static WOODEN_BUTTONS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3873    HashSet::from_iter(vec![
3874        Block::OakButton,
3875        Block::SpruceButton,
3876        Block::BirchButton,
3877        Block::JungleButton,
3878        Block::AcaciaButton,
3879        Block::DarkOakButton,
3880        Block::PaleOakButton,
3881        Block::CrimsonButton,
3882        Block::WarpedButton,
3883        Block::MangroveButton,
3884        Block::BambooButton,
3885        Block::CherryButton,
3886    ])
3887});
3888pub static WOODEN_DOORS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3889    HashSet::from_iter(vec![
3890        Block::OakDoor,
3891        Block::SpruceDoor,
3892        Block::BirchDoor,
3893        Block::JungleDoor,
3894        Block::AcaciaDoor,
3895        Block::DarkOakDoor,
3896        Block::PaleOakDoor,
3897        Block::CrimsonDoor,
3898        Block::WarpedDoor,
3899        Block::MangroveDoor,
3900        Block::BambooDoor,
3901        Block::CherryDoor,
3902    ])
3903});
3904pub static WOODEN_FENCES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3905    HashSet::from_iter(vec![
3906        Block::OakFence,
3907        Block::AcaciaFence,
3908        Block::DarkOakFence,
3909        Block::PaleOakFence,
3910        Block::SpruceFence,
3911        Block::BirchFence,
3912        Block::JungleFence,
3913        Block::CrimsonFence,
3914        Block::WarpedFence,
3915        Block::MangroveFence,
3916        Block::BambooFence,
3917        Block::CherryFence,
3918    ])
3919});
3920pub static WOODEN_PRESSURE_PLATES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3921    HashSet::from_iter(vec![
3922        Block::OakPressurePlate,
3923        Block::SprucePressurePlate,
3924        Block::BirchPressurePlate,
3925        Block::JunglePressurePlate,
3926        Block::AcaciaPressurePlate,
3927        Block::DarkOakPressurePlate,
3928        Block::PaleOakPressurePlate,
3929        Block::CrimsonPressurePlate,
3930        Block::WarpedPressurePlate,
3931        Block::MangrovePressurePlate,
3932        Block::BambooPressurePlate,
3933        Block::CherryPressurePlate,
3934    ])
3935});
3936pub static WOODEN_SLABS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3937    HashSet::from_iter(vec![
3938        Block::OakSlab,
3939        Block::SpruceSlab,
3940        Block::BirchSlab,
3941        Block::JungleSlab,
3942        Block::AcaciaSlab,
3943        Block::DarkOakSlab,
3944        Block::PaleOakSlab,
3945        Block::CrimsonSlab,
3946        Block::WarpedSlab,
3947        Block::MangroveSlab,
3948        Block::BambooSlab,
3949        Block::CherrySlab,
3950    ])
3951});
3952pub static WOODEN_STAIRS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3953    HashSet::from_iter(vec![
3954        Block::OakStairs,
3955        Block::SpruceStairs,
3956        Block::BirchStairs,
3957        Block::JungleStairs,
3958        Block::AcaciaStairs,
3959        Block::DarkOakStairs,
3960        Block::PaleOakStairs,
3961        Block::CrimsonStairs,
3962        Block::WarpedStairs,
3963        Block::MangroveStairs,
3964        Block::BambooStairs,
3965        Block::CherryStairs,
3966    ])
3967});
3968pub static WOODEN_TRAPDOORS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3969    HashSet::from_iter(vec![
3970        Block::AcaciaTrapdoor,
3971        Block::BirchTrapdoor,
3972        Block::DarkOakTrapdoor,
3973        Block::PaleOakTrapdoor,
3974        Block::JungleTrapdoor,
3975        Block::OakTrapdoor,
3976        Block::SpruceTrapdoor,
3977        Block::CrimsonTrapdoor,
3978        Block::WarpedTrapdoor,
3979        Block::MangroveTrapdoor,
3980        Block::BambooTrapdoor,
3981        Block::CherryTrapdoor,
3982    ])
3983});
3984pub static WOOL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3985    HashSet::from_iter(vec![
3986        Block::WhiteWool,
3987        Block::OrangeWool,
3988        Block::MagentaWool,
3989        Block::LightBlueWool,
3990        Block::YellowWool,
3991        Block::LimeWool,
3992        Block::PinkWool,
3993        Block::GrayWool,
3994        Block::LightGrayWool,
3995        Block::CyanWool,
3996        Block::PurpleWool,
3997        Block::BlueWool,
3998        Block::BrownWool,
3999        Block::GreenWool,
4000        Block::RedWool,
4001        Block::BlackWool,
4002    ])
4003});
4004pub static WOOL_CARPETS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
4005    HashSet::from_iter(vec![
4006        Block::WhiteCarpet,
4007        Block::OrangeCarpet,
4008        Block::MagentaCarpet,
4009        Block::LightBlueCarpet,
4010        Block::YellowCarpet,
4011        Block::LimeCarpet,
4012        Block::PinkCarpet,
4013        Block::GrayCarpet,
4014        Block::LightGrayCarpet,
4015        Block::CyanCarpet,
4016        Block::PurpleCarpet,
4017        Block::BlueCarpet,
4018        Block::BrownCarpet,
4019        Block::GreenCarpet,
4020        Block::RedCarpet,
4021        Block::BlackCarpet,
4022    ])
4023});