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