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