azalea_registry/tags/
blocks.rs

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