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