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