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