1use std::{collections::HashSet, sync::LazyLock};
4
5use crate::Item;
6
7pub static ACACIA_LOGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
8 HashSet::from_iter(vec![
9 Item::AcaciaLog,
10 Item::AcaciaWood,
11 Item::StrippedAcaciaLog,
12 Item::StrippedAcaciaWood,
13 ])
14});
15pub static ANVIL: LazyLock<HashSet<Item>> =
16 LazyLock::new(|| HashSet::from_iter(vec![Item::Anvil, Item::ChippedAnvil, Item::DamagedAnvil]));
17pub static ARMADILLO_FOOD: LazyLock<HashSet<Item>> =
18 LazyLock::new(|| HashSet::from_iter(vec![Item::SpiderEye]));
19pub static ARROWS: LazyLock<HashSet<Item>> =
20 LazyLock::new(|| HashSet::from_iter(vec![Item::Arrow, Item::TippedArrow, Item::SpectralArrow]));
21pub static AXES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
22 HashSet::from_iter(vec![
23 Item::DiamondAxe,
24 Item::StoneAxe,
25 Item::GoldenAxe,
26 Item::NetheriteAxe,
27 Item::WoodenAxe,
28 Item::IronAxe,
29 Item::CopperAxe,
30 ])
31});
32pub static AXOLOTL_FOOD: LazyLock<HashSet<Item>> =
33 LazyLock::new(|| HashSet::from_iter(vec![Item::TropicalFishBucket]));
34pub static BAMBOO_BLOCKS: LazyLock<HashSet<Item>> =
35 LazyLock::new(|| HashSet::from_iter(vec![Item::BambooBlock, Item::StrippedBambooBlock]));
36pub static BANNERS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
37 HashSet::from_iter(vec![
38 Item::WhiteBanner,
39 Item::OrangeBanner,
40 Item::MagentaBanner,
41 Item::LightBlueBanner,
42 Item::YellowBanner,
43 Item::LimeBanner,
44 Item::PinkBanner,
45 Item::GrayBanner,
46 Item::LightGrayBanner,
47 Item::CyanBanner,
48 Item::PurpleBanner,
49 Item::BlueBanner,
50 Item::BrownBanner,
51 Item::GreenBanner,
52 Item::RedBanner,
53 Item::BlackBanner,
54 ])
55});
56pub static BARS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
57 HashSet::from_iter(vec![
58 Item::IronBars,
59 Item::CopperBars,
60 Item::WaxedCopperBars,
61 Item::ExposedCopperBars,
62 Item::WaxedExposedCopperBars,
63 Item::WeatheredCopperBars,
64 Item::WaxedWeatheredCopperBars,
65 Item::OxidizedCopperBars,
66 Item::WaxedOxidizedCopperBars,
67 ])
68});
69pub static BEACON_PAYMENT_ITEMS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
70 HashSet::from_iter(vec![
71 Item::NetheriteIngot,
72 Item::Emerald,
73 Item::Diamond,
74 Item::GoldIngot,
75 Item::IronIngot,
76 ])
77});
78pub static BEDS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
79 HashSet::from_iter(vec![
80 Item::RedBed,
81 Item::BlackBed,
82 Item::BlueBed,
83 Item::BrownBed,
84 Item::CyanBed,
85 Item::GrayBed,
86 Item::GreenBed,
87 Item::LightBlueBed,
88 Item::LightGrayBed,
89 Item::LimeBed,
90 Item::MagentaBed,
91 Item::OrangeBed,
92 Item::PinkBed,
93 Item::PurpleBed,
94 Item::WhiteBed,
95 Item::YellowBed,
96 ])
97});
98pub static BEE_FOOD: LazyLock<HashSet<Item>> = LazyLock::new(|| {
99 HashSet::from_iter(vec![
100 Item::Dandelion,
101 Item::OpenEyeblossom,
102 Item::Poppy,
103 Item::BlueOrchid,
104 Item::Allium,
105 Item::AzureBluet,
106 Item::RedTulip,
107 Item::OrangeTulip,
108 Item::WhiteTulip,
109 Item::PinkTulip,
110 Item::OxeyeDaisy,
111 Item::Cornflower,
112 Item::LilyOfTheValley,
113 Item::WitherRose,
114 Item::Torchflower,
115 Item::Sunflower,
116 Item::Lilac,
117 Item::Peony,
118 Item::RoseBush,
119 Item::PitcherPlant,
120 Item::FloweringAzaleaLeaves,
121 Item::FloweringAzalea,
122 Item::MangrovePropagule,
123 Item::CherryLeaves,
124 Item::PinkPetals,
125 Item::Wildflowers,
126 Item::ChorusFlower,
127 Item::SporeBlossom,
128 Item::CactusFlower,
129 ])
130});
131pub static BIRCH_LOGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
132 HashSet::from_iter(vec![
133 Item::BirchLog,
134 Item::BirchWood,
135 Item::StrippedBirchLog,
136 Item::StrippedBirchWood,
137 ])
138});
139pub static BOATS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
140 HashSet::from_iter(vec![
141 Item::OakBoat,
142 Item::SpruceBoat,
143 Item::BirchBoat,
144 Item::JungleBoat,
145 Item::AcaciaBoat,
146 Item::DarkOakBoat,
147 Item::PaleOakBoat,
148 Item::MangroveBoat,
149 Item::BambooRaft,
150 Item::CherryBoat,
151 Item::OakChestBoat,
152 Item::SpruceChestBoat,
153 Item::BirchChestBoat,
154 Item::JungleChestBoat,
155 Item::AcaciaChestBoat,
156 Item::DarkOakChestBoat,
157 Item::PaleOakChestBoat,
158 Item::MangroveChestBoat,
159 Item::BambooChestRaft,
160 Item::CherryChestBoat,
161 ])
162});
163pub static BOOK_CLONING_TARGET: LazyLock<HashSet<Item>> =
164 LazyLock::new(|| HashSet::from_iter(vec![Item::WritableBook]));
165pub static BOOKSHELF_BOOKS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
166 HashSet::from_iter(vec![
167 Item::Book,
168 Item::WrittenBook,
169 Item::EnchantedBook,
170 Item::WritableBook,
171 Item::KnowledgeBook,
172 ])
173});
174pub static BREAKS_DECORATED_POTS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
175 HashSet::from_iter(vec![
176 Item::Trident,
177 Item::Mace,
178 Item::DiamondSword,
179 Item::StoneSword,
180 Item::GoldenSword,
181 Item::NetheriteSword,
182 Item::WoodenSword,
183 Item::IronSword,
184 Item::CopperSword,
185 Item::DiamondAxe,
186 Item::StoneAxe,
187 Item::GoldenAxe,
188 Item::NetheriteAxe,
189 Item::WoodenAxe,
190 Item::IronAxe,
191 Item::CopperAxe,
192 Item::DiamondPickaxe,
193 Item::StonePickaxe,
194 Item::GoldenPickaxe,
195 Item::NetheritePickaxe,
196 Item::WoodenPickaxe,
197 Item::IronPickaxe,
198 Item::CopperPickaxe,
199 Item::DiamondShovel,
200 Item::StoneShovel,
201 Item::GoldenShovel,
202 Item::NetheriteShovel,
203 Item::WoodenShovel,
204 Item::IronShovel,
205 Item::CopperShovel,
206 Item::DiamondHoe,
207 Item::StoneHoe,
208 Item::GoldenHoe,
209 Item::NetheriteHoe,
210 Item::WoodenHoe,
211 Item::IronHoe,
212 Item::CopperHoe,
213 ])
214});
215pub static BREWING_FUEL: LazyLock<HashSet<Item>> =
216 LazyLock::new(|| HashSet::from_iter(vec![Item::BlazePowder]));
217pub static BUNDLES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
218 HashSet::from_iter(vec![
219 Item::Bundle,
220 Item::BlackBundle,
221 Item::BlueBundle,
222 Item::BrownBundle,
223 Item::CyanBundle,
224 Item::GrayBundle,
225 Item::GreenBundle,
226 Item::LightBlueBundle,
227 Item::LightGrayBundle,
228 Item::LimeBundle,
229 Item::MagentaBundle,
230 Item::OrangeBundle,
231 Item::PinkBundle,
232 Item::PurpleBundle,
233 Item::RedBundle,
234 Item::YellowBundle,
235 Item::WhiteBundle,
236 ])
237});
238pub static BUTTONS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
239 HashSet::from_iter(vec![
240 Item::OakButton,
241 Item::SpruceButton,
242 Item::BirchButton,
243 Item::JungleButton,
244 Item::AcaciaButton,
245 Item::DarkOakButton,
246 Item::PaleOakButton,
247 Item::CrimsonButton,
248 Item::WarpedButton,
249 Item::MangroveButton,
250 Item::BambooButton,
251 Item::CherryButton,
252 Item::StoneButton,
253 Item::PolishedBlackstoneButton,
254 ])
255});
256pub static CAMEL_FOOD: LazyLock<HashSet<Item>> =
257 LazyLock::new(|| HashSet::from_iter(vec![Item::Cactus]));
258pub static CANDLES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
259 HashSet::from_iter(vec![
260 Item::Candle,
261 Item::WhiteCandle,
262 Item::OrangeCandle,
263 Item::MagentaCandle,
264 Item::LightBlueCandle,
265 Item::YellowCandle,
266 Item::LimeCandle,
267 Item::PinkCandle,
268 Item::GrayCandle,
269 Item::LightGrayCandle,
270 Item::CyanCandle,
271 Item::PurpleCandle,
272 Item::BlueCandle,
273 Item::BrownCandle,
274 Item::GreenCandle,
275 Item::RedCandle,
276 Item::BlackCandle,
277 ])
278});
279pub static CAT_FOOD: LazyLock<HashSet<Item>> =
280 LazyLock::new(|| HashSet::from_iter(vec![Item::Cod, Item::Salmon]));
281pub static CHAINS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
282 HashSet::from_iter(vec![
283 Item::IronChain,
284 Item::CopperChain,
285 Item::WaxedCopperChain,
286 Item::ExposedCopperChain,
287 Item::WaxedExposedCopperChain,
288 Item::WeatheredCopperChain,
289 Item::WaxedWeatheredCopperChain,
290 Item::OxidizedCopperChain,
291 Item::WaxedOxidizedCopperChain,
292 ])
293});
294pub static CHERRY_LOGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
295 HashSet::from_iter(vec![
296 Item::CherryLog,
297 Item::CherryWood,
298 Item::StrippedCherryLog,
299 Item::StrippedCherryWood,
300 ])
301});
302pub static CHEST_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {
303 HashSet::from_iter(vec![
304 Item::LeatherChestplate,
305 Item::CopperChestplate,
306 Item::ChainmailChestplate,
307 Item::GoldenChestplate,
308 Item::IronChestplate,
309 Item::DiamondChestplate,
310 Item::NetheriteChestplate,
311 ])
312});
313pub static CHEST_BOATS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
314 HashSet::from_iter(vec![
315 Item::OakChestBoat,
316 Item::SpruceChestBoat,
317 Item::BirchChestBoat,
318 Item::JungleChestBoat,
319 Item::AcaciaChestBoat,
320 Item::DarkOakChestBoat,
321 Item::PaleOakChestBoat,
322 Item::MangroveChestBoat,
323 Item::BambooChestRaft,
324 Item::CherryChestBoat,
325 ])
326});
327pub static CHICKEN_FOOD: LazyLock<HashSet<Item>> = LazyLock::new(|| {
328 HashSet::from_iter(vec![
329 Item::WheatSeeds,
330 Item::MelonSeeds,
331 Item::PumpkinSeeds,
332 Item::BeetrootSeeds,
333 Item::TorchflowerSeeds,
334 Item::PitcherPod,
335 ])
336});
337pub static CLUSTER_MAX_HARVESTABLES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
338 HashSet::from_iter(vec![
339 Item::DiamondPickaxe,
340 Item::GoldenPickaxe,
341 Item::IronPickaxe,
342 Item::NetheritePickaxe,
343 Item::StonePickaxe,
344 Item::WoodenPickaxe,
345 Item::CopperPickaxe,
346 ])
347});
348pub static COAL_ORES: LazyLock<HashSet<Item>> =
349 LazyLock::new(|| HashSet::from_iter(vec![Item::CoalOre, Item::DeepslateCoalOre]));
350pub static COALS: LazyLock<HashSet<Item>> =
351 LazyLock::new(|| HashSet::from_iter(vec![Item::Coal, Item::Charcoal]));
352pub static COMPASSES: LazyLock<HashSet<Item>> =
353 LazyLock::new(|| HashSet::from_iter(vec![Item::Compass, Item::RecoveryCompass]));
354pub static COMPLETES_FIND_TREE_TUTORIAL: LazyLock<HashSet<Item>> = LazyLock::new(|| {
355 HashSet::from_iter(vec![
356 Item::JungleLeaves,
357 Item::OakLeaves,
358 Item::SpruceLeaves,
359 Item::PaleOakLeaves,
360 Item::DarkOakLeaves,
361 Item::AcaciaLeaves,
362 Item::BirchLeaves,
363 Item::AzaleaLeaves,
364 Item::FloweringAzaleaLeaves,
365 Item::MangroveLeaves,
366 Item::CherryLeaves,
367 Item::NetherWartBlock,
368 Item::WarpedWartBlock,
369 Item::CrimsonStem,
370 Item::StrippedCrimsonStem,
371 Item::CrimsonHyphae,
372 Item::StrippedCrimsonHyphae,
373 Item::WarpedStem,
374 Item::StrippedWarpedStem,
375 Item::WarpedHyphae,
376 Item::StrippedWarpedHyphae,
377 Item::DarkOakLog,
378 Item::DarkOakWood,
379 Item::StrippedDarkOakLog,
380 Item::StrippedDarkOakWood,
381 Item::PaleOakLog,
382 Item::PaleOakWood,
383 Item::StrippedPaleOakLog,
384 Item::StrippedPaleOakWood,
385 Item::OakLog,
386 Item::OakWood,
387 Item::StrippedOakLog,
388 Item::StrippedOakWood,
389 Item::AcaciaLog,
390 Item::AcaciaWood,
391 Item::StrippedAcaciaLog,
392 Item::StrippedAcaciaWood,
393 Item::BirchLog,
394 Item::BirchWood,
395 Item::StrippedBirchLog,
396 Item::StrippedBirchWood,
397 Item::JungleLog,
398 Item::JungleWood,
399 Item::StrippedJungleLog,
400 Item::StrippedJungleWood,
401 Item::SpruceLog,
402 Item::SpruceWood,
403 Item::StrippedSpruceLog,
404 Item::StrippedSpruceWood,
405 Item::MangroveLog,
406 Item::MangroveWood,
407 Item::StrippedMangroveLog,
408 Item::StrippedMangroveWood,
409 Item::CherryLog,
410 Item::CherryWood,
411 Item::StrippedCherryLog,
412 Item::StrippedCherryWood,
413 ])
414});
415pub static COPPER: LazyLock<HashSet<Item>> = LazyLock::new(|| {
416 HashSet::from_iter(vec![
417 Item::CopperBlock,
418 Item::ExposedCopper,
419 Item::WeatheredCopper,
420 Item::OxidizedCopper,
421 Item::WaxedCopperBlock,
422 Item::WaxedExposedCopper,
423 Item::WaxedWeatheredCopper,
424 Item::WaxedOxidizedCopper,
425 ])
426});
427pub static COPPER_CHESTS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
428 HashSet::from_iter(vec![
429 Item::CopperChest,
430 Item::ExposedCopperChest,
431 Item::WeatheredCopperChest,
432 Item::OxidizedCopperChest,
433 Item::WaxedCopperChest,
434 Item::WaxedExposedCopperChest,
435 Item::WaxedWeatheredCopperChest,
436 Item::WaxedOxidizedCopperChest,
437 ])
438});
439pub static COPPER_GOLEM_STATUES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
440 HashSet::from_iter(vec![
441 Item::CopperGolemStatue,
442 Item::ExposedCopperGolemStatue,
443 Item::WeatheredCopperGolemStatue,
444 Item::OxidizedCopperGolemStatue,
445 Item::WaxedCopperGolemStatue,
446 Item::WaxedExposedCopperGolemStatue,
447 Item::WaxedWeatheredCopperGolemStatue,
448 Item::WaxedOxidizedCopperGolemStatue,
449 ])
450});
451pub static COPPER_ORES: LazyLock<HashSet<Item>> =
452 LazyLock::new(|| HashSet::from_iter(vec![Item::CopperOre, Item::DeepslateCopperOre]));
453pub static COPPER_TOOL_MATERIALS: LazyLock<HashSet<Item>> =
454 LazyLock::new(|| HashSet::from_iter(vec![Item::CopperIngot]));
455pub static COW_FOOD: LazyLock<HashSet<Item>> =
456 LazyLock::new(|| HashSet::from_iter(vec![Item::Wheat]));
457pub static CREEPER_DROP_MUSIC_DISCS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
458 HashSet::from_iter(vec![
459 Item::MusicDisc13,
460 Item::MusicDiscCat,
461 Item::MusicDiscBlocks,
462 Item::MusicDiscChirp,
463 Item::MusicDiscFar,
464 Item::MusicDiscMall,
465 Item::MusicDiscMellohi,
466 Item::MusicDiscStal,
467 Item::MusicDiscStrad,
468 Item::MusicDiscWard,
469 Item::MusicDisc11,
470 Item::MusicDiscWait,
471 ])
472});
473pub static CREEPER_IGNITERS: LazyLock<HashSet<Item>> =
474 LazyLock::new(|| HashSet::from_iter(vec![Item::FlintAndSteel, Item::FireCharge]));
475pub static CRIMSON_STEMS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
476 HashSet::from_iter(vec![
477 Item::CrimsonStem,
478 Item::StrippedCrimsonStem,
479 Item::CrimsonHyphae,
480 Item::StrippedCrimsonHyphae,
481 ])
482});
483pub static DAMPENS_VIBRATIONS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
484 HashSet::from_iter(vec![
485 Item::WhiteWool,
486 Item::OrangeWool,
487 Item::MagentaWool,
488 Item::LightBlueWool,
489 Item::YellowWool,
490 Item::LimeWool,
491 Item::PinkWool,
492 Item::GrayWool,
493 Item::LightGrayWool,
494 Item::CyanWool,
495 Item::PurpleWool,
496 Item::BlueWool,
497 Item::BrownWool,
498 Item::GreenWool,
499 Item::RedWool,
500 Item::BlackWool,
501 Item::WhiteCarpet,
502 Item::OrangeCarpet,
503 Item::MagentaCarpet,
504 Item::LightBlueCarpet,
505 Item::YellowCarpet,
506 Item::LimeCarpet,
507 Item::PinkCarpet,
508 Item::GrayCarpet,
509 Item::LightGrayCarpet,
510 Item::CyanCarpet,
511 Item::PurpleCarpet,
512 Item::BlueCarpet,
513 Item::BrownCarpet,
514 Item::GreenCarpet,
515 Item::RedCarpet,
516 Item::BlackCarpet,
517 ])
518});
519pub static DARK_OAK_LOGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
520 HashSet::from_iter(vec![
521 Item::DarkOakLog,
522 Item::DarkOakWood,
523 Item::StrippedDarkOakLog,
524 Item::StrippedDarkOakWood,
525 ])
526});
527pub static DECORATED_POT_INGREDIENTS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
528 HashSet::from_iter(vec![
529 Item::Brick,
530 Item::AnglerPotterySherd,
531 Item::ArcherPotterySherd,
532 Item::ArmsUpPotterySherd,
533 Item::BladePotterySherd,
534 Item::BrewerPotterySherd,
535 Item::BurnPotterySherd,
536 Item::DangerPotterySherd,
537 Item::ExplorerPotterySherd,
538 Item::FriendPotterySherd,
539 Item::HeartPotterySherd,
540 Item::HeartbreakPotterySherd,
541 Item::HowlPotterySherd,
542 Item::MinerPotterySherd,
543 Item::MournerPotterySherd,
544 Item::PlentyPotterySherd,
545 Item::PrizePotterySherd,
546 Item::SheafPotterySherd,
547 Item::ShelterPotterySherd,
548 Item::SkullPotterySherd,
549 Item::SnortPotterySherd,
550 Item::FlowPotterySherd,
551 Item::GusterPotterySherd,
552 Item::ScrapePotterySherd,
553 ])
554});
555pub static DECORATED_POT_SHERDS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
556 HashSet::from_iter(vec![
557 Item::AnglerPotterySherd,
558 Item::ArcherPotterySherd,
559 Item::ArmsUpPotterySherd,
560 Item::BladePotterySherd,
561 Item::BrewerPotterySherd,
562 Item::BurnPotterySherd,
563 Item::DangerPotterySherd,
564 Item::ExplorerPotterySherd,
565 Item::FriendPotterySherd,
566 Item::HeartPotterySherd,
567 Item::HeartbreakPotterySherd,
568 Item::HowlPotterySherd,
569 Item::MinerPotterySherd,
570 Item::MournerPotterySherd,
571 Item::PlentyPotterySherd,
572 Item::PrizePotterySherd,
573 Item::SheafPotterySherd,
574 Item::ShelterPotterySherd,
575 Item::SkullPotterySherd,
576 Item::SnortPotterySherd,
577 Item::FlowPotterySherd,
578 Item::GusterPotterySherd,
579 Item::ScrapePotterySherd,
580 ])
581});
582pub static DIAMOND_ORES: LazyLock<HashSet<Item>> =
583 LazyLock::new(|| HashSet::from_iter(vec![Item::DiamondOre, Item::DeepslateDiamondOre]));
584pub static DIAMOND_TOOL_MATERIALS: LazyLock<HashSet<Item>> =
585 LazyLock::new(|| HashSet::from_iter(vec![Item::Diamond]));
586pub static DIRT: LazyLock<HashSet<Item>> = LazyLock::new(|| {
587 HashSet::from_iter(vec![
588 Item::Dirt,
589 Item::GrassBlock,
590 Item::Podzol,
591 Item::CoarseDirt,
592 Item::Mycelium,
593 Item::RootedDirt,
594 Item::MossBlock,
595 Item::PaleMossBlock,
596 Item::Mud,
597 Item::MuddyMangroveRoots,
598 ])
599});
600pub static DOORS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
601 HashSet::from_iter(vec![
602 Item::CopperDoor,
603 Item::ExposedCopperDoor,
604 Item::WeatheredCopperDoor,
605 Item::OxidizedCopperDoor,
606 Item::WaxedCopperDoor,
607 Item::WaxedExposedCopperDoor,
608 Item::WaxedWeatheredCopperDoor,
609 Item::WaxedOxidizedCopperDoor,
610 Item::IronDoor,
611 Item::OakDoor,
612 Item::SpruceDoor,
613 Item::BirchDoor,
614 Item::JungleDoor,
615 Item::AcaciaDoor,
616 Item::DarkOakDoor,
617 Item::PaleOakDoor,
618 Item::CrimsonDoor,
619 Item::WarpedDoor,
620 Item::MangroveDoor,
621 Item::BambooDoor,
622 Item::CherryDoor,
623 ])
624});
625pub static DROWNED_PREFERRED_WEAPONS: LazyLock<HashSet<Item>> =
626 LazyLock::new(|| HashSet::from_iter(vec![Item::Trident]));
627pub static DUPLICATES_ALLAYS: LazyLock<HashSet<Item>> =
628 LazyLock::new(|| HashSet::from_iter(vec![Item::AmethystShard]));
629pub static DYEABLE: LazyLock<HashSet<Item>> = LazyLock::new(|| {
630 HashSet::from_iter(vec![
631 Item::LeatherHelmet,
632 Item::LeatherChestplate,
633 Item::LeatherLeggings,
634 Item::LeatherBoots,
635 Item::LeatherHorseArmor,
636 Item::WolfArmor,
637 ])
638});
639pub static EGGS: LazyLock<HashSet<Item>> =
640 LazyLock::new(|| HashSet::from_iter(vec![Item::Egg, Item::BlueEgg, Item::BrownEgg]));
641pub static EMERALD_ORES: LazyLock<HashSet<Item>> =
642 LazyLock::new(|| HashSet::from_iter(vec![Item::EmeraldOre, Item::DeepslateEmeraldOre]));
643pub static ENCHANTABLE_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {
644 HashSet::from_iter(vec![
645 Item::LeatherBoots,
646 Item::CopperBoots,
647 Item::ChainmailBoots,
648 Item::GoldenBoots,
649 Item::IronBoots,
650 Item::DiamondBoots,
651 Item::NetheriteBoots,
652 Item::LeatherLeggings,
653 Item::CopperLeggings,
654 Item::ChainmailLeggings,
655 Item::GoldenLeggings,
656 Item::IronLeggings,
657 Item::DiamondLeggings,
658 Item::NetheriteLeggings,
659 Item::LeatherChestplate,
660 Item::CopperChestplate,
661 Item::ChainmailChestplate,
662 Item::GoldenChestplate,
663 Item::IronChestplate,
664 Item::DiamondChestplate,
665 Item::NetheriteChestplate,
666 Item::LeatherHelmet,
667 Item::CopperHelmet,
668 Item::ChainmailHelmet,
669 Item::GoldenHelmet,
670 Item::IronHelmet,
671 Item::DiamondHelmet,
672 Item::NetheriteHelmet,
673 Item::TurtleHelmet,
674 ])
675});
676pub static ENCHANTABLE_BOW: LazyLock<HashSet<Item>> =
677 LazyLock::new(|| HashSet::from_iter(vec![Item::Bow]));
678pub static ENCHANTABLE_CHEST_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {
679 HashSet::from_iter(vec![
680 Item::LeatherChestplate,
681 Item::CopperChestplate,
682 Item::ChainmailChestplate,
683 Item::GoldenChestplate,
684 Item::IronChestplate,
685 Item::DiamondChestplate,
686 Item::NetheriteChestplate,
687 ])
688});
689pub static ENCHANTABLE_CROSSBOW: LazyLock<HashSet<Item>> =
690 LazyLock::new(|| HashSet::from_iter(vec![Item::Crossbow]));
691pub static ENCHANTABLE_DURABILITY: LazyLock<HashSet<Item>> = LazyLock::new(|| {
692 HashSet::from_iter(vec![
693 Item::Elytra,
694 Item::Shield,
695 Item::Bow,
696 Item::Crossbow,
697 Item::Trident,
698 Item::FlintAndSteel,
699 Item::Shears,
700 Item::Brush,
701 Item::FishingRod,
702 Item::CarrotOnAStick,
703 Item::WarpedFungusOnAStick,
704 Item::Mace,
705 Item::LeatherBoots,
706 Item::CopperBoots,
707 Item::ChainmailBoots,
708 Item::GoldenBoots,
709 Item::IronBoots,
710 Item::DiamondBoots,
711 Item::NetheriteBoots,
712 Item::LeatherLeggings,
713 Item::CopperLeggings,
714 Item::ChainmailLeggings,
715 Item::GoldenLeggings,
716 Item::IronLeggings,
717 Item::DiamondLeggings,
718 Item::NetheriteLeggings,
719 Item::LeatherChestplate,
720 Item::CopperChestplate,
721 Item::ChainmailChestplate,
722 Item::GoldenChestplate,
723 Item::IronChestplate,
724 Item::DiamondChestplate,
725 Item::NetheriteChestplate,
726 Item::LeatherHelmet,
727 Item::CopperHelmet,
728 Item::ChainmailHelmet,
729 Item::GoldenHelmet,
730 Item::IronHelmet,
731 Item::DiamondHelmet,
732 Item::NetheriteHelmet,
733 Item::TurtleHelmet,
734 Item::DiamondSword,
735 Item::StoneSword,
736 Item::GoldenSword,
737 Item::NetheriteSword,
738 Item::WoodenSword,
739 Item::IronSword,
740 Item::CopperSword,
741 Item::DiamondAxe,
742 Item::StoneAxe,
743 Item::GoldenAxe,
744 Item::NetheriteAxe,
745 Item::WoodenAxe,
746 Item::IronAxe,
747 Item::CopperAxe,
748 Item::DiamondPickaxe,
749 Item::StonePickaxe,
750 Item::GoldenPickaxe,
751 Item::NetheritePickaxe,
752 Item::WoodenPickaxe,
753 Item::IronPickaxe,
754 Item::CopperPickaxe,
755 Item::DiamondShovel,
756 Item::StoneShovel,
757 Item::GoldenShovel,
758 Item::NetheriteShovel,
759 Item::WoodenShovel,
760 Item::IronShovel,
761 Item::CopperShovel,
762 Item::DiamondHoe,
763 Item::StoneHoe,
764 Item::GoldenHoe,
765 Item::NetheriteHoe,
766 Item::WoodenHoe,
767 Item::IronHoe,
768 Item::CopperHoe,
769 ])
770});
771pub static ENCHANTABLE_EQUIPPABLE: LazyLock<HashSet<Item>> = LazyLock::new(|| {
772 HashSet::from_iter(vec![
773 Item::Elytra,
774 Item::CarvedPumpkin,
775 Item::LeatherBoots,
776 Item::CopperBoots,
777 Item::ChainmailBoots,
778 Item::GoldenBoots,
779 Item::IronBoots,
780 Item::DiamondBoots,
781 Item::NetheriteBoots,
782 Item::LeatherLeggings,
783 Item::CopperLeggings,
784 Item::ChainmailLeggings,
785 Item::GoldenLeggings,
786 Item::IronLeggings,
787 Item::DiamondLeggings,
788 Item::NetheriteLeggings,
789 Item::LeatherChestplate,
790 Item::CopperChestplate,
791 Item::ChainmailChestplate,
792 Item::GoldenChestplate,
793 Item::IronChestplate,
794 Item::DiamondChestplate,
795 Item::NetheriteChestplate,
796 Item::LeatherHelmet,
797 Item::CopperHelmet,
798 Item::ChainmailHelmet,
799 Item::GoldenHelmet,
800 Item::IronHelmet,
801 Item::DiamondHelmet,
802 Item::NetheriteHelmet,
803 Item::TurtleHelmet,
804 Item::PlayerHead,
805 Item::CreeperHead,
806 Item::ZombieHead,
807 Item::SkeletonSkull,
808 Item::WitherSkeletonSkull,
809 Item::DragonHead,
810 Item::PiglinHead,
811 ])
812});
813pub static ENCHANTABLE_FIRE_ASPECT: LazyLock<HashSet<Item>> = LazyLock::new(|| {
814 HashSet::from_iter(vec![
815 Item::Mace,
816 Item::DiamondSword,
817 Item::StoneSword,
818 Item::GoldenSword,
819 Item::NetheriteSword,
820 Item::WoodenSword,
821 Item::IronSword,
822 Item::CopperSword,
823 ])
824});
825pub static ENCHANTABLE_FISHING: LazyLock<HashSet<Item>> =
826 LazyLock::new(|| HashSet::from_iter(vec![Item::FishingRod]));
827pub static ENCHANTABLE_FOOT_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {
828 HashSet::from_iter(vec![
829 Item::LeatherBoots,
830 Item::CopperBoots,
831 Item::ChainmailBoots,
832 Item::GoldenBoots,
833 Item::IronBoots,
834 Item::DiamondBoots,
835 Item::NetheriteBoots,
836 ])
837});
838pub static ENCHANTABLE_HEAD_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {
839 HashSet::from_iter(vec![
840 Item::LeatherHelmet,
841 Item::CopperHelmet,
842 Item::ChainmailHelmet,
843 Item::GoldenHelmet,
844 Item::IronHelmet,
845 Item::DiamondHelmet,
846 Item::NetheriteHelmet,
847 Item::TurtleHelmet,
848 ])
849});
850pub static ENCHANTABLE_LEG_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {
851 HashSet::from_iter(vec![
852 Item::LeatherLeggings,
853 Item::CopperLeggings,
854 Item::ChainmailLeggings,
855 Item::GoldenLeggings,
856 Item::IronLeggings,
857 Item::DiamondLeggings,
858 Item::NetheriteLeggings,
859 ])
860});
861pub static ENCHANTABLE_MACE: LazyLock<HashSet<Item>> =
862 LazyLock::new(|| HashSet::from_iter(vec![Item::Mace]));
863pub static ENCHANTABLE_MINING: LazyLock<HashSet<Item>> = LazyLock::new(|| {
864 HashSet::from_iter(vec![
865 Item::Shears,
866 Item::DiamondAxe,
867 Item::StoneAxe,
868 Item::GoldenAxe,
869 Item::NetheriteAxe,
870 Item::WoodenAxe,
871 Item::IronAxe,
872 Item::CopperAxe,
873 Item::DiamondPickaxe,
874 Item::StonePickaxe,
875 Item::GoldenPickaxe,
876 Item::NetheritePickaxe,
877 Item::WoodenPickaxe,
878 Item::IronPickaxe,
879 Item::CopperPickaxe,
880 Item::DiamondShovel,
881 Item::StoneShovel,
882 Item::GoldenShovel,
883 Item::NetheriteShovel,
884 Item::WoodenShovel,
885 Item::IronShovel,
886 Item::CopperShovel,
887 Item::DiamondHoe,
888 Item::StoneHoe,
889 Item::GoldenHoe,
890 Item::NetheriteHoe,
891 Item::WoodenHoe,
892 Item::IronHoe,
893 Item::CopperHoe,
894 ])
895});
896pub static ENCHANTABLE_MINING_LOOT: LazyLock<HashSet<Item>> = LazyLock::new(|| {
897 HashSet::from_iter(vec![
898 Item::DiamondAxe,
899 Item::StoneAxe,
900 Item::GoldenAxe,
901 Item::NetheriteAxe,
902 Item::WoodenAxe,
903 Item::IronAxe,
904 Item::CopperAxe,
905 Item::DiamondPickaxe,
906 Item::StonePickaxe,
907 Item::GoldenPickaxe,
908 Item::NetheritePickaxe,
909 Item::WoodenPickaxe,
910 Item::IronPickaxe,
911 Item::CopperPickaxe,
912 Item::DiamondShovel,
913 Item::StoneShovel,
914 Item::GoldenShovel,
915 Item::NetheriteShovel,
916 Item::WoodenShovel,
917 Item::IronShovel,
918 Item::CopperShovel,
919 Item::DiamondHoe,
920 Item::StoneHoe,
921 Item::GoldenHoe,
922 Item::NetheriteHoe,
923 Item::WoodenHoe,
924 Item::IronHoe,
925 Item::CopperHoe,
926 ])
927});
928pub static ENCHANTABLE_SHARP_WEAPON: LazyLock<HashSet<Item>> = LazyLock::new(|| {
929 HashSet::from_iter(vec![
930 Item::DiamondSword,
931 Item::StoneSword,
932 Item::GoldenSword,
933 Item::NetheriteSword,
934 Item::WoodenSword,
935 Item::IronSword,
936 Item::CopperSword,
937 Item::DiamondAxe,
938 Item::StoneAxe,
939 Item::GoldenAxe,
940 Item::NetheriteAxe,
941 Item::WoodenAxe,
942 Item::IronAxe,
943 Item::CopperAxe,
944 ])
945});
946pub static ENCHANTABLE_SWORD: LazyLock<HashSet<Item>> = LazyLock::new(|| {
947 HashSet::from_iter(vec![
948 Item::DiamondSword,
949 Item::StoneSword,
950 Item::GoldenSword,
951 Item::NetheriteSword,
952 Item::WoodenSword,
953 Item::IronSword,
954 Item::CopperSword,
955 ])
956});
957pub static ENCHANTABLE_TRIDENT: LazyLock<HashSet<Item>> =
958 LazyLock::new(|| HashSet::from_iter(vec![Item::Trident]));
959pub static ENCHANTABLE_VANISHING: LazyLock<HashSet<Item>> = LazyLock::new(|| {
960 HashSet::from_iter(vec![
961 Item::Compass,
962 Item::CarvedPumpkin,
963 Item::Elytra,
964 Item::Shield,
965 Item::Bow,
966 Item::Crossbow,
967 Item::Trident,
968 Item::FlintAndSteel,
969 Item::Shears,
970 Item::Brush,
971 Item::FishingRod,
972 Item::CarrotOnAStick,
973 Item::WarpedFungusOnAStick,
974 Item::Mace,
975 Item::PlayerHead,
976 Item::CreeperHead,
977 Item::ZombieHead,
978 Item::SkeletonSkull,
979 Item::WitherSkeletonSkull,
980 Item::DragonHead,
981 Item::PiglinHead,
982 Item::LeatherBoots,
983 Item::CopperBoots,
984 Item::ChainmailBoots,
985 Item::GoldenBoots,
986 Item::IronBoots,
987 Item::DiamondBoots,
988 Item::NetheriteBoots,
989 Item::LeatherLeggings,
990 Item::CopperLeggings,
991 Item::ChainmailLeggings,
992 Item::GoldenLeggings,
993 Item::IronLeggings,
994 Item::DiamondLeggings,
995 Item::NetheriteLeggings,
996 Item::LeatherChestplate,
997 Item::CopperChestplate,
998 Item::ChainmailChestplate,
999 Item::GoldenChestplate,
1000 Item::IronChestplate,
1001 Item::DiamondChestplate,
1002 Item::NetheriteChestplate,
1003 Item::LeatherHelmet,
1004 Item::CopperHelmet,
1005 Item::ChainmailHelmet,
1006 Item::GoldenHelmet,
1007 Item::IronHelmet,
1008 Item::DiamondHelmet,
1009 Item::NetheriteHelmet,
1010 Item::TurtleHelmet,
1011 Item::DiamondSword,
1012 Item::StoneSword,
1013 Item::GoldenSword,
1014 Item::NetheriteSword,
1015 Item::WoodenSword,
1016 Item::IronSword,
1017 Item::CopperSword,
1018 Item::DiamondAxe,
1019 Item::StoneAxe,
1020 Item::GoldenAxe,
1021 Item::NetheriteAxe,
1022 Item::WoodenAxe,
1023 Item::IronAxe,
1024 Item::CopperAxe,
1025 Item::DiamondPickaxe,
1026 Item::StonePickaxe,
1027 Item::GoldenPickaxe,
1028 Item::NetheritePickaxe,
1029 Item::WoodenPickaxe,
1030 Item::IronPickaxe,
1031 Item::CopperPickaxe,
1032 Item::DiamondShovel,
1033 Item::StoneShovel,
1034 Item::GoldenShovel,
1035 Item::NetheriteShovel,
1036 Item::WoodenShovel,
1037 Item::IronShovel,
1038 Item::CopperShovel,
1039 Item::DiamondHoe,
1040 Item::StoneHoe,
1041 Item::GoldenHoe,
1042 Item::NetheriteHoe,
1043 Item::WoodenHoe,
1044 Item::IronHoe,
1045 Item::CopperHoe,
1046 ])
1047});
1048pub static ENCHANTABLE_WEAPON: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1049 HashSet::from_iter(vec![
1050 Item::Mace,
1051 Item::DiamondSword,
1052 Item::StoneSword,
1053 Item::GoldenSword,
1054 Item::NetheriteSword,
1055 Item::WoodenSword,
1056 Item::IronSword,
1057 Item::CopperSword,
1058 Item::DiamondAxe,
1059 Item::StoneAxe,
1060 Item::GoldenAxe,
1061 Item::NetheriteAxe,
1062 Item::WoodenAxe,
1063 Item::IronAxe,
1064 Item::CopperAxe,
1065 ])
1066});
1067pub static FENCE_GATES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1068 HashSet::from_iter(vec![
1069 Item::AcaciaFenceGate,
1070 Item::BirchFenceGate,
1071 Item::DarkOakFenceGate,
1072 Item::PaleOakFenceGate,
1073 Item::JungleFenceGate,
1074 Item::OakFenceGate,
1075 Item::SpruceFenceGate,
1076 Item::CrimsonFenceGate,
1077 Item::WarpedFenceGate,
1078 Item::MangroveFenceGate,
1079 Item::BambooFenceGate,
1080 Item::CherryFenceGate,
1081 ])
1082});
1083pub static FENCES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1084 HashSet::from_iter(vec![
1085 Item::NetherBrickFence,
1086 Item::OakFence,
1087 Item::AcaciaFence,
1088 Item::DarkOakFence,
1089 Item::PaleOakFence,
1090 Item::SpruceFence,
1091 Item::BirchFence,
1092 Item::JungleFence,
1093 Item::CrimsonFence,
1094 Item::WarpedFence,
1095 Item::MangroveFence,
1096 Item::BambooFence,
1097 Item::CherryFence,
1098 ])
1099});
1100pub static FISHES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1101 HashSet::from_iter(vec![
1102 Item::Cod,
1103 Item::CookedCod,
1104 Item::Salmon,
1105 Item::CookedSalmon,
1106 Item::Pufferfish,
1107 Item::TropicalFish,
1108 ])
1109});
1110pub static FLOWERS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1111 HashSet::from_iter(vec![
1112 Item::Sunflower,
1113 Item::Lilac,
1114 Item::Peony,
1115 Item::RoseBush,
1116 Item::PitcherPlant,
1117 Item::FloweringAzaleaLeaves,
1118 Item::FloweringAzalea,
1119 Item::MangrovePropagule,
1120 Item::CherryLeaves,
1121 Item::PinkPetals,
1122 Item::Wildflowers,
1123 Item::ChorusFlower,
1124 Item::SporeBlossom,
1125 Item::CactusFlower,
1126 Item::Dandelion,
1127 Item::OpenEyeblossom,
1128 Item::Poppy,
1129 Item::BlueOrchid,
1130 Item::Allium,
1131 Item::AzureBluet,
1132 Item::RedTulip,
1133 Item::OrangeTulip,
1134 Item::WhiteTulip,
1135 Item::PinkTulip,
1136 Item::OxeyeDaisy,
1137 Item::Cornflower,
1138 Item::LilyOfTheValley,
1139 Item::WitherRose,
1140 Item::Torchflower,
1141 Item::ClosedEyeblossom,
1142 ])
1143});
1144pub static FOOT_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1145 HashSet::from_iter(vec![
1146 Item::LeatherBoots,
1147 Item::CopperBoots,
1148 Item::ChainmailBoots,
1149 Item::GoldenBoots,
1150 Item::IronBoots,
1151 Item::DiamondBoots,
1152 Item::NetheriteBoots,
1153 ])
1154});
1155pub static FOX_FOOD: LazyLock<HashSet<Item>> =
1156 LazyLock::new(|| HashSet::from_iter(vec![Item::SweetBerries, Item::GlowBerries]));
1157pub static FREEZE_IMMUNE_WEARABLES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1158 HashSet::from_iter(vec![
1159 Item::LeatherBoots,
1160 Item::LeatherLeggings,
1161 Item::LeatherChestplate,
1162 Item::LeatherHelmet,
1163 Item::LeatherHorseArmor,
1164 ])
1165});
1166pub static FROG_FOOD: LazyLock<HashSet<Item>> =
1167 LazyLock::new(|| HashSet::from_iter(vec![Item::SlimeBall]));
1168pub static FURNACE_MINECART_FUEL: LazyLock<HashSet<Item>> =
1169 LazyLock::new(|| HashSet::from_iter(vec![Item::Coal, Item::Charcoal]));
1170pub static GAZE_DISGUISE_EQUIPMENT: LazyLock<HashSet<Item>> =
1171 LazyLock::new(|| HashSet::from_iter(vec![Item::CarvedPumpkin]));
1172pub static GOAT_FOOD: LazyLock<HashSet<Item>> =
1173 LazyLock::new(|| HashSet::from_iter(vec![Item::Wheat]));
1174pub static GOLD_ORES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1175 HashSet::from_iter(vec![
1176 Item::GoldOre,
1177 Item::NetherGoldOre,
1178 Item::DeepslateGoldOre,
1179 ])
1180});
1181pub static GOLD_TOOL_MATERIALS: LazyLock<HashSet<Item>> =
1182 LazyLock::new(|| HashSet::from_iter(vec![Item::GoldIngot]));
1183pub static HANGING_SIGNS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1184 HashSet::from_iter(vec![
1185 Item::OakHangingSign,
1186 Item::SpruceHangingSign,
1187 Item::BirchHangingSign,
1188 Item::AcaciaHangingSign,
1189 Item::CherryHangingSign,
1190 Item::JungleHangingSign,
1191 Item::DarkOakHangingSign,
1192 Item::PaleOakHangingSign,
1193 Item::CrimsonHangingSign,
1194 Item::WarpedHangingSign,
1195 Item::MangroveHangingSign,
1196 Item::BambooHangingSign,
1197 ])
1198});
1199pub static HAPPY_GHAST_FOOD: LazyLock<HashSet<Item>> =
1200 LazyLock::new(|| HashSet::from_iter(vec![Item::Snowball]));
1201pub static HAPPY_GHAST_TEMPT_ITEMS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1202 HashSet::from_iter(vec![
1203 Item::Snowball,
1204 Item::WhiteHarness,
1205 Item::OrangeHarness,
1206 Item::MagentaHarness,
1207 Item::LightBlueHarness,
1208 Item::YellowHarness,
1209 Item::LimeHarness,
1210 Item::PinkHarness,
1211 Item::GrayHarness,
1212 Item::LightGrayHarness,
1213 Item::CyanHarness,
1214 Item::PurpleHarness,
1215 Item::BlueHarness,
1216 Item::BrownHarness,
1217 Item::GreenHarness,
1218 Item::RedHarness,
1219 Item::BlackHarness,
1220 ])
1221});
1222pub static HARNESSES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1223 HashSet::from_iter(vec![
1224 Item::WhiteHarness,
1225 Item::OrangeHarness,
1226 Item::MagentaHarness,
1227 Item::LightBlueHarness,
1228 Item::YellowHarness,
1229 Item::LimeHarness,
1230 Item::PinkHarness,
1231 Item::GrayHarness,
1232 Item::LightGrayHarness,
1233 Item::CyanHarness,
1234 Item::PurpleHarness,
1235 Item::BlueHarness,
1236 Item::BrownHarness,
1237 Item::GreenHarness,
1238 Item::RedHarness,
1239 Item::BlackHarness,
1240 ])
1241});
1242pub static HEAD_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1243 HashSet::from_iter(vec![
1244 Item::LeatherHelmet,
1245 Item::CopperHelmet,
1246 Item::ChainmailHelmet,
1247 Item::GoldenHelmet,
1248 Item::IronHelmet,
1249 Item::DiamondHelmet,
1250 Item::NetheriteHelmet,
1251 Item::TurtleHelmet,
1252 ])
1253});
1254pub static HOES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1255 HashSet::from_iter(vec![
1256 Item::DiamondHoe,
1257 Item::StoneHoe,
1258 Item::GoldenHoe,
1259 Item::NetheriteHoe,
1260 Item::WoodenHoe,
1261 Item::IronHoe,
1262 Item::CopperHoe,
1263 ])
1264});
1265pub static HOGLIN_FOOD: LazyLock<HashSet<Item>> =
1266 LazyLock::new(|| HashSet::from_iter(vec![Item::CrimsonFungus]));
1267pub static HORSE_FOOD: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1268 HashSet::from_iter(vec![
1269 Item::Wheat,
1270 Item::Sugar,
1271 Item::HayBlock,
1272 Item::Apple,
1273 Item::Carrot,
1274 Item::GoldenCarrot,
1275 Item::GoldenApple,
1276 Item::EnchantedGoldenApple,
1277 ])
1278});
1279pub static HORSE_TEMPT_ITEMS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1280 HashSet::from_iter(vec![
1281 Item::GoldenCarrot,
1282 Item::GoldenApple,
1283 Item::EnchantedGoldenApple,
1284 ])
1285});
1286pub static IGNORED_BY_PIGLIN_BABIES: LazyLock<HashSet<Item>> =
1287 LazyLock::new(|| HashSet::from_iter(vec![Item::Leather]));
1288pub static IRON_ORES: LazyLock<HashSet<Item>> =
1289 LazyLock::new(|| HashSet::from_iter(vec![Item::IronOre, Item::DeepslateIronOre]));
1290pub static IRON_TOOL_MATERIALS: LazyLock<HashSet<Item>> =
1291 LazyLock::new(|| HashSet::from_iter(vec![Item::IronIngot]));
1292pub static JUNGLE_LOGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1293 HashSet::from_iter(vec![
1294 Item::JungleLog,
1295 Item::JungleWood,
1296 Item::StrippedJungleLog,
1297 Item::StrippedJungleWood,
1298 ])
1299});
1300pub static LANTERNS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1301 HashSet::from_iter(vec![
1302 Item::Lantern,
1303 Item::SoulLantern,
1304 Item::CopperLantern,
1305 Item::WaxedCopperLantern,
1306 Item::ExposedCopperLantern,
1307 Item::WaxedExposedCopperLantern,
1308 Item::WeatheredCopperLantern,
1309 Item::WaxedWeatheredCopperLantern,
1310 Item::OxidizedCopperLantern,
1311 Item::WaxedOxidizedCopperLantern,
1312 ])
1313});
1314pub static LAPIS_ORES: LazyLock<HashSet<Item>> =
1315 LazyLock::new(|| HashSet::from_iter(vec![Item::LapisOre, Item::DeepslateLapisOre]));
1316pub static LEAVES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1317 HashSet::from_iter(vec![
1318 Item::JungleLeaves,
1319 Item::OakLeaves,
1320 Item::SpruceLeaves,
1321 Item::PaleOakLeaves,
1322 Item::DarkOakLeaves,
1323 Item::AcaciaLeaves,
1324 Item::BirchLeaves,
1325 Item::AzaleaLeaves,
1326 Item::FloweringAzaleaLeaves,
1327 Item::MangroveLeaves,
1328 Item::CherryLeaves,
1329 ])
1330});
1331pub static LECTERN_BOOKS: LazyLock<HashSet<Item>> =
1332 LazyLock::new(|| HashSet::from_iter(vec![Item::WrittenBook, Item::WritableBook]));
1333pub static LEG_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1334 HashSet::from_iter(vec![
1335 Item::LeatherLeggings,
1336 Item::CopperLeggings,
1337 Item::ChainmailLeggings,
1338 Item::GoldenLeggings,
1339 Item::IronLeggings,
1340 Item::DiamondLeggings,
1341 Item::NetheriteLeggings,
1342 ])
1343});
1344pub static LIGHTNING_RODS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1345 HashSet::from_iter(vec![
1346 Item::LightningRod,
1347 Item::ExposedLightningRod,
1348 Item::WeatheredLightningRod,
1349 Item::OxidizedLightningRod,
1350 Item::WaxedLightningRod,
1351 Item::WaxedExposedLightningRod,
1352 Item::WaxedWeatheredLightningRod,
1353 Item::WaxedOxidizedLightningRod,
1354 ])
1355});
1356pub static LLAMA_FOOD: LazyLock<HashSet<Item>> =
1357 LazyLock::new(|| HashSet::from_iter(vec![Item::Wheat, Item::HayBlock]));
1358pub static LLAMA_TEMPT_ITEMS: LazyLock<HashSet<Item>> =
1359 LazyLock::new(|| HashSet::from_iter(vec![Item::HayBlock]));
1360pub static LOGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1361 HashSet::from_iter(vec![
1362 Item::CrimsonStem,
1363 Item::StrippedCrimsonStem,
1364 Item::CrimsonHyphae,
1365 Item::StrippedCrimsonHyphae,
1366 Item::WarpedStem,
1367 Item::StrippedWarpedStem,
1368 Item::WarpedHyphae,
1369 Item::StrippedWarpedHyphae,
1370 Item::DarkOakLog,
1371 Item::DarkOakWood,
1372 Item::StrippedDarkOakLog,
1373 Item::StrippedDarkOakWood,
1374 Item::PaleOakLog,
1375 Item::PaleOakWood,
1376 Item::StrippedPaleOakLog,
1377 Item::StrippedPaleOakWood,
1378 Item::OakLog,
1379 Item::OakWood,
1380 Item::StrippedOakLog,
1381 Item::StrippedOakWood,
1382 Item::AcaciaLog,
1383 Item::AcaciaWood,
1384 Item::StrippedAcaciaLog,
1385 Item::StrippedAcaciaWood,
1386 Item::BirchLog,
1387 Item::BirchWood,
1388 Item::StrippedBirchLog,
1389 Item::StrippedBirchWood,
1390 Item::JungleLog,
1391 Item::JungleWood,
1392 Item::StrippedJungleLog,
1393 Item::StrippedJungleWood,
1394 Item::SpruceLog,
1395 Item::SpruceWood,
1396 Item::StrippedSpruceLog,
1397 Item::StrippedSpruceWood,
1398 Item::MangroveLog,
1399 Item::MangroveWood,
1400 Item::StrippedMangroveLog,
1401 Item::StrippedMangroveWood,
1402 Item::CherryLog,
1403 Item::CherryWood,
1404 Item::StrippedCherryLog,
1405 Item::StrippedCherryWood,
1406 ])
1407});
1408pub static LOGS_THAT_BURN: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1409 HashSet::from_iter(vec![
1410 Item::DarkOakLog,
1411 Item::DarkOakWood,
1412 Item::StrippedDarkOakLog,
1413 Item::StrippedDarkOakWood,
1414 Item::PaleOakLog,
1415 Item::PaleOakWood,
1416 Item::StrippedPaleOakLog,
1417 Item::StrippedPaleOakWood,
1418 Item::OakLog,
1419 Item::OakWood,
1420 Item::StrippedOakLog,
1421 Item::StrippedOakWood,
1422 Item::AcaciaLog,
1423 Item::AcaciaWood,
1424 Item::StrippedAcaciaLog,
1425 Item::StrippedAcaciaWood,
1426 Item::BirchLog,
1427 Item::BirchWood,
1428 Item::StrippedBirchLog,
1429 Item::StrippedBirchWood,
1430 Item::JungleLog,
1431 Item::JungleWood,
1432 Item::StrippedJungleLog,
1433 Item::StrippedJungleWood,
1434 Item::SpruceLog,
1435 Item::SpruceWood,
1436 Item::StrippedSpruceLog,
1437 Item::StrippedSpruceWood,
1438 Item::MangroveLog,
1439 Item::MangroveWood,
1440 Item::StrippedMangroveLog,
1441 Item::StrippedMangroveWood,
1442 Item::CherryLog,
1443 Item::CherryWood,
1444 Item::StrippedCherryLog,
1445 Item::StrippedCherryWood,
1446 ])
1447});
1448pub static MANGROVE_LOGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1449 HashSet::from_iter(vec![
1450 Item::MangroveLog,
1451 Item::MangroveWood,
1452 Item::StrippedMangroveLog,
1453 Item::StrippedMangroveWood,
1454 ])
1455});
1456pub static MAP_INVISIBILITY_EQUIPMENT: LazyLock<HashSet<Item>> =
1457 LazyLock::new(|| HashSet::from_iter(vec![Item::CarvedPumpkin]));
1458pub static MEAT: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1459 HashSet::from_iter(vec![
1460 Item::Beef,
1461 Item::Chicken,
1462 Item::CookedBeef,
1463 Item::CookedChicken,
1464 Item::CookedMutton,
1465 Item::CookedPorkchop,
1466 Item::CookedRabbit,
1467 Item::Mutton,
1468 Item::Porkchop,
1469 Item::Rabbit,
1470 Item::RottenFlesh,
1471 ])
1472});
1473pub static NETHERITE_TOOL_MATERIALS: LazyLock<HashSet<Item>> =
1474 LazyLock::new(|| HashSet::from_iter(vec![Item::NetheriteIngot]));
1475pub static NON_FLAMMABLE_WOOD: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1476 HashSet::from_iter(vec![
1477 Item::WarpedStem,
1478 Item::StrippedWarpedStem,
1479 Item::WarpedHyphae,
1480 Item::StrippedWarpedHyphae,
1481 Item::CrimsonStem,
1482 Item::StrippedCrimsonStem,
1483 Item::CrimsonHyphae,
1484 Item::StrippedCrimsonHyphae,
1485 Item::CrimsonPlanks,
1486 Item::WarpedPlanks,
1487 Item::CrimsonSlab,
1488 Item::WarpedSlab,
1489 Item::CrimsonPressurePlate,
1490 Item::WarpedPressurePlate,
1491 Item::CrimsonFence,
1492 Item::WarpedFence,
1493 Item::CrimsonTrapdoor,
1494 Item::WarpedTrapdoor,
1495 Item::CrimsonFenceGate,
1496 Item::WarpedFenceGate,
1497 Item::CrimsonStairs,
1498 Item::WarpedStairs,
1499 Item::CrimsonButton,
1500 Item::WarpedButton,
1501 Item::CrimsonDoor,
1502 Item::WarpedDoor,
1503 Item::CrimsonSign,
1504 Item::WarpedSign,
1505 Item::WarpedHangingSign,
1506 Item::CrimsonHangingSign,
1507 Item::WarpedShelf,
1508 Item::CrimsonShelf,
1509 ])
1510});
1511pub static NOTEBLOCK_TOP_INSTRUMENTS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1512 HashSet::from_iter(vec![
1513 Item::ZombieHead,
1514 Item::SkeletonSkull,
1515 Item::CreeperHead,
1516 Item::DragonHead,
1517 Item::WitherSkeletonSkull,
1518 Item::PiglinHead,
1519 Item::PlayerHead,
1520 ])
1521});
1522pub static OAK_LOGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1523 HashSet::from_iter(vec![
1524 Item::OakLog,
1525 Item::OakWood,
1526 Item::StrippedOakLog,
1527 Item::StrippedOakWood,
1528 ])
1529});
1530pub static OCELOT_FOOD: LazyLock<HashSet<Item>> =
1531 LazyLock::new(|| HashSet::from_iter(vec![Item::Cod, Item::Salmon]));
1532pub static PALE_OAK_LOGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1533 HashSet::from_iter(vec![
1534 Item::PaleOakLog,
1535 Item::PaleOakWood,
1536 Item::StrippedPaleOakLog,
1537 Item::StrippedPaleOakWood,
1538 ])
1539});
1540pub static PANDA_EATS_FROM_GROUND: LazyLock<HashSet<Item>> =
1541 LazyLock::new(|| HashSet::from_iter(vec![Item::Cake, Item::Bamboo]));
1542pub static PANDA_FOOD: LazyLock<HashSet<Item>> =
1543 LazyLock::new(|| HashSet::from_iter(vec![Item::Bamboo]));
1544pub static PARROT_FOOD: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1545 HashSet::from_iter(vec![
1546 Item::WheatSeeds,
1547 Item::MelonSeeds,
1548 Item::PumpkinSeeds,
1549 Item::BeetrootSeeds,
1550 Item::TorchflowerSeeds,
1551 Item::PitcherPod,
1552 ])
1553});
1554pub static PARROT_POISONOUS_FOOD: LazyLock<HashSet<Item>> =
1555 LazyLock::new(|| HashSet::from_iter(vec![Item::Cookie]));
1556pub static PICKAXES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1557 HashSet::from_iter(vec![
1558 Item::DiamondPickaxe,
1559 Item::StonePickaxe,
1560 Item::GoldenPickaxe,
1561 Item::NetheritePickaxe,
1562 Item::WoodenPickaxe,
1563 Item::IronPickaxe,
1564 Item::CopperPickaxe,
1565 ])
1566});
1567pub static PIG_FOOD: LazyLock<HashSet<Item>> =
1568 LazyLock::new(|| HashSet::from_iter(vec![Item::Carrot, Item::Potato, Item::Beetroot]));
1569pub static PIGLIN_FOOD: LazyLock<HashSet<Item>> =
1570 LazyLock::new(|| HashSet::from_iter(vec![Item::Porkchop, Item::CookedPorkchop]));
1571pub static PIGLIN_LOVED: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1572 HashSet::from_iter(vec![
1573 Item::GoldBlock,
1574 Item::GildedBlackstone,
1575 Item::LightWeightedPressurePlate,
1576 Item::GoldIngot,
1577 Item::Bell,
1578 Item::Clock,
1579 Item::GoldenCarrot,
1580 Item::GlisteringMelonSlice,
1581 Item::GoldenApple,
1582 Item::EnchantedGoldenApple,
1583 Item::GoldenHelmet,
1584 Item::GoldenChestplate,
1585 Item::GoldenLeggings,
1586 Item::GoldenBoots,
1587 Item::GoldenHorseArmor,
1588 Item::GoldenSword,
1589 Item::GoldenPickaxe,
1590 Item::GoldenShovel,
1591 Item::GoldenAxe,
1592 Item::GoldenHoe,
1593 Item::RawGold,
1594 Item::RawGoldBlock,
1595 Item::GoldOre,
1596 Item::NetherGoldOre,
1597 Item::DeepslateGoldOre,
1598 ])
1599});
1600pub static PIGLIN_PREFERRED_WEAPONS: LazyLock<HashSet<Item>> =
1601 LazyLock::new(|| HashSet::from_iter(vec![Item::Crossbow]));
1602pub static PIGLIN_REPELLENTS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1603 HashSet::from_iter(vec![Item::SoulTorch, Item::SoulLantern, Item::SoulCampfire])
1604});
1605pub static PIGLIN_SAFE_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1606 HashSet::from_iter(vec![
1607 Item::GoldenHelmet,
1608 Item::GoldenChestplate,
1609 Item::GoldenLeggings,
1610 Item::GoldenBoots,
1611 ])
1612});
1613pub static PILLAGER_PREFERRED_WEAPONS: LazyLock<HashSet<Item>> =
1614 LazyLock::new(|| HashSet::from_iter(vec![Item::Crossbow]));
1615pub static PLANKS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1616 HashSet::from_iter(vec![
1617 Item::OakPlanks,
1618 Item::SprucePlanks,
1619 Item::BirchPlanks,
1620 Item::JunglePlanks,
1621 Item::AcaciaPlanks,
1622 Item::DarkOakPlanks,
1623 Item::PaleOakPlanks,
1624 Item::CrimsonPlanks,
1625 Item::WarpedPlanks,
1626 Item::MangrovePlanks,
1627 Item::BambooPlanks,
1628 Item::CherryPlanks,
1629 ])
1630});
1631pub static RABBIT_FOOD: LazyLock<HashSet<Item>> =
1632 LazyLock::new(|| HashSet::from_iter(vec![Item::Carrot, Item::GoldenCarrot, Item::Dandelion]));
1633pub static RAILS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1634 HashSet::from_iter(vec![
1635 Item::Rail,
1636 Item::PoweredRail,
1637 Item::DetectorRail,
1638 Item::ActivatorRail,
1639 ])
1640});
1641pub static REDSTONE_ORES: LazyLock<HashSet<Item>> =
1642 LazyLock::new(|| HashSet::from_iter(vec![Item::RedstoneOre, Item::DeepslateRedstoneOre]));
1643pub static REPAIRS_CHAIN_ARMOR: LazyLock<HashSet<Item>> =
1644 LazyLock::new(|| HashSet::from_iter(vec![Item::IronIngot]));
1645pub static REPAIRS_COPPER_ARMOR: LazyLock<HashSet<Item>> =
1646 LazyLock::new(|| HashSet::from_iter(vec![Item::CopperIngot]));
1647pub static REPAIRS_DIAMOND_ARMOR: LazyLock<HashSet<Item>> =
1648 LazyLock::new(|| HashSet::from_iter(vec![Item::Diamond]));
1649pub static REPAIRS_GOLD_ARMOR: LazyLock<HashSet<Item>> =
1650 LazyLock::new(|| HashSet::from_iter(vec![Item::GoldIngot]));
1651pub static REPAIRS_IRON_ARMOR: LazyLock<HashSet<Item>> =
1652 LazyLock::new(|| HashSet::from_iter(vec![Item::IronIngot]));
1653pub static REPAIRS_LEATHER_ARMOR: LazyLock<HashSet<Item>> =
1654 LazyLock::new(|| HashSet::from_iter(vec![Item::Leather]));
1655pub static REPAIRS_NETHERITE_ARMOR: LazyLock<HashSet<Item>> =
1656 LazyLock::new(|| HashSet::from_iter(vec![Item::NetheriteIngot]));
1657pub static REPAIRS_TURTLE_HELMET: LazyLock<HashSet<Item>> =
1658 LazyLock::new(|| HashSet::from_iter(vec![Item::TurtleScute]));
1659pub static REPAIRS_WOLF_ARMOR: LazyLock<HashSet<Item>> =
1660 LazyLock::new(|| HashSet::from_iter(vec![Item::ArmadilloScute]));
1661pub static SAND: LazyLock<HashSet<Item>> =
1662 LazyLock::new(|| HashSet::from_iter(vec![Item::Sand, Item::RedSand, Item::SuspiciousSand]));
1663pub static SAPLINGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1664 HashSet::from_iter(vec![
1665 Item::OakSapling,
1666 Item::SpruceSapling,
1667 Item::BirchSapling,
1668 Item::JungleSapling,
1669 Item::AcaciaSapling,
1670 Item::DarkOakSapling,
1671 Item::PaleOakSapling,
1672 Item::Azalea,
1673 Item::FloweringAzalea,
1674 Item::MangrovePropagule,
1675 Item::CherrySapling,
1676 ])
1677});
1678pub static SHEARABLE_FROM_COPPER_GOLEM: LazyLock<HashSet<Item>> =
1679 LazyLock::new(|| HashSet::from_iter(vec![Item::Poppy]));
1680pub static SHEEP_FOOD: LazyLock<HashSet<Item>> =
1681 LazyLock::new(|| HashSet::from_iter(vec![Item::Wheat]));
1682pub static SHOVELS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1683 HashSet::from_iter(vec![
1684 Item::DiamondShovel,
1685 Item::StoneShovel,
1686 Item::GoldenShovel,
1687 Item::NetheriteShovel,
1688 Item::WoodenShovel,
1689 Item::IronShovel,
1690 Item::CopperShovel,
1691 ])
1692});
1693pub static SHULKER_BOXES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1694 HashSet::from_iter(vec![
1695 Item::ShulkerBox,
1696 Item::BlackShulkerBox,
1697 Item::BlueShulkerBox,
1698 Item::BrownShulkerBox,
1699 Item::CyanShulkerBox,
1700 Item::GrayShulkerBox,
1701 Item::GreenShulkerBox,
1702 Item::LightBlueShulkerBox,
1703 Item::LightGrayShulkerBox,
1704 Item::LimeShulkerBox,
1705 Item::MagentaShulkerBox,
1706 Item::OrangeShulkerBox,
1707 Item::PinkShulkerBox,
1708 Item::PurpleShulkerBox,
1709 Item::RedShulkerBox,
1710 Item::WhiteShulkerBox,
1711 Item::YellowShulkerBox,
1712 ])
1713});
1714pub static SIGNS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1715 HashSet::from_iter(vec![
1716 Item::OakSign,
1717 Item::SpruceSign,
1718 Item::BirchSign,
1719 Item::AcaciaSign,
1720 Item::JungleSign,
1721 Item::DarkOakSign,
1722 Item::PaleOakSign,
1723 Item::CrimsonSign,
1724 Item::WarpedSign,
1725 Item::MangroveSign,
1726 Item::BambooSign,
1727 Item::CherrySign,
1728 ])
1729});
1730pub static SKELETON_PREFERRED_WEAPONS: LazyLock<HashSet<Item>> =
1731 LazyLock::new(|| HashSet::from_iter(vec![Item::Bow]));
1732pub static SKULLS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1733 HashSet::from_iter(vec![
1734 Item::PlayerHead,
1735 Item::CreeperHead,
1736 Item::ZombieHead,
1737 Item::SkeletonSkull,
1738 Item::WitherSkeletonSkull,
1739 Item::DragonHead,
1740 Item::PiglinHead,
1741 ])
1742});
1743pub static SLABS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1744 HashSet::from_iter(vec![
1745 Item::BambooMosaicSlab,
1746 Item::StoneSlab,
1747 Item::SmoothStoneSlab,
1748 Item::StoneBrickSlab,
1749 Item::SandstoneSlab,
1750 Item::PurpurSlab,
1751 Item::QuartzSlab,
1752 Item::RedSandstoneSlab,
1753 Item::BrickSlab,
1754 Item::CobblestoneSlab,
1755 Item::NetherBrickSlab,
1756 Item::PetrifiedOakSlab,
1757 Item::PrismarineSlab,
1758 Item::PrismarineBrickSlab,
1759 Item::DarkPrismarineSlab,
1760 Item::PolishedGraniteSlab,
1761 Item::SmoothRedSandstoneSlab,
1762 Item::MossyStoneBrickSlab,
1763 Item::PolishedDioriteSlab,
1764 Item::MossyCobblestoneSlab,
1765 Item::EndStoneBrickSlab,
1766 Item::SmoothSandstoneSlab,
1767 Item::SmoothQuartzSlab,
1768 Item::GraniteSlab,
1769 Item::AndesiteSlab,
1770 Item::RedNetherBrickSlab,
1771 Item::PolishedAndesiteSlab,
1772 Item::DioriteSlab,
1773 Item::CutSandstoneSlab,
1774 Item::CutRedSandstoneSlab,
1775 Item::BlackstoneSlab,
1776 Item::PolishedBlackstoneBrickSlab,
1777 Item::PolishedBlackstoneSlab,
1778 Item::CobbledDeepslateSlab,
1779 Item::PolishedDeepslateSlab,
1780 Item::DeepslateTileSlab,
1781 Item::DeepslateBrickSlab,
1782 Item::WaxedWeatheredCutCopperSlab,
1783 Item::WaxedExposedCutCopperSlab,
1784 Item::WaxedCutCopperSlab,
1785 Item::OxidizedCutCopperSlab,
1786 Item::WeatheredCutCopperSlab,
1787 Item::ExposedCutCopperSlab,
1788 Item::CutCopperSlab,
1789 Item::WaxedOxidizedCutCopperSlab,
1790 Item::MudBrickSlab,
1791 Item::TuffSlab,
1792 Item::PolishedTuffSlab,
1793 Item::TuffBrickSlab,
1794 Item::ResinBrickSlab,
1795 Item::OakSlab,
1796 Item::SpruceSlab,
1797 Item::BirchSlab,
1798 Item::JungleSlab,
1799 Item::AcaciaSlab,
1800 Item::DarkOakSlab,
1801 Item::PaleOakSlab,
1802 Item::CrimsonSlab,
1803 Item::WarpedSlab,
1804 Item::MangroveSlab,
1805 Item::BambooSlab,
1806 Item::CherrySlab,
1807 ])
1808});
1809pub static SMALL_FLOWERS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1810 HashSet::from_iter(vec![
1811 Item::Dandelion,
1812 Item::OpenEyeblossom,
1813 Item::Poppy,
1814 Item::BlueOrchid,
1815 Item::Allium,
1816 Item::AzureBluet,
1817 Item::RedTulip,
1818 Item::OrangeTulip,
1819 Item::WhiteTulip,
1820 Item::PinkTulip,
1821 Item::OxeyeDaisy,
1822 Item::Cornflower,
1823 Item::LilyOfTheValley,
1824 Item::WitherRose,
1825 Item::Torchflower,
1826 Item::ClosedEyeblossom,
1827 ])
1828});
1829pub static SMELTS_TO_GLASS: LazyLock<HashSet<Item>> =
1830 LazyLock::new(|| HashSet::from_iter(vec![Item::Sand, Item::RedSand]));
1831pub static SNIFFER_FOOD: LazyLock<HashSet<Item>> =
1832 LazyLock::new(|| HashSet::from_iter(vec![Item::TorchflowerSeeds]));
1833pub static SOUL_FIRE_BASE_BLOCKS: LazyLock<HashSet<Item>> =
1834 LazyLock::new(|| HashSet::from_iter(vec![Item::SoulSand, Item::SoulSoil]));
1835pub static SPRUCE_LOGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1836 HashSet::from_iter(vec![
1837 Item::SpruceLog,
1838 Item::SpruceWood,
1839 Item::StrippedSpruceLog,
1840 Item::StrippedSpruceWood,
1841 ])
1842});
1843pub static STAIRS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1844 HashSet::from_iter(vec![
1845 Item::BambooMosaicStairs,
1846 Item::CobblestoneStairs,
1847 Item::SandstoneStairs,
1848 Item::NetherBrickStairs,
1849 Item::StoneBrickStairs,
1850 Item::BrickStairs,
1851 Item::PurpurStairs,
1852 Item::QuartzStairs,
1853 Item::RedSandstoneStairs,
1854 Item::PrismarineBrickStairs,
1855 Item::PrismarineStairs,
1856 Item::DarkPrismarineStairs,
1857 Item::PolishedGraniteStairs,
1858 Item::SmoothRedSandstoneStairs,
1859 Item::MossyStoneBrickStairs,
1860 Item::PolishedDioriteStairs,
1861 Item::MossyCobblestoneStairs,
1862 Item::EndStoneBrickStairs,
1863 Item::StoneStairs,
1864 Item::SmoothSandstoneStairs,
1865 Item::SmoothQuartzStairs,
1866 Item::GraniteStairs,
1867 Item::AndesiteStairs,
1868 Item::RedNetherBrickStairs,
1869 Item::PolishedAndesiteStairs,
1870 Item::DioriteStairs,
1871 Item::BlackstoneStairs,
1872 Item::PolishedBlackstoneBrickStairs,
1873 Item::PolishedBlackstoneStairs,
1874 Item::CobbledDeepslateStairs,
1875 Item::PolishedDeepslateStairs,
1876 Item::DeepslateTileStairs,
1877 Item::DeepslateBrickStairs,
1878 Item::OxidizedCutCopperStairs,
1879 Item::WeatheredCutCopperStairs,
1880 Item::ExposedCutCopperStairs,
1881 Item::CutCopperStairs,
1882 Item::WaxedWeatheredCutCopperStairs,
1883 Item::WaxedExposedCutCopperStairs,
1884 Item::WaxedCutCopperStairs,
1885 Item::WaxedOxidizedCutCopperStairs,
1886 Item::MudBrickStairs,
1887 Item::TuffStairs,
1888 Item::PolishedTuffStairs,
1889 Item::TuffBrickStairs,
1890 Item::ResinBrickStairs,
1891 Item::OakStairs,
1892 Item::SpruceStairs,
1893 Item::BirchStairs,
1894 Item::JungleStairs,
1895 Item::AcaciaStairs,
1896 Item::DarkOakStairs,
1897 Item::PaleOakStairs,
1898 Item::CrimsonStairs,
1899 Item::WarpedStairs,
1900 Item::MangroveStairs,
1901 Item::BambooStairs,
1902 Item::CherryStairs,
1903 ])
1904});
1905pub static STONE_BRICKS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1906 HashSet::from_iter(vec![
1907 Item::StoneBricks,
1908 Item::MossyStoneBricks,
1909 Item::CrackedStoneBricks,
1910 Item::ChiseledStoneBricks,
1911 ])
1912});
1913pub static STONE_BUTTONS: LazyLock<HashSet<Item>> =
1914 LazyLock::new(|| HashSet::from_iter(vec![Item::StoneButton, Item::PolishedBlackstoneButton]));
1915pub static STONE_CRAFTING_MATERIALS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1916 HashSet::from_iter(vec![
1917 Item::Cobblestone,
1918 Item::Blackstone,
1919 Item::CobbledDeepslate,
1920 ])
1921});
1922pub static STONE_TOOL_MATERIALS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1923 HashSet::from_iter(vec![
1924 Item::Cobblestone,
1925 Item::Blackstone,
1926 Item::CobbledDeepslate,
1927 ])
1928});
1929pub static STRIDER_FOOD: LazyLock<HashSet<Item>> =
1930 LazyLock::new(|| HashSet::from_iter(vec![Item::WarpedFungus]));
1931pub static STRIDER_TEMPT_ITEMS: LazyLock<HashSet<Item>> =
1932 LazyLock::new(|| HashSet::from_iter(vec![Item::WarpedFungusOnAStick, Item::WarpedFungus]));
1933pub static SWORDS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1934 HashSet::from_iter(vec![
1935 Item::DiamondSword,
1936 Item::StoneSword,
1937 Item::GoldenSword,
1938 Item::NetheriteSword,
1939 Item::WoodenSword,
1940 Item::IronSword,
1941 Item::CopperSword,
1942 ])
1943});
1944pub static TERRACOTTA: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1945 HashSet::from_iter(vec![
1946 Item::Terracotta,
1947 Item::WhiteTerracotta,
1948 Item::OrangeTerracotta,
1949 Item::MagentaTerracotta,
1950 Item::LightBlueTerracotta,
1951 Item::YellowTerracotta,
1952 Item::LimeTerracotta,
1953 Item::PinkTerracotta,
1954 Item::GrayTerracotta,
1955 Item::LightGrayTerracotta,
1956 Item::CyanTerracotta,
1957 Item::PurpleTerracotta,
1958 Item::BlueTerracotta,
1959 Item::BrownTerracotta,
1960 Item::GreenTerracotta,
1961 Item::RedTerracotta,
1962 Item::BlackTerracotta,
1963 ])
1964});
1965pub static TRAPDOORS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1966 HashSet::from_iter(vec![
1967 Item::IronTrapdoor,
1968 Item::CopperTrapdoor,
1969 Item::ExposedCopperTrapdoor,
1970 Item::WeatheredCopperTrapdoor,
1971 Item::OxidizedCopperTrapdoor,
1972 Item::WaxedCopperTrapdoor,
1973 Item::WaxedExposedCopperTrapdoor,
1974 Item::WaxedWeatheredCopperTrapdoor,
1975 Item::WaxedOxidizedCopperTrapdoor,
1976 Item::AcaciaTrapdoor,
1977 Item::BirchTrapdoor,
1978 Item::DarkOakTrapdoor,
1979 Item::PaleOakTrapdoor,
1980 Item::JungleTrapdoor,
1981 Item::OakTrapdoor,
1982 Item::SpruceTrapdoor,
1983 Item::CrimsonTrapdoor,
1984 Item::WarpedTrapdoor,
1985 Item::MangroveTrapdoor,
1986 Item::BambooTrapdoor,
1987 Item::CherryTrapdoor,
1988 ])
1989});
1990pub static TRIM_MATERIALS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
1991 HashSet::from_iter(vec![
1992 Item::AmethystShard,
1993 Item::CopperIngot,
1994 Item::Diamond,
1995 Item::Emerald,
1996 Item::GoldIngot,
1997 Item::IronIngot,
1998 Item::LapisLazuli,
1999 Item::NetheriteIngot,
2000 Item::Quartz,
2001 Item::Redstone,
2002 Item::ResinBrick,
2003 ])
2004});
2005pub static TRIMMABLE_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2006 HashSet::from_iter(vec![
2007 Item::LeatherBoots,
2008 Item::CopperBoots,
2009 Item::ChainmailBoots,
2010 Item::GoldenBoots,
2011 Item::IronBoots,
2012 Item::DiamondBoots,
2013 Item::NetheriteBoots,
2014 Item::LeatherLeggings,
2015 Item::CopperLeggings,
2016 Item::ChainmailLeggings,
2017 Item::GoldenLeggings,
2018 Item::IronLeggings,
2019 Item::DiamondLeggings,
2020 Item::NetheriteLeggings,
2021 Item::LeatherChestplate,
2022 Item::CopperChestplate,
2023 Item::ChainmailChestplate,
2024 Item::GoldenChestplate,
2025 Item::IronChestplate,
2026 Item::DiamondChestplate,
2027 Item::NetheriteChestplate,
2028 Item::LeatherHelmet,
2029 Item::CopperHelmet,
2030 Item::ChainmailHelmet,
2031 Item::GoldenHelmet,
2032 Item::IronHelmet,
2033 Item::DiamondHelmet,
2034 Item::NetheriteHelmet,
2035 Item::TurtleHelmet,
2036 ])
2037});
2038pub static TURTLE_FOOD: LazyLock<HashSet<Item>> =
2039 LazyLock::new(|| HashSet::from_iter(vec![Item::Seagrass]));
2040pub static VILLAGER_PICKS_UP: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2041 HashSet::from_iter(vec![
2042 Item::Bread,
2043 Item::Wheat,
2044 Item::Beetroot,
2045 Item::WheatSeeds,
2046 Item::Potato,
2047 Item::Carrot,
2048 Item::BeetrootSeeds,
2049 Item::TorchflowerSeeds,
2050 Item::PitcherPod,
2051 ])
2052});
2053pub static VILLAGER_PLANTABLE_SEEDS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2054 HashSet::from_iter(vec![
2055 Item::WheatSeeds,
2056 Item::Potato,
2057 Item::Carrot,
2058 Item::BeetrootSeeds,
2059 Item::TorchflowerSeeds,
2060 Item::PitcherPod,
2061 ])
2062});
2063pub static WALLS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2064 HashSet::from_iter(vec![
2065 Item::CobblestoneWall,
2066 Item::MossyCobblestoneWall,
2067 Item::BrickWall,
2068 Item::PrismarineWall,
2069 Item::RedSandstoneWall,
2070 Item::MossyStoneBrickWall,
2071 Item::GraniteWall,
2072 Item::StoneBrickWall,
2073 Item::NetherBrickWall,
2074 Item::AndesiteWall,
2075 Item::RedNetherBrickWall,
2076 Item::SandstoneWall,
2077 Item::EndStoneBrickWall,
2078 Item::DioriteWall,
2079 Item::BlackstoneWall,
2080 Item::PolishedBlackstoneBrickWall,
2081 Item::PolishedBlackstoneWall,
2082 Item::CobbledDeepslateWall,
2083 Item::PolishedDeepslateWall,
2084 Item::DeepslateTileWall,
2085 Item::DeepslateBrickWall,
2086 Item::MudBrickWall,
2087 Item::TuffWall,
2088 Item::PolishedTuffWall,
2089 Item::TuffBrickWall,
2090 Item::ResinBrickWall,
2091 ])
2092});
2093pub static WARPED_STEMS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2094 HashSet::from_iter(vec![
2095 Item::WarpedStem,
2096 Item::StrippedWarpedStem,
2097 Item::WarpedHyphae,
2098 Item::StrippedWarpedHyphae,
2099 ])
2100});
2101pub static WART_BLOCKS: LazyLock<HashSet<Item>> =
2102 LazyLock::new(|| HashSet::from_iter(vec![Item::NetherWartBlock, Item::WarpedWartBlock]));
2103pub static WITHER_SKELETON_DISLIKED_WEAPONS: LazyLock<HashSet<Item>> =
2104 LazyLock::new(|| HashSet::from_iter(vec![Item::Bow, Item::Crossbow]));
2105pub static WOLF_FOOD: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2106 HashSet::from_iter(vec![
2107 Item::Cod,
2108 Item::CookedCod,
2109 Item::Salmon,
2110 Item::CookedSalmon,
2111 Item::TropicalFish,
2112 Item::Pufferfish,
2113 Item::RabbitStew,
2114 Item::Beef,
2115 Item::Chicken,
2116 Item::CookedBeef,
2117 Item::CookedChicken,
2118 Item::CookedMutton,
2119 Item::CookedPorkchop,
2120 Item::CookedRabbit,
2121 Item::Mutton,
2122 Item::Porkchop,
2123 Item::Rabbit,
2124 Item::RottenFlesh,
2125 ])
2126});
2127pub static WOODEN_BUTTONS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2128 HashSet::from_iter(vec![
2129 Item::OakButton,
2130 Item::SpruceButton,
2131 Item::BirchButton,
2132 Item::JungleButton,
2133 Item::AcaciaButton,
2134 Item::DarkOakButton,
2135 Item::PaleOakButton,
2136 Item::CrimsonButton,
2137 Item::WarpedButton,
2138 Item::MangroveButton,
2139 Item::BambooButton,
2140 Item::CherryButton,
2141 ])
2142});
2143pub static WOODEN_DOORS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2144 HashSet::from_iter(vec![
2145 Item::OakDoor,
2146 Item::SpruceDoor,
2147 Item::BirchDoor,
2148 Item::JungleDoor,
2149 Item::AcaciaDoor,
2150 Item::DarkOakDoor,
2151 Item::PaleOakDoor,
2152 Item::CrimsonDoor,
2153 Item::WarpedDoor,
2154 Item::MangroveDoor,
2155 Item::BambooDoor,
2156 Item::CherryDoor,
2157 ])
2158});
2159pub static WOODEN_FENCES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2160 HashSet::from_iter(vec![
2161 Item::OakFence,
2162 Item::AcaciaFence,
2163 Item::DarkOakFence,
2164 Item::PaleOakFence,
2165 Item::SpruceFence,
2166 Item::BirchFence,
2167 Item::JungleFence,
2168 Item::CrimsonFence,
2169 Item::WarpedFence,
2170 Item::MangroveFence,
2171 Item::BambooFence,
2172 Item::CherryFence,
2173 ])
2174});
2175pub static WOODEN_PRESSURE_PLATES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2176 HashSet::from_iter(vec![
2177 Item::OakPressurePlate,
2178 Item::SprucePressurePlate,
2179 Item::BirchPressurePlate,
2180 Item::JunglePressurePlate,
2181 Item::AcaciaPressurePlate,
2182 Item::DarkOakPressurePlate,
2183 Item::PaleOakPressurePlate,
2184 Item::CrimsonPressurePlate,
2185 Item::WarpedPressurePlate,
2186 Item::MangrovePressurePlate,
2187 Item::BambooPressurePlate,
2188 Item::CherryPressurePlate,
2189 ])
2190});
2191pub static WOODEN_SHELVES: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2192 HashSet::from_iter(vec![
2193 Item::AcaciaShelf,
2194 Item::BambooShelf,
2195 Item::BirchShelf,
2196 Item::CherryShelf,
2197 Item::CrimsonShelf,
2198 Item::DarkOakShelf,
2199 Item::JungleShelf,
2200 Item::MangroveShelf,
2201 Item::OakShelf,
2202 Item::PaleOakShelf,
2203 Item::SpruceShelf,
2204 Item::WarpedShelf,
2205 ])
2206});
2207pub static WOODEN_SLABS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2208 HashSet::from_iter(vec![
2209 Item::OakSlab,
2210 Item::SpruceSlab,
2211 Item::BirchSlab,
2212 Item::JungleSlab,
2213 Item::AcaciaSlab,
2214 Item::DarkOakSlab,
2215 Item::PaleOakSlab,
2216 Item::CrimsonSlab,
2217 Item::WarpedSlab,
2218 Item::MangroveSlab,
2219 Item::BambooSlab,
2220 Item::CherrySlab,
2221 ])
2222});
2223pub static WOODEN_STAIRS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2224 HashSet::from_iter(vec![
2225 Item::OakStairs,
2226 Item::SpruceStairs,
2227 Item::BirchStairs,
2228 Item::JungleStairs,
2229 Item::AcaciaStairs,
2230 Item::DarkOakStairs,
2231 Item::PaleOakStairs,
2232 Item::CrimsonStairs,
2233 Item::WarpedStairs,
2234 Item::MangroveStairs,
2235 Item::BambooStairs,
2236 Item::CherryStairs,
2237 ])
2238});
2239pub static WOODEN_TOOL_MATERIALS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2240 HashSet::from_iter(vec![
2241 Item::OakPlanks,
2242 Item::SprucePlanks,
2243 Item::BirchPlanks,
2244 Item::JunglePlanks,
2245 Item::AcaciaPlanks,
2246 Item::DarkOakPlanks,
2247 Item::PaleOakPlanks,
2248 Item::CrimsonPlanks,
2249 Item::WarpedPlanks,
2250 Item::MangrovePlanks,
2251 Item::BambooPlanks,
2252 Item::CherryPlanks,
2253 ])
2254});
2255pub static WOODEN_TRAPDOORS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2256 HashSet::from_iter(vec![
2257 Item::AcaciaTrapdoor,
2258 Item::BirchTrapdoor,
2259 Item::DarkOakTrapdoor,
2260 Item::PaleOakTrapdoor,
2261 Item::JungleTrapdoor,
2262 Item::OakTrapdoor,
2263 Item::SpruceTrapdoor,
2264 Item::CrimsonTrapdoor,
2265 Item::WarpedTrapdoor,
2266 Item::MangroveTrapdoor,
2267 Item::BambooTrapdoor,
2268 Item::CherryTrapdoor,
2269 ])
2270});
2271pub static WOOL: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2272 HashSet::from_iter(vec![
2273 Item::WhiteWool,
2274 Item::OrangeWool,
2275 Item::MagentaWool,
2276 Item::LightBlueWool,
2277 Item::YellowWool,
2278 Item::LimeWool,
2279 Item::PinkWool,
2280 Item::GrayWool,
2281 Item::LightGrayWool,
2282 Item::CyanWool,
2283 Item::PurpleWool,
2284 Item::BlueWool,
2285 Item::BrownWool,
2286 Item::GreenWool,
2287 Item::RedWool,
2288 Item::BlackWool,
2289 ])
2290});
2291pub static WOOL_CARPETS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
2292 HashSet::from_iter(vec![
2293 Item::WhiteCarpet,
2294 Item::OrangeCarpet,
2295 Item::MagentaCarpet,
2296 Item::LightBlueCarpet,
2297 Item::YellowCarpet,
2298 Item::LimeCarpet,
2299 Item::PinkCarpet,
2300 Item::GrayCarpet,
2301 Item::LightGrayCarpet,
2302 Item::CyanCarpet,
2303 Item::PurpleCarpet,
2304 Item::BlueCarpet,
2305 Item::BrownCarpet,
2306 Item::GreenCarpet,
2307 Item::RedCarpet,
2308 Item::BlackCarpet,
2309 ])
2310});