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