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::SuspiciousSand,
152 Block::Terracotta,
153 Block::WhiteTerracotta,
154 Block::OrangeTerracotta,
155 Block::MagentaTerracotta,
156 Block::LightBlueTerracotta,
157 Block::YellowTerracotta,
158 Block::LimeTerracotta,
159 Block::PinkTerracotta,
160 Block::GrayTerracotta,
161 Block::LightGrayTerracotta,
162 Block::CyanTerracotta,
163 Block::PurpleTerracotta,
164 Block::BlueTerracotta,
165 Block::BrownTerracotta,
166 Block::GreenTerracotta,
167 Block::RedTerracotta,
168 Block::BlackTerracotta,
169 ])
170});
171pub static AZALEA_ROOT_REPLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
172 HashSet::from_iter(vec![
173 Block::RedSand,
174 Block::Clay,
175 Block::Gravel,
176 Block::Sand,
177 Block::SnowBlock,
178 Block::PowderSnow,
179 Block::Stone,
180 Block::Granite,
181 Block::Diorite,
182 Block::Andesite,
183 Block::Tuff,
184 Block::Deepslate,
185 Block::Dirt,
186 Block::GrassBlock,
187 Block::Podzol,
188 Block::CoarseDirt,
189 Block::Mycelium,
190 Block::RootedDirt,
191 Block::MossBlock,
192 Block::PaleMossBlock,
193 Block::Mud,
194 Block::MuddyMangroveRoots,
195 Block::Terracotta,
196 Block::WhiteTerracotta,
197 Block::OrangeTerracotta,
198 Block::MagentaTerracotta,
199 Block::LightBlueTerracotta,
200 Block::YellowTerracotta,
201 Block::LimeTerracotta,
202 Block::PinkTerracotta,
203 Block::GrayTerracotta,
204 Block::LightGrayTerracotta,
205 Block::CyanTerracotta,
206 Block::PurpleTerracotta,
207 Block::BlueTerracotta,
208 Block::BrownTerracotta,
209 Block::GreenTerracotta,
210 Block::RedTerracotta,
211 Block::BlackTerracotta,
212 ])
213});
214pub static BADLANDS_TERRACOTTA: LazyLock<HashSet<Block>> = LazyLock::new(|| {
215 HashSet::from_iter(vec![
216 Block::Terracotta,
217 Block::WhiteTerracotta,
218 Block::YellowTerracotta,
219 Block::OrangeTerracotta,
220 Block::RedTerracotta,
221 Block::BrownTerracotta,
222 Block::LightGrayTerracotta,
223 ])
224});
225pub static BAMBOO_BLOCKS: LazyLock<HashSet<Block>> =
226 LazyLock::new(|| HashSet::from_iter(vec![Block::BambooBlock, Block::StrippedBambooBlock]));
227pub static BAMBOO_PLANTABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
228 HashSet::from_iter(vec![
229 Block::Bamboo,
230 Block::BambooSapling,
231 Block::Gravel,
232 Block::SuspiciousGravel,
233 Block::Sand,
234 Block::RedSand,
235 Block::SuspiciousSand,
236 Block::SuspiciousSand,
237 Block::Dirt,
238 Block::GrassBlock,
239 Block::Podzol,
240 Block::CoarseDirt,
241 Block::Mycelium,
242 Block::RootedDirt,
243 Block::MossBlock,
244 Block::PaleMossBlock,
245 Block::Mud,
246 Block::MuddyMangroveRoots,
247 ])
248});
249pub static BANNERS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
250 HashSet::from_iter(vec![
251 Block::WhiteBanner,
252 Block::OrangeBanner,
253 Block::MagentaBanner,
254 Block::LightBlueBanner,
255 Block::YellowBanner,
256 Block::LimeBanner,
257 Block::PinkBanner,
258 Block::GrayBanner,
259 Block::LightGrayBanner,
260 Block::CyanBanner,
261 Block::PurpleBanner,
262 Block::BlueBanner,
263 Block::BrownBanner,
264 Block::GreenBanner,
265 Block::RedBanner,
266 Block::BlackBanner,
267 Block::WhiteWallBanner,
268 Block::OrangeWallBanner,
269 Block::MagentaWallBanner,
270 Block::LightBlueWallBanner,
271 Block::YellowWallBanner,
272 Block::LimeWallBanner,
273 Block::PinkWallBanner,
274 Block::GrayWallBanner,
275 Block::LightGrayWallBanner,
276 Block::CyanWallBanner,
277 Block::PurpleWallBanner,
278 Block::BlueWallBanner,
279 Block::BrownWallBanner,
280 Block::GreenWallBanner,
281 Block::RedWallBanner,
282 Block::BlackWallBanner,
283 ])
284});
285pub static BASE_STONE_NETHER: LazyLock<HashSet<Block>> =
286 LazyLock::new(|| HashSet::from_iter(vec![Block::Netherrack, Block::Basalt, Block::Blackstone]));
287pub static BASE_STONE_OVERWORLD: LazyLock<HashSet<Block>> = LazyLock::new(|| {
288 HashSet::from_iter(vec![
289 Block::Stone,
290 Block::Granite,
291 Block::Diorite,
292 Block::Andesite,
293 Block::Tuff,
294 Block::Deepslate,
295 ])
296});
297pub static BATS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
298 HashSet::from_iter(vec![
299 Block::Stone,
300 Block::Granite,
301 Block::Diorite,
302 Block::Andesite,
303 Block::Tuff,
304 Block::Deepslate,
305 ])
306});
307pub static BEACON_BASE_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
308 HashSet::from_iter(vec![
309 Block::NetheriteBlock,
310 Block::EmeraldBlock,
311 Block::DiamondBlock,
312 Block::GoldBlock,
313 Block::IronBlock,
314 ])
315});
316pub static BEDS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
317 HashSet::from_iter(vec![
318 Block::RedBed,
319 Block::BlackBed,
320 Block::BlueBed,
321 Block::BrownBed,
322 Block::CyanBed,
323 Block::GrayBed,
324 Block::GreenBed,
325 Block::LightBlueBed,
326 Block::LightGrayBed,
327 Block::LimeBed,
328 Block::MagentaBed,
329 Block::OrangeBed,
330 Block::PinkBed,
331 Block::PurpleBed,
332 Block::WhiteBed,
333 Block::YellowBed,
334 ])
335});
336pub static BEE_ATTRACTIVE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
337 HashSet::from_iter(vec![
338 Block::Dandelion,
339 Block::OpenEyeblossom,
340 Block::Poppy,
341 Block::BlueOrchid,
342 Block::Allium,
343 Block::AzureBluet,
344 Block::RedTulip,
345 Block::OrangeTulip,
346 Block::WhiteTulip,
347 Block::PinkTulip,
348 Block::OxeyeDaisy,
349 Block::Cornflower,
350 Block::LilyOfTheValley,
351 Block::WitherRose,
352 Block::Torchflower,
353 Block::Sunflower,
354 Block::Lilac,
355 Block::Peony,
356 Block::RoseBush,
357 Block::PitcherPlant,
358 Block::FloweringAzaleaLeaves,
359 Block::FloweringAzalea,
360 Block::MangrovePropagule,
361 Block::CherryLeaves,
362 Block::PinkPetals,
363 Block::Wildflowers,
364 Block::ChorusFlower,
365 Block::SporeBlossom,
366 Block::CactusFlower,
367 ])
368});
369pub static BEE_GROWABLES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
370 HashSet::from_iter(vec![
371 Block::SweetBerryBush,
372 Block::CaveVines,
373 Block::CaveVinesPlant,
374 Block::Beetroots,
375 Block::Carrots,
376 Block::Potatoes,
377 Block::Wheat,
378 Block::MelonStem,
379 Block::PumpkinStem,
380 Block::TorchflowerCrop,
381 Block::PitcherCrop,
382 ])
383});
384pub static BEEHIVES: LazyLock<HashSet<Block>> =
385 LazyLock::new(|| HashSet::from_iter(vec![Block::BeeNest, Block::Beehive]));
386pub static BIG_DRIPLEAF_PLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
387 HashSet::from_iter(vec![
388 Block::Dirt,
389 Block::GrassBlock,
390 Block::Podzol,
391 Block::CoarseDirt,
392 Block::Mycelium,
393 Block::RootedDirt,
394 Block::MossBlock,
395 Block::Mud,
396 Block::MuddyMangroveRoots,
397 Block::Farmland,
398 Block::Clay,
399 Block::MossBlock,
400 ])
401});
402pub static BIRCH_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
403 HashSet::from_iter(vec![
404 Block::BirchLog,
405 Block::BirchWood,
406 Block::StrippedBirchLog,
407 Block::StrippedBirchWood,
408 ])
409});
410pub static BLOCKS_WIND_CHARGE_EXPLOSIONS: LazyLock<HashSet<Block>> =
411 LazyLock::new(|| HashSet::from_iter(vec![Block::Barrier, Block::Bedrock]));
412pub static BUTTONS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
413 HashSet::from_iter(vec![
414 Block::OakButton,
415 Block::SpruceButton,
416 Block::BirchButton,
417 Block::JungleButton,
418 Block::AcaciaButton,
419 Block::DarkOakButton,
420 Block::PaleOakButton,
421 Block::CrimsonButton,
422 Block::WarpedButton,
423 Block::MangroveButton,
424 Block::BambooButton,
425 Block::CherryButton,
426 Block::StoneButton,
427 Block::PolishedBlackstoneButton,
428 ])
429});
430pub static CAMEL_SAND_STEP_SOUND_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
431 HashSet::from_iter(vec![
432 Block::Sand,
433 Block::RedSand,
434 Block::SuspiciousSand,
435 Block::SuspiciousSand,
436 Block::WhiteConcretePowder,
437 Block::OrangeConcretePowder,
438 Block::MagentaConcretePowder,
439 Block::LightBlueConcretePowder,
440 Block::YellowConcretePowder,
441 Block::LimeConcretePowder,
442 Block::PinkConcretePowder,
443 Block::GrayConcretePowder,
444 Block::LightGrayConcretePowder,
445 Block::CyanConcretePowder,
446 Block::PurpleConcretePowder,
447 Block::BlueConcretePowder,
448 Block::BrownConcretePowder,
449 Block::GreenConcretePowder,
450 Block::RedConcretePowder,
451 Block::BlackConcretePowder,
452 ])
453});
454pub static CAMELS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
455 HashSet::from_iter(vec![
456 Block::Sand,
457 Block::RedSand,
458 Block::SuspiciousSand,
459 Block::SuspiciousSand,
460 ])
461});
462pub static CAMPFIRES: LazyLock<HashSet<Block>> =
463 LazyLock::new(|| HashSet::from_iter(vec![Block::Campfire, Block::SoulCampfire]));
464pub static CANDLE_CAKES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
465 HashSet::from_iter(vec![
466 Block::CandleCake,
467 Block::WhiteCandleCake,
468 Block::OrangeCandleCake,
469 Block::MagentaCandleCake,
470 Block::LightBlueCandleCake,
471 Block::YellowCandleCake,
472 Block::LimeCandleCake,
473 Block::PinkCandleCake,
474 Block::GrayCandleCake,
475 Block::LightGrayCandleCake,
476 Block::CyanCandleCake,
477 Block::PurpleCandleCake,
478 Block::BlueCandleCake,
479 Block::BrownCandleCake,
480 Block::GreenCandleCake,
481 Block::RedCandleCake,
482 Block::BlackCandleCake,
483 ])
484});
485pub static CANDLES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
486 HashSet::from_iter(vec![
487 Block::Candle,
488 Block::WhiteCandle,
489 Block::OrangeCandle,
490 Block::MagentaCandle,
491 Block::LightBlueCandle,
492 Block::YellowCandle,
493 Block::LimeCandle,
494 Block::PinkCandle,
495 Block::GrayCandle,
496 Block::LightGrayCandle,
497 Block::CyanCandle,
498 Block::PurpleCandle,
499 Block::BlueCandle,
500 Block::BrownCandle,
501 Block::GreenCandle,
502 Block::RedCandle,
503 Block::BlackCandle,
504 ])
505});
506pub static CAULDRONS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
507 HashSet::from_iter(vec![
508 Block::Cauldron,
509 Block::WaterCauldron,
510 Block::LavaCauldron,
511 Block::PowderSnowCauldron,
512 ])
513});
514pub static CAVE_VINES: LazyLock<HashSet<Block>> =
515 LazyLock::new(|| HashSet::from_iter(vec![Block::CaveVinesPlant, Block::CaveVines]));
516pub static CEILING_HANGING_SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
517 HashSet::from_iter(vec![
518 Block::OakHangingSign,
519 Block::SpruceHangingSign,
520 Block::BirchHangingSign,
521 Block::AcaciaHangingSign,
522 Block::CherryHangingSign,
523 Block::JungleHangingSign,
524 Block::DarkOakHangingSign,
525 Block::PaleOakHangingSign,
526 Block::CrimsonHangingSign,
527 Block::WarpedHangingSign,
528 Block::MangroveHangingSign,
529 Block::BambooHangingSign,
530 ])
531});
532pub static CHERRY_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
533 HashSet::from_iter(vec![
534 Block::CherryLog,
535 Block::CherryWood,
536 Block::StrippedCherryLog,
537 Block::StrippedCherryWood,
538 ])
539});
540pub static CLIMBABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
541 HashSet::from_iter(vec![
542 Block::Ladder,
543 Block::Vine,
544 Block::Scaffolding,
545 Block::WeepingVines,
546 Block::WeepingVinesPlant,
547 Block::TwistingVines,
548 Block::TwistingVinesPlant,
549 Block::CaveVines,
550 Block::CaveVinesPlant,
551 ])
552});
553pub static COAL_ORES: LazyLock<HashSet<Block>> =
554 LazyLock::new(|| HashSet::from_iter(vec![Block::CoalOre, Block::DeepslateCoalOre]));
555pub static COMBINATION_STEP_SOUND_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
556 HashSet::from_iter(vec![
557 Block::MossCarpet,
558 Block::PaleMossCarpet,
559 Block::Snow,
560 Block::NetherSprouts,
561 Block::WarpedRoots,
562 Block::CrimsonRoots,
563 Block::ResinClump,
564 Block::WhiteCarpet,
565 Block::OrangeCarpet,
566 Block::MagentaCarpet,
567 Block::LightBlueCarpet,
568 Block::YellowCarpet,
569 Block::LimeCarpet,
570 Block::PinkCarpet,
571 Block::GrayCarpet,
572 Block::LightGrayCarpet,
573 Block::CyanCarpet,
574 Block::PurpleCarpet,
575 Block::BlueCarpet,
576 Block::BrownCarpet,
577 Block::GreenCarpet,
578 Block::RedCarpet,
579 Block::BlackCarpet,
580 ])
581});
582pub static COMPLETES_FIND_TREE_TUTORIAL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
583 HashSet::from_iter(vec![
584 Block::JungleLeaves,
585 Block::OakLeaves,
586 Block::SpruceLeaves,
587 Block::PaleOakLeaves,
588 Block::DarkOakLeaves,
589 Block::AcaciaLeaves,
590 Block::BirchLeaves,
591 Block::AzaleaLeaves,
592 Block::FloweringAzaleaLeaves,
593 Block::MangroveLeaves,
594 Block::CherryLeaves,
595 Block::NetherWartBlock,
596 Block::WarpedWartBlock,
597 Block::CrimsonStem,
598 Block::StrippedCrimsonStem,
599 Block::CrimsonHyphae,
600 Block::StrippedCrimsonHyphae,
601 Block::WarpedStem,
602 Block::StrippedWarpedStem,
603 Block::WarpedHyphae,
604 Block::StrippedWarpedHyphae,
605 Block::DarkOakLog,
606 Block::DarkOakWood,
607 Block::StrippedDarkOakLog,
608 Block::StrippedDarkOakWood,
609 Block::PaleOakLog,
610 Block::PaleOakWood,
611 Block::StrippedPaleOakLog,
612 Block::StrippedPaleOakWood,
613 Block::OakLog,
614 Block::OakWood,
615 Block::StrippedOakLog,
616 Block::StrippedOakWood,
617 Block::AcaciaLog,
618 Block::AcaciaWood,
619 Block::StrippedAcaciaLog,
620 Block::StrippedAcaciaWood,
621 Block::BirchLog,
622 Block::BirchWood,
623 Block::StrippedBirchLog,
624 Block::StrippedBirchWood,
625 Block::JungleLog,
626 Block::JungleWood,
627 Block::StrippedJungleLog,
628 Block::StrippedJungleWood,
629 Block::SpruceLog,
630 Block::SpruceWood,
631 Block::StrippedSpruceLog,
632 Block::StrippedSpruceWood,
633 Block::MangroveLog,
634 Block::MangroveWood,
635 Block::StrippedMangroveLog,
636 Block::StrippedMangroveWood,
637 Block::CherryLog,
638 Block::CherryWood,
639 Block::StrippedCherryLog,
640 Block::StrippedCherryWood,
641 ])
642});
643pub static CONCRETE_POWDER: LazyLock<HashSet<Block>> = LazyLock::new(|| {
644 HashSet::from_iter(vec![
645 Block::WhiteConcretePowder,
646 Block::OrangeConcretePowder,
647 Block::MagentaConcretePowder,
648 Block::LightBlueConcretePowder,
649 Block::YellowConcretePowder,
650 Block::LimeConcretePowder,
651 Block::PinkConcretePowder,
652 Block::GrayConcretePowder,
653 Block::LightGrayConcretePowder,
654 Block::CyanConcretePowder,
655 Block::PurpleConcretePowder,
656 Block::BlueConcretePowder,
657 Block::BrownConcretePowder,
658 Block::GreenConcretePowder,
659 Block::RedConcretePowder,
660 Block::BlackConcretePowder,
661 ])
662});
663pub static CONVERTABLE_TO_MUD: LazyLock<HashSet<Block>> =
664 LazyLock::new(|| HashSet::from_iter(vec![Block::Dirt, Block::CoarseDirt, Block::RootedDirt]));
665pub static COPPER_ORES: LazyLock<HashSet<Block>> =
666 LazyLock::new(|| HashSet::from_iter(vec![Block::CopperOre, Block::DeepslateCopperOre]));
667pub static CORAL_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
668 HashSet::from_iter(vec![
669 Block::TubeCoralBlock,
670 Block::BrainCoralBlock,
671 Block::BubbleCoralBlock,
672 Block::FireCoralBlock,
673 Block::HornCoralBlock,
674 ])
675});
676pub static CORAL_PLANTS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
677 HashSet::from_iter(vec![
678 Block::TubeCoral,
679 Block::BrainCoral,
680 Block::BubbleCoral,
681 Block::FireCoral,
682 Block::HornCoral,
683 ])
684});
685pub static CORALS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
686 HashSet::from_iter(vec![
687 Block::TubeCoralFan,
688 Block::BrainCoralFan,
689 Block::BubbleCoralFan,
690 Block::FireCoralFan,
691 Block::HornCoralFan,
692 Block::TubeCoral,
693 Block::BrainCoral,
694 Block::BubbleCoral,
695 Block::FireCoral,
696 Block::HornCoral,
697 ])
698});
699pub static CRIMSON_STEMS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
700 HashSet::from_iter(vec![
701 Block::CrimsonStem,
702 Block::StrippedCrimsonStem,
703 Block::CrimsonHyphae,
704 Block::StrippedCrimsonHyphae,
705 ])
706});
707pub static CROPS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
708 HashSet::from_iter(vec![
709 Block::Beetroots,
710 Block::Carrots,
711 Block::Potatoes,
712 Block::Wheat,
713 Block::MelonStem,
714 Block::PumpkinStem,
715 Block::TorchflowerCrop,
716 Block::PitcherCrop,
717 ])
718});
719pub static CRYSTAL_SOUND_BLOCKS: LazyLock<HashSet<Block>> =
720 LazyLock::new(|| HashSet::from_iter(vec![Block::AmethystBlock, Block::BuddingAmethyst]));
721pub static DAMPENS_VIBRATIONS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
722 HashSet::from_iter(vec![
723 Block::WhiteWool,
724 Block::OrangeWool,
725 Block::MagentaWool,
726 Block::LightBlueWool,
727 Block::YellowWool,
728 Block::LimeWool,
729 Block::PinkWool,
730 Block::GrayWool,
731 Block::LightGrayWool,
732 Block::CyanWool,
733 Block::PurpleWool,
734 Block::BlueWool,
735 Block::BrownWool,
736 Block::GreenWool,
737 Block::RedWool,
738 Block::BlackWool,
739 Block::WhiteCarpet,
740 Block::OrangeCarpet,
741 Block::MagentaCarpet,
742 Block::LightBlueCarpet,
743 Block::YellowCarpet,
744 Block::LimeCarpet,
745 Block::PinkCarpet,
746 Block::GrayCarpet,
747 Block::LightGrayCarpet,
748 Block::CyanCarpet,
749 Block::PurpleCarpet,
750 Block::BlueCarpet,
751 Block::BrownCarpet,
752 Block::GreenCarpet,
753 Block::RedCarpet,
754 Block::BlackCarpet,
755 ])
756});
757pub static DARK_OAK_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
758 HashSet::from_iter(vec![
759 Block::DarkOakLog,
760 Block::DarkOakWood,
761 Block::StrippedDarkOakLog,
762 Block::StrippedDarkOakWood,
763 ])
764});
765pub static DEEPSLATE_ORE_REPLACEABLES: LazyLock<HashSet<Block>> =
766 LazyLock::new(|| HashSet::from_iter(vec![Block::Deepslate, Block::Tuff]));
767pub static DIAMOND_ORES: LazyLock<HashSet<Block>> =
768 LazyLock::new(|| HashSet::from_iter(vec![Block::DiamondOre, Block::DeepslateDiamondOre]));
769pub static DIRT: LazyLock<HashSet<Block>> = LazyLock::new(|| {
770 HashSet::from_iter(vec![
771 Block::Dirt,
772 Block::GrassBlock,
773 Block::Podzol,
774 Block::CoarseDirt,
775 Block::Mycelium,
776 Block::RootedDirt,
777 Block::MossBlock,
778 Block::PaleMossBlock,
779 Block::Mud,
780 Block::MuddyMangroveRoots,
781 ])
782});
783pub static DOES_NOT_BLOCK_HOPPERS: LazyLock<HashSet<Block>> =
784 LazyLock::new(|| HashSet::from_iter(vec![Block::BeeNest, Block::Beehive]));
785pub static DOORS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
786 HashSet::from_iter(vec![
787 Block::CopperDoor,
788 Block::ExposedCopperDoor,
789 Block::WeatheredCopperDoor,
790 Block::OxidizedCopperDoor,
791 Block::WaxedCopperDoor,
792 Block::WaxedExposedCopperDoor,
793 Block::WaxedWeatheredCopperDoor,
794 Block::WaxedOxidizedCopperDoor,
795 Block::IronDoor,
796 Block::OakDoor,
797 Block::SpruceDoor,
798 Block::BirchDoor,
799 Block::JungleDoor,
800 Block::AcaciaDoor,
801 Block::DarkOakDoor,
802 Block::PaleOakDoor,
803 Block::CrimsonDoor,
804 Block::WarpedDoor,
805 Block::MangroveDoor,
806 Block::BambooDoor,
807 Block::CherryDoor,
808 ])
809});
810pub static DRAGON_IMMUNE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
811 HashSet::from_iter(vec![
812 Block::Barrier,
813 Block::Bedrock,
814 Block::EndPortal,
815 Block::EndPortalFrame,
816 Block::EndGateway,
817 Block::CommandBlock,
818 Block::RepeatingCommandBlock,
819 Block::ChainCommandBlock,
820 Block::StructureBlock,
821 Block::Jigsaw,
822 Block::MovingPiston,
823 Block::Obsidian,
824 Block::CryingObsidian,
825 Block::EndStone,
826 Block::IronBars,
827 Block::RespawnAnchor,
828 Block::ReinforcedDeepslate,
829 Block::TestBlock,
830 Block::TestInstanceBlock,
831 ])
832});
833pub static DRAGON_TRANSPARENT: LazyLock<HashSet<Block>> =
834 LazyLock::new(|| HashSet::from_iter(vec![Block::Light, Block::Fire, Block::SoulFire]));
835pub static DRIPSTONE_REPLACEABLE_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
836 HashSet::from_iter(vec![
837 Block::Stone,
838 Block::Granite,
839 Block::Diorite,
840 Block::Andesite,
841 Block::Tuff,
842 Block::Deepslate,
843 ])
844});
845pub static DRY_VEGETATION_MAY_PLACE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
846 HashSet::from_iter(vec![
847 Block::Farmland,
848 Block::Sand,
849 Block::RedSand,
850 Block::SuspiciousSand,
851 Block::SuspiciousSand,
852 Block::Terracotta,
853 Block::WhiteTerracotta,
854 Block::OrangeTerracotta,
855 Block::MagentaTerracotta,
856 Block::LightBlueTerracotta,
857 Block::YellowTerracotta,
858 Block::LimeTerracotta,
859 Block::PinkTerracotta,
860 Block::GrayTerracotta,
861 Block::LightGrayTerracotta,
862 Block::CyanTerracotta,
863 Block::PurpleTerracotta,
864 Block::BlueTerracotta,
865 Block::BrownTerracotta,
866 Block::GreenTerracotta,
867 Block::RedTerracotta,
868 Block::BlackTerracotta,
869 Block::Dirt,
870 Block::GrassBlock,
871 Block::Podzol,
872 Block::CoarseDirt,
873 Block::Mycelium,
874 Block::RootedDirt,
875 Block::MossBlock,
876 Block::PaleMossBlock,
877 Block::Mud,
878 Block::MuddyMangroveRoots,
879 ])
880});
881pub static EDIBLE_FOR_SHEEP: LazyLock<HashSet<Block>> = LazyLock::new(|| {
882 HashSet::from_iter(vec![
883 Block::ShortGrass,
884 Block::ShortDryGrass,
885 Block::TallDryGrass,
886 Block::Fern,
887 ])
888});
889pub static EMERALD_ORES: LazyLock<HashSet<Block>> =
890 LazyLock::new(|| HashSet::from_iter(vec![Block::EmeraldOre, Block::DeepslateEmeraldOre]));
891pub static ENCHANTMENT_POWER_PROVIDER: LazyLock<HashSet<Block>> =
892 LazyLock::new(|| HashSet::from_iter(vec![Block::Bookshelf]));
893pub static ENCHANTMENT_POWER_TRANSMITTER: LazyLock<HashSet<Block>> = LazyLock::new(|| {
894 HashSet::from_iter(vec![
895 Block::Air,
896 Block::Water,
897 Block::Lava,
898 Block::ShortGrass,
899 Block::Fern,
900 Block::DeadBush,
901 Block::Bush,
902 Block::ShortDryGrass,
903 Block::TallDryGrass,
904 Block::Seagrass,
905 Block::TallSeagrass,
906 Block::Fire,
907 Block::SoulFire,
908 Block::Snow,
909 Block::Vine,
910 Block::GlowLichen,
911 Block::ResinClump,
912 Block::Light,
913 Block::TallGrass,
914 Block::LargeFern,
915 Block::StructureVoid,
916 Block::VoidAir,
917 Block::CaveAir,
918 Block::BubbleColumn,
919 Block::WarpedRoots,
920 Block::NetherSprouts,
921 Block::CrimsonRoots,
922 Block::LeafLitter,
923 Block::HangingRoots,
924 ])
925});
926pub static ENDERMAN_HOLDABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
927 HashSet::from_iter(vec![
928 Block::Sand,
929 Block::RedSand,
930 Block::Gravel,
931 Block::BrownMushroom,
932 Block::RedMushroom,
933 Block::Tnt,
934 Block::Cactus,
935 Block::Clay,
936 Block::Pumpkin,
937 Block::CarvedPumpkin,
938 Block::Melon,
939 Block::CrimsonFungus,
940 Block::CrimsonNylium,
941 Block::CrimsonRoots,
942 Block::WarpedFungus,
943 Block::WarpedNylium,
944 Block::WarpedRoots,
945 Block::CactusFlower,
946 Block::Dandelion,
947 Block::OpenEyeblossom,
948 Block::Poppy,
949 Block::BlueOrchid,
950 Block::Allium,
951 Block::AzureBluet,
952 Block::RedTulip,
953 Block::OrangeTulip,
954 Block::WhiteTulip,
955 Block::PinkTulip,
956 Block::OxeyeDaisy,
957 Block::Cornflower,
958 Block::LilyOfTheValley,
959 Block::WitherRose,
960 Block::Torchflower,
961 Block::ClosedEyeblossom,
962 Block::Dirt,
963 Block::GrassBlock,
964 Block::Podzol,
965 Block::CoarseDirt,
966 Block::Mycelium,
967 Block::RootedDirt,
968 Block::MossBlock,
969 Block::PaleMossBlock,
970 Block::Mud,
971 Block::MuddyMangroveRoots,
972 ])
973});
974pub static FALL_DAMAGE_RESETTING: LazyLock<HashSet<Block>> = LazyLock::new(|| {
975 HashSet::from_iter(vec![
976 Block::SweetBerryBush,
977 Block::Cobweb,
978 Block::Ladder,
979 Block::Vine,
980 Block::Scaffolding,
981 Block::WeepingVines,
982 Block::WeepingVinesPlant,
983 Block::TwistingVines,
984 Block::TwistingVinesPlant,
985 Block::CaveVines,
986 Block::CaveVinesPlant,
987 ])
988});
989pub static FEATURES_CANNOT_REPLACE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
990 HashSet::from_iter(vec![
991 Block::Bedrock,
992 Block::Spawner,
993 Block::Chest,
994 Block::EndPortalFrame,
995 Block::ReinforcedDeepslate,
996 Block::TrialSpawner,
997 Block::Vault,
998 ])
999});
1000pub static FENCE_GATES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1001 HashSet::from_iter(vec![
1002 Block::AcaciaFenceGate,
1003 Block::BirchFenceGate,
1004 Block::DarkOakFenceGate,
1005 Block::PaleOakFenceGate,
1006 Block::JungleFenceGate,
1007 Block::OakFenceGate,
1008 Block::SpruceFenceGate,
1009 Block::CrimsonFenceGate,
1010 Block::WarpedFenceGate,
1011 Block::MangroveFenceGate,
1012 Block::BambooFenceGate,
1013 Block::CherryFenceGate,
1014 ])
1015});
1016pub static FENCES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1017 HashSet::from_iter(vec![
1018 Block::NetherBrickFence,
1019 Block::OakFence,
1020 Block::AcaciaFence,
1021 Block::DarkOakFence,
1022 Block::PaleOakFence,
1023 Block::SpruceFence,
1024 Block::BirchFence,
1025 Block::JungleFence,
1026 Block::CrimsonFence,
1027 Block::WarpedFence,
1028 Block::MangroveFence,
1029 Block::BambooFence,
1030 Block::CherryFence,
1031 ])
1032});
1033pub static FIRE: LazyLock<HashSet<Block>> =
1034 LazyLock::new(|| HashSet::from_iter(vec![Block::Fire, Block::SoulFire]));
1035pub static FLOWER_POTS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1036 HashSet::from_iter(vec![
1037 Block::FlowerPot,
1038 Block::PottedOpenEyeblossom,
1039 Block::PottedClosedEyeblossom,
1040 Block::PottedPoppy,
1041 Block::PottedBlueOrchid,
1042 Block::PottedAllium,
1043 Block::PottedAzureBluet,
1044 Block::PottedRedTulip,
1045 Block::PottedOrangeTulip,
1046 Block::PottedWhiteTulip,
1047 Block::PottedPinkTulip,
1048 Block::PottedOxeyeDaisy,
1049 Block::PottedDandelion,
1050 Block::PottedOakSapling,
1051 Block::PottedSpruceSapling,
1052 Block::PottedBirchSapling,
1053 Block::PottedJungleSapling,
1054 Block::PottedAcaciaSapling,
1055 Block::PottedDarkOakSapling,
1056 Block::PottedPaleOakSapling,
1057 Block::PottedRedMushroom,
1058 Block::PottedBrownMushroom,
1059 Block::PottedDeadBush,
1060 Block::PottedFern,
1061 Block::PottedCactus,
1062 Block::PottedCornflower,
1063 Block::PottedLilyOfTheValley,
1064 Block::PottedWitherRose,
1065 Block::PottedBamboo,
1066 Block::PottedCrimsonFungus,
1067 Block::PottedWarpedFungus,
1068 Block::PottedCrimsonRoots,
1069 Block::PottedWarpedRoots,
1070 Block::PottedAzaleaBush,
1071 Block::PottedFloweringAzaleaBush,
1072 Block::PottedMangrovePropagule,
1073 Block::PottedCherrySapling,
1074 Block::PottedTorchflower,
1075 ])
1076});
1077pub static FLOWERS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1078 HashSet::from_iter(vec![
1079 Block::Sunflower,
1080 Block::Lilac,
1081 Block::Peony,
1082 Block::RoseBush,
1083 Block::PitcherPlant,
1084 Block::FloweringAzaleaLeaves,
1085 Block::FloweringAzalea,
1086 Block::MangrovePropagule,
1087 Block::CherryLeaves,
1088 Block::PinkPetals,
1089 Block::Wildflowers,
1090 Block::ChorusFlower,
1091 Block::SporeBlossom,
1092 Block::CactusFlower,
1093 Block::Dandelion,
1094 Block::OpenEyeblossom,
1095 Block::Poppy,
1096 Block::BlueOrchid,
1097 Block::Allium,
1098 Block::AzureBluet,
1099 Block::RedTulip,
1100 Block::OrangeTulip,
1101 Block::WhiteTulip,
1102 Block::PinkTulip,
1103 Block::OxeyeDaisy,
1104 Block::Cornflower,
1105 Block::LilyOfTheValley,
1106 Block::WitherRose,
1107 Block::Torchflower,
1108 Block::ClosedEyeblossom,
1109 ])
1110});
1111pub static FOXES_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1112 HashSet::from_iter(vec![
1113 Block::GrassBlock,
1114 Block::Snow,
1115 Block::SnowBlock,
1116 Block::Podzol,
1117 Block::CoarseDirt,
1118 ])
1119});
1120pub static FROG_PREFER_JUMP_TO: LazyLock<HashSet<Block>> =
1121 LazyLock::new(|| HashSet::from_iter(vec![Block::LilyPad, Block::BigDripleaf]));
1122pub static FROGS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1123 HashSet::from_iter(vec![
1124 Block::GrassBlock,
1125 Block::Mud,
1126 Block::MangroveRoots,
1127 Block::MuddyMangroveRoots,
1128 ])
1129});
1130pub static GEODE_INVALID_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1131 HashSet::from_iter(vec![
1132 Block::Bedrock,
1133 Block::Water,
1134 Block::Lava,
1135 Block::Ice,
1136 Block::PackedIce,
1137 Block::BlueIce,
1138 ])
1139});
1140pub static GOATS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1141 HashSet::from_iter(vec![
1142 Block::Stone,
1143 Block::Snow,
1144 Block::SnowBlock,
1145 Block::PackedIce,
1146 Block::Gravel,
1147 Block::GrassBlock,
1148 ])
1149});
1150pub static GOLD_ORES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1151 HashSet::from_iter(vec![
1152 Block::GoldOre,
1153 Block::NetherGoldOre,
1154 Block::DeepslateGoldOre,
1155 ])
1156});
1157pub static GUARDED_BY_PIGLINS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
1158 HashSet::from_iter(vec![
1159 Block::GoldBlock,
1160 Block::Barrel,
1161 Block::Chest,
1162 Block::EnderChest,
1163 Block::GildedBlackstone,
1164 Block::TrappedChest,
1165 Block::RawGoldBlock,
1166 Block::ShulkerBox,
1167 Block::BlackShulkerBox,
1168 Block::BlueShulkerBox,
1169 Block::BrownShulkerBox,
1170 Block::CyanShulkerBox,
1171 Block::GrayShulkerBox,
1172 Block::GreenShulkerBox,
1173 Block::LightBlueShulkerBox,
1174 Block::LightGrayShulkerBox,
1175 Block::LimeShulkerBox,
1176 Block::MagentaShulkerBox,
1177 Block::OrangeShulkerBox,
1178 Block::PinkShulkerBox,
1179 Block::PurpleShulkerBox,
1180 Block::RedShulkerBox,
1181 Block::WhiteShulkerBox,
1182 Block::YellowShulkerBox,
1183 Block::GoldOre,
1184 Block::NetherGoldOre,
1185 Block::DeepslateGoldOre,
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::SuspiciousSand,
2772 Block::Terracotta,
2773 Block::WhiteTerracotta,
2774 Block::OrangeTerracotta,
2775 Block::MagentaTerracotta,
2776 Block::LightBlueTerracotta,
2777 Block::YellowTerracotta,
2778 Block::LimeTerracotta,
2779 Block::PinkTerracotta,
2780 Block::GrayTerracotta,
2781 Block::LightGrayTerracotta,
2782 Block::CyanTerracotta,
2783 Block::PurpleTerracotta,
2784 Block::BlueTerracotta,
2785 Block::BrownTerracotta,
2786 Block::GreenTerracotta,
2787 Block::RedTerracotta,
2788 Block::BlackTerracotta,
2789 Block::IronOre,
2790 Block::DeepslateIronOre,
2791 Block::CopperOre,
2792 Block::DeepslateCopperOre,
2793 Block::Snow,
2794 Block::SnowBlock,
2795 Block::PowderSnow,
2796 ])
2797});
2798pub static OVERWORLD_NATURAL_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2799 HashSet::from_iter(vec![
2800 Block::AcaciaLog,
2801 Block::BirchLog,
2802 Block::OakLog,
2803 Block::JungleLog,
2804 Block::SpruceLog,
2805 Block::DarkOakLog,
2806 Block::PaleOakLog,
2807 Block::MangroveLog,
2808 Block::CherryLog,
2809 ])
2810});
2811pub static PALE_OAK_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2812 HashSet::from_iter(vec![
2813 Block::PaleOakLog,
2814 Block::PaleOakWood,
2815 Block::StrippedPaleOakLog,
2816 Block::StrippedPaleOakWood,
2817 ])
2818});
2819pub static PARROTS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2820 HashSet::from_iter(vec![
2821 Block::GrassBlock,
2822 Block::Air,
2823 Block::JungleLeaves,
2824 Block::OakLeaves,
2825 Block::SpruceLeaves,
2826 Block::PaleOakLeaves,
2827 Block::DarkOakLeaves,
2828 Block::AcaciaLeaves,
2829 Block::BirchLeaves,
2830 Block::AzaleaLeaves,
2831 Block::FloweringAzaleaLeaves,
2832 Block::MangroveLeaves,
2833 Block::CherryLeaves,
2834 Block::CrimsonStem,
2835 Block::StrippedCrimsonStem,
2836 Block::CrimsonHyphae,
2837 Block::StrippedCrimsonHyphae,
2838 Block::WarpedStem,
2839 Block::StrippedWarpedStem,
2840 Block::WarpedHyphae,
2841 Block::StrippedWarpedHyphae,
2842 Block::DarkOakLog,
2843 Block::DarkOakWood,
2844 Block::StrippedDarkOakLog,
2845 Block::StrippedDarkOakWood,
2846 Block::PaleOakLog,
2847 Block::PaleOakWood,
2848 Block::StrippedPaleOakLog,
2849 Block::StrippedPaleOakWood,
2850 Block::OakLog,
2851 Block::OakWood,
2852 Block::StrippedOakLog,
2853 Block::StrippedOakWood,
2854 Block::AcaciaLog,
2855 Block::AcaciaWood,
2856 Block::StrippedAcaciaLog,
2857 Block::StrippedAcaciaWood,
2858 Block::BirchLog,
2859 Block::BirchWood,
2860 Block::StrippedBirchLog,
2861 Block::StrippedBirchWood,
2862 Block::JungleLog,
2863 Block::JungleWood,
2864 Block::StrippedJungleLog,
2865 Block::StrippedJungleWood,
2866 Block::SpruceLog,
2867 Block::SpruceWood,
2868 Block::StrippedSpruceLog,
2869 Block::StrippedSpruceWood,
2870 Block::MangroveLog,
2871 Block::MangroveWood,
2872 Block::StrippedMangroveLog,
2873 Block::StrippedMangroveWood,
2874 Block::CherryLog,
2875 Block::CherryWood,
2876 Block::StrippedCherryLog,
2877 Block::StrippedCherryWood,
2878 ])
2879});
2880pub static PIGLIN_REPELLENTS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2881 HashSet::from_iter(vec![
2882 Block::SoulFire,
2883 Block::SoulTorch,
2884 Block::SoulLantern,
2885 Block::SoulWallTorch,
2886 Block::SoulCampfire,
2887 ])
2888});
2889pub static PLANKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2890 HashSet::from_iter(vec![
2891 Block::OakPlanks,
2892 Block::SprucePlanks,
2893 Block::BirchPlanks,
2894 Block::JunglePlanks,
2895 Block::AcaciaPlanks,
2896 Block::DarkOakPlanks,
2897 Block::PaleOakPlanks,
2898 Block::CrimsonPlanks,
2899 Block::WarpedPlanks,
2900 Block::MangrovePlanks,
2901 Block::BambooPlanks,
2902 Block::CherryPlanks,
2903 ])
2904});
2905pub static PLAYS_AMBIENT_DESERT_BLOCK_SOUNDS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2906 HashSet::from_iter(vec![
2907 Block::Sand,
2908 Block::RedSand,
2909 Block::Terracotta,
2910 Block::WhiteTerracotta,
2911 Block::OrangeTerracotta,
2912 Block::MagentaTerracotta,
2913 Block::LightBlueTerracotta,
2914 Block::YellowTerracotta,
2915 Block::LimeTerracotta,
2916 Block::PinkTerracotta,
2917 Block::GrayTerracotta,
2918 Block::LightGrayTerracotta,
2919 Block::CyanTerracotta,
2920 Block::PurpleTerracotta,
2921 Block::BlueTerracotta,
2922 Block::BrownTerracotta,
2923 Block::GreenTerracotta,
2924 Block::RedTerracotta,
2925 Block::BlackTerracotta,
2926 ])
2927});
2928pub static POLAR_BEARS_SPAWNABLE_ON_ALTERNATE: LazyLock<HashSet<Block>> =
2929 LazyLock::new(|| HashSet::from_iter(vec![Block::Ice]));
2930pub static PORTALS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2931 HashSet::from_iter(vec![
2932 Block::NetherPortal,
2933 Block::EndPortal,
2934 Block::EndGateway,
2935 ])
2936});
2937pub static PRESSURE_PLATES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2938 HashSet::from_iter(vec![
2939 Block::LightWeightedPressurePlate,
2940 Block::HeavyWeightedPressurePlate,
2941 Block::OakPressurePlate,
2942 Block::SprucePressurePlate,
2943 Block::BirchPressurePlate,
2944 Block::JunglePressurePlate,
2945 Block::AcaciaPressurePlate,
2946 Block::DarkOakPressurePlate,
2947 Block::PaleOakPressurePlate,
2948 Block::CrimsonPressurePlate,
2949 Block::WarpedPressurePlate,
2950 Block::MangrovePressurePlate,
2951 Block::BambooPressurePlate,
2952 Block::CherryPressurePlate,
2953 Block::StonePressurePlate,
2954 Block::PolishedBlackstonePressurePlate,
2955 ])
2956});
2957pub static PREVENT_MOB_SPAWNING_INSIDE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2958 HashSet::from_iter(vec![
2959 Block::Rail,
2960 Block::PoweredRail,
2961 Block::DetectorRail,
2962 Block::ActivatorRail,
2963 ])
2964});
2965pub static RABBITS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2966 HashSet::from_iter(vec![
2967 Block::GrassBlock,
2968 Block::Snow,
2969 Block::SnowBlock,
2970 Block::Sand,
2971 ])
2972});
2973pub static RAILS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2974 HashSet::from_iter(vec![
2975 Block::Rail,
2976 Block::PoweredRail,
2977 Block::DetectorRail,
2978 Block::ActivatorRail,
2979 ])
2980});
2981pub static REDSTONE_ORES: LazyLock<HashSet<Block>> =
2982 LazyLock::new(|| HashSet::from_iter(vec![Block::RedstoneOre, Block::DeepslateRedstoneOre]));
2983pub static REPLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
2984 HashSet::from_iter(vec![
2985 Block::Air,
2986 Block::Water,
2987 Block::Lava,
2988 Block::ShortGrass,
2989 Block::Fern,
2990 Block::DeadBush,
2991 Block::Bush,
2992 Block::ShortDryGrass,
2993 Block::TallDryGrass,
2994 Block::Seagrass,
2995 Block::TallSeagrass,
2996 Block::Fire,
2997 Block::SoulFire,
2998 Block::Snow,
2999 Block::Vine,
3000 Block::GlowLichen,
3001 Block::ResinClump,
3002 Block::Light,
3003 Block::TallGrass,
3004 Block::LargeFern,
3005 Block::StructureVoid,
3006 Block::VoidAir,
3007 Block::CaveAir,
3008 Block::BubbleColumn,
3009 Block::WarpedRoots,
3010 Block::NetherSprouts,
3011 Block::CrimsonRoots,
3012 Block::LeafLitter,
3013 Block::HangingRoots,
3014 ])
3015});
3016pub static REPLACEABLE_BY_MUSHROOMS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3017 HashSet::from_iter(vec![
3018 Block::PaleMossCarpet,
3019 Block::ShortGrass,
3020 Block::Fern,
3021 Block::DeadBush,
3022 Block::Vine,
3023 Block::GlowLichen,
3024 Block::Sunflower,
3025 Block::Lilac,
3026 Block::RoseBush,
3027 Block::Peony,
3028 Block::TallGrass,
3029 Block::LargeFern,
3030 Block::HangingRoots,
3031 Block::PitcherPlant,
3032 Block::Water,
3033 Block::Seagrass,
3034 Block::TallSeagrass,
3035 Block::BrownMushroom,
3036 Block::RedMushroom,
3037 Block::BrownMushroomBlock,
3038 Block::RedMushroomBlock,
3039 Block::WarpedRoots,
3040 Block::NetherSprouts,
3041 Block::CrimsonRoots,
3042 Block::LeafLitter,
3043 Block::ShortDryGrass,
3044 Block::TallDryGrass,
3045 Block::Bush,
3046 Block::FireflyBush,
3047 Block::JungleLeaves,
3048 Block::OakLeaves,
3049 Block::SpruceLeaves,
3050 Block::PaleOakLeaves,
3051 Block::DarkOakLeaves,
3052 Block::AcaciaLeaves,
3053 Block::BirchLeaves,
3054 Block::AzaleaLeaves,
3055 Block::FloweringAzaleaLeaves,
3056 Block::MangroveLeaves,
3057 Block::CherryLeaves,
3058 Block::Dandelion,
3059 Block::OpenEyeblossom,
3060 Block::Poppy,
3061 Block::BlueOrchid,
3062 Block::Allium,
3063 Block::AzureBluet,
3064 Block::RedTulip,
3065 Block::OrangeTulip,
3066 Block::WhiteTulip,
3067 Block::PinkTulip,
3068 Block::OxeyeDaisy,
3069 Block::Cornflower,
3070 Block::LilyOfTheValley,
3071 Block::WitherRose,
3072 Block::Torchflower,
3073 Block::ClosedEyeblossom,
3074 ])
3075});
3076pub static REPLACEABLE_BY_TREES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3077 HashSet::from_iter(vec![
3078 Block::PaleMossCarpet,
3079 Block::ShortGrass,
3080 Block::Fern,
3081 Block::DeadBush,
3082 Block::Vine,
3083 Block::GlowLichen,
3084 Block::Sunflower,
3085 Block::Lilac,
3086 Block::RoseBush,
3087 Block::Peony,
3088 Block::TallGrass,
3089 Block::LargeFern,
3090 Block::HangingRoots,
3091 Block::PitcherPlant,
3092 Block::Water,
3093 Block::Seagrass,
3094 Block::TallSeagrass,
3095 Block::Bush,
3096 Block::FireflyBush,
3097 Block::WarpedRoots,
3098 Block::NetherSprouts,
3099 Block::CrimsonRoots,
3100 Block::LeafLitter,
3101 Block::ShortDryGrass,
3102 Block::TallDryGrass,
3103 Block::JungleLeaves,
3104 Block::OakLeaves,
3105 Block::SpruceLeaves,
3106 Block::PaleOakLeaves,
3107 Block::DarkOakLeaves,
3108 Block::AcaciaLeaves,
3109 Block::BirchLeaves,
3110 Block::AzaleaLeaves,
3111 Block::FloweringAzaleaLeaves,
3112 Block::MangroveLeaves,
3113 Block::CherryLeaves,
3114 Block::Dandelion,
3115 Block::OpenEyeblossom,
3116 Block::Poppy,
3117 Block::BlueOrchid,
3118 Block::Allium,
3119 Block::AzureBluet,
3120 Block::RedTulip,
3121 Block::OrangeTulip,
3122 Block::WhiteTulip,
3123 Block::PinkTulip,
3124 Block::OxeyeDaisy,
3125 Block::Cornflower,
3126 Block::LilyOfTheValley,
3127 Block::WitherRose,
3128 Block::Torchflower,
3129 Block::ClosedEyeblossom,
3130 ])
3131});
3132pub static SAND: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3133 HashSet::from_iter(vec![
3134 Block::Sand,
3135 Block::RedSand,
3136 Block::SuspiciousSand,
3137 Block::SuspiciousSand,
3138 ])
3139});
3140pub static SAPLINGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3141 HashSet::from_iter(vec![
3142 Block::OakSapling,
3143 Block::SpruceSapling,
3144 Block::BirchSapling,
3145 Block::JungleSapling,
3146 Block::AcaciaSapling,
3147 Block::DarkOakSapling,
3148 Block::PaleOakSapling,
3149 Block::Azalea,
3150 Block::FloweringAzalea,
3151 Block::MangrovePropagule,
3152 Block::CherrySapling,
3153 ])
3154});
3155pub static SCULK_REPLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3156 HashSet::from_iter(vec![
3157 Block::Sand,
3158 Block::RedSand,
3159 Block::Gravel,
3160 Block::SoulSand,
3161 Block::SoulSoil,
3162 Block::Calcite,
3163 Block::SmoothBasalt,
3164 Block::Clay,
3165 Block::DripstoneBlock,
3166 Block::EndStone,
3167 Block::RedSandstone,
3168 Block::Sandstone,
3169 Block::Stone,
3170 Block::Granite,
3171 Block::Diorite,
3172 Block::Andesite,
3173 Block::Tuff,
3174 Block::Deepslate,
3175 Block::Dirt,
3176 Block::GrassBlock,
3177 Block::Podzol,
3178 Block::CoarseDirt,
3179 Block::Mycelium,
3180 Block::RootedDirt,
3181 Block::MossBlock,
3182 Block::PaleMossBlock,
3183 Block::Mud,
3184 Block::MuddyMangroveRoots,
3185 Block::Terracotta,
3186 Block::WhiteTerracotta,
3187 Block::OrangeTerracotta,
3188 Block::MagentaTerracotta,
3189 Block::LightBlueTerracotta,
3190 Block::YellowTerracotta,
3191 Block::LimeTerracotta,
3192 Block::PinkTerracotta,
3193 Block::GrayTerracotta,
3194 Block::LightGrayTerracotta,
3195 Block::CyanTerracotta,
3196 Block::PurpleTerracotta,
3197 Block::BlueTerracotta,
3198 Block::BrownTerracotta,
3199 Block::GreenTerracotta,
3200 Block::RedTerracotta,
3201 Block::BlackTerracotta,
3202 Block::CrimsonNylium,
3203 Block::WarpedNylium,
3204 Block::Netherrack,
3205 Block::Basalt,
3206 Block::Blackstone,
3207 ])
3208});
3209pub static SCULK_REPLACEABLE_WORLD_GEN: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3210 HashSet::from_iter(vec![
3211 Block::DeepslateBricks,
3212 Block::DeepslateTiles,
3213 Block::CobbledDeepslate,
3214 Block::CrackedDeepslateBricks,
3215 Block::CrackedDeepslateTiles,
3216 Block::PolishedDeepslate,
3217 Block::Sand,
3218 Block::RedSand,
3219 Block::Gravel,
3220 Block::SoulSand,
3221 Block::SoulSoil,
3222 Block::Calcite,
3223 Block::SmoothBasalt,
3224 Block::Clay,
3225 Block::DripstoneBlock,
3226 Block::EndStone,
3227 Block::RedSandstone,
3228 Block::Sandstone,
3229 Block::Stone,
3230 Block::Granite,
3231 Block::Diorite,
3232 Block::Andesite,
3233 Block::Tuff,
3234 Block::Deepslate,
3235 Block::Dirt,
3236 Block::GrassBlock,
3237 Block::Podzol,
3238 Block::CoarseDirt,
3239 Block::Mycelium,
3240 Block::RootedDirt,
3241 Block::MossBlock,
3242 Block::PaleMossBlock,
3243 Block::Mud,
3244 Block::MuddyMangroveRoots,
3245 Block::Terracotta,
3246 Block::WhiteTerracotta,
3247 Block::OrangeTerracotta,
3248 Block::MagentaTerracotta,
3249 Block::LightBlueTerracotta,
3250 Block::YellowTerracotta,
3251 Block::LimeTerracotta,
3252 Block::PinkTerracotta,
3253 Block::GrayTerracotta,
3254 Block::LightGrayTerracotta,
3255 Block::CyanTerracotta,
3256 Block::PurpleTerracotta,
3257 Block::BlueTerracotta,
3258 Block::BrownTerracotta,
3259 Block::GreenTerracotta,
3260 Block::RedTerracotta,
3261 Block::BlackTerracotta,
3262 Block::CrimsonNylium,
3263 Block::WarpedNylium,
3264 Block::Netherrack,
3265 Block::Basalt,
3266 Block::Blackstone,
3267 ])
3268});
3269pub static SHULKER_BOXES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3270 HashSet::from_iter(vec![
3271 Block::ShulkerBox,
3272 Block::BlackShulkerBox,
3273 Block::BlueShulkerBox,
3274 Block::BrownShulkerBox,
3275 Block::CyanShulkerBox,
3276 Block::GrayShulkerBox,
3277 Block::GreenShulkerBox,
3278 Block::LightBlueShulkerBox,
3279 Block::LightGrayShulkerBox,
3280 Block::LimeShulkerBox,
3281 Block::MagentaShulkerBox,
3282 Block::OrangeShulkerBox,
3283 Block::PinkShulkerBox,
3284 Block::PurpleShulkerBox,
3285 Block::RedShulkerBox,
3286 Block::WhiteShulkerBox,
3287 Block::YellowShulkerBox,
3288 ])
3289});
3290pub static SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3291 HashSet::from_iter(vec![
3292 Block::OakSign,
3293 Block::SpruceSign,
3294 Block::BirchSign,
3295 Block::AcaciaSign,
3296 Block::JungleSign,
3297 Block::DarkOakSign,
3298 Block::PaleOakSign,
3299 Block::CrimsonSign,
3300 Block::WarpedSign,
3301 Block::MangroveSign,
3302 Block::BambooSign,
3303 Block::CherrySign,
3304 Block::OakWallSign,
3305 Block::SpruceWallSign,
3306 Block::BirchWallSign,
3307 Block::AcaciaWallSign,
3308 Block::JungleWallSign,
3309 Block::DarkOakWallSign,
3310 Block::PaleOakWallSign,
3311 Block::CrimsonWallSign,
3312 Block::WarpedWallSign,
3313 Block::MangroveWallSign,
3314 Block::BambooWallSign,
3315 Block::CherryWallSign,
3316 ])
3317});
3318pub static SLABS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3319 HashSet::from_iter(vec![
3320 Block::BambooMosaicSlab,
3321 Block::StoneSlab,
3322 Block::SmoothStoneSlab,
3323 Block::StoneBrickSlab,
3324 Block::SandstoneSlab,
3325 Block::PurpurSlab,
3326 Block::QuartzSlab,
3327 Block::RedSandstoneSlab,
3328 Block::BrickSlab,
3329 Block::CobblestoneSlab,
3330 Block::NetherBrickSlab,
3331 Block::PetrifiedOakSlab,
3332 Block::PrismarineSlab,
3333 Block::PrismarineBrickSlab,
3334 Block::DarkPrismarineSlab,
3335 Block::PolishedGraniteSlab,
3336 Block::SmoothRedSandstoneSlab,
3337 Block::MossyStoneBrickSlab,
3338 Block::PolishedDioriteSlab,
3339 Block::MossyCobblestoneSlab,
3340 Block::EndStoneBrickSlab,
3341 Block::SmoothSandstoneSlab,
3342 Block::SmoothQuartzSlab,
3343 Block::GraniteSlab,
3344 Block::AndesiteSlab,
3345 Block::RedNetherBrickSlab,
3346 Block::PolishedAndesiteSlab,
3347 Block::DioriteSlab,
3348 Block::CutSandstoneSlab,
3349 Block::CutRedSandstoneSlab,
3350 Block::BlackstoneSlab,
3351 Block::PolishedBlackstoneBrickSlab,
3352 Block::PolishedBlackstoneSlab,
3353 Block::CobbledDeepslateSlab,
3354 Block::PolishedDeepslateSlab,
3355 Block::DeepslateTileSlab,
3356 Block::DeepslateBrickSlab,
3357 Block::WaxedWeatheredCutCopperSlab,
3358 Block::WaxedExposedCutCopperSlab,
3359 Block::WaxedCutCopperSlab,
3360 Block::OxidizedCutCopperSlab,
3361 Block::WeatheredCutCopperSlab,
3362 Block::ExposedCutCopperSlab,
3363 Block::CutCopperSlab,
3364 Block::WaxedOxidizedCutCopperSlab,
3365 Block::MudBrickSlab,
3366 Block::TuffSlab,
3367 Block::PolishedTuffSlab,
3368 Block::TuffBrickSlab,
3369 Block::ResinBrickSlab,
3370 Block::OakSlab,
3371 Block::SpruceSlab,
3372 Block::BirchSlab,
3373 Block::JungleSlab,
3374 Block::AcaciaSlab,
3375 Block::DarkOakSlab,
3376 Block::PaleOakSlab,
3377 Block::CrimsonSlab,
3378 Block::WarpedSlab,
3379 Block::MangroveSlab,
3380 Block::BambooSlab,
3381 Block::CherrySlab,
3382 ])
3383});
3384pub static SMALL_DRIPLEAF_PLACEABLE: LazyLock<HashSet<Block>> =
3385 LazyLock::new(|| HashSet::from_iter(vec![Block::Clay, Block::MossBlock]));
3386pub static SMALL_FLOWERS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3387 HashSet::from_iter(vec![
3388 Block::Dandelion,
3389 Block::OpenEyeblossom,
3390 Block::Poppy,
3391 Block::BlueOrchid,
3392 Block::Allium,
3393 Block::AzureBluet,
3394 Block::RedTulip,
3395 Block::OrangeTulip,
3396 Block::WhiteTulip,
3397 Block::PinkTulip,
3398 Block::OxeyeDaisy,
3399 Block::Cornflower,
3400 Block::LilyOfTheValley,
3401 Block::WitherRose,
3402 Block::Torchflower,
3403 Block::ClosedEyeblossom,
3404 ])
3405});
3406pub static SMELTS_TO_GLASS: LazyLock<HashSet<Block>> =
3407 LazyLock::new(|| HashSet::from_iter(vec![Block::Sand, Block::RedSand]));
3408pub static SNAPS_GOAT_HORN: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3409 HashSet::from_iter(vec![
3410 Block::Stone,
3411 Block::PackedIce,
3412 Block::IronOre,
3413 Block::CoalOre,
3414 Block::CopperOre,
3415 Block::EmeraldOre,
3416 Block::AcaciaLog,
3417 Block::BirchLog,
3418 Block::OakLog,
3419 Block::JungleLog,
3420 Block::SpruceLog,
3421 Block::DarkOakLog,
3422 Block::PaleOakLog,
3423 Block::MangroveLog,
3424 Block::CherryLog,
3425 ])
3426});
3427pub static SNIFFER_DIGGABLE_BLOCK: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3428 HashSet::from_iter(vec![
3429 Block::Dirt,
3430 Block::GrassBlock,
3431 Block::Podzol,
3432 Block::CoarseDirt,
3433 Block::RootedDirt,
3434 Block::MossBlock,
3435 Block::PaleMossBlock,
3436 Block::Mud,
3437 Block::MuddyMangroveRoots,
3438 ])
3439});
3440pub static SNIFFER_EGG_HATCH_BOOST: LazyLock<HashSet<Block>> =
3441 LazyLock::new(|| HashSet::from_iter(vec![Block::MossBlock]));
3442pub static SNOW: LazyLock<HashSet<Block>> =
3443 LazyLock::new(|| HashSet::from_iter(vec![Block::Snow, Block::SnowBlock, Block::PowderSnow]));
3444pub static SNOW_LAYER_CAN_SURVIVE_ON: LazyLock<HashSet<Block>> =
3445 LazyLock::new(|| HashSet::from_iter(vec![Block::HoneyBlock, Block::SoulSand, Block::Mud]));
3446pub static SNOW_LAYER_CANNOT_SURVIVE_ON: LazyLock<HashSet<Block>> =
3447 LazyLock::new(|| HashSet::from_iter(vec![Block::Ice, Block::PackedIce, Block::Barrier]));
3448pub static SOUL_FIRE_BASE_BLOCKS: LazyLock<HashSet<Block>> =
3449 LazyLock::new(|| HashSet::from_iter(vec![Block::SoulSand, Block::SoulSoil]));
3450pub static SOUL_SPEED_BLOCKS: LazyLock<HashSet<Block>> =
3451 LazyLock::new(|| HashSet::from_iter(vec![Block::SoulSand, Block::SoulSoil]));
3452pub static SPRUCE_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3453 HashSet::from_iter(vec![
3454 Block::SpruceLog,
3455 Block::SpruceWood,
3456 Block::StrippedSpruceLog,
3457 Block::StrippedSpruceWood,
3458 ])
3459});
3460pub static STAIRS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3461 HashSet::from_iter(vec![
3462 Block::BambooMosaicStairs,
3463 Block::CobblestoneStairs,
3464 Block::SandstoneStairs,
3465 Block::NetherBrickStairs,
3466 Block::StoneBrickStairs,
3467 Block::BrickStairs,
3468 Block::PurpurStairs,
3469 Block::QuartzStairs,
3470 Block::RedSandstoneStairs,
3471 Block::PrismarineBrickStairs,
3472 Block::PrismarineStairs,
3473 Block::DarkPrismarineStairs,
3474 Block::PolishedGraniteStairs,
3475 Block::SmoothRedSandstoneStairs,
3476 Block::MossyStoneBrickStairs,
3477 Block::PolishedDioriteStairs,
3478 Block::MossyCobblestoneStairs,
3479 Block::EndStoneBrickStairs,
3480 Block::StoneStairs,
3481 Block::SmoothSandstoneStairs,
3482 Block::SmoothQuartzStairs,
3483 Block::GraniteStairs,
3484 Block::AndesiteStairs,
3485 Block::RedNetherBrickStairs,
3486 Block::PolishedAndesiteStairs,
3487 Block::DioriteStairs,
3488 Block::BlackstoneStairs,
3489 Block::PolishedBlackstoneBrickStairs,
3490 Block::PolishedBlackstoneStairs,
3491 Block::CobbledDeepslateStairs,
3492 Block::PolishedDeepslateStairs,
3493 Block::DeepslateTileStairs,
3494 Block::DeepslateBrickStairs,
3495 Block::OxidizedCutCopperStairs,
3496 Block::WeatheredCutCopperStairs,
3497 Block::ExposedCutCopperStairs,
3498 Block::CutCopperStairs,
3499 Block::WaxedWeatheredCutCopperStairs,
3500 Block::WaxedExposedCutCopperStairs,
3501 Block::WaxedCutCopperStairs,
3502 Block::WaxedOxidizedCutCopperStairs,
3503 Block::MudBrickStairs,
3504 Block::TuffStairs,
3505 Block::PolishedTuffStairs,
3506 Block::TuffBrickStairs,
3507 Block::ResinBrickStairs,
3508 Block::OakStairs,
3509 Block::SpruceStairs,
3510 Block::BirchStairs,
3511 Block::JungleStairs,
3512 Block::AcaciaStairs,
3513 Block::DarkOakStairs,
3514 Block::PaleOakStairs,
3515 Block::CrimsonStairs,
3516 Block::WarpedStairs,
3517 Block::MangroveStairs,
3518 Block::BambooStairs,
3519 Block::CherryStairs,
3520 ])
3521});
3522pub static STANDING_SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3523 HashSet::from_iter(vec![
3524 Block::OakSign,
3525 Block::SpruceSign,
3526 Block::BirchSign,
3527 Block::AcaciaSign,
3528 Block::JungleSign,
3529 Block::DarkOakSign,
3530 Block::PaleOakSign,
3531 Block::CrimsonSign,
3532 Block::WarpedSign,
3533 Block::MangroveSign,
3534 Block::BambooSign,
3535 Block::CherrySign,
3536 ])
3537});
3538pub static STONE_BRICKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3539 HashSet::from_iter(vec![
3540 Block::StoneBricks,
3541 Block::MossyStoneBricks,
3542 Block::CrackedStoneBricks,
3543 Block::ChiseledStoneBricks,
3544 ])
3545});
3546pub static STONE_BUTTONS: LazyLock<HashSet<Block>> =
3547 LazyLock::new(|| HashSet::from_iter(vec![Block::StoneButton, Block::PolishedBlackstoneButton]));
3548pub static STONE_ORE_REPLACEABLES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3549 HashSet::from_iter(vec![
3550 Block::Stone,
3551 Block::Granite,
3552 Block::Diorite,
3553 Block::Andesite,
3554 ])
3555});
3556pub static STONE_PRESSURE_PLATES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3557 HashSet::from_iter(vec![
3558 Block::StonePressurePlate,
3559 Block::PolishedBlackstonePressurePlate,
3560 ])
3561});
3562pub static STRIDER_WARM_BLOCKS: LazyLock<HashSet<Block>> =
3563 LazyLock::new(|| HashSet::from_iter(vec![Block::Lava]));
3564pub static SWORD_EFFICIENT: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3565 HashSet::from_iter(vec![
3566 Block::Vine,
3567 Block::GlowLichen,
3568 Block::Pumpkin,
3569 Block::CarvedPumpkin,
3570 Block::JackOLantern,
3571 Block::Melon,
3572 Block::Cocoa,
3573 Block::BigDripleaf,
3574 Block::BigDripleafStem,
3575 Block::ChorusPlant,
3576 Block::ChorusFlower,
3577 Block::JungleLeaves,
3578 Block::OakLeaves,
3579 Block::SpruceLeaves,
3580 Block::PaleOakLeaves,
3581 Block::DarkOakLeaves,
3582 Block::AcaciaLeaves,
3583 Block::BirchLeaves,
3584 Block::AzaleaLeaves,
3585 Block::FloweringAzaleaLeaves,
3586 Block::MangroveLeaves,
3587 Block::CherryLeaves,
3588 ])
3589});
3590pub static SWORD_INSTANTLY_MINES: LazyLock<HashSet<Block>> =
3591 LazyLock::new(|| HashSet::from_iter(vec![Block::Bamboo, Block::BambooSapling]));
3592pub static TERRACOTTA: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3593 HashSet::from_iter(vec![
3594 Block::Terracotta,
3595 Block::WhiteTerracotta,
3596 Block::OrangeTerracotta,
3597 Block::MagentaTerracotta,
3598 Block::LightBlueTerracotta,
3599 Block::YellowTerracotta,
3600 Block::LimeTerracotta,
3601 Block::PinkTerracotta,
3602 Block::GrayTerracotta,
3603 Block::LightGrayTerracotta,
3604 Block::CyanTerracotta,
3605 Block::PurpleTerracotta,
3606 Block::BlueTerracotta,
3607 Block::BrownTerracotta,
3608 Block::GreenTerracotta,
3609 Block::RedTerracotta,
3610 Block::BlackTerracotta,
3611 ])
3612});
3613pub static TRAIL_RUINS_REPLACEABLE: LazyLock<HashSet<Block>> =
3614 LazyLock::new(|| HashSet::from_iter(vec![Block::Gravel]));
3615pub static TRAPDOORS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3616 HashSet::from_iter(vec![
3617 Block::IronTrapdoor,
3618 Block::CopperTrapdoor,
3619 Block::ExposedCopperTrapdoor,
3620 Block::WeatheredCopperTrapdoor,
3621 Block::OxidizedCopperTrapdoor,
3622 Block::WaxedCopperTrapdoor,
3623 Block::WaxedExposedCopperTrapdoor,
3624 Block::WaxedWeatheredCopperTrapdoor,
3625 Block::WaxedOxidizedCopperTrapdoor,
3626 Block::AcaciaTrapdoor,
3627 Block::BirchTrapdoor,
3628 Block::DarkOakTrapdoor,
3629 Block::PaleOakTrapdoor,
3630 Block::JungleTrapdoor,
3631 Block::OakTrapdoor,
3632 Block::SpruceTrapdoor,
3633 Block::CrimsonTrapdoor,
3634 Block::WarpedTrapdoor,
3635 Block::MangroveTrapdoor,
3636 Block::BambooTrapdoor,
3637 Block::CherryTrapdoor,
3638 ])
3639});
3640pub static UNDERWATER_BONEMEALS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3641 HashSet::from_iter(vec![
3642 Block::Seagrass,
3643 Block::TubeCoralFan,
3644 Block::BrainCoralFan,
3645 Block::BubbleCoralFan,
3646 Block::FireCoralFan,
3647 Block::HornCoralFan,
3648 Block::TubeCoralWallFan,
3649 Block::BrainCoralWallFan,
3650 Block::BubbleCoralWallFan,
3651 Block::FireCoralWallFan,
3652 Block::HornCoralWallFan,
3653 Block::TubeCoral,
3654 Block::BrainCoral,
3655 Block::BubbleCoral,
3656 Block::FireCoral,
3657 Block::HornCoral,
3658 ])
3659});
3660pub static UNSTABLE_BOTTOM_CENTER: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3661 HashSet::from_iter(vec![
3662 Block::AcaciaFenceGate,
3663 Block::BirchFenceGate,
3664 Block::DarkOakFenceGate,
3665 Block::PaleOakFenceGate,
3666 Block::JungleFenceGate,
3667 Block::OakFenceGate,
3668 Block::SpruceFenceGate,
3669 Block::CrimsonFenceGate,
3670 Block::WarpedFenceGate,
3671 Block::MangroveFenceGate,
3672 Block::BambooFenceGate,
3673 Block::CherryFenceGate,
3674 ])
3675});
3676pub static VALID_SPAWN: LazyLock<HashSet<Block>> =
3677 LazyLock::new(|| HashSet::from_iter(vec![Block::GrassBlock, Block::Podzol]));
3678pub static VIBRATION_RESONATORS: LazyLock<HashSet<Block>> =
3679 LazyLock::new(|| HashSet::from_iter(vec![Block::AmethystBlock]));
3680pub static WALL_CORALS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3681 HashSet::from_iter(vec![
3682 Block::TubeCoralWallFan,
3683 Block::BrainCoralWallFan,
3684 Block::BubbleCoralWallFan,
3685 Block::FireCoralWallFan,
3686 Block::HornCoralWallFan,
3687 ])
3688});
3689pub static WALL_HANGING_SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3690 HashSet::from_iter(vec![
3691 Block::OakWallHangingSign,
3692 Block::SpruceWallHangingSign,
3693 Block::BirchWallHangingSign,
3694 Block::AcaciaWallHangingSign,
3695 Block::CherryWallHangingSign,
3696 Block::JungleWallHangingSign,
3697 Block::DarkOakWallHangingSign,
3698 Block::PaleOakWallHangingSign,
3699 Block::CrimsonWallHangingSign,
3700 Block::WarpedWallHangingSign,
3701 Block::MangroveWallHangingSign,
3702 Block::BambooWallHangingSign,
3703 ])
3704});
3705pub static WALL_POST_OVERRIDE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3706 HashSet::from_iter(vec![
3707 Block::Torch,
3708 Block::SoulTorch,
3709 Block::RedstoneTorch,
3710 Block::Tripwire,
3711 Block::CactusFlower,
3712 Block::WhiteBanner,
3713 Block::OrangeBanner,
3714 Block::MagentaBanner,
3715 Block::LightBlueBanner,
3716 Block::YellowBanner,
3717 Block::LimeBanner,
3718 Block::PinkBanner,
3719 Block::GrayBanner,
3720 Block::LightGrayBanner,
3721 Block::CyanBanner,
3722 Block::PurpleBanner,
3723 Block::BlueBanner,
3724 Block::BrownBanner,
3725 Block::GreenBanner,
3726 Block::RedBanner,
3727 Block::BlackBanner,
3728 Block::WhiteWallBanner,
3729 Block::OrangeWallBanner,
3730 Block::MagentaWallBanner,
3731 Block::LightBlueWallBanner,
3732 Block::YellowWallBanner,
3733 Block::LimeWallBanner,
3734 Block::PinkWallBanner,
3735 Block::GrayWallBanner,
3736 Block::LightGrayWallBanner,
3737 Block::CyanWallBanner,
3738 Block::PurpleWallBanner,
3739 Block::BlueWallBanner,
3740 Block::BrownWallBanner,
3741 Block::GreenWallBanner,
3742 Block::RedWallBanner,
3743 Block::BlackWallBanner,
3744 Block::LightWeightedPressurePlate,
3745 Block::HeavyWeightedPressurePlate,
3746 Block::OakSign,
3747 Block::SpruceSign,
3748 Block::BirchSign,
3749 Block::AcaciaSign,
3750 Block::JungleSign,
3751 Block::DarkOakSign,
3752 Block::PaleOakSign,
3753 Block::CrimsonSign,
3754 Block::WarpedSign,
3755 Block::MangroveSign,
3756 Block::BambooSign,
3757 Block::CherrySign,
3758 Block::OakWallSign,
3759 Block::SpruceWallSign,
3760 Block::BirchWallSign,
3761 Block::AcaciaWallSign,
3762 Block::JungleWallSign,
3763 Block::DarkOakWallSign,
3764 Block::PaleOakWallSign,
3765 Block::CrimsonWallSign,
3766 Block::WarpedWallSign,
3767 Block::MangroveWallSign,
3768 Block::BambooWallSign,
3769 Block::CherryWallSign,
3770 Block::OakPressurePlate,
3771 Block::SprucePressurePlate,
3772 Block::BirchPressurePlate,
3773 Block::JunglePressurePlate,
3774 Block::AcaciaPressurePlate,
3775 Block::DarkOakPressurePlate,
3776 Block::PaleOakPressurePlate,
3777 Block::CrimsonPressurePlate,
3778 Block::WarpedPressurePlate,
3779 Block::MangrovePressurePlate,
3780 Block::BambooPressurePlate,
3781 Block::CherryPressurePlate,
3782 Block::StonePressurePlate,
3783 Block::PolishedBlackstonePressurePlate,
3784 ])
3785});
3786pub static WALL_SIGNS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3787 HashSet::from_iter(vec![
3788 Block::OakWallSign,
3789 Block::SpruceWallSign,
3790 Block::BirchWallSign,
3791 Block::AcaciaWallSign,
3792 Block::JungleWallSign,
3793 Block::DarkOakWallSign,
3794 Block::PaleOakWallSign,
3795 Block::CrimsonWallSign,
3796 Block::WarpedWallSign,
3797 Block::MangroveWallSign,
3798 Block::BambooWallSign,
3799 Block::CherryWallSign,
3800 ])
3801});
3802pub static WALLS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3803 HashSet::from_iter(vec![
3804 Block::CobblestoneWall,
3805 Block::MossyCobblestoneWall,
3806 Block::BrickWall,
3807 Block::PrismarineWall,
3808 Block::RedSandstoneWall,
3809 Block::MossyStoneBrickWall,
3810 Block::GraniteWall,
3811 Block::StoneBrickWall,
3812 Block::NetherBrickWall,
3813 Block::AndesiteWall,
3814 Block::RedNetherBrickWall,
3815 Block::SandstoneWall,
3816 Block::EndStoneBrickWall,
3817 Block::DioriteWall,
3818 Block::BlackstoneWall,
3819 Block::PolishedBlackstoneBrickWall,
3820 Block::PolishedBlackstoneWall,
3821 Block::CobbledDeepslateWall,
3822 Block::PolishedDeepslateWall,
3823 Block::DeepslateTileWall,
3824 Block::DeepslateBrickWall,
3825 Block::MudBrickWall,
3826 Block::TuffWall,
3827 Block::PolishedTuffWall,
3828 Block::TuffBrickWall,
3829 Block::ResinBrickWall,
3830 ])
3831});
3832pub static WARPED_STEMS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3833 HashSet::from_iter(vec![
3834 Block::WarpedStem,
3835 Block::StrippedWarpedStem,
3836 Block::WarpedHyphae,
3837 Block::StrippedWarpedHyphae,
3838 ])
3839});
3840pub static WART_BLOCKS: LazyLock<HashSet<Block>> =
3841 LazyLock::new(|| HashSet::from_iter(vec![Block::NetherWartBlock, Block::WarpedWartBlock]));
3842pub static WITHER_IMMUNE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3843 HashSet::from_iter(vec![
3844 Block::Barrier,
3845 Block::Bedrock,
3846 Block::EndPortal,
3847 Block::EndPortalFrame,
3848 Block::EndGateway,
3849 Block::CommandBlock,
3850 Block::RepeatingCommandBlock,
3851 Block::ChainCommandBlock,
3852 Block::StructureBlock,
3853 Block::Jigsaw,
3854 Block::MovingPiston,
3855 Block::Light,
3856 Block::ReinforcedDeepslate,
3857 Block::TestBlock,
3858 Block::TestInstanceBlock,
3859 ])
3860});
3861pub static WITHER_SUMMON_BASE_BLOCKS: LazyLock<HashSet<Block>> =
3862 LazyLock::new(|| HashSet::from_iter(vec![Block::SoulSand, Block::SoulSoil]));
3863pub static WOLVES_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3864 HashSet::from_iter(vec![
3865 Block::GrassBlock,
3866 Block::Snow,
3867 Block::SnowBlock,
3868 Block::CoarseDirt,
3869 Block::Podzol,
3870 ])
3871});
3872pub static WOODEN_BUTTONS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3873 HashSet::from_iter(vec![
3874 Block::OakButton,
3875 Block::SpruceButton,
3876 Block::BirchButton,
3877 Block::JungleButton,
3878 Block::AcaciaButton,
3879 Block::DarkOakButton,
3880 Block::PaleOakButton,
3881 Block::CrimsonButton,
3882 Block::WarpedButton,
3883 Block::MangroveButton,
3884 Block::BambooButton,
3885 Block::CherryButton,
3886 ])
3887});
3888pub static WOODEN_DOORS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3889 HashSet::from_iter(vec![
3890 Block::OakDoor,
3891 Block::SpruceDoor,
3892 Block::BirchDoor,
3893 Block::JungleDoor,
3894 Block::AcaciaDoor,
3895 Block::DarkOakDoor,
3896 Block::PaleOakDoor,
3897 Block::CrimsonDoor,
3898 Block::WarpedDoor,
3899 Block::MangroveDoor,
3900 Block::BambooDoor,
3901 Block::CherryDoor,
3902 ])
3903});
3904pub static WOODEN_FENCES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3905 HashSet::from_iter(vec![
3906 Block::OakFence,
3907 Block::AcaciaFence,
3908 Block::DarkOakFence,
3909 Block::PaleOakFence,
3910 Block::SpruceFence,
3911 Block::BirchFence,
3912 Block::JungleFence,
3913 Block::CrimsonFence,
3914 Block::WarpedFence,
3915 Block::MangroveFence,
3916 Block::BambooFence,
3917 Block::CherryFence,
3918 ])
3919});
3920pub static WOODEN_PRESSURE_PLATES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3921 HashSet::from_iter(vec![
3922 Block::OakPressurePlate,
3923 Block::SprucePressurePlate,
3924 Block::BirchPressurePlate,
3925 Block::JunglePressurePlate,
3926 Block::AcaciaPressurePlate,
3927 Block::DarkOakPressurePlate,
3928 Block::PaleOakPressurePlate,
3929 Block::CrimsonPressurePlate,
3930 Block::WarpedPressurePlate,
3931 Block::MangrovePressurePlate,
3932 Block::BambooPressurePlate,
3933 Block::CherryPressurePlate,
3934 ])
3935});
3936pub static WOODEN_SLABS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3937 HashSet::from_iter(vec![
3938 Block::OakSlab,
3939 Block::SpruceSlab,
3940 Block::BirchSlab,
3941 Block::JungleSlab,
3942 Block::AcaciaSlab,
3943 Block::DarkOakSlab,
3944 Block::PaleOakSlab,
3945 Block::CrimsonSlab,
3946 Block::WarpedSlab,
3947 Block::MangroveSlab,
3948 Block::BambooSlab,
3949 Block::CherrySlab,
3950 ])
3951});
3952pub static WOODEN_STAIRS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3953 HashSet::from_iter(vec![
3954 Block::OakStairs,
3955 Block::SpruceStairs,
3956 Block::BirchStairs,
3957 Block::JungleStairs,
3958 Block::AcaciaStairs,
3959 Block::DarkOakStairs,
3960 Block::PaleOakStairs,
3961 Block::CrimsonStairs,
3962 Block::WarpedStairs,
3963 Block::MangroveStairs,
3964 Block::BambooStairs,
3965 Block::CherryStairs,
3966 ])
3967});
3968pub static WOODEN_TRAPDOORS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3969 HashSet::from_iter(vec![
3970 Block::AcaciaTrapdoor,
3971 Block::BirchTrapdoor,
3972 Block::DarkOakTrapdoor,
3973 Block::PaleOakTrapdoor,
3974 Block::JungleTrapdoor,
3975 Block::OakTrapdoor,
3976 Block::SpruceTrapdoor,
3977 Block::CrimsonTrapdoor,
3978 Block::WarpedTrapdoor,
3979 Block::MangroveTrapdoor,
3980 Block::BambooTrapdoor,
3981 Block::CherryTrapdoor,
3982 ])
3983});
3984pub static WOOL: LazyLock<HashSet<Block>> = LazyLock::new(|| {
3985 HashSet::from_iter(vec![
3986 Block::WhiteWool,
3987 Block::OrangeWool,
3988 Block::MagentaWool,
3989 Block::LightBlueWool,
3990 Block::YellowWool,
3991 Block::LimeWool,
3992 Block::PinkWool,
3993 Block::GrayWool,
3994 Block::LightGrayWool,
3995 Block::CyanWool,
3996 Block::PurpleWool,
3997 Block::BlueWool,
3998 Block::BrownWool,
3999 Block::GreenWool,
4000 Block::RedWool,
4001 Block::BlackWool,
4002 ])
4003});
4004pub static WOOL_CARPETS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
4005 HashSet::from_iter(vec![
4006 Block::WhiteCarpet,
4007 Block::OrangeCarpet,
4008 Block::MagentaCarpet,
4009 Block::LightBlueCarpet,
4010 Block::YellowCarpet,
4011 Block::LimeCarpet,
4012 Block::PinkCarpet,
4013 Block::GrayCarpet,
4014 Block::LightGrayCarpet,
4015 Block::CyanCarpet,
4016 Block::PurpleCarpet,
4017 Block::BlueCarpet,
4018 Block::BrownCarpet,
4019 Block::GreenCarpet,
4020 Block::RedCarpet,
4021 Block::BlackCarpet,
4022 ])
4023});