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