aboutsummaryrefslogtreecommitdiff
path: root/azalea-registry/src
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2023-07-14 22:20:40 -0500
committerGitHub <noreply@github.com>2023-07-14 22:20:40 -0500
commit7405427199e5a994d4a6a706f84434a69cb7a7d9 (patch)
treeca537e5d761bc053187d952fced0915c850b92aa /azalea-registry/src
parentd1afd02aa84e7b4450c1607277f078eb2a0f1bf3 (diff)
downloadazalea-drasl-7405427199e5a994d4a6a706f84434a69cb7a7d9.tar.xz
Mining (#95)
* more mining stuff * initialize azalea-tags crate * more mining stuff 2 * mining in ecs * well technically mining works but no codegen for how long it takes to mine each block yet * rename downloads to __cache__ it was bothering me since it's not *just* downloads * codegen block behavior * fix not sending packet to finish breaking block * mining animation 🎉 * clippy * cleanup, move Client::mine into a client extension * add azalea/src/mining.rs --------- Co-authored-by: mat <git@matdoes.dev>
Diffstat (limited to 'azalea-registry/src')
-rwxr-xr-xazalea-registry/src/lib.rs2
-rw-r--r--azalea-registry/src/tags/blocks.rs3374
-rw-r--r--azalea-registry/src/tags/fluids.rs12
-rw-r--r--azalea-registry/src/tags/items.rs1379
-rw-r--r--azalea-registry/src/tags/mod.rs3
5 files changed, 4770 insertions, 0 deletions
diff --git a/azalea-registry/src/lib.rs b/azalea-registry/src/lib.rs
index 081b3c3e..c1edcd3f 100755
--- a/azalea-registry/src/lib.rs
+++ b/azalea-registry/src/lib.rs
@@ -5,6 +5,8 @@
// auto-generated (so you can add doc comments to the registry enums if you
// want)
+pub mod tags;
+
use std::io::{Cursor, Write};
use azalea_buf::{BufReadError, McBufReadable, McBufVarReadable, McBufVarWritable, McBufWritable};
diff --git a/azalea-registry/src/tags/blocks.rs b/azalea-registry/src/tags/blocks.rs
new file mode 100644
index 00000000..aae39c07
--- /dev/null
+++ b/azalea-registry/src/tags/blocks.rs
@@ -0,0 +1,3374 @@
+// This file was generated by codegen/lib/code/tags.py, don't edit it manually!
+
+use std::collections::HashSet;
+
+use once_cell::sync::Lazy;
+
+use crate::Block;
+
+pub static MINEABLE_SHOVEL: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Clay,
+ Block::Dirt,
+ Block::CoarseDirt,
+ Block::Podzol,
+ Block::Farmland,
+ Block::GrassBlock,
+ Block::Gravel,
+ Block::Mycelium,
+ Block::Sand,
+ Block::RedSand,
+ Block::SnowBlock,
+ Block::Snow,
+ Block::SoulSand,
+ Block::DirtPath,
+ Block::WhiteConcretePowder,
+ Block::OrangeConcretePowder,
+ Block::MagentaConcretePowder,
+ Block::LightBlueConcretePowder,
+ Block::YellowConcretePowder,
+ Block::LimeConcretePowder,
+ Block::PinkConcretePowder,
+ Block::GrayConcretePowder,
+ Block::LightGrayConcretePowder,
+ Block::CyanConcretePowder,
+ Block::PurpleConcretePowder,
+ Block::BlueConcretePowder,
+ Block::BrownConcretePowder,
+ Block::GreenConcretePowder,
+ Block::RedConcretePowder,
+ Block::BlackConcretePowder,
+ Block::SoulSoil,
+ Block::RootedDirt,
+ Block::MuddyMangroveRoots,
+ Block::Mud,
+ Block::SuspiciousSand,
+ Block::SuspiciousGravel,
+ ])
+});
+pub static MINEABLE_AXE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::NoteBlock,
+ Block::AttachedMelonStem,
+ Block::AttachedPumpkinStem,
+ Block::Azalea,
+ Block::Bamboo,
+ Block::Barrel,
+ Block::BeeNest,
+ Block::Beehive,
+ Block::Beetroots,
+ Block::BigDripleafStem,
+ Block::BigDripleaf,
+ Block::Bookshelf,
+ Block::BrownMushroomBlock,
+ Block::BrownMushroom,
+ Block::Campfire,
+ Block::Carrots,
+ Block::CartographyTable,
+ Block::CarvedPumpkin,
+ Block::CaveVinesPlant,
+ Block::CaveVines,
+ Block::Chest,
+ Block::ChorusFlower,
+ Block::ChorusPlant,
+ Block::Cocoa,
+ Block::Composter,
+ Block::CraftingTable,
+ Block::CrimsonFungus,
+ Block::DaylightDetector,
+ Block::DeadBush,
+ Block::Fern,
+ Block::FletchingTable,
+ Block::GlowLichen,
+ Block::Grass,
+ Block::HangingRoots,
+ Block::JackOLantern,
+ Block::Jukebox,
+ Block::Ladder,
+ Block::LargeFern,
+ Block::Lectern,
+ Block::LilyPad,
+ Block::Loom,
+ Block::MelonStem,
+ Block::Melon,
+ Block::MushroomStem,
+ Block::NetherWart,
+ Block::Potatoes,
+ Block::PumpkinStem,
+ Block::Pumpkin,
+ Block::RedMushroomBlock,
+ Block::RedMushroom,
+ Block::Scaffolding,
+ Block::SmallDripleaf,
+ Block::SmithingTable,
+ Block::SoulCampfire,
+ Block::SporeBlossom,
+ Block::SugarCane,
+ Block::SweetBerryBush,
+ Block::TallGrass,
+ Block::TrappedChest,
+ Block::TwistingVinesPlant,
+ Block::TwistingVines,
+ Block::Vine,
+ Block::WarpedFungus,
+ Block::WeepingVinesPlant,
+ Block::WeepingVines,
+ Block::Wheat,
+ Block::MangroveRoots,
+ Block::BambooMosaic,
+ Block::BambooMosaicSlab,
+ Block::BambooMosaicStairs,
+ Block::ChiseledBookshelf,
+ Block::WhiteBanner,
+ Block::OrangeBanner,
+ Block::MagentaBanner,
+ Block::LightBlueBanner,
+ Block::YellowBanner,
+ Block::LimeBanner,
+ Block::PinkBanner,
+ Block::GrayBanner,
+ Block::LightGrayBanner,
+ Block::CyanBanner,
+ Block::PurpleBanner,
+ Block::BlueBanner,
+ Block::BrownBanner,
+ Block::GreenBanner,
+ Block::RedBanner,
+ Block::BlackBanner,
+ Block::WhiteWallBanner,
+ Block::OrangeWallBanner,
+ Block::MagentaWallBanner,
+ Block::LightBlueWallBanner,
+ Block::YellowWallBanner,
+ Block::LimeWallBanner,
+ Block::PinkWallBanner,
+ Block::GrayWallBanner,
+ Block::LightGrayWallBanner,
+ Block::CyanWallBanner,
+ Block::PurpleWallBanner,
+ Block::BlueWallBanner,
+ Block::BrownWallBanner,
+ Block::GreenWallBanner,
+ Block::RedWallBanner,
+ Block::BlackWallBanner,
+ Block::AcaciaFenceGate,
+ Block::BirchFenceGate,
+ Block::DarkOakFenceGate,
+ Block::JungleFenceGate,
+ Block::OakFenceGate,
+ Block::SpruceFenceGate,
+ Block::CrimsonFenceGate,
+ Block::WarpedFenceGate,
+ Block::MangroveFenceGate,
+ Block::BambooFenceGate,
+ Block::CherryFenceGate,
+ Block::OakPlanks,
+ Block::SprucePlanks,
+ Block::BirchPlanks,
+ Block::JunglePlanks,
+ Block::AcaciaPlanks,
+ Block::DarkOakPlanks,
+ Block::CrimsonPlanks,
+ Block::WarpedPlanks,
+ Block::MangrovePlanks,
+ Block::BambooPlanks,
+ Block::CherryPlanks,
+ Block::OakSapling,
+ Block::SpruceSapling,
+ Block::BirchSapling,
+ Block::JungleSapling,
+ Block::AcaciaSapling,
+ Block::DarkOakSapling,
+ Block::Azalea,
+ Block::FloweringAzalea,
+ Block::MangrovePropagule,
+ Block::CherrySapling,
+ Block::OakButton,
+ Block::SpruceButton,
+ Block::BirchButton,
+ Block::JungleButton,
+ Block::AcaciaButton,
+ Block::DarkOakButton,
+ Block::CrimsonButton,
+ Block::WarpedButton,
+ Block::MangroveButton,
+ Block::BambooButton,
+ Block::CherryButton,
+ Block::OakDoor,
+ Block::SpruceDoor,
+ Block::BirchDoor,
+ Block::JungleDoor,
+ Block::AcaciaDoor,
+ Block::DarkOakDoor,
+ Block::CrimsonDoor,
+ Block::WarpedDoor,
+ Block::MangroveDoor,
+ Block::BambooDoor,
+ Block::CherryDoor,
+ Block::OakFence,
+ Block::AcaciaFence,
+ Block::DarkOakFence,
+ Block::SpruceFence,
+ Block::BirchFence,
+ Block::JungleFence,
+ Block::CrimsonFence,
+ Block::WarpedFence,
+ Block::MangroveFence,
+ Block::BambooFence,
+ Block::CherryFence,
+ Block::OakPressurePlate,
+ Block::SprucePressurePlate,
+ Block::BirchPressurePlate,
+ Block::JunglePressurePlate,
+ Block::AcaciaPressurePlate,
+ Block::DarkOakPressurePlate,
+ Block::CrimsonPressurePlate,
+ Block::WarpedPressurePlate,
+ Block::MangrovePressurePlate,
+ Block::BambooPressurePlate,
+ Block::CherryPressurePlate,
+ Block::OakSlab,
+ Block::SpruceSlab,
+ Block::BirchSlab,
+ Block::JungleSlab,
+ Block::AcaciaSlab,
+ Block::DarkOakSlab,
+ Block::CrimsonSlab,
+ Block::WarpedSlab,
+ Block::MangroveSlab,
+ Block::BambooSlab,
+ Block::CherrySlab,
+ Block::OakStairs,
+ Block::SpruceStairs,
+ Block::BirchStairs,
+ Block::JungleStairs,
+ Block::AcaciaStairs,
+ Block::DarkOakStairs,
+ Block::CrimsonStairs,
+ Block::WarpedStairs,
+ Block::MangroveStairs,
+ Block::BambooStairs,
+ Block::CherryStairs,
+ Block::AcaciaTrapdoor,
+ Block::BirchTrapdoor,
+ Block::DarkOakTrapdoor,
+ Block::JungleTrapdoor,
+ Block::OakTrapdoor,
+ Block::SpruceTrapdoor,
+ Block::CrimsonTrapdoor,
+ Block::WarpedTrapdoor,
+ Block::MangroveTrapdoor,
+ Block::BambooTrapdoor,
+ Block::CherryTrapdoor,
+ Block::BambooBlock,
+ Block::StrippedBambooBlock,
+ Block::CrimsonStem,
+ Block::StrippedCrimsonStem,
+ Block::CrimsonHyphae,
+ Block::StrippedCrimsonHyphae,
+ Block::WarpedStem,
+ Block::StrippedWarpedStem,
+ Block::WarpedHyphae,
+ Block::StrippedWarpedHyphae,
+ Block::OakSign,
+ Block::SpruceSign,
+ Block::BirchSign,
+ Block::AcaciaSign,
+ Block::JungleSign,
+ Block::DarkOakSign,
+ Block::CrimsonSign,
+ Block::WarpedSign,
+ Block::MangroveSign,
+ Block::BambooSign,
+ Block::CherrySign,
+ Block::OakWallSign,
+ Block::SpruceWallSign,
+ Block::BirchWallSign,
+ Block::AcaciaWallSign,
+ Block::JungleWallSign,
+ Block::DarkOakWallSign,
+ Block::CrimsonWallSign,
+ Block::WarpedWallSign,
+ Block::MangroveWallSign,
+ Block::BambooWallSign,
+ Block::CherryWallSign,
+ Block::OakHangingSign,
+ Block::SpruceHangingSign,
+ Block::BirchHangingSign,
+ Block::AcaciaHangingSign,
+ Block::CherryHangingSign,
+ Block::JungleHangingSign,
+ Block::DarkOakHangingSign,
+ Block::CrimsonHangingSign,
+ Block::WarpedHangingSign,
+ Block::MangroveHangingSign,
+ Block::BambooHangingSign,
+ Block::OakWallHangingSign,
+ Block::SpruceWallHangingSign,
+ Block::BirchWallHangingSign,
+ Block::AcaciaWallHangingSign,
+ Block::CherryWallHangingSign,
+ Block::JungleWallHangingSign,
+ Block::DarkOakWallHangingSign,
+ Block::CrimsonWallHangingSign,
+ Block::WarpedWallHangingSign,
+ Block::MangroveWallHangingSign,
+ Block::BambooWallHangingSign,
+ Block::DarkOakLog,
+ Block::DarkOakWood,
+ Block::StrippedDarkOakLog,
+ Block::StrippedDarkOakWood,
+ Block::OakLog,
+ Block::OakWood,
+ Block::StrippedOakLog,
+ Block::StrippedOakWood,
+ Block::AcaciaLog,
+ Block::AcaciaWood,
+ Block::StrippedAcaciaLog,
+ Block::StrippedAcaciaWood,
+ Block::BirchLog,
+ Block::BirchWood,
+ Block::StrippedBirchLog,
+ Block::StrippedBirchWood,
+ Block::JungleLog,
+ Block::JungleWood,
+ Block::StrippedJungleLog,
+ Block::StrippedJungleWood,
+ Block::SpruceLog,
+ Block::SpruceWood,
+ Block::StrippedSpruceLog,
+ Block::StrippedSpruceWood,
+ Block::MangroveLog,
+ Block::MangroveWood,
+ Block::StrippedMangroveLog,
+ Block::StrippedMangroveWood,
+ Block::CherryLog,
+ Block::CherryWood,
+ Block::StrippedCherryLog,
+ Block::StrippedCherryWood,
+ ])
+});
+pub static MINEABLE_HOE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::NetherWartBlock,
+ Block::WarpedWartBlock,
+ Block::HayBlock,
+ Block::DriedKelpBlock,
+ Block::Target,
+ Block::Shroomlight,
+ Block::Sponge,
+ Block::WetSponge,
+ Block::JungleLeaves,
+ Block::OakLeaves,
+ Block::SpruceLeaves,
+ Block::DarkOakLeaves,
+ Block::AcaciaLeaves,
+ Block::BirchLeaves,
+ Block::AzaleaLeaves,
+ Block::FloweringAzaleaLeaves,
+ Block::MangroveLeaves,
+ Block::SculkSensor,
+ Block::CalibratedSculkSensor,
+ Block::MossBlock,
+ Block::MossCarpet,
+ Block::Sculk,
+ Block::SculkCatalyst,
+ Block::SculkVein,
+ Block::SculkShrieker,
+ Block::PinkPetals,
+ Block::CherryLeaves,
+ ])
+});
+pub static MINEABLE_PICKAXE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Stone,
+ Block::Granite,
+ Block::PolishedGranite,
+ Block::Diorite,
+ Block::PolishedDiorite,
+ Block::Andesite,
+ Block::PolishedAndesite,
+ Block::Cobblestone,
+ Block::GoldOre,
+ Block::DeepslateGoldOre,
+ Block::IronOre,
+ Block::DeepslateIronOre,
+ Block::CoalOre,
+ Block::DeepslateCoalOre,
+ Block::NetherGoldOre,
+ Block::LapisOre,
+ Block::DeepslateLapisOre,
+ Block::LapisBlock,
+ Block::Dispenser,
+ Block::Sandstone,
+ Block::ChiseledSandstone,
+ Block::CutSandstone,
+ Block::GoldBlock,
+ Block::IronBlock,
+ Block::Bricks,
+ Block::MossyCobblestone,
+ Block::Obsidian,
+ Block::Spawner,
+ Block::DiamondOre,
+ Block::DeepslateDiamondOre,
+ Block::DiamondBlock,
+ Block::Furnace,
+ Block::CobblestoneStairs,
+ Block::StonePressurePlate,
+ Block::IronDoor,
+ Block::RedstoneOre,
+ Block::DeepslateRedstoneOre,
+ Block::Netherrack,
+ Block::Basalt,
+ Block::PolishedBasalt,
+ Block::StoneBricks,
+ Block::MossyStoneBricks,
+ Block::CrackedStoneBricks,
+ Block::ChiseledStoneBricks,
+ Block::IronBars,
+ Block::Chain,
+ Block::BrickStairs,
+ Block::StoneBrickStairs,
+ Block::NetherBricks,
+ Block::NetherBrickFence,
+ Block::NetherBrickStairs,
+ Block::EnchantingTable,
+ Block::BrewingStand,
+ Block::EndStone,
+ Block::SandstoneStairs,
+ Block::EmeraldOre,
+ Block::DeepslateEmeraldOre,
+ Block::EnderChest,
+ Block::EmeraldBlock,
+ Block::LightWeightedPressurePlate,
+ Block::HeavyWeightedPressurePlate,
+ Block::RedstoneBlock,
+ Block::NetherQuartzOre,
+ Block::Hopper,
+ Block::QuartzBlock,
+ Block::ChiseledQuartzBlock,
+ Block::QuartzPillar,
+ Block::QuartzStairs,
+ Block::Dropper,
+ Block::WhiteTerracotta,
+ Block::OrangeTerracotta,
+ Block::MagentaTerracotta,
+ Block::LightBlueTerracotta,
+ Block::YellowTerracotta,
+ Block::LimeTerracotta,
+ Block::PinkTerracotta,
+ Block::GrayTerracotta,
+ Block::LightGrayTerracotta,
+ Block::CyanTerracotta,
+ Block::PurpleTerracotta,
+ Block::BlueTerracotta,
+ Block::BrownTerracotta,
+ Block::GreenTerracotta,
+ Block::RedTerracotta,
+ Block::BlackTerracotta,
+ Block::IronTrapdoor,
+ Block::Prismarine,
+ Block::PrismarineBricks,
+ Block::DarkPrismarine,
+ Block::PrismarineStairs,
+ Block::PrismarineBrickStairs,
+ Block::DarkPrismarineStairs,
+ Block::PrismarineSlab,
+ Block::PrismarineBrickSlab,
+ Block::DarkPrismarineSlab,
+ Block::Terracotta,
+ Block::CoalBlock,
+ Block::RedSandstone,
+ Block::ChiseledRedSandstone,
+ Block::CutRedSandstone,
+ Block::RedSandstoneStairs,
+ Block::StoneSlab,
+ Block::SmoothStoneSlab,
+ Block::SandstoneSlab,
+ Block::CutSandstoneSlab,
+ Block::PetrifiedOakSlab,
+ Block::CobblestoneSlab,
+ Block::BrickSlab,
+ Block::StoneBrickSlab,
+ Block::NetherBrickSlab,
+ Block::QuartzSlab,
+ Block::RedSandstoneSlab,
+ Block::CutRedSandstoneSlab,
+ Block::PurpurSlab,
+ Block::SmoothStone,
+ Block::SmoothSandstone,
+ Block::SmoothQuartz,
+ Block::SmoothRedSandstone,
+ Block::PurpurBlock,
+ Block::PurpurPillar,
+ Block::PurpurStairs,
+ Block::EndStoneBricks,
+ Block::MagmaBlock,
+ Block::RedNetherBricks,
+ Block::BoneBlock,
+ Block::Observer,
+ Block::WhiteGlazedTerracotta,
+ Block::OrangeGlazedTerracotta,
+ Block::MagentaGlazedTerracotta,
+ Block::LightBlueGlazedTerracotta,
+ Block::YellowGlazedTerracotta,
+ Block::LimeGlazedTerracotta,
+ Block::PinkGlazedTerracotta,
+ Block::GrayGlazedTerracotta,
+ Block::LightGrayGlazedTerracotta,
+ Block::CyanGlazedTerracotta,
+ Block::PurpleGlazedTerracotta,
+ Block::BlueGlazedTerracotta,
+ Block::BrownGlazedTerracotta,
+ Block::GreenGlazedTerracotta,
+ Block::RedGlazedTerracotta,
+ Block::BlackGlazedTerracotta,
+ Block::WhiteConcrete,
+ Block::OrangeConcrete,
+ Block::MagentaConcrete,
+ Block::LightBlueConcrete,
+ Block::YellowConcrete,
+ Block::LimeConcrete,
+ Block::PinkConcrete,
+ Block::GrayConcrete,
+ Block::LightGrayConcrete,
+ Block::CyanConcrete,
+ Block::PurpleConcrete,
+ Block::BlueConcrete,
+ Block::BrownConcrete,
+ Block::GreenConcrete,
+ Block::RedConcrete,
+ Block::BlackConcrete,
+ Block::DeadTubeCoralBlock,
+ Block::DeadBrainCoralBlock,
+ Block::DeadBubbleCoralBlock,
+ Block::DeadFireCoralBlock,
+ Block::DeadHornCoralBlock,
+ Block::TubeCoralBlock,
+ Block::BrainCoralBlock,
+ Block::BubbleCoralBlock,
+ Block::FireCoralBlock,
+ Block::HornCoralBlock,
+ Block::DeadTubeCoral,
+ Block::DeadBrainCoral,
+ Block::DeadBubbleCoral,
+ Block::DeadFireCoral,
+ Block::DeadHornCoral,
+ Block::DeadTubeCoralFan,
+ Block::DeadBrainCoralFan,
+ Block::DeadBubbleCoralFan,
+ Block::DeadFireCoralFan,
+ Block::DeadHornCoralFan,
+ Block::DeadTubeCoralWallFan,
+ Block::DeadBrainCoralWallFan,
+ Block::DeadBubbleCoralWallFan,
+ Block::DeadFireCoralWallFan,
+ Block::DeadHornCoralWallFan,
+ Block::PolishedGraniteStairs,
+ Block::SmoothRedSandstoneStairs,
+ Block::MossyStoneBrickStairs,
+ Block::PolishedDioriteStairs,
+ Block::MossyCobblestoneStairs,
+ Block::EndStoneBrickStairs,
+ Block::StoneStairs,
+ Block::SmoothSandstoneStairs,
+ Block::SmoothQuartzStairs,
+ Block::GraniteStairs,
+ Block::AndesiteStairs,
+ Block::RedNetherBrickStairs,
+ Block::PolishedAndesiteStairs,
+ Block::DioriteStairs,
+ Block::PolishedGraniteSlab,
+ Block::SmoothRedSandstoneSlab,
+ Block::MossyStoneBrickSlab,
+ Block::PolishedDioriteSlab,
+ Block::MossyCobblestoneSlab,
+ Block::EndStoneBrickSlab,
+ Block::SmoothSandstoneSlab,
+ Block::SmoothQuartzSlab,
+ Block::GraniteSlab,
+ Block::AndesiteSlab,
+ Block::RedNetherBrickSlab,
+ Block::PolishedAndesiteSlab,
+ Block::DioriteSlab,
+ Block::Smoker,
+ Block::BlastFurnace,
+ Block::Grindstone,
+ Block::Stonecutter,
+ Block::Bell,
+ Block::Lantern,
+ Block::SoulLantern,
+ Block::WarpedNylium,
+ Block::CrimsonNylium,
+ Block::NetheriteBlock,
+ Block::AncientDebris,
+ Block::CryingObsidian,
+ Block::RespawnAnchor,
+ Block::Lodestone,
+ Block::Blackstone,
+ Block::BlackstoneStairs,
+ Block::BlackstoneSlab,
+ Block::PolishedBlackstone,
+ Block::PolishedBlackstoneBricks,
+ Block::CrackedPolishedBlackstoneBricks,
+ Block::ChiseledPolishedBlackstone,
+ Block::PolishedBlackstoneBrickSlab,
+ Block::PolishedBlackstoneBrickStairs,
+ Block::GildedBlackstone,
+ Block::PolishedBlackstoneStairs,
+ Block::PolishedBlackstoneSlab,
+ Block::PolishedBlackstonePressurePlate,
+ Block::ChiseledNetherBricks,
+ Block::CrackedNetherBricks,
+ Block::QuartzBricks,
+ Block::Tuff,
+ Block::Calcite,
+ Block::OxidizedCopper,
+ Block::WeatheredCopper,
+ Block::ExposedCopper,
+ Block::CopperBlock,
+ Block::CopperOre,
+ Block::DeepslateCopperOre,
+ Block::OxidizedCutCopper,
+ Block::WeatheredCutCopper,
+ Block::ExposedCutCopper,
+ Block::CutCopper,
+ Block::OxidizedCutCopperStairs,
+ Block::WeatheredCutCopperStairs,
+ Block::ExposedCutCopperStairs,
+ Block::CutCopperStairs,
+ Block::OxidizedCutCopperSlab,
+ Block::WeatheredCutCopperSlab,
+ Block::ExposedCutCopperSlab,
+ Block::CutCopperSlab,
+ Block::WaxedCopperBlock,
+ Block::WaxedWeatheredCopper,
+ Block::WaxedExposedCopper,
+ Block::WaxedOxidizedCopper,
+ Block::WaxedOxidizedCutCopper,
+ Block::WaxedWeatheredCutCopper,
+ Block::WaxedExposedCutCopper,
+ Block::WaxedCutCopper,
+ Block::WaxedOxidizedCutCopperStairs,
+ Block::WaxedWeatheredCutCopperStairs,
+ Block::WaxedExposedCutCopperStairs,
+ Block::WaxedCutCopperStairs,
+ Block::WaxedOxidizedCutCopperSlab,
+ Block::WaxedWeatheredCutCopperSlab,
+ Block::WaxedExposedCutCopperSlab,
+ Block::WaxedCutCopperSlab,
+ Block::LightningRod,
+ Block::PointedDripstone,
+ Block::DripstoneBlock,
+ Block::Deepslate,
+ Block::CobbledDeepslate,
+ Block::CobbledDeepslateStairs,
+ Block::CobbledDeepslateSlab,
+ Block::PolishedDeepslate,
+ Block::PolishedDeepslateStairs,
+ Block::PolishedDeepslateSlab,
+ Block::DeepslateTiles,
+ Block::DeepslateTileStairs,
+ Block::DeepslateTileSlab,
+ Block::DeepslateBricks,
+ Block::DeepslateBrickStairs,
+ Block::DeepslateBrickSlab,
+ Block::ChiseledDeepslate,
+ Block::CrackedDeepslateBricks,
+ Block::CrackedDeepslateTiles,
+ Block::SmoothBasalt,
+ Block::RawIronBlock,
+ Block::RawCopperBlock,
+ Block::RawGoldBlock,
+ Block::Ice,
+ Block::PackedIce,
+ Block::BlueIce,
+ Block::Piston,
+ Block::StickyPiston,
+ Block::PistonHead,
+ Block::AmethystCluster,
+ Block::SmallAmethystBud,
+ Block::MediumAmethystBud,
+ Block::LargeAmethystBud,
+ Block::AmethystBlock,
+ Block::BuddingAmethyst,
+ Block::InfestedCobblestone,
+ Block::InfestedChiseledStoneBricks,
+ Block::InfestedCrackedStoneBricks,
+ Block::InfestedDeepslate,
+ Block::InfestedStone,
+ Block::InfestedMossyStoneBricks,
+ Block::InfestedStoneBricks,
+ Block::Conduit,
+ Block::MudBricks,
+ Block::MudBrickStairs,
+ Block::MudBrickSlab,
+ Block::PackedMud,
+ Block::StoneButton,
+ Block::PolishedBlackstoneButton,
+ Block::CobblestoneWall,
+ Block::MossyCobblestoneWall,
+ Block::BrickWall,
+ Block::PrismarineWall,
+ Block::RedSandstoneWall,
+ Block::MossyStoneBrickWall,
+ Block::GraniteWall,
+ Block::StoneBrickWall,
+ Block::NetherBrickWall,
+ Block::AndesiteWall,
+ Block::RedNetherBrickWall,
+ Block::SandstoneWall,
+ Block::EndStoneBrickWall,
+ Block::DioriteWall,
+ Block::BlackstoneWall,
+ Block::PolishedBlackstoneBrickWall,
+ Block::PolishedBlackstoneWall,
+ Block::CobbledDeepslateWall,
+ Block::PolishedDeepslateWall,
+ Block::DeepslateTileWall,
+ Block::DeepslateBrickWall,
+ Block::MudBrickWall,
+ Block::ShulkerBox,
+ Block::BlackShulkerBox,
+ Block::BlueShulkerBox,
+ Block::BrownShulkerBox,
+ Block::CyanShulkerBox,
+ Block::GrayShulkerBox,
+ Block::GreenShulkerBox,
+ Block::LightBlueShulkerBox,
+ Block::LightGrayShulkerBox,
+ Block::LimeShulkerBox,
+ Block::MagentaShulkerBox,
+ Block::OrangeShulkerBox,
+ Block::PinkShulkerBox,
+ Block::PurpleShulkerBox,
+ Block::RedShulkerBox,
+ Block::WhiteShulkerBox,
+ Block::YellowShulkerBox,
+ Block::Anvil,
+ Block::ChippedAnvil,
+ Block::DamagedAnvil,
+ Block::Cauldron,
+ Block::WaterCauldron,
+ Block::LavaCauldron,
+ Block::PowderSnowCauldron,
+ Block::Rail,
+ Block::PoweredRail,
+ Block::DetectorRail,
+ Block::ActivatorRail,
+ ])
+});
+pub static WOODEN_FENCES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakFence,
+ Block::AcaciaFence,
+ Block::DarkOakFence,
+ Block::SpruceFence,
+ Block::BirchFence,
+ Block::JungleFence,
+ Block::CrimsonFence,
+ Block::WarpedFence,
+ Block::MangroveFence,
+ Block::BambooFence,
+ Block::CherryFence,
+ ])
+});
+pub static UNDERWATER_BONEMEALS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Seagrass,
+ Block::TubeCoralFan,
+ Block::BrainCoralFan,
+ Block::BubbleCoralFan,
+ Block::FireCoralFan,
+ Block::HornCoralFan,
+ Block::TubeCoralWallFan,
+ Block::BrainCoralWallFan,
+ Block::BubbleCoralWallFan,
+ Block::FireCoralWallFan,
+ Block::HornCoralWallFan,
+ Block::TubeCoral,
+ Block::BrainCoral,
+ Block::BubbleCoral,
+ Block::FireCoral,
+ Block::HornCoral,
+ ])
+});
+pub static INSIDE_STEP_SOUND_BLOCKS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::PowderSnow,
+ Block::SculkVein,
+ Block::GlowLichen,
+ Block::LilyPad,
+ Block::SmallAmethystBud,
+ Block::PinkPetals,
+ ])
+});
+pub static ACACIA_LOGS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::AcaciaLog,
+ Block::AcaciaWood,
+ Block::StrippedAcaciaLog,
+ Block::StrippedAcaciaWood,
+ ])
+});
+pub static SMALL_DRIPLEAF_PLACEABLE: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Clay, Block::MossBlock]));
+pub static WALL_CORALS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::TubeCoralWallFan,
+ Block::BrainCoralWallFan,
+ Block::BubbleCoralWallFan,
+ Block::FireCoralWallFan,
+ Block::HornCoralWallFan,
+ ])
+});
+pub static BAMBOO_PLANTABLE_ON: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Bamboo,
+ Block::BambooSapling,
+ Block::Gravel,
+ Block::SuspiciousGravel,
+ Block::Sand,
+ Block::RedSand,
+ Block::SuspiciousSand,
+ Block::SuspiciousSand,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ ])
+});
+pub static SWORD_EFFICIENT: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Grass,
+ Block::Fern,
+ Block::DeadBush,
+ Block::Vine,
+ Block::GlowLichen,
+ Block::Sunflower,
+ Block::Lilac,
+ Block::RoseBush,
+ Block::Peony,
+ Block::TallGrass,
+ Block::LargeFern,
+ Block::HangingRoots,
+ Block::PitcherPlant,
+ Block::BrownMushroom,
+ Block::RedMushroom,
+ Block::SugarCane,
+ Block::Pumpkin,
+ Block::CarvedPumpkin,
+ Block::JackOLantern,
+ Block::Melon,
+ Block::AttachedPumpkinStem,
+ Block::AttachedMelonStem,
+ Block::LilyPad,
+ Block::Cocoa,
+ Block::PitcherCrop,
+ Block::SweetBerryBush,
+ Block::CaveVines,
+ Block::CaveVinesPlant,
+ Block::SporeBlossom,
+ Block::MossCarpet,
+ Block::PinkPetals,
+ Block::BigDripleaf,
+ Block::BigDripleafStem,
+ Block::SmallDripleaf,
+ Block::NetherWart,
+ Block::WarpedFungus,
+ Block::WarpedRoots,
+ Block::NetherSprouts,
+ Block::CrimsonFungus,
+ Block::WeepingVines,
+ Block::WeepingVinesPlant,
+ Block::TwistingVines,
+ Block::TwistingVinesPlant,
+ Block::CrimsonRoots,
+ Block::ChorusPlant,
+ Block::ChorusFlower,
+ Block::JungleLeaves,
+ Block::OakLeaves,
+ Block::SpruceLeaves,
+ Block::DarkOakLeaves,
+ Block::AcaciaLeaves,
+ Block::BirchLeaves,
+ Block::AzaleaLeaves,
+ Block::FloweringAzaleaLeaves,
+ Block::MangroveLeaves,
+ Block::CherryLeaves,
+ Block::OakSapling,
+ Block::SpruceSapling,
+ Block::BirchSapling,
+ Block::JungleSapling,
+ Block::AcaciaSapling,
+ Block::DarkOakSapling,
+ Block::Azalea,
+ Block::FloweringAzalea,
+ Block::MangrovePropagule,
+ Block::CherrySapling,
+ Block::Dandelion,
+ Block::Poppy,
+ Block::BlueOrchid,
+ Block::Allium,
+ Block::AzureBluet,
+ Block::RedTulip,
+ Block::OrangeTulip,
+ Block::WhiteTulip,
+ Block::PinkTulip,
+ Block::OxeyeDaisy,
+ Block::Cornflower,
+ Block::LilyOfTheValley,
+ Block::WitherRose,
+ Block::Torchflower,
+ Block::Beetroots,
+ Block::Carrots,
+ Block::Potatoes,
+ Block::Wheat,
+ Block::MelonStem,
+ Block::PumpkinStem,
+ Block::TorchflowerCrop,
+ Block::PitcherCrop,
+ ])
+});
+pub static SNOW_LAYER_CANNOT_SURVIVE_ON: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Ice, Block::PackedIce, Block::Barrier]));
+pub static MUSHROOM_GROW_BLOCK: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Mycelium,
+ Block::Podzol,
+ Block::CrimsonNylium,
+ Block::WarpedNylium,
+ ])
+});
+pub static DEAD_BUSH_MAY_PLACE_ON: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Sand,
+ Block::RedSand,
+ Block::SuspiciousSand,
+ Block::SuspiciousSand,
+ Block::Terracotta,
+ Block::WhiteTerracotta,
+ Block::OrangeTerracotta,
+ Block::MagentaTerracotta,
+ Block::LightBlueTerracotta,
+ Block::YellowTerracotta,
+ Block::LimeTerracotta,
+ Block::PinkTerracotta,
+ Block::GrayTerracotta,
+ Block::LightGrayTerracotta,
+ Block::CyanTerracotta,
+ Block::PurpleTerracotta,
+ Block::BlueTerracotta,
+ Block::BrownTerracotta,
+ Block::GreenTerracotta,
+ Block::RedTerracotta,
+ Block::BlackTerracotta,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ ])
+});
+pub static WOLVES_SPAWNABLE_ON: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::GrassBlock, Block::Snow, Block::SnowBlock]));
+pub static LUSH_GROUND_REPLACEABLE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Clay,
+ Block::Gravel,
+ Block::Sand,
+ Block::Stone,
+ Block::Granite,
+ Block::Diorite,
+ Block::Andesite,
+ Block::Tuff,
+ Block::Deepslate,
+ Block::CaveVinesPlant,
+ Block::CaveVines,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ ])
+});
+pub static PARROTS_SPAWNABLE_ON: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::GrassBlock,
+ Block::Air,
+ Block::JungleLeaves,
+ Block::OakLeaves,
+ Block::SpruceLeaves,
+ Block::DarkOakLeaves,
+ Block::AcaciaLeaves,
+ Block::BirchLeaves,
+ Block::AzaleaLeaves,
+ Block::FloweringAzaleaLeaves,
+ Block::MangroveLeaves,
+ Block::CherryLeaves,
+ Block::CrimsonStem,
+ Block::StrippedCrimsonStem,
+ Block::CrimsonHyphae,
+ Block::StrippedCrimsonHyphae,
+ Block::WarpedStem,
+ Block::StrippedWarpedStem,
+ Block::WarpedHyphae,
+ Block::StrippedWarpedHyphae,
+ Block::DarkOakLog,
+ Block::DarkOakWood,
+ Block::StrippedDarkOakLog,
+ Block::StrippedDarkOakWood,
+ Block::OakLog,
+ Block::OakWood,
+ Block::StrippedOakLog,
+ Block::StrippedOakWood,
+ Block::AcaciaLog,
+ Block::AcaciaWood,
+ Block::StrippedAcaciaLog,
+ Block::StrippedAcaciaWood,
+ Block::BirchLog,
+ Block::BirchWood,
+ Block::StrippedBirchLog,
+ Block::StrippedBirchWood,
+ Block::JungleLog,
+ Block::JungleWood,
+ Block::StrippedJungleLog,
+ Block::StrippedJungleWood,
+ Block::SpruceLog,
+ Block::SpruceWood,
+ Block::StrippedSpruceLog,
+ Block::StrippedSpruceWood,
+ Block::MangroveLog,
+ Block::MangroveWood,
+ Block::StrippedMangroveLog,
+ Block::StrippedMangroveWood,
+ Block::CherryLog,
+ Block::CherryWood,
+ Block::StrippedCherryLog,
+ Block::StrippedCherryWood,
+ ])
+});
+pub static WOODEN_SLABS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakSlab,
+ Block::SpruceSlab,
+ Block::BirchSlab,
+ Block::JungleSlab,
+ Block::AcaciaSlab,
+ Block::DarkOakSlab,
+ Block::CrimsonSlab,
+ Block::WarpedSlab,
+ Block::MangroveSlab,
+ Block::BambooSlab,
+ Block::CherrySlab,
+ ])
+});
+pub static WOODEN_STAIRS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakStairs,
+ Block::SpruceStairs,
+ Block::BirchStairs,
+ Block::JungleStairs,
+ Block::AcaciaStairs,
+ Block::DarkOakStairs,
+ Block::CrimsonStairs,
+ Block::WarpedStairs,
+ Block::MangroveStairs,
+ Block::BambooStairs,
+ Block::CherryStairs,
+ ])
+});
+pub static WALL_SIGNS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakWallSign,
+ Block::SpruceWallSign,
+ Block::BirchWallSign,
+ Block::AcaciaWallSign,
+ Block::JungleWallSign,
+ Block::DarkOakWallSign,
+ Block::CrimsonWallSign,
+ Block::WarpedWallSign,
+ Block::MangroveWallSign,
+ Block::BambooWallSign,
+ Block::CherryWallSign,
+ ])
+});
+pub static MANGROVE_LOGS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::MangroveLog,
+ Block::MangroveWood,
+ Block::StrippedMangroveLog,
+ Block::StrippedMangroveWood,
+ ])
+});
+pub static WITHER_IMMUNE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Barrier,
+ Block::Bedrock,
+ Block::EndPortal,
+ Block::EndPortalFrame,
+ Block::EndGateway,
+ Block::CommandBlock,
+ Block::RepeatingCommandBlock,
+ Block::ChainCommandBlock,
+ Block::StructureBlock,
+ Block::Jigsaw,
+ Block::MovingPiston,
+ Block::Light,
+ Block::ReinforcedDeepslate,
+ ])
+});
+pub static DARK_OAK_LOGS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::DarkOakLog,
+ Block::DarkOakWood,
+ Block::StrippedDarkOakLog,
+ Block::StrippedDarkOakWood,
+ ])
+});
+pub static STONE_ORE_REPLACEABLES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Stone,
+ Block::Granite,
+ Block::Diorite,
+ Block::Andesite,
+ ])
+});
+pub static EMERALD_ORES: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::EmeraldOre, Block::DeepslateEmeraldOre]));
+pub static TALL_FLOWERS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Sunflower,
+ Block::Lilac,
+ Block::Peony,
+ Block::RoseBush,
+ Block::PitcherPlant,
+ ])
+});
+pub static BEE_GROWABLES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::SweetBerryBush,
+ Block::CaveVines,
+ Block::CaveVinesPlant,
+ Block::Beetroots,
+ Block::Carrots,
+ Block::Potatoes,
+ Block::Wheat,
+ Block::MelonStem,
+ Block::PumpkinStem,
+ Block::TorchflowerCrop,
+ Block::PitcherCrop,
+ ])
+});
+pub static DOORS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::IronDoor,
+ Block::OakDoor,
+ Block::SpruceDoor,
+ Block::BirchDoor,
+ Block::JungleDoor,
+ Block::AcaciaDoor,
+ Block::DarkOakDoor,
+ Block::CrimsonDoor,
+ Block::WarpedDoor,
+ Block::MangroveDoor,
+ Block::BambooDoor,
+ Block::CherryDoor,
+ ])
+});
+pub static BEDS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::RedBed,
+ Block::BlackBed,
+ Block::BlueBed,
+ Block::BrownBed,
+ Block::CyanBed,
+ Block::GrayBed,
+ Block::GreenBed,
+ Block::LightBlueBed,
+ Block::LightGrayBed,
+ Block::LimeBed,
+ Block::MagentaBed,
+ Block::OrangeBed,
+ Block::PinkBed,
+ Block::PurpleBed,
+ Block::WhiteBed,
+ Block::YellowBed,
+ ])
+});
+pub static BASE_STONE_OVERWORLD: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Stone,
+ Block::Granite,
+ Block::Diorite,
+ Block::Andesite,
+ Block::Tuff,
+ Block::Deepslate,
+ ])
+});
+pub static SNIFFER_EGG_HATCH_BOOST: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::MossBlock]));
+pub static VALID_SPAWN: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::GrassBlock, Block::Podzol]));
+pub static NEEDS_STONE_TOOL: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::IronBlock,
+ Block::RawIronBlock,
+ Block::IronOre,
+ Block::DeepslateIronOre,
+ Block::LapisBlock,
+ Block::LapisOre,
+ Block::DeepslateLapisOre,
+ Block::CopperBlock,
+ Block::RawCopperBlock,
+ Block::CopperOre,
+ Block::DeepslateCopperOre,
+ Block::CutCopperSlab,
+ Block::CutCopperStairs,
+ Block::CutCopper,
+ Block::WeatheredCopper,
+ Block::WeatheredCutCopperSlab,
+ Block::WeatheredCutCopperStairs,
+ Block::WeatheredCutCopper,
+ Block::OxidizedCopper,
+ Block::OxidizedCutCopperSlab,
+ Block::OxidizedCutCopperStairs,
+ Block::OxidizedCutCopper,
+ Block::ExposedCopper,
+ Block::ExposedCutCopperSlab,
+ Block::ExposedCutCopperStairs,
+ Block::ExposedCutCopper,
+ Block::WaxedCopperBlock,
+ Block::WaxedCutCopperSlab,
+ Block::WaxedCutCopperStairs,
+ Block::WaxedCutCopper,
+ Block::WaxedWeatheredCopper,
+ Block::WaxedWeatheredCutCopperSlab,
+ Block::WaxedWeatheredCutCopperStairs,
+ Block::WaxedWeatheredCutCopper,
+ Block::WaxedExposedCopper,
+ Block::WaxedExposedCutCopperSlab,
+ Block::WaxedExposedCutCopperStairs,
+ Block::WaxedExposedCutCopper,
+ Block::WaxedOxidizedCopper,
+ Block::WaxedOxidizedCutCopperSlab,
+ Block::WaxedOxidizedCutCopperStairs,
+ Block::WaxedOxidizedCutCopper,
+ Block::LightningRod,
+ ])
+});
+pub static SNIFFER_DIGGABLE_BLOCK: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ ])
+});
+pub static ANCIENT_CITY_REPLACEABLE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Deepslate,
+ Block::DeepslateBricks,
+ Block::DeepslateTiles,
+ Block::DeepslateBrickSlab,
+ Block::DeepslateTileSlab,
+ Block::DeepslateBrickStairs,
+ Block::DeepslateTileWall,
+ Block::DeepslateBrickWall,
+ Block::CobbledDeepslate,
+ Block::CrackedDeepslateBricks,
+ Block::CrackedDeepslateTiles,
+ Block::GrayWool,
+ ])
+});
+pub static COPPER_ORES: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::CopperOre, Block::DeepslateCopperOre]));
+pub static WOODEN_PRESSURE_PLATES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakPressurePlate,
+ Block::SprucePressurePlate,
+ Block::BirchPressurePlate,
+ Block::JunglePressurePlate,
+ Block::AcaciaPressurePlate,
+ Block::DarkOakPressurePlate,
+ Block::CrimsonPressurePlate,
+ Block::WarpedPressurePlate,
+ Block::MangrovePressurePlate,
+ Block::BambooPressurePlate,
+ Block::CherryPressurePlate,
+ ])
+});
+pub static NYLIUM: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::CrimsonNylium, Block::WarpedNylium]));
+pub static FEATURES_CANNOT_REPLACE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Bedrock,
+ Block::Spawner,
+ Block::Chest,
+ Block::EndPortalFrame,
+ Block::ReinforcedDeepslate,
+ ])
+});
+pub static SAND: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Sand,
+ Block::RedSand,
+ Block::SuspiciousSand,
+ Block::SuspiciousSand,
+ ])
+});
+pub static LOGS_THAT_BURN: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::DarkOakLog,
+ Block::DarkOakWood,
+ Block::StrippedDarkOakLog,
+ Block::StrippedDarkOakWood,
+ Block::OakLog,
+ Block::OakWood,
+ Block::StrippedOakLog,
+ Block::StrippedOakWood,
+ Block::AcaciaLog,
+ Block::AcaciaWood,
+ Block::StrippedAcaciaLog,
+ Block::StrippedAcaciaWood,
+ Block::BirchLog,
+ Block::BirchWood,
+ Block::StrippedBirchLog,
+ Block::StrippedBirchWood,
+ Block::JungleLog,
+ Block::JungleWood,
+ Block::StrippedJungleLog,
+ Block::StrippedJungleWood,
+ Block::SpruceLog,
+ Block::SpruceWood,
+ Block::StrippedSpruceLog,
+ Block::StrippedSpruceWood,
+ Block::MangroveLog,
+ Block::MangroveWood,
+ Block::StrippedMangroveLog,
+ Block::StrippedMangroveWood,
+ Block::CherryLog,
+ Block::CherryWood,
+ Block::StrippedCherryLog,
+ Block::StrippedCherryWood,
+ ])
+});
+pub static CHERRY_LOGS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::CherryLog,
+ Block::CherryWood,
+ Block::StrippedCherryLog,
+ Block::StrippedCherryWood,
+ ])
+});
+pub static DAMPENS_VIBRATIONS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::WhiteWool,
+ Block::OrangeWool,
+ Block::MagentaWool,
+ Block::LightBlueWool,
+ Block::YellowWool,
+ Block::LimeWool,
+ Block::PinkWool,
+ Block::GrayWool,
+ Block::LightGrayWool,
+ Block::CyanWool,
+ Block::PurpleWool,
+ Block::BlueWool,
+ Block::BrownWool,
+ Block::GreenWool,
+ Block::RedWool,
+ Block::BlackWool,
+ Block::WhiteCarpet,
+ Block::OrangeCarpet,
+ Block::MagentaCarpet,
+ Block::LightBlueCarpet,
+ Block::YellowCarpet,
+ Block::LimeCarpet,
+ Block::PinkCarpet,
+ Block::GrayCarpet,
+ Block::LightGrayCarpet,
+ Block::CyanCarpet,
+ Block::PurpleCarpet,
+ Block::BlueCarpet,
+ Block::BrownCarpet,
+ Block::GreenCarpet,
+ Block::RedCarpet,
+ Block::BlackCarpet,
+ ])
+});
+pub static DIAMOND_ORES: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::DiamondOre, Block::DeepslateDiamondOre]));
+pub static WOOL: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::WhiteWool,
+ Block::OrangeWool,
+ Block::MagentaWool,
+ Block::LightBlueWool,
+ Block::YellowWool,
+ Block::LimeWool,
+ Block::PinkWool,
+ Block::GrayWool,
+ Block::LightGrayWool,
+ Block::CyanWool,
+ Block::PurpleWool,
+ Block::BlueWool,
+ Block::BrownWool,
+ Block::GreenWool,
+ Block::RedWool,
+ Block::BlackWool,
+ ])
+});
+pub static FOXES_SPAWNABLE_ON: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::GrassBlock,
+ Block::Snow,
+ Block::SnowBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ ])
+});
+pub static ALL_HANGING_SIGNS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakHangingSign,
+ Block::SpruceHangingSign,
+ Block::BirchHangingSign,
+ Block::AcaciaHangingSign,
+ Block::CherryHangingSign,
+ Block::JungleHangingSign,
+ Block::DarkOakHangingSign,
+ Block::CrimsonHangingSign,
+ Block::WarpedHangingSign,
+ Block::MangroveHangingSign,
+ Block::BambooHangingSign,
+ Block::OakWallHangingSign,
+ Block::SpruceWallHangingSign,
+ Block::BirchWallHangingSign,
+ Block::AcaciaWallHangingSign,
+ Block::CherryWallHangingSign,
+ Block::JungleWallHangingSign,
+ Block::DarkOakWallHangingSign,
+ Block::CrimsonWallHangingSign,
+ Block::WarpedWallHangingSign,
+ Block::MangroveWallHangingSign,
+ Block::BambooWallHangingSign,
+ ])
+});
+pub static WOODEN_TRAPDOORS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::AcaciaTrapdoor,
+ Block::BirchTrapdoor,
+ Block::DarkOakTrapdoor,
+ Block::JungleTrapdoor,
+ Block::OakTrapdoor,
+ Block::SpruceTrapdoor,
+ Block::CrimsonTrapdoor,
+ Block::WarpedTrapdoor,
+ Block::MangroveTrapdoor,
+ Block::BambooTrapdoor,
+ Block::CherryTrapdoor,
+ ])
+});
+pub static DRAGON_TRANSPARENT: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Light, Block::Fire, Block::SoulFire]));
+pub static REPLACEABLE_BY_TREES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Grass,
+ Block::Fern,
+ Block::DeadBush,
+ Block::Vine,
+ Block::GlowLichen,
+ Block::Sunflower,
+ Block::Lilac,
+ Block::RoseBush,
+ Block::Peony,
+ Block::TallGrass,
+ Block::LargeFern,
+ Block::HangingRoots,
+ Block::PitcherPlant,
+ Block::Water,
+ Block::Seagrass,
+ Block::TallSeagrass,
+ Block::WarpedRoots,
+ Block::NetherSprouts,
+ Block::CrimsonRoots,
+ Block::JungleLeaves,
+ Block::OakLeaves,
+ Block::SpruceLeaves,
+ Block::DarkOakLeaves,
+ Block::AcaciaLeaves,
+ Block::BirchLeaves,
+ Block::AzaleaLeaves,
+ Block::FloweringAzaleaLeaves,
+ Block::MangroveLeaves,
+ Block::CherryLeaves,
+ ])
+});
+pub static FLOWERS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::FloweringAzaleaLeaves,
+ Block::FloweringAzalea,
+ Block::MangrovePropagule,
+ Block::CherryLeaves,
+ Block::PinkPetals,
+ Block::Dandelion,
+ Block::Poppy,
+ Block::BlueOrchid,
+ Block::Allium,
+ Block::AzureBluet,
+ Block::RedTulip,
+ Block::OrangeTulip,
+ Block::WhiteTulip,
+ Block::PinkTulip,
+ Block::OxeyeDaisy,
+ Block::Cornflower,
+ Block::LilyOfTheValley,
+ Block::WitherRose,
+ Block::Torchflower,
+ Block::Sunflower,
+ Block::Lilac,
+ Block::Peony,
+ Block::RoseBush,
+ Block::PitcherPlant,
+ ])
+});
+pub static FIRE: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Fire, Block::SoulFire]));
+pub static CANDLE_CAKES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::CandleCake,
+ Block::WhiteCandleCake,
+ Block::OrangeCandleCake,
+ Block::MagentaCandleCake,
+ Block::LightBlueCandleCake,
+ Block::YellowCandleCake,
+ Block::LimeCandleCake,
+ Block::PinkCandleCake,
+ Block::GrayCandleCake,
+ Block::LightGrayCandleCake,
+ Block::CyanCandleCake,
+ Block::PurpleCandleCake,
+ Block::BlueCandleCake,
+ Block::BrownCandleCake,
+ Block::GreenCandleCake,
+ Block::RedCandleCake,
+ Block::BlackCandleCake,
+ ])
+});
+pub static BANNERS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::WhiteBanner,
+ Block::OrangeBanner,
+ Block::MagentaBanner,
+ Block::LightBlueBanner,
+ Block::YellowBanner,
+ Block::LimeBanner,
+ Block::PinkBanner,
+ Block::GrayBanner,
+ Block::LightGrayBanner,
+ Block::CyanBanner,
+ Block::PurpleBanner,
+ Block::BlueBanner,
+ Block::BrownBanner,
+ Block::GreenBanner,
+ Block::RedBanner,
+ Block::BlackBanner,
+ Block::WhiteWallBanner,
+ Block::OrangeWallBanner,
+ Block::MagentaWallBanner,
+ Block::LightBlueWallBanner,
+ Block::YellowWallBanner,
+ Block::LimeWallBanner,
+ Block::PinkWallBanner,
+ Block::GrayWallBanner,
+ Block::LightGrayWallBanner,
+ Block::CyanWallBanner,
+ Block::PurpleWallBanner,
+ Block::BlueWallBanner,
+ Block::BrownWallBanner,
+ Block::GreenWallBanner,
+ Block::RedWallBanner,
+ Block::BlackWallBanner,
+ ])
+});
+pub static TERRACOTTA: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Terracotta,
+ Block::WhiteTerracotta,
+ Block::OrangeTerracotta,
+ Block::MagentaTerracotta,
+ Block::LightBlueTerracotta,
+ Block::YellowTerracotta,
+ Block::LimeTerracotta,
+ Block::PinkTerracotta,
+ Block::GrayTerracotta,
+ Block::LightGrayTerracotta,
+ Block::CyanTerracotta,
+ Block::PurpleTerracotta,
+ Block::BlueTerracotta,
+ Block::BrownTerracotta,
+ Block::GreenTerracotta,
+ Block::RedTerracotta,
+ Block::BlackTerracotta,
+ ])
+});
+pub static BIRCH_LOGS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::BirchLog,
+ Block::BirchWood,
+ Block::StrippedBirchLog,
+ Block::StrippedBirchWood,
+ ])
+});
+pub static PIGLIN_REPELLENTS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::SoulFire,
+ Block::SoulTorch,
+ Block::SoulLantern,
+ Block::SoulWallTorch,
+ Block::SoulCampfire,
+ ])
+});
+pub static MANGROVE_LOGS_CAN_GROW_THROUGH: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ Block::MangroveRoots,
+ Block::MangroveLeaves,
+ Block::MangroveLog,
+ Block::MangrovePropagule,
+ Block::MossCarpet,
+ Block::Vine,
+ ])
+});
+pub static BEACON_BASE_BLOCKS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::NetheriteBlock,
+ Block::EmeraldBlock,
+ Block::DiamondBlock,
+ Block::GoldBlock,
+ Block::IronBlock,
+ ])
+});
+pub static LAVA_POOL_STONE_CANNOT_REPLACE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Bedrock,
+ Block::Spawner,
+ Block::Chest,
+ Block::EndPortalFrame,
+ Block::ReinforcedDeepslate,
+ Block::JungleLeaves,
+ Block::OakLeaves,
+ Block::SpruceLeaves,
+ Block::DarkOakLeaves,
+ Block::AcaciaLeaves,
+ Block::BirchLeaves,
+ Block::AzaleaLeaves,
+ Block::FloweringAzaleaLeaves,
+ Block::MangroveLeaves,
+ Block::CherryLeaves,
+ Block::CrimsonStem,
+ Block::StrippedCrimsonStem,
+ Block::CrimsonHyphae,
+ Block::StrippedCrimsonHyphae,
+ Block::WarpedStem,
+ Block::StrippedWarpedStem,
+ Block::WarpedHyphae,
+ Block::StrippedWarpedHyphae,
+ Block::DarkOakLog,
+ Block::DarkOakWood,
+ Block::StrippedDarkOakLog,
+ Block::StrippedDarkOakWood,
+ Block::OakLog,
+ Block::OakWood,
+ Block::StrippedOakLog,
+ Block::StrippedOakWood,
+ Block::AcaciaLog,
+ Block::AcaciaWood,
+ Block::StrippedAcaciaLog,
+ Block::StrippedAcaciaWood,
+ Block::BirchLog,
+ Block::BirchWood,
+ Block::StrippedBirchLog,
+ Block::StrippedBirchWood,
+ Block::JungleLog,
+ Block::JungleWood,
+ Block::StrippedJungleLog,
+ Block::StrippedJungleWood,
+ Block::SpruceLog,
+ Block::SpruceWood,
+ Block::StrippedSpruceLog,
+ Block::StrippedSpruceWood,
+ Block::MangroveLog,
+ Block::MangroveWood,
+ Block::StrippedMangroveLog,
+ Block::StrippedMangroveWood,
+ Block::CherryLog,
+ Block::CherryWood,
+ Block::StrippedCherryLog,
+ Block::StrippedCherryWood,
+ ])
+});
+pub static OVERWORLD_CARVER_REPLACEABLES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Water,
+ Block::Gravel,
+ Block::SuspiciousGravel,
+ Block::Sandstone,
+ Block::RedSandstone,
+ Block::Calcite,
+ Block::Snow,
+ Block::PackedIce,
+ Block::RawIronBlock,
+ Block::RawCopperBlock,
+ Block::Stone,
+ Block::Granite,
+ Block::Diorite,
+ Block::Andesite,
+ Block::Tuff,
+ Block::Deepslate,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ Block::Sand,
+ Block::RedSand,
+ Block::SuspiciousSand,
+ Block::SuspiciousSand,
+ Block::Terracotta,
+ Block::WhiteTerracotta,
+ Block::OrangeTerracotta,
+ Block::MagentaTerracotta,
+ Block::LightBlueTerracotta,
+ Block::YellowTerracotta,
+ Block::LimeTerracotta,
+ Block::PinkTerracotta,
+ Block::GrayTerracotta,
+ Block::LightGrayTerracotta,
+ Block::CyanTerracotta,
+ Block::PurpleTerracotta,
+ Block::BlueTerracotta,
+ Block::BrownTerracotta,
+ Block::GreenTerracotta,
+ Block::RedTerracotta,
+ Block::BlackTerracotta,
+ Block::IronOre,
+ Block::DeepslateIronOre,
+ Block::CopperOre,
+ Block::DeepslateCopperOre,
+ ])
+});
+pub static STANDING_SIGNS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakSign,
+ Block::SpruceSign,
+ Block::BirchSign,
+ Block::AcaciaSign,
+ Block::JungleSign,
+ Block::DarkOakSign,
+ Block::CrimsonSign,
+ Block::WarpedSign,
+ Block::MangroveSign,
+ Block::BambooSign,
+ Block::CherrySign,
+ ])
+});
+pub static SLABS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::BambooMosaicSlab,
+ Block::StoneSlab,
+ Block::SmoothStoneSlab,
+ Block::StoneBrickSlab,
+ Block::SandstoneSlab,
+ Block::PurpurSlab,
+ Block::QuartzSlab,
+ Block::RedSandstoneSlab,
+ Block::BrickSlab,
+ Block::CobblestoneSlab,
+ Block::NetherBrickSlab,
+ Block::PetrifiedOakSlab,
+ Block::PrismarineSlab,
+ Block::PrismarineBrickSlab,
+ Block::DarkPrismarineSlab,
+ Block::PolishedGraniteSlab,
+ Block::SmoothRedSandstoneSlab,
+ Block::MossyStoneBrickSlab,
+ Block::PolishedDioriteSlab,
+ Block::MossyCobblestoneSlab,
+ Block::EndStoneBrickSlab,
+ Block::SmoothSandstoneSlab,
+ Block::SmoothQuartzSlab,
+ Block::GraniteSlab,
+ Block::AndesiteSlab,
+ Block::RedNetherBrickSlab,
+ Block::PolishedAndesiteSlab,
+ Block::DioriteSlab,
+ Block::CutSandstoneSlab,
+ Block::CutRedSandstoneSlab,
+ Block::BlackstoneSlab,
+ Block::PolishedBlackstoneBrickSlab,
+ Block::PolishedBlackstoneSlab,
+ Block::CobbledDeepslateSlab,
+ Block::PolishedDeepslateSlab,
+ Block::DeepslateTileSlab,
+ Block::DeepslateBrickSlab,
+ Block::WaxedWeatheredCutCopperSlab,
+ Block::WaxedExposedCutCopperSlab,
+ Block::WaxedCutCopperSlab,
+ Block::OxidizedCutCopperSlab,
+ Block::WeatheredCutCopperSlab,
+ Block::ExposedCutCopperSlab,
+ Block::CutCopperSlab,
+ Block::WaxedOxidizedCutCopperSlab,
+ Block::MudBrickSlab,
+ Block::OakSlab,
+ Block::SpruceSlab,
+ Block::BirchSlab,
+ Block::JungleSlab,
+ Block::AcaciaSlab,
+ Block::DarkOakSlab,
+ Block::CrimsonSlab,
+ Block::WarpedSlab,
+ Block::MangroveSlab,
+ Block::BambooSlab,
+ Block::CherrySlab,
+ ])
+});
+pub static ANVIL: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Anvil, Block::ChippedAnvil, Block::DamagedAnvil]));
+pub static DRAGON_IMMUNE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Barrier,
+ Block::Bedrock,
+ Block::EndPortal,
+ Block::EndPortalFrame,
+ Block::EndGateway,
+ Block::CommandBlock,
+ Block::RepeatingCommandBlock,
+ Block::ChainCommandBlock,
+ Block::StructureBlock,
+ Block::Jigsaw,
+ Block::MovingPiston,
+ Block::Obsidian,
+ Block::CryingObsidian,
+ Block::EndStone,
+ Block::IronBars,
+ Block::RespawnAnchor,
+ Block::ReinforcedDeepslate,
+ ])
+});
+pub static STAIRS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::BambooMosaicStairs,
+ Block::CobblestoneStairs,
+ Block::SandstoneStairs,
+ Block::NetherBrickStairs,
+ Block::StoneBrickStairs,
+ Block::BrickStairs,
+ Block::PurpurStairs,
+ Block::QuartzStairs,
+ Block::RedSandstoneStairs,
+ Block::PrismarineBrickStairs,
+ Block::PrismarineStairs,
+ Block::DarkPrismarineStairs,
+ Block::PolishedGraniteStairs,
+ Block::SmoothRedSandstoneStairs,
+ Block::MossyStoneBrickStairs,
+ Block::PolishedDioriteStairs,
+ Block::MossyCobblestoneStairs,
+ Block::EndStoneBrickStairs,
+ Block::StoneStairs,
+ Block::SmoothSandstoneStairs,
+ Block::SmoothQuartzStairs,
+ Block::GraniteStairs,
+ Block::AndesiteStairs,
+ Block::RedNetherBrickStairs,
+ Block::PolishedAndesiteStairs,
+ Block::DioriteStairs,
+ Block::BlackstoneStairs,
+ Block::PolishedBlackstoneBrickStairs,
+ Block::PolishedBlackstoneStairs,
+ Block::CobbledDeepslateStairs,
+ Block::PolishedDeepslateStairs,
+ Block::DeepslateTileStairs,
+ Block::DeepslateBrickStairs,
+ Block::OxidizedCutCopperStairs,
+ Block::WeatheredCutCopperStairs,
+ Block::ExposedCutCopperStairs,
+ Block::CutCopperStairs,
+ Block::WaxedWeatheredCutCopperStairs,
+ Block::WaxedExposedCutCopperStairs,
+ Block::WaxedCutCopperStairs,
+ Block::WaxedOxidizedCutCopperStairs,
+ Block::MudBrickStairs,
+ Block::OakStairs,
+ Block::SpruceStairs,
+ Block::BirchStairs,
+ Block::JungleStairs,
+ Block::AcaciaStairs,
+ Block::DarkOakStairs,
+ Block::CrimsonStairs,
+ Block::WarpedStairs,
+ Block::MangroveStairs,
+ Block::BambooStairs,
+ Block::CherryStairs,
+ ])
+});
+pub static CAVE_VINES: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::CaveVinesPlant, Block::CaveVines]));
+pub static NEEDS_DIAMOND_TOOL: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Obsidian,
+ Block::CryingObsidian,
+ Block::NetheriteBlock,
+ Block::RespawnAnchor,
+ Block::AncientDebris,
+ ])
+});
+pub static ENDERMAN_HOLDABLE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Sand,
+ Block::RedSand,
+ Block::Gravel,
+ Block::BrownMushroom,
+ Block::RedMushroom,
+ Block::Tnt,
+ Block::Cactus,
+ Block::Clay,
+ Block::Pumpkin,
+ Block::CarvedPumpkin,
+ Block::Melon,
+ Block::CrimsonFungus,
+ Block::CrimsonNylium,
+ Block::CrimsonRoots,
+ Block::WarpedFungus,
+ Block::WarpedNylium,
+ Block::WarpedRoots,
+ Block::Dandelion,
+ Block::Poppy,
+ Block::BlueOrchid,
+ Block::Allium,
+ Block::AzureBluet,
+ Block::RedTulip,
+ Block::OrangeTulip,
+ Block::WhiteTulip,
+ Block::PinkTulip,
+ Block::OxeyeDaisy,
+ Block::Cornflower,
+ Block::LilyOfTheValley,
+ Block::WitherRose,
+ Block::Torchflower,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ ])
+});
+pub static ENCHANTMENT_POWER_TRANSMITTER: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Air,
+ Block::Water,
+ Block::Lava,
+ Block::Grass,
+ Block::Fern,
+ Block::DeadBush,
+ Block::Seagrass,
+ Block::TallSeagrass,
+ Block::Fire,
+ Block::SoulFire,
+ Block::Snow,
+ Block::Vine,
+ Block::GlowLichen,
+ Block::Light,
+ Block::TallGrass,
+ Block::LargeFern,
+ Block::StructureVoid,
+ Block::VoidAir,
+ Block::CaveAir,
+ Block::BubbleColumn,
+ Block::WarpedRoots,
+ Block::NetherSprouts,
+ Block::CrimsonRoots,
+ Block::HangingRoots,
+ ])
+});
+pub static INFINIBURN_END: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Bedrock, Block::Netherrack, Block::MagmaBlock]));
+pub static SOUL_FIRE_BASE_BLOCKS: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::SoulSand, Block::SoulSoil]));
+pub static WOOL_CARPETS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::WhiteCarpet,
+ Block::OrangeCarpet,
+ Block::MagentaCarpet,
+ Block::LightBlueCarpet,
+ Block::YellowCarpet,
+ Block::LimeCarpet,
+ Block::PinkCarpet,
+ Block::GrayCarpet,
+ Block::LightGrayCarpet,
+ Block::CyanCarpet,
+ Block::PurpleCarpet,
+ Block::BlueCarpet,
+ Block::BrownCarpet,
+ Block::GreenCarpet,
+ Block::RedCarpet,
+ Block::BlackCarpet,
+ ])
+});
+pub static GOATS_SPAWNABLE_ON: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Stone,
+ Block::Snow,
+ Block::SnowBlock,
+ Block::PackedIce,
+ Block::Gravel,
+ Block::GrassBlock,
+ ])
+});
+pub static CORAL_BLOCKS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::TubeCoralBlock,
+ Block::BrainCoralBlock,
+ Block::BubbleCoralBlock,
+ Block::FireCoralBlock,
+ Block::HornCoralBlock,
+ ])
+});
+pub static WOODEN_DOORS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakDoor,
+ Block::SpruceDoor,
+ Block::BirchDoor,
+ Block::JungleDoor,
+ Block::AcaciaDoor,
+ Block::DarkOakDoor,
+ Block::CrimsonDoor,
+ Block::WarpedDoor,
+ Block::MangroveDoor,
+ Block::BambooDoor,
+ Block::CherryDoor,
+ ])
+});
+pub static COAL_ORES: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::CoalOre, Block::DeepslateCoalOre]));
+pub static BIG_DRIPLEAF_PLACEABLE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Farmland,
+ Block::Clay,
+ Block::MossBlock,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ ])
+});
+pub static BUTTONS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakButton,
+ Block::SpruceButton,
+ Block::BirchButton,
+ Block::JungleButton,
+ Block::AcaciaButton,
+ Block::DarkOakButton,
+ Block::CrimsonButton,
+ Block::WarpedButton,
+ Block::MangroveButton,
+ Block::BambooButton,
+ Block::CherryButton,
+ Block::StoneButton,
+ Block::PolishedBlackstoneButton,
+ ])
+});
+pub static GOLD_ORES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::GoldOre,
+ Block::NetherGoldOre,
+ Block::DeepslateGoldOre,
+ ])
+});
+pub static NEEDS_IRON_TOOL: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::DiamondBlock,
+ Block::DiamondOre,
+ Block::DeepslateDiamondOre,
+ Block::EmeraldOre,
+ Block::DeepslateEmeraldOre,
+ Block::EmeraldBlock,
+ Block::GoldBlock,
+ Block::RawGoldBlock,
+ Block::GoldOre,
+ Block::DeepslateGoldOre,
+ Block::RedstoneOre,
+ Block::DeepslateRedstoneOre,
+ ])
+});
+pub static UNSTABLE_BOTTOM_CENTER: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::AcaciaFenceGate,
+ Block::BirchFenceGate,
+ Block::DarkOakFenceGate,
+ Block::JungleFenceGate,
+ Block::OakFenceGate,
+ Block::SpruceFenceGate,
+ Block::CrimsonFenceGate,
+ Block::WarpedFenceGate,
+ Block::MangroveFenceGate,
+ Block::BambooFenceGate,
+ Block::CherryFenceGate,
+ ])
+});
+pub static CORALS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::TubeCoralFan,
+ Block::BrainCoralFan,
+ Block::BubbleCoralFan,
+ Block::FireCoralFan,
+ Block::HornCoralFan,
+ Block::TubeCoral,
+ Block::BrainCoral,
+ Block::BubbleCoral,
+ Block::FireCoral,
+ Block::HornCoral,
+ ])
+});
+pub static WART_BLOCKS: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::NetherWartBlock, Block::WarpedWartBlock]));
+pub static BEEHIVES: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::BeeNest, Block::Beehive]));
+pub static POLAR_BEARS_SPAWNABLE_ON_ALTERNATE: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Ice]));
+pub static DEEPSLATE_ORE_REPLACEABLES: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Deepslate, Block::Tuff]));
+pub static SNAPS_GOAT_HORN: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Stone,
+ Block::PackedIce,
+ Block::IronOre,
+ Block::CoalOre,
+ Block::CopperOre,
+ Block::EmeraldOre,
+ Block::AcaciaLog,
+ Block::BirchLog,
+ Block::OakLog,
+ Block::JungleLog,
+ Block::SpruceLog,
+ Block::DarkOakLog,
+ Block::MangroveLog,
+ Block::CherryLog,
+ ])
+});
+pub static PREVENT_MOB_SPAWNING_INSIDE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Rail,
+ Block::PoweredRail,
+ Block::DetectorRail,
+ Block::ActivatorRail,
+ ])
+});
+pub static CONVERTABLE_TO_MUD: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Dirt, Block::CoarseDirt, Block::RootedDirt]));
+pub static SOUL_SPEED_BLOCKS: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::SoulSand, Block::SoulSoil]));
+pub static OVERWORLD_NATURAL_LOGS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::AcaciaLog,
+ Block::BirchLog,
+ Block::OakLog,
+ Block::JungleLog,
+ Block::SpruceLog,
+ Block::DarkOakLog,
+ Block::MangroveLog,
+ Block::CherryLog,
+ ])
+});
+pub static CORAL_PLANTS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::TubeCoral,
+ Block::BrainCoral,
+ Block::BubbleCoral,
+ Block::FireCoral,
+ Block::HornCoral,
+ ])
+});
+pub static PORTALS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::NetherPortal,
+ Block::EndPortal,
+ Block::EndGateway,
+ ])
+});
+pub static SCULK_REPLACEABLE_WORLD_GEN: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::DeepslateBricks,
+ Block::DeepslateTiles,
+ Block::CobbledDeepslate,
+ Block::CrackedDeepslateBricks,
+ Block::CrackedDeepslateTiles,
+ Block::PolishedDeepslate,
+ Block::Sand,
+ Block::RedSand,
+ Block::Gravel,
+ Block::SoulSand,
+ Block::SoulSoil,
+ Block::Calcite,
+ Block::SmoothBasalt,
+ Block::Clay,
+ Block::DripstoneBlock,
+ Block::EndStone,
+ Block::RedSandstone,
+ Block::Sandstone,
+ Block::Stone,
+ Block::Granite,
+ Block::Diorite,
+ Block::Andesite,
+ Block::Tuff,
+ Block::Deepslate,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ Block::Terracotta,
+ Block::WhiteTerracotta,
+ Block::OrangeTerracotta,
+ Block::MagentaTerracotta,
+ Block::LightBlueTerracotta,
+ Block::YellowTerracotta,
+ Block::LimeTerracotta,
+ Block::PinkTerracotta,
+ Block::GrayTerracotta,
+ Block::LightGrayTerracotta,
+ Block::CyanTerracotta,
+ Block::PurpleTerracotta,
+ Block::BlueTerracotta,
+ Block::BrownTerracotta,
+ Block::GreenTerracotta,
+ Block::RedTerracotta,
+ Block::BlackTerracotta,
+ Block::CrimsonNylium,
+ Block::WarpedNylium,
+ Block::Netherrack,
+ Block::Basalt,
+ Block::Blackstone,
+ ])
+});
+pub static SHULKER_BOXES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::ShulkerBox,
+ Block::BlackShulkerBox,
+ Block::BlueShulkerBox,
+ Block::BrownShulkerBox,
+ Block::CyanShulkerBox,
+ Block::GrayShulkerBox,
+ Block::GreenShulkerBox,
+ Block::LightBlueShulkerBox,
+ Block::LightGrayShulkerBox,
+ Block::LimeShulkerBox,
+ Block::MagentaShulkerBox,
+ Block::OrangeShulkerBox,
+ Block::PinkShulkerBox,
+ Block::PurpleShulkerBox,
+ Block::RedShulkerBox,
+ Block::WhiteShulkerBox,
+ Block::YellowShulkerBox,
+ ])
+});
+pub static FENCES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::NetherBrickFence,
+ Block::OakFence,
+ Block::AcaciaFence,
+ Block::DarkOakFence,
+ Block::SpruceFence,
+ Block::BirchFence,
+ Block::JungleFence,
+ Block::CrimsonFence,
+ Block::WarpedFence,
+ Block::MangroveFence,
+ Block::BambooFence,
+ Block::CherryFence,
+ ])
+});
+pub static GEODE_INVALID_BLOCKS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Bedrock,
+ Block::Water,
+ Block::Lava,
+ Block::Ice,
+ Block::PackedIce,
+ Block::BlueIce,
+ ])
+});
+pub static COMPLETES_FIND_TREE_TUTORIAL: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::JungleLeaves,
+ Block::OakLeaves,
+ Block::SpruceLeaves,
+ Block::DarkOakLeaves,
+ Block::AcaciaLeaves,
+ Block::BirchLeaves,
+ Block::AzaleaLeaves,
+ Block::FloweringAzaleaLeaves,
+ Block::MangroveLeaves,
+ Block::CherryLeaves,
+ Block::NetherWartBlock,
+ Block::WarpedWartBlock,
+ Block::CrimsonStem,
+ Block::StrippedCrimsonStem,
+ Block::CrimsonHyphae,
+ Block::StrippedCrimsonHyphae,
+ Block::WarpedStem,
+ Block::StrippedWarpedStem,
+ Block::WarpedHyphae,
+ Block::StrippedWarpedHyphae,
+ Block::DarkOakLog,
+ Block::DarkOakWood,
+ Block::StrippedDarkOakLog,
+ Block::StrippedDarkOakWood,
+ Block::OakLog,
+ Block::OakWood,
+ Block::StrippedOakLog,
+ Block::StrippedOakWood,
+ Block::AcaciaLog,
+ Block::AcaciaWood,
+ Block::StrippedAcaciaLog,
+ Block::StrippedAcaciaWood,
+ Block::BirchLog,
+ Block::BirchWood,
+ Block::StrippedBirchLog,
+ Block::StrippedBirchWood,
+ Block::JungleLog,
+ Block::JungleWood,
+ Block::StrippedJungleLog,
+ Block::StrippedJungleWood,
+ Block::SpruceLog,
+ Block::SpruceWood,
+ Block::StrippedSpruceLog,
+ Block::StrippedSpruceWood,
+ Block::MangroveLog,
+ Block::MangroveWood,
+ Block::StrippedMangroveLog,
+ Block::StrippedMangroveWood,
+ Block::CherryLog,
+ Block::CherryWood,
+ Block::StrippedCherryLog,
+ Block::StrippedCherryWood,
+ ])
+});
+pub static FROG_PREFER_JUMP_TO: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::LilyPad, Block::BigDripleaf]));
+pub static INFINIBURN_OVERWORLD: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Netherrack, Block::MagmaBlock]));
+pub static WITHER_SUMMON_BASE_BLOCKS: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::SoulSand, Block::SoulSoil]));
+pub static FALL_DAMAGE_RESETTING: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::SweetBerryBush,
+ Block::Cobweb,
+ Block::Ladder,
+ Block::Vine,
+ Block::Scaffolding,
+ Block::WeepingVines,
+ Block::WeepingVinesPlant,
+ Block::TwistingVines,
+ Block::TwistingVinesPlant,
+ Block::CaveVines,
+ Block::CaveVinesPlant,
+ ])
+});
+pub static SMALL_FLOWERS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Dandelion,
+ Block::Poppy,
+ Block::BlueOrchid,
+ Block::Allium,
+ Block::AzureBluet,
+ Block::RedTulip,
+ Block::OrangeTulip,
+ Block::WhiteTulip,
+ Block::PinkTulip,
+ Block::OxeyeDaisy,
+ Block::Cornflower,
+ Block::LilyOfTheValley,
+ Block::WitherRose,
+ Block::Torchflower,
+ ])
+});
+pub static CEILING_HANGING_SIGNS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakHangingSign,
+ Block::SpruceHangingSign,
+ Block::BirchHangingSign,
+ Block::AcaciaHangingSign,
+ Block::CherryHangingSign,
+ Block::JungleHangingSign,
+ Block::DarkOakHangingSign,
+ Block::CrimsonHangingSign,
+ Block::WarpedHangingSign,
+ Block::MangroveHangingSign,
+ Block::BambooHangingSign,
+ ])
+});
+pub static REPLACEABLE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Air,
+ Block::Water,
+ Block::Lava,
+ Block::Grass,
+ Block::Fern,
+ Block::DeadBush,
+ Block::Seagrass,
+ Block::TallSeagrass,
+ Block::Fire,
+ Block::SoulFire,
+ Block::Snow,
+ Block::Vine,
+ Block::GlowLichen,
+ Block::Light,
+ Block::TallGrass,
+ Block::LargeFern,
+ Block::StructureVoid,
+ Block::VoidAir,
+ Block::CaveAir,
+ Block::BubbleColumn,
+ Block::WarpedRoots,
+ Block::NetherSprouts,
+ Block::CrimsonRoots,
+ Block::HangingRoots,
+ ])
+});
+pub static STRIDER_WARM_BLOCKS: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Lava]));
+pub static ANIMALS_SPAWNABLE_ON: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::GrassBlock]));
+pub static INVALID_SPAWN_INSIDE: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::EndPortal, Block::EndGateway]));
+pub static FENCE_GATES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::AcaciaFenceGate,
+ Block::BirchFenceGate,
+ Block::DarkOakFenceGate,
+ Block::JungleFenceGate,
+ Block::OakFenceGate,
+ Block::SpruceFenceGate,
+ Block::CrimsonFenceGate,
+ Block::WarpedFenceGate,
+ Block::MangroveFenceGate,
+ Block::BambooFenceGate,
+ Block::CherryFenceGate,
+ ])
+});
+pub static GUARDED_BY_PIGLINS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::GoldBlock,
+ Block::Barrel,
+ Block::Chest,
+ Block::EnderChest,
+ Block::GildedBlackstone,
+ Block::TrappedChest,
+ Block::RawGoldBlock,
+ Block::ShulkerBox,
+ Block::BlackShulkerBox,
+ Block::BlueShulkerBox,
+ Block::BrownShulkerBox,
+ Block::CyanShulkerBox,
+ Block::GrayShulkerBox,
+ Block::GreenShulkerBox,
+ Block::LightBlueShulkerBox,
+ Block::LightGrayShulkerBox,
+ Block::LimeShulkerBox,
+ Block::MagentaShulkerBox,
+ Block::OrangeShulkerBox,
+ Block::PinkShulkerBox,
+ Block::PurpleShulkerBox,
+ Block::RedShulkerBox,
+ Block::WhiteShulkerBox,
+ Block::YellowShulkerBox,
+ Block::GoldOre,
+ Block::NetherGoldOre,
+ Block::DeepslateGoldOre,
+ ])
+});
+pub static AZALEA_GROWS_ON: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::SnowBlock,
+ Block::PowderSnow,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ Block::Sand,
+ Block::RedSand,
+ Block::SuspiciousSand,
+ Block::SuspiciousSand,
+ Block::Terracotta,
+ Block::WhiteTerracotta,
+ Block::OrangeTerracotta,
+ Block::MagentaTerracotta,
+ Block::LightBlueTerracotta,
+ Block::YellowTerracotta,
+ Block::LimeTerracotta,
+ Block::PinkTerracotta,
+ Block::GrayTerracotta,
+ Block::LightGrayTerracotta,
+ Block::CyanTerracotta,
+ Block::PurpleTerracotta,
+ Block::BlueTerracotta,
+ Block::BrownTerracotta,
+ Block::GreenTerracotta,
+ Block::RedTerracotta,
+ Block::BlackTerracotta,
+ ])
+});
+pub static OAK_LOGS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakLog,
+ Block::OakWood,
+ Block::StrippedOakLog,
+ Block::StrippedOakWood,
+ ])
+});
+pub static STONE_BRICKS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::StoneBricks,
+ Block::MossyStoneBricks,
+ Block::CrackedStoneBricks,
+ Block::ChiseledStoneBricks,
+ ])
+});
+pub static LAPIS_ORES: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::LapisOre, Block::DeepslateLapisOre]));
+pub static IMPERMEABLE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Glass,
+ Block::WhiteStainedGlass,
+ Block::OrangeStainedGlass,
+ Block::MagentaStainedGlass,
+ Block::LightBlueStainedGlass,
+ Block::YellowStainedGlass,
+ Block::LimeStainedGlass,
+ Block::PinkStainedGlass,
+ Block::GrayStainedGlass,
+ Block::LightGrayStainedGlass,
+ Block::CyanStainedGlass,
+ Block::PurpleStainedGlass,
+ Block::BlueStainedGlass,
+ Block::BrownStainedGlass,
+ Block::GreenStainedGlass,
+ Block::RedStainedGlass,
+ Block::BlackStainedGlass,
+ Block::TintedGlass,
+ ])
+});
+pub static ICE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Ice,
+ Block::PackedIce,
+ Block::BlueIce,
+ Block::FrostedIce,
+ ])
+});
+pub static ALL_SIGNS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakSign,
+ Block::SpruceSign,
+ Block::BirchSign,
+ Block::AcaciaSign,
+ Block::JungleSign,
+ Block::DarkOakSign,
+ Block::CrimsonSign,
+ Block::WarpedSign,
+ Block::MangroveSign,
+ Block::BambooSign,
+ Block::CherrySign,
+ Block::OakWallSign,
+ Block::SpruceWallSign,
+ Block::BirchWallSign,
+ Block::AcaciaWallSign,
+ Block::JungleWallSign,
+ Block::DarkOakWallSign,
+ Block::CrimsonWallSign,
+ Block::WarpedWallSign,
+ Block::MangroveWallSign,
+ Block::BambooWallSign,
+ Block::CherryWallSign,
+ Block::OakHangingSign,
+ Block::SpruceHangingSign,
+ Block::BirchHangingSign,
+ Block::AcaciaHangingSign,
+ Block::CherryHangingSign,
+ Block::JungleHangingSign,
+ Block::DarkOakHangingSign,
+ Block::CrimsonHangingSign,
+ Block::WarpedHangingSign,
+ Block::MangroveHangingSign,
+ Block::BambooHangingSign,
+ Block::OakWallHangingSign,
+ Block::SpruceWallHangingSign,
+ Block::BirchWallHangingSign,
+ Block::AcaciaWallHangingSign,
+ Block::CherryWallHangingSign,
+ Block::JungleWallHangingSign,
+ Block::DarkOakWallHangingSign,
+ Block::CrimsonWallHangingSign,
+ Block::WarpedWallHangingSign,
+ Block::MangroveWallHangingSign,
+ Block::BambooWallHangingSign,
+ ])
+});
+pub static SIGNS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakSign,
+ Block::SpruceSign,
+ Block::BirchSign,
+ Block::AcaciaSign,
+ Block::JungleSign,
+ Block::DarkOakSign,
+ Block::CrimsonSign,
+ Block::WarpedSign,
+ Block::MangroveSign,
+ Block::BambooSign,
+ Block::CherrySign,
+ Block::OakWallSign,
+ Block::SpruceWallSign,
+ Block::BirchWallSign,
+ Block::AcaciaWallSign,
+ Block::JungleWallSign,
+ Block::DarkOakWallSign,
+ Block::CrimsonWallSign,
+ Block::WarpedWallSign,
+ Block::MangroveWallSign,
+ Block::BambooWallSign,
+ Block::CherryWallSign,
+ ])
+});
+pub static INFINIBURN_NETHER: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Netherrack, Block::MagmaBlock]));
+pub static NETHER_CARVER_REPLACEABLES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::SoulSand,
+ Block::SoulSoil,
+ Block::Stone,
+ Block::Granite,
+ Block::Diorite,
+ Block::Andesite,
+ Block::Tuff,
+ Block::Deepslate,
+ Block::Netherrack,
+ Block::Basalt,
+ Block::Blackstone,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ Block::CrimsonNylium,
+ Block::WarpedNylium,
+ Block::NetherWartBlock,
+ Block::WarpedWartBlock,
+ ])
+});
+pub static CRYSTAL_SOUND_BLOCKS: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::AmethystBlock, Block::BuddingAmethyst]));
+pub static DIRT: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ ])
+});
+pub static MOOSHROOMS_SPAWNABLE_ON: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Mycelium]));
+pub static PRESSURE_PLATES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::LightWeightedPressurePlate,
+ Block::HeavyWeightedPressurePlate,
+ Block::OakPressurePlate,
+ Block::SprucePressurePlate,
+ Block::BirchPressurePlate,
+ Block::JunglePressurePlate,
+ Block::AcaciaPressurePlate,
+ Block::DarkOakPressurePlate,
+ Block::CrimsonPressurePlate,
+ Block::WarpedPressurePlate,
+ Block::MangrovePressurePlate,
+ Block::BambooPressurePlate,
+ Block::CherryPressurePlate,
+ Block::StonePressurePlate,
+ Block::PolishedBlackstonePressurePlate,
+ ])
+});
+pub static LOGS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::CrimsonStem,
+ Block::StrippedCrimsonStem,
+ Block::CrimsonHyphae,
+ Block::StrippedCrimsonHyphae,
+ Block::WarpedStem,
+ Block::StrippedWarpedStem,
+ Block::WarpedHyphae,
+ Block::StrippedWarpedHyphae,
+ Block::DarkOakLog,
+ Block::DarkOakWood,
+ Block::StrippedDarkOakLog,
+ Block::StrippedDarkOakWood,
+ Block::OakLog,
+ Block::OakWood,
+ Block::StrippedOakLog,
+ Block::StrippedOakWood,
+ Block::AcaciaLog,
+ Block::AcaciaWood,
+ Block::StrippedAcaciaLog,
+ Block::StrippedAcaciaWood,
+ Block::BirchLog,
+ Block::BirchWood,
+ Block::StrippedBirchLog,
+ Block::StrippedBirchWood,
+ Block::JungleLog,
+ Block::JungleWood,
+ Block::StrippedJungleLog,
+ Block::StrippedJungleWood,
+ Block::SpruceLog,
+ Block::SpruceWood,
+ Block::StrippedSpruceLog,
+ Block::StrippedSpruceWood,
+ Block::MangroveLog,
+ Block::MangroveWood,
+ Block::StrippedMangroveLog,
+ Block::StrippedMangroveWood,
+ Block::CherryLog,
+ Block::CherryWood,
+ Block::StrippedCherryLog,
+ Block::StrippedCherryWood,
+ ])
+});
+pub static MANGROVE_ROOTS_CAN_GROW_THROUGH: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ Block::MangroveRoots,
+ Block::MossCarpet,
+ Block::Vine,
+ Block::MangrovePropagule,
+ Block::Snow,
+ ])
+});
+pub static CLIMBABLE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Ladder,
+ Block::Vine,
+ Block::Scaffolding,
+ Block::WeepingVines,
+ Block::WeepingVinesPlant,
+ Block::TwistingVines,
+ Block::TwistingVinesPlant,
+ Block::CaveVines,
+ Block::CaveVinesPlant,
+ ])
+});
+pub static WOODEN_BUTTONS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakButton,
+ Block::SpruceButton,
+ Block::BirchButton,
+ Block::JungleButton,
+ Block::AcaciaButton,
+ Block::DarkOakButton,
+ Block::CrimsonButton,
+ Block::WarpedButton,
+ Block::MangroveButton,
+ Block::BambooButton,
+ Block::CherryButton,
+ ])
+});
+pub static ENCHANTMENT_POWER_PROVIDER: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Bookshelf]));
+pub static CAULDRONS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Cauldron,
+ Block::WaterCauldron,
+ Block::LavaCauldron,
+ Block::PowderSnowCauldron,
+ ])
+});
+pub static SMELTS_TO_GLASS: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Sand, Block::RedSand]));
+pub static WALL_HANGING_SIGNS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakWallHangingSign,
+ Block::SpruceWallHangingSign,
+ Block::BirchWallHangingSign,
+ Block::AcaciaWallHangingSign,
+ Block::CherryWallHangingSign,
+ Block::JungleWallHangingSign,
+ Block::DarkOakWallHangingSign,
+ Block::CrimsonWallHangingSign,
+ Block::WarpedWallHangingSign,
+ Block::MangroveWallHangingSign,
+ Block::BambooWallHangingSign,
+ ])
+});
+pub static WALL_POST_OVERRIDE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Torch,
+ Block::SoulTorch,
+ Block::RedstoneTorch,
+ Block::Tripwire,
+ Block::WhiteBanner,
+ Block::OrangeBanner,
+ Block::MagentaBanner,
+ Block::LightBlueBanner,
+ Block::YellowBanner,
+ Block::LimeBanner,
+ Block::PinkBanner,
+ Block::GrayBanner,
+ Block::LightGrayBanner,
+ Block::CyanBanner,
+ Block::PurpleBanner,
+ Block::BlueBanner,
+ Block::BrownBanner,
+ Block::GreenBanner,
+ Block::RedBanner,
+ Block::BlackBanner,
+ Block::WhiteWallBanner,
+ Block::OrangeWallBanner,
+ Block::MagentaWallBanner,
+ Block::LightBlueWallBanner,
+ Block::YellowWallBanner,
+ Block::LimeWallBanner,
+ Block::PinkWallBanner,
+ Block::GrayWallBanner,
+ Block::LightGrayWallBanner,
+ Block::CyanWallBanner,
+ Block::PurpleWallBanner,
+ Block::BlueWallBanner,
+ Block::BrownWallBanner,
+ Block::GreenWallBanner,
+ Block::RedWallBanner,
+ Block::BlackWallBanner,
+ Block::LightWeightedPressurePlate,
+ Block::HeavyWeightedPressurePlate,
+ Block::OakSign,
+ Block::SpruceSign,
+ Block::BirchSign,
+ Block::AcaciaSign,
+ Block::JungleSign,
+ Block::DarkOakSign,
+ Block::CrimsonSign,
+ Block::WarpedSign,
+ Block::MangroveSign,
+ Block::BambooSign,
+ Block::CherrySign,
+ Block::OakWallSign,
+ Block::SpruceWallSign,
+ Block::BirchWallSign,
+ Block::AcaciaWallSign,
+ Block::JungleWallSign,
+ Block::DarkOakWallSign,
+ Block::CrimsonWallSign,
+ Block::WarpedWallSign,
+ Block::MangroveWallSign,
+ Block::BambooWallSign,
+ Block::CherryWallSign,
+ Block::OakPressurePlate,
+ Block::SprucePressurePlate,
+ Block::BirchPressurePlate,
+ Block::JunglePressurePlate,
+ Block::AcaciaPressurePlate,
+ Block::DarkOakPressurePlate,
+ Block::CrimsonPressurePlate,
+ Block::WarpedPressurePlate,
+ Block::MangrovePressurePlate,
+ Block::BambooPressurePlate,
+ Block::CherryPressurePlate,
+ Block::StonePressurePlate,
+ Block::PolishedBlackstonePressurePlate,
+ ])
+});
+pub static HOGLIN_REPELLENTS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::WarpedFungus,
+ Block::PottedWarpedFungus,
+ Block::NetherPortal,
+ Block::RespawnAnchor,
+ ])
+});
+pub static FLOWER_POTS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::FlowerPot,
+ Block::PottedPoppy,
+ Block::PottedBlueOrchid,
+ Block::PottedAllium,
+ Block::PottedAzureBluet,
+ Block::PottedRedTulip,
+ Block::PottedOrangeTulip,
+ Block::PottedWhiteTulip,
+ Block::PottedPinkTulip,
+ Block::PottedOxeyeDaisy,
+ Block::PottedDandelion,
+ Block::PottedOakSapling,
+ Block::PottedSpruceSapling,
+ Block::PottedBirchSapling,
+ Block::PottedJungleSapling,
+ Block::PottedAcaciaSapling,
+ Block::PottedDarkOakSapling,
+ Block::PottedRedMushroom,
+ Block::PottedBrownMushroom,
+ Block::PottedDeadBush,
+ Block::PottedFern,
+ Block::PottedCactus,
+ Block::PottedCornflower,
+ Block::PottedLilyOfTheValley,
+ Block::PottedWitherRose,
+ Block::PottedBamboo,
+ Block::PottedCrimsonFungus,
+ Block::PottedWarpedFungus,
+ Block::PottedCrimsonRoots,
+ Block::PottedWarpedRoots,
+ Block::PottedAzaleaBush,
+ Block::PottedFloweringAzaleaBush,
+ Block::PottedMangrovePropagule,
+ Block::PottedCherrySapling,
+ Block::PottedTorchflower,
+ ])
+});
+pub static JUNGLE_LOGS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::JungleLog,
+ Block::JungleWood,
+ Block::StrippedJungleLog,
+ Block::StrippedJungleWood,
+ ])
+});
+pub static DRIPSTONE_REPLACEABLE_BLOCKS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Stone,
+ Block::Granite,
+ Block::Diorite,
+ Block::Andesite,
+ Block::Tuff,
+ Block::Deepslate,
+ ])
+});
+pub static SNOW: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Snow, Block::SnowBlock, Block::PowderSnow]));
+pub static TRAPDOORS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::IronTrapdoor,
+ Block::AcaciaTrapdoor,
+ Block::BirchTrapdoor,
+ Block::DarkOakTrapdoor,
+ Block::JungleTrapdoor,
+ Block::OakTrapdoor,
+ Block::SpruceTrapdoor,
+ Block::CrimsonTrapdoor,
+ Block::WarpedTrapdoor,
+ Block::MangroveTrapdoor,
+ Block::BambooTrapdoor,
+ Block::CherryTrapdoor,
+ ])
+});
+pub static AXOLOTLS_SPAWNABLE_ON: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Clay]));
+pub static TRAIL_RUINS_REPLACEABLE: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Gravel]));
+pub static WARPED_STEMS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::WarpedStem,
+ Block::StrippedWarpedStem,
+ Block::WarpedHyphae,
+ Block::StrippedWarpedHyphae,
+ ])
+});
+pub static SNOW_LAYER_CAN_SURVIVE_ON: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::HoneyBlock, Block::SoulSand, Block::Mud]));
+pub static BASE_STONE_NETHER: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Netherrack, Block::Basalt, Block::Blackstone]));
+pub static CAMPFIRES: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::Campfire, Block::SoulCampfire]));
+pub static IRON_ORES: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::IronOre, Block::DeepslateIronOre]));
+pub static RAILS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Rail,
+ Block::PoweredRail,
+ Block::DetectorRail,
+ Block::ActivatorRail,
+ ])
+});
+pub static PLANKS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakPlanks,
+ Block::SprucePlanks,
+ Block::BirchPlanks,
+ Block::JunglePlanks,
+ Block::AcaciaPlanks,
+ Block::DarkOakPlanks,
+ Block::CrimsonPlanks,
+ Block::WarpedPlanks,
+ Block::MangrovePlanks,
+ Block::BambooPlanks,
+ Block::CherryPlanks,
+ ])
+});
+pub static COMBINATION_STEP_SOUND_BLOCKS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::MossCarpet,
+ Block::Snow,
+ Block::NetherSprouts,
+ Block::WarpedRoots,
+ Block::CrimsonRoots,
+ Block::WhiteCarpet,
+ Block::OrangeCarpet,
+ Block::MagentaCarpet,
+ Block::LightBlueCarpet,
+ Block::YellowCarpet,
+ Block::LimeCarpet,
+ Block::PinkCarpet,
+ Block::GrayCarpet,
+ Block::LightGrayCarpet,
+ Block::CyanCarpet,
+ Block::PurpleCarpet,
+ Block::BlueCarpet,
+ Block::BrownCarpet,
+ Block::GreenCarpet,
+ Block::RedCarpet,
+ Block::BlackCarpet,
+ ])
+});
+pub static SCULK_REPLACEABLE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Sand,
+ Block::RedSand,
+ Block::Gravel,
+ Block::SoulSand,
+ Block::SoulSoil,
+ Block::Calcite,
+ Block::SmoothBasalt,
+ Block::Clay,
+ Block::DripstoneBlock,
+ Block::EndStone,
+ Block::RedSandstone,
+ Block::Sandstone,
+ Block::Stone,
+ Block::Granite,
+ Block::Diorite,
+ Block::Andesite,
+ Block::Tuff,
+ Block::Deepslate,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ Block::Terracotta,
+ Block::WhiteTerracotta,
+ Block::OrangeTerracotta,
+ Block::MagentaTerracotta,
+ Block::LightBlueTerracotta,
+ Block::YellowTerracotta,
+ Block::LimeTerracotta,
+ Block::PinkTerracotta,
+ Block::GrayTerracotta,
+ Block::LightGrayTerracotta,
+ Block::CyanTerracotta,
+ Block::PurpleTerracotta,
+ Block::BlueTerracotta,
+ Block::BrownTerracotta,
+ Block::GreenTerracotta,
+ Block::RedTerracotta,
+ Block::BlackTerracotta,
+ Block::CrimsonNylium,
+ Block::WarpedNylium,
+ Block::Netherrack,
+ Block::Basalt,
+ Block::Blackstone,
+ ])
+});
+pub static BAMBOO_BLOCKS: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::BambooBlock, Block::StrippedBambooBlock]));
+pub static MOSS_REPLACEABLE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Stone,
+ Block::Granite,
+ Block::Diorite,
+ Block::Andesite,
+ Block::Tuff,
+ Block::Deepslate,
+ Block::CaveVinesPlant,
+ Block::CaveVines,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ ])
+});
+pub static CANDLES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Candle,
+ Block::WhiteCandle,
+ Block::OrangeCandle,
+ Block::MagentaCandle,
+ Block::LightBlueCandle,
+ Block::YellowCandle,
+ Block::LimeCandle,
+ Block::PinkCandle,
+ Block::GrayCandle,
+ Block::LightGrayCandle,
+ Block::CyanCandle,
+ Block::PurpleCandle,
+ Block::BlueCandle,
+ Block::BrownCandle,
+ Block::GreenCandle,
+ Block::RedCandle,
+ Block::BlackCandle,
+ ])
+});
+pub static SPRUCE_LOGS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::SpruceLog,
+ Block::SpruceWood,
+ Block::StrippedSpruceLog,
+ Block::StrippedSpruceWood,
+ ])
+});
+pub static OCCLUDES_VIBRATION_SIGNALS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::WhiteWool,
+ Block::OrangeWool,
+ Block::MagentaWool,
+ Block::LightBlueWool,
+ Block::YellowWool,
+ Block::LimeWool,
+ Block::PinkWool,
+ Block::GrayWool,
+ Block::LightGrayWool,
+ Block::CyanWool,
+ Block::PurpleWool,
+ Block::BlueWool,
+ Block::BrownWool,
+ Block::GreenWool,
+ Block::RedWool,
+ Block::BlackWool,
+ ])
+});
+pub static AZALEA_ROOT_REPLACEABLE: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::RedSand,
+ Block::Clay,
+ Block::Gravel,
+ Block::Sand,
+ Block::SnowBlock,
+ Block::PowderSnow,
+ Block::Stone,
+ Block::Granite,
+ Block::Diorite,
+ Block::Andesite,
+ Block::Tuff,
+ Block::Deepslate,
+ Block::Dirt,
+ Block::GrassBlock,
+ Block::Podzol,
+ Block::CoarseDirt,
+ Block::Mycelium,
+ Block::RootedDirt,
+ Block::MossBlock,
+ Block::Mud,
+ Block::MuddyMangroveRoots,
+ Block::Terracotta,
+ Block::WhiteTerracotta,
+ Block::OrangeTerracotta,
+ Block::MagentaTerracotta,
+ Block::LightBlueTerracotta,
+ Block::YellowTerracotta,
+ Block::LimeTerracotta,
+ Block::PinkTerracotta,
+ Block::GrayTerracotta,
+ Block::LightGrayTerracotta,
+ Block::CyanTerracotta,
+ Block::PurpleTerracotta,
+ Block::BlueTerracotta,
+ Block::BrownTerracotta,
+ Block::GreenTerracotta,
+ Block::RedTerracotta,
+ Block::BlackTerracotta,
+ ])
+});
+pub static RABBITS_SPAWNABLE_ON: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::GrassBlock,
+ Block::Snow,
+ Block::SnowBlock,
+ Block::Sand,
+ ])
+});
+pub static SAPLINGS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::OakSapling,
+ Block::SpruceSapling,
+ Block::BirchSapling,
+ Block::JungleSapling,
+ Block::AcaciaSapling,
+ Block::DarkOakSapling,
+ Block::Azalea,
+ Block::FloweringAzalea,
+ Block::MangrovePropagule,
+ Block::CherrySapling,
+ ])
+});
+pub static LEAVES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::JungleLeaves,
+ Block::OakLeaves,
+ Block::SpruceLeaves,
+ Block::DarkOakLeaves,
+ Block::AcaciaLeaves,
+ Block::BirchLeaves,
+ Block::AzaleaLeaves,
+ Block::FloweringAzaleaLeaves,
+ Block::MangroveLeaves,
+ Block::CherryLeaves,
+ ])
+});
+pub static STONE_BUTTONS: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::StoneButton, Block::PolishedBlackstoneButton]));
+pub static REDSTONE_ORES: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::RedstoneOre, Block::DeepslateRedstoneOre]));
+pub static CRIMSON_STEMS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::CrimsonStem,
+ Block::StrippedCrimsonStem,
+ Block::CrimsonHyphae,
+ Block::StrippedCrimsonHyphae,
+ ])
+});
+pub static FROGS_SPAWNABLE_ON: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::GrassBlock,
+ Block::Mud,
+ Block::MangroveRoots,
+ Block::MuddyMangroveRoots,
+ ])
+});
+pub static MAINTAINS_FARMLAND: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::PumpkinStem,
+ Block::AttachedPumpkinStem,
+ Block::MelonStem,
+ Block::AttachedMelonStem,
+ Block::Beetroots,
+ Block::Carrots,
+ Block::Potatoes,
+ Block::TorchflowerCrop,
+ Block::Torchflower,
+ Block::PitcherCrop,
+ Block::Wheat,
+ ])
+});
+pub static CROPS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::Beetroots,
+ Block::Carrots,
+ Block::Potatoes,
+ Block::Wheat,
+ Block::MelonStem,
+ Block::PumpkinStem,
+ Block::TorchflowerCrop,
+ Block::PitcherCrop,
+ ])
+});
+pub static WALLS: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::CobblestoneWall,
+ Block::MossyCobblestoneWall,
+ Block::BrickWall,
+ Block::PrismarineWall,
+ Block::RedSandstoneWall,
+ Block::MossyStoneBrickWall,
+ Block::GraniteWall,
+ Block::StoneBrickWall,
+ Block::NetherBrickWall,
+ Block::AndesiteWall,
+ Block::RedNetherBrickWall,
+ Block::SandstoneWall,
+ Block::EndStoneBrickWall,
+ Block::DioriteWall,
+ Block::BlackstoneWall,
+ Block::PolishedBlackstoneBrickWall,
+ Block::PolishedBlackstoneWall,
+ Block::CobbledDeepslateWall,
+ Block::PolishedDeepslateWall,
+ Block::DeepslateTileWall,
+ Block::DeepslateBrickWall,
+ Block::MudBrickWall,
+ ])
+});
+pub static STONE_PRESSURE_PLATES: Lazy<HashSet<Block>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Block::StonePressurePlate,
+ Block::PolishedBlackstonePressurePlate,
+ ])
+});
+pub static VIBRATION_RESONATORS: Lazy<HashSet<Block>> =
+ Lazy::new(|| HashSet::from_iter(vec![Block::AmethystBlock]));
diff --git a/azalea-registry/src/tags/fluids.rs b/azalea-registry/src/tags/fluids.rs
new file mode 100644
index 00000000..4f177f95
--- /dev/null
+++ b/azalea-registry/src/tags/fluids.rs
@@ -0,0 +1,12 @@
+// This file was generated by codegen/lib/code/tags.py, don't edit it manually!
+
+use std::collections::HashSet;
+
+use once_cell::sync::Lazy;
+
+use crate::Fluid;
+
+pub static LAVA: Lazy<HashSet<Fluid>> =
+ Lazy::new(|| HashSet::from_iter(vec![Fluid::Lava, Fluid::FlowingLava]));
+pub static WATER: Lazy<HashSet<Fluid>> =
+ Lazy::new(|| HashSet::from_iter(vec![Fluid::Water, Fluid::FlowingWater]));
diff --git a/azalea-registry/src/tags/items.rs b/azalea-registry/src/tags/items.rs
new file mode 100644
index 00000000..d826703d
--- /dev/null
+++ b/azalea-registry/src/tags/items.rs
@@ -0,0 +1,1379 @@
+// This file was generated by codegen/lib/code/tags.py, don't edit it manually!
+
+use std::collections::HashSet;
+
+use once_cell::sync::Lazy;
+
+use crate::Item;
+
+pub static WOODEN_FENCES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakFence,
+ Item::AcaciaFence,
+ Item::DarkOakFence,
+ Item::SpruceFence,
+ Item::BirchFence,
+ Item::JungleFence,
+ Item::CrimsonFence,
+ Item::WarpedFence,
+ Item::MangroveFence,
+ Item::BambooFence,
+ Item::CherryFence,
+ ])
+});
+pub static ACACIA_LOGS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::AcaciaLog,
+ Item::AcaciaWood,
+ Item::StrippedAcaciaLog,
+ Item::StrippedAcaciaWood,
+ ])
+});
+pub static CREEPER_IGNITERS: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::FlintAndSteel, Item::FireCharge]));
+pub static WOODEN_SLABS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakSlab,
+ Item::SpruceSlab,
+ Item::BirchSlab,
+ Item::JungleSlab,
+ Item::AcaciaSlab,
+ Item::DarkOakSlab,
+ Item::CrimsonSlab,
+ Item::WarpedSlab,
+ Item::MangroveSlab,
+ Item::BambooSlab,
+ Item::CherrySlab,
+ ])
+});
+pub static WOODEN_STAIRS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakStairs,
+ Item::SpruceStairs,
+ Item::BirchStairs,
+ Item::JungleStairs,
+ Item::AcaciaStairs,
+ Item::DarkOakStairs,
+ Item::CrimsonStairs,
+ Item::WarpedStairs,
+ Item::MangroveStairs,
+ Item::BambooStairs,
+ Item::CherryStairs,
+ ])
+});
+pub static MANGROVE_LOGS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::MangroveLog,
+ Item::MangroveWood,
+ Item::StrippedMangroveLog,
+ Item::StrippedMangroveWood,
+ ])
+});
+pub static SHOVELS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::DiamondShovel,
+ Item::StoneShovel,
+ Item::GoldenShovel,
+ Item::NetheriteShovel,
+ Item::WoodenShovel,
+ Item::IronShovel,
+ ])
+});
+pub static DARK_OAK_LOGS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::DarkOakLog,
+ Item::DarkOakWood,
+ Item::StrippedDarkOakLog,
+ Item::StrippedDarkOakWood,
+ ])
+});
+pub static EMERALD_ORES: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::EmeraldOre, Item::DeepslateEmeraldOre]));
+pub static TALL_FLOWERS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Sunflower,
+ Item::Lilac,
+ Item::Peony,
+ Item::RoseBush,
+ Item::PitcherPlant,
+ ])
+});
+pub static DOORS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::IronDoor,
+ Item::OakDoor,
+ Item::SpruceDoor,
+ Item::BirchDoor,
+ Item::JungleDoor,
+ Item::AcaciaDoor,
+ Item::DarkOakDoor,
+ Item::CrimsonDoor,
+ Item::WarpedDoor,
+ Item::MangroveDoor,
+ Item::BambooDoor,
+ Item::CherryDoor,
+ ])
+});
+pub static BEDS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::RedBed,
+ Item::BlackBed,
+ Item::BlueBed,
+ Item::BrownBed,
+ Item::CyanBed,
+ Item::GrayBed,
+ Item::GreenBed,
+ Item::LightBlueBed,
+ Item::LightGrayBed,
+ Item::LimeBed,
+ Item::MagentaBed,
+ Item::OrangeBed,
+ Item::PinkBed,
+ Item::PurpleBed,
+ Item::WhiteBed,
+ Item::YellowBed,
+ ])
+});
+pub static COMPASSES: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::Compass, Item::RecoveryCompass]));
+pub static DECORATED_POT_INGREDIENTS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Brick,
+ Item::AnglerPotterySherd,
+ Item::ArcherPotterySherd,
+ Item::ArmsUpPotterySherd,
+ Item::BladePotterySherd,
+ Item::BrewerPotterySherd,
+ Item::BurnPotterySherd,
+ Item::DangerPotterySherd,
+ Item::ExplorerPotterySherd,
+ Item::FriendPotterySherd,
+ Item::HeartPotterySherd,
+ Item::HeartbreakPotterySherd,
+ Item::HowlPotterySherd,
+ Item::MinerPotterySherd,
+ Item::MournerPotterySherd,
+ Item::PlentyPotterySherd,
+ Item::PrizePotterySherd,
+ Item::SheafPotterySherd,
+ Item::ShelterPotterySherd,
+ Item::SkullPotterySherd,
+ Item::SnortPotterySherd,
+ ])
+});
+pub static COPPER_ORES: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::CopperOre, Item::DeepslateCopperOre]));
+pub static TRIM_TEMPLATES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::WardArmorTrimSmithingTemplate,
+ Item::SpireArmorTrimSmithingTemplate,
+ Item::CoastArmorTrimSmithingTemplate,
+ Item::EyeArmorTrimSmithingTemplate,
+ Item::DuneArmorTrimSmithingTemplate,
+ Item::WildArmorTrimSmithingTemplate,
+ Item::RibArmorTrimSmithingTemplate,
+ Item::TideArmorTrimSmithingTemplate,
+ Item::SentryArmorTrimSmithingTemplate,
+ Item::VexArmorTrimSmithingTemplate,
+ Item::SnoutArmorTrimSmithingTemplate,
+ Item::WayfinderArmorTrimSmithingTemplate,
+ Item::ShaperArmorTrimSmithingTemplate,
+ Item::SilenceArmorTrimSmithingTemplate,
+ Item::RaiserArmorTrimSmithingTemplate,
+ Item::HostArmorTrimSmithingTemplate,
+ ])
+});
+pub static WOODEN_PRESSURE_PLATES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakPressurePlate,
+ Item::SprucePressurePlate,
+ Item::BirchPressurePlate,
+ Item::JunglePressurePlate,
+ Item::AcaciaPressurePlate,
+ Item::DarkOakPressurePlate,
+ Item::CrimsonPressurePlate,
+ Item::WarpedPressurePlate,
+ Item::MangrovePressurePlate,
+ Item::BambooPressurePlate,
+ Item::CherryPressurePlate,
+ ])
+});
+pub static NOTEBLOCK_TOP_INSTRUMENTS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::ZombieHead,
+ Item::SkeletonSkull,
+ Item::CreeperHead,
+ Item::DragonHead,
+ Item::WitherSkeletonSkull,
+ Item::PiglinHead,
+ Item::PlayerHead,
+ ])
+});
+pub static BREAKS_DECORATED_POTS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Trident,
+ Item::DiamondSword,
+ Item::StoneSword,
+ Item::GoldenSword,
+ Item::NetheriteSword,
+ Item::WoodenSword,
+ Item::IronSword,
+ Item::DiamondAxe,
+ Item::StoneAxe,
+ Item::GoldenAxe,
+ Item::NetheriteAxe,
+ Item::WoodenAxe,
+ Item::IronAxe,
+ Item::DiamondPickaxe,
+ Item::StonePickaxe,
+ Item::GoldenPickaxe,
+ Item::NetheritePickaxe,
+ Item::WoodenPickaxe,
+ Item::IronPickaxe,
+ Item::DiamondShovel,
+ Item::StoneShovel,
+ Item::GoldenShovel,
+ Item::NetheriteShovel,
+ Item::WoodenShovel,
+ Item::IronShovel,
+ Item::DiamondHoe,
+ Item::StoneHoe,
+ Item::GoldenHoe,
+ Item::NetheriteHoe,
+ Item::WoodenHoe,
+ Item::IronHoe,
+ ])
+});
+pub static SAND: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Sand,
+ Item::RedSand,
+ Item::SuspiciousSand,
+ Item::SuspiciousSand,
+ ])
+});
+pub static LOGS_THAT_BURN: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::DarkOakLog,
+ Item::DarkOakWood,
+ Item::StrippedDarkOakLog,
+ Item::StrippedDarkOakWood,
+ Item::OakLog,
+ Item::OakWood,
+ Item::StrippedOakLog,
+ Item::StrippedOakWood,
+ Item::AcaciaLog,
+ Item::AcaciaWood,
+ Item::StrippedAcaciaLog,
+ Item::StrippedAcaciaWood,
+ Item::BirchLog,
+ Item::BirchWood,
+ Item::StrippedBirchLog,
+ Item::StrippedBirchWood,
+ Item::JungleLog,
+ Item::JungleWood,
+ Item::StrippedJungleLog,
+ Item::StrippedJungleWood,
+ Item::SpruceLog,
+ Item::SpruceWood,
+ Item::StrippedSpruceLog,
+ Item::StrippedSpruceWood,
+ Item::MangroveLog,
+ Item::MangroveWood,
+ Item::StrippedMangroveLog,
+ Item::StrippedMangroveWood,
+ Item::CherryLog,
+ Item::CherryWood,
+ Item::StrippedCherryLog,
+ Item::StrippedCherryWood,
+ ])
+});
+pub static CHERRY_LOGS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::CherryLog,
+ Item::CherryWood,
+ Item::StrippedCherryLog,
+ Item::StrippedCherryWood,
+ ])
+});
+pub static DAMPENS_VIBRATIONS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::WhiteWool,
+ Item::OrangeWool,
+ Item::MagentaWool,
+ Item::LightBlueWool,
+ Item::YellowWool,
+ Item::LimeWool,
+ Item::PinkWool,
+ Item::GrayWool,
+ Item::LightGrayWool,
+ Item::CyanWool,
+ Item::PurpleWool,
+ Item::BlueWool,
+ Item::BrownWool,
+ Item::GreenWool,
+ Item::RedWool,
+ Item::BlackWool,
+ Item::WhiteCarpet,
+ Item::OrangeCarpet,
+ Item::MagentaCarpet,
+ Item::LightBlueCarpet,
+ Item::YellowCarpet,
+ Item::LimeCarpet,
+ Item::PinkCarpet,
+ Item::GrayCarpet,
+ Item::LightGrayCarpet,
+ Item::CyanCarpet,
+ Item::PurpleCarpet,
+ Item::BlueCarpet,
+ Item::BrownCarpet,
+ Item::GreenCarpet,
+ Item::RedCarpet,
+ Item::BlackCarpet,
+ ])
+});
+pub static DIAMOND_ORES: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::DiamondOre, Item::DeepslateDiamondOre]));
+pub static WOOL: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::WhiteWool,
+ Item::OrangeWool,
+ Item::MagentaWool,
+ Item::LightBlueWool,
+ Item::YellowWool,
+ Item::LimeWool,
+ Item::PinkWool,
+ Item::GrayWool,
+ Item::LightGrayWool,
+ Item::CyanWool,
+ Item::PurpleWool,
+ Item::BlueWool,
+ Item::BrownWool,
+ Item::GreenWool,
+ Item::RedWool,
+ Item::BlackWool,
+ ])
+});
+pub static WOODEN_TRAPDOORS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::AcaciaTrapdoor,
+ Item::BirchTrapdoor,
+ Item::DarkOakTrapdoor,
+ Item::JungleTrapdoor,
+ Item::OakTrapdoor,
+ Item::SpruceTrapdoor,
+ Item::CrimsonTrapdoor,
+ Item::WarpedTrapdoor,
+ Item::MangroveTrapdoor,
+ Item::BambooTrapdoor,
+ Item::CherryTrapdoor,
+ ])
+});
+pub static FLOWERS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::FloweringAzaleaLeaves,
+ Item::FloweringAzalea,
+ Item::MangrovePropagule,
+ Item::CherryLeaves,
+ Item::PinkPetals,
+ Item::Dandelion,
+ Item::Poppy,
+ Item::BlueOrchid,
+ Item::Allium,
+ Item::AzureBluet,
+ Item::RedTulip,
+ Item::OrangeTulip,
+ Item::WhiteTulip,
+ Item::PinkTulip,
+ Item::OxeyeDaisy,
+ Item::Cornflower,
+ Item::LilyOfTheValley,
+ Item::WitherRose,
+ Item::Torchflower,
+ Item::Sunflower,
+ Item::Lilac,
+ Item::Peony,
+ Item::RoseBush,
+ Item::PitcherPlant,
+ ])
+});
+pub static BANNERS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::WhiteBanner,
+ Item::OrangeBanner,
+ Item::MagentaBanner,
+ Item::LightBlueBanner,
+ Item::YellowBanner,
+ Item::LimeBanner,
+ Item::PinkBanner,
+ Item::GrayBanner,
+ Item::LightGrayBanner,
+ Item::CyanBanner,
+ Item::PurpleBanner,
+ Item::BlueBanner,
+ Item::BrownBanner,
+ Item::GreenBanner,
+ Item::RedBanner,
+ Item::BlackBanner,
+ ])
+});
+pub static TERRACOTTA: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Terracotta,
+ Item::WhiteTerracotta,
+ Item::OrangeTerracotta,
+ Item::MagentaTerracotta,
+ Item::LightBlueTerracotta,
+ Item::YellowTerracotta,
+ Item::LimeTerracotta,
+ Item::PinkTerracotta,
+ Item::GrayTerracotta,
+ Item::LightGrayTerracotta,
+ Item::CyanTerracotta,
+ Item::PurpleTerracotta,
+ Item::BlueTerracotta,
+ Item::BrownTerracotta,
+ Item::GreenTerracotta,
+ Item::RedTerracotta,
+ Item::BlackTerracotta,
+ ])
+});
+pub static COALS: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::Coal, Item::Charcoal]));
+pub static BIRCH_LOGS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::BirchLog,
+ Item::BirchWood,
+ Item::StrippedBirchLog,
+ Item::StrippedBirchWood,
+ ])
+});
+pub static PIGLIN_REPELLENTS: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::SoulTorch, Item::SoulLantern, Item::SoulCampfire]));
+pub static CREEPER_DROP_MUSIC_DISCS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::MusicDisc13,
+ Item::MusicDiscCat,
+ Item::MusicDiscBlocks,
+ Item::MusicDiscChirp,
+ Item::MusicDiscFar,
+ Item::MusicDiscMall,
+ Item::MusicDiscMellohi,
+ Item::MusicDiscStal,
+ Item::MusicDiscStrad,
+ Item::MusicDiscWard,
+ Item::MusicDisc11,
+ Item::MusicDiscWait,
+ ])
+});
+pub static SLABS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::BambooMosaicSlab,
+ Item::StoneSlab,
+ Item::SmoothStoneSlab,
+ Item::StoneBrickSlab,
+ Item::SandstoneSlab,
+ Item::PurpurSlab,
+ Item::QuartzSlab,
+ Item::RedSandstoneSlab,
+ Item::BrickSlab,
+ Item::CobblestoneSlab,
+ Item::NetherBrickSlab,
+ Item::PetrifiedOakSlab,
+ Item::PrismarineSlab,
+ Item::PrismarineBrickSlab,
+ Item::DarkPrismarineSlab,
+ Item::PolishedGraniteSlab,
+ Item::SmoothRedSandstoneSlab,
+ Item::MossyStoneBrickSlab,
+ Item::PolishedDioriteSlab,
+ Item::MossyCobblestoneSlab,
+ Item::EndStoneBrickSlab,
+ Item::SmoothSandstoneSlab,
+ Item::SmoothQuartzSlab,
+ Item::GraniteSlab,
+ Item::AndesiteSlab,
+ Item::RedNetherBrickSlab,
+ Item::PolishedAndesiteSlab,
+ Item::DioriteSlab,
+ Item::CutSandstoneSlab,
+ Item::CutRedSandstoneSlab,
+ Item::BlackstoneSlab,
+ Item::PolishedBlackstoneBrickSlab,
+ Item::PolishedBlackstoneSlab,
+ Item::CobbledDeepslateSlab,
+ Item::PolishedDeepslateSlab,
+ Item::DeepslateTileSlab,
+ Item::DeepslateBrickSlab,
+ Item::WaxedWeatheredCutCopperSlab,
+ Item::WaxedExposedCutCopperSlab,
+ Item::WaxedCutCopperSlab,
+ Item::OxidizedCutCopperSlab,
+ Item::WeatheredCutCopperSlab,
+ Item::ExposedCutCopperSlab,
+ Item::CutCopperSlab,
+ Item::WaxedOxidizedCutCopperSlab,
+ Item::MudBrickSlab,
+ Item::OakSlab,
+ Item::SpruceSlab,
+ Item::BirchSlab,
+ Item::JungleSlab,
+ Item::AcaciaSlab,
+ Item::DarkOakSlab,
+ Item::CrimsonSlab,
+ Item::WarpedSlab,
+ Item::MangroveSlab,
+ Item::BambooSlab,
+ Item::CherrySlab,
+ ])
+});
+pub static ANVIL: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::Anvil, Item::ChippedAnvil, Item::DamagedAnvil]));
+pub static STAIRS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::BambooMosaicStairs,
+ Item::CobblestoneStairs,
+ Item::SandstoneStairs,
+ Item::NetherBrickStairs,
+ Item::StoneBrickStairs,
+ Item::BrickStairs,
+ Item::PurpurStairs,
+ Item::QuartzStairs,
+ Item::RedSandstoneStairs,
+ Item::PrismarineBrickStairs,
+ Item::PrismarineStairs,
+ Item::DarkPrismarineStairs,
+ Item::PolishedGraniteStairs,
+ Item::SmoothRedSandstoneStairs,
+ Item::MossyStoneBrickStairs,
+ Item::PolishedDioriteStairs,
+ Item::MossyCobblestoneStairs,
+ Item::EndStoneBrickStairs,
+ Item::StoneStairs,
+ Item::SmoothSandstoneStairs,
+ Item::SmoothQuartzStairs,
+ Item::GraniteStairs,
+ Item::AndesiteStairs,
+ Item::RedNetherBrickStairs,
+ Item::PolishedAndesiteStairs,
+ Item::DioriteStairs,
+ Item::BlackstoneStairs,
+ Item::PolishedBlackstoneBrickStairs,
+ Item::PolishedBlackstoneStairs,
+ Item::CobbledDeepslateStairs,
+ Item::PolishedDeepslateStairs,
+ Item::DeepslateTileStairs,
+ Item::DeepslateBrickStairs,
+ Item::OxidizedCutCopperStairs,
+ Item::WeatheredCutCopperStairs,
+ Item::ExposedCutCopperStairs,
+ Item::CutCopperStairs,
+ Item::WaxedWeatheredCutCopperStairs,
+ Item::WaxedExposedCutCopperStairs,
+ Item::WaxedCutCopperStairs,
+ Item::WaxedOxidizedCutCopperStairs,
+ Item::MudBrickStairs,
+ Item::OakStairs,
+ Item::SpruceStairs,
+ Item::BirchStairs,
+ Item::JungleStairs,
+ Item::AcaciaStairs,
+ Item::DarkOakStairs,
+ Item::CrimsonStairs,
+ Item::WarpedStairs,
+ Item::MangroveStairs,
+ Item::BambooStairs,
+ Item::CherryStairs,
+ ])
+});
+pub static STONE_CRAFTING_MATERIALS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Cobblestone,
+ Item::Blackstone,
+ Item::CobbledDeepslate,
+ ])
+});
+pub static FISHES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Cod,
+ Item::CookedCod,
+ Item::Salmon,
+ Item::CookedSalmon,
+ Item::Pufferfish,
+ Item::TropicalFish,
+ ])
+});
+pub static SOUL_FIRE_BASE_BLOCKS: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::SoulSand, Item::SoulSoil]));
+pub static AXOLOTL_TEMPT_ITEMS: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::TropicalFishBucket]));
+pub static WOOL_CARPETS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::WhiteCarpet,
+ Item::OrangeCarpet,
+ Item::MagentaCarpet,
+ Item::LightBlueCarpet,
+ Item::YellowCarpet,
+ Item::LimeCarpet,
+ Item::PinkCarpet,
+ Item::GrayCarpet,
+ Item::LightGrayCarpet,
+ Item::CyanCarpet,
+ Item::PurpleCarpet,
+ Item::BlueCarpet,
+ Item::BrownCarpet,
+ Item::GreenCarpet,
+ Item::RedCarpet,
+ Item::BlackCarpet,
+ ])
+});
+pub static VILLAGER_PLANTABLE_SEEDS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::WheatSeeds,
+ Item::Potato,
+ Item::Carrot,
+ Item::BeetrootSeeds,
+ Item::TorchflowerSeeds,
+ Item::PitcherPod,
+ ])
+});
+pub static WOODEN_DOORS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakDoor,
+ Item::SpruceDoor,
+ Item::BirchDoor,
+ Item::JungleDoor,
+ Item::AcaciaDoor,
+ Item::DarkOakDoor,
+ Item::CrimsonDoor,
+ Item::WarpedDoor,
+ Item::MangroveDoor,
+ Item::BambooDoor,
+ Item::CherryDoor,
+ ])
+});
+pub static COAL_ORES: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::CoalOre, Item::DeepslateCoalOre]));
+pub static TOOLS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Trident,
+ Item::DiamondSword,
+ Item::StoneSword,
+ Item::GoldenSword,
+ Item::NetheriteSword,
+ Item::WoodenSword,
+ Item::IronSword,
+ Item::DiamondAxe,
+ Item::StoneAxe,
+ Item::GoldenAxe,
+ Item::NetheriteAxe,
+ Item::WoodenAxe,
+ Item::IronAxe,
+ Item::DiamondPickaxe,
+ Item::StonePickaxe,
+ Item::GoldenPickaxe,
+ Item::NetheritePickaxe,
+ Item::WoodenPickaxe,
+ Item::IronPickaxe,
+ Item::DiamondShovel,
+ Item::StoneShovel,
+ Item::GoldenShovel,
+ Item::NetheriteShovel,
+ Item::WoodenShovel,
+ Item::IronShovel,
+ Item::DiamondHoe,
+ Item::StoneHoe,
+ Item::GoldenHoe,
+ Item::NetheriteHoe,
+ Item::WoodenHoe,
+ Item::IronHoe,
+ ])
+});
+pub static BUTTONS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakButton,
+ Item::SpruceButton,
+ Item::BirchButton,
+ Item::JungleButton,
+ Item::AcaciaButton,
+ Item::DarkOakButton,
+ Item::CrimsonButton,
+ Item::WarpedButton,
+ Item::MangroveButton,
+ Item::BambooButton,
+ Item::CherryButton,
+ Item::StoneButton,
+ Item::PolishedBlackstoneButton,
+ ])
+});
+pub static GOLD_ORES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::GoldOre,
+ Item::NetherGoldOre,
+ Item::DeepslateGoldOre,
+ ])
+});
+pub static WART_BLOCKS: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::NetherWartBlock, Item::WarpedWartBlock]));
+pub static NON_FLAMMABLE_WOOD: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::WarpedStem,
+ Item::StrippedWarpedStem,
+ Item::WarpedHyphae,
+ Item::StrippedWarpedHyphae,
+ Item::CrimsonStem,
+ Item::StrippedCrimsonStem,
+ Item::CrimsonHyphae,
+ Item::StrippedCrimsonHyphae,
+ Item::CrimsonPlanks,
+ Item::WarpedPlanks,
+ Item::CrimsonSlab,
+ Item::WarpedSlab,
+ Item::CrimsonPressurePlate,
+ Item::WarpedPressurePlate,
+ Item::CrimsonFence,
+ Item::WarpedFence,
+ Item::CrimsonTrapdoor,
+ Item::WarpedTrapdoor,
+ Item::CrimsonFenceGate,
+ Item::WarpedFenceGate,
+ Item::CrimsonStairs,
+ Item::WarpedStairs,
+ Item::CrimsonButton,
+ Item::WarpedButton,
+ Item::CrimsonDoor,
+ Item::WarpedDoor,
+ Item::CrimsonSign,
+ Item::WarpedSign,
+ Item::WarpedHangingSign,
+ Item::CrimsonHangingSign,
+ ])
+});
+pub static PICKAXES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::DiamondPickaxe,
+ Item::StonePickaxe,
+ Item::GoldenPickaxe,
+ Item::NetheritePickaxe,
+ Item::WoodenPickaxe,
+ Item::IronPickaxe,
+ ])
+});
+pub static HOES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::DiamondHoe,
+ Item::StoneHoe,
+ Item::GoldenHoe,
+ Item::NetheriteHoe,
+ Item::WoodenHoe,
+ Item::IronHoe,
+ ])
+});
+pub static FENCES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::NetherBrickFence,
+ Item::OakFence,
+ Item::AcaciaFence,
+ Item::DarkOakFence,
+ Item::SpruceFence,
+ Item::BirchFence,
+ Item::JungleFence,
+ Item::CrimsonFence,
+ Item::WarpedFence,
+ Item::MangroveFence,
+ Item::BambooFence,
+ Item::CherryFence,
+ ])
+});
+pub static COMPLETES_FIND_TREE_TUTORIAL: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::JungleLeaves,
+ Item::OakLeaves,
+ Item::SpruceLeaves,
+ Item::DarkOakLeaves,
+ Item::AcaciaLeaves,
+ Item::BirchLeaves,
+ Item::AzaleaLeaves,
+ Item::FloweringAzaleaLeaves,
+ Item::MangroveLeaves,
+ Item::CherryLeaves,
+ Item::NetherWartBlock,
+ Item::WarpedWartBlock,
+ Item::CrimsonStem,
+ Item::StrippedCrimsonStem,
+ Item::CrimsonHyphae,
+ Item::StrippedCrimsonHyphae,
+ Item::WarpedStem,
+ Item::StrippedWarpedStem,
+ Item::WarpedHyphae,
+ Item::StrippedWarpedHyphae,
+ Item::DarkOakLog,
+ Item::DarkOakWood,
+ Item::StrippedDarkOakLog,
+ Item::StrippedDarkOakWood,
+ Item::OakLog,
+ Item::OakWood,
+ Item::StrippedOakLog,
+ Item::StrippedOakWood,
+ Item::AcaciaLog,
+ Item::AcaciaWood,
+ Item::StrippedAcaciaLog,
+ Item::StrippedAcaciaWood,
+ Item::BirchLog,
+ Item::BirchWood,
+ Item::StrippedBirchLog,
+ Item::StrippedBirchWood,
+ Item::JungleLog,
+ Item::JungleWood,
+ Item::StrippedJungleLog,
+ Item::StrippedJungleWood,
+ Item::SpruceLog,
+ Item::SpruceWood,
+ Item::StrippedSpruceLog,
+ Item::StrippedSpruceWood,
+ Item::MangroveLog,
+ Item::MangroveWood,
+ Item::StrippedMangroveLog,
+ Item::StrippedMangroveWood,
+ Item::CherryLog,
+ Item::CherryWood,
+ Item::StrippedCherryLog,
+ Item::StrippedCherryWood,
+ ])
+});
+pub static SMALL_FLOWERS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Dandelion,
+ Item::Poppy,
+ Item::BlueOrchid,
+ Item::Allium,
+ Item::AzureBluet,
+ Item::RedTulip,
+ Item::OrangeTulip,
+ Item::WhiteTulip,
+ Item::PinkTulip,
+ Item::OxeyeDaisy,
+ Item::Cornflower,
+ Item::LilyOfTheValley,
+ Item::WitherRose,
+ Item::Torchflower,
+ ])
+});
+pub static PIGLIN_FOOD: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::Porkchop, Item::CookedPorkchop]));
+pub static FENCE_GATES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::AcaciaFenceGate,
+ Item::BirchFenceGate,
+ Item::DarkOakFenceGate,
+ Item::JungleFenceGate,
+ Item::OakFenceGate,
+ Item::SpruceFenceGate,
+ Item::CrimsonFenceGate,
+ Item::WarpedFenceGate,
+ Item::MangroveFenceGate,
+ Item::BambooFenceGate,
+ Item::CherryFenceGate,
+ ])
+});
+pub static OAK_LOGS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakLog,
+ Item::OakWood,
+ Item::StrippedOakLog,
+ Item::StrippedOakWood,
+ ])
+});
+pub static TRIM_MATERIALS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::IronIngot,
+ Item::CopperIngot,
+ Item::GoldIngot,
+ Item::LapisLazuli,
+ Item::Emerald,
+ Item::Diamond,
+ Item::NetheriteIngot,
+ Item::Redstone,
+ Item::Quartz,
+ Item::AmethystShard,
+ ])
+});
+pub static STONE_BRICKS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::StoneBricks,
+ Item::MossyStoneBricks,
+ Item::CrackedStoneBricks,
+ Item::ChiseledStoneBricks,
+ ])
+});
+pub static STONE_TOOL_MATERIALS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Cobblestone,
+ Item::Blackstone,
+ Item::CobbledDeepslate,
+ ])
+});
+pub static LAPIS_ORES: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::LapisOre, Item::DeepslateLapisOre]));
+pub static SIGNS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakSign,
+ Item::SpruceSign,
+ Item::BirchSign,
+ Item::AcaciaSign,
+ Item::JungleSign,
+ Item::DarkOakSign,
+ Item::CrimsonSign,
+ Item::WarpedSign,
+ Item::MangroveSign,
+ Item::BambooSign,
+ Item::CherrySign,
+ ])
+});
+pub static DIRT: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Dirt,
+ Item::GrassBlock,
+ Item::Podzol,
+ Item::CoarseDirt,
+ Item::Mycelium,
+ Item::RootedDirt,
+ Item::MossBlock,
+ Item::Mud,
+ Item::MuddyMangroveRoots,
+ ])
+});
+pub static LOGS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::CrimsonStem,
+ Item::StrippedCrimsonStem,
+ Item::CrimsonHyphae,
+ Item::StrippedCrimsonHyphae,
+ Item::WarpedStem,
+ Item::StrippedWarpedStem,
+ Item::WarpedHyphae,
+ Item::StrippedWarpedHyphae,
+ Item::DarkOakLog,
+ Item::DarkOakWood,
+ Item::StrippedDarkOakLog,
+ Item::StrippedDarkOakWood,
+ Item::OakLog,
+ Item::OakWood,
+ Item::StrippedOakLog,
+ Item::StrippedOakWood,
+ Item::AcaciaLog,
+ Item::AcaciaWood,
+ Item::StrippedAcaciaLog,
+ Item::StrippedAcaciaWood,
+ Item::BirchLog,
+ Item::BirchWood,
+ Item::StrippedBirchLog,
+ Item::StrippedBirchWood,
+ Item::JungleLog,
+ Item::JungleWood,
+ Item::StrippedJungleLog,
+ Item::StrippedJungleWood,
+ Item::SpruceLog,
+ Item::SpruceWood,
+ Item::StrippedSpruceLog,
+ Item::StrippedSpruceWood,
+ Item::MangroveLog,
+ Item::MangroveWood,
+ Item::StrippedMangroveLog,
+ Item::StrippedMangroveWood,
+ Item::CherryLog,
+ Item::CherryWood,
+ Item::StrippedCherryLog,
+ Item::StrippedCherryWood,
+ ])
+});
+pub static AXES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::DiamondAxe,
+ Item::StoneAxe,
+ Item::GoldenAxe,
+ Item::NetheriteAxe,
+ Item::WoodenAxe,
+ Item::IronAxe,
+ ])
+});
+pub static CHEST_BOATS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakChestBoat,
+ Item::SpruceChestBoat,
+ Item::BirchChestBoat,
+ Item::JungleChestBoat,
+ Item::AcaciaChestBoat,
+ Item::DarkOakChestBoat,
+ Item::MangroveChestBoat,
+ Item::BambooChestRaft,
+ Item::CherryChestBoat,
+ ])
+});
+pub static BOOKSHELF_BOOKS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Book,
+ Item::WrittenBook,
+ Item::EnchantedBook,
+ Item::WritableBook,
+ Item::KnowledgeBook,
+ ])
+});
+pub static ARROWS: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::Arrow, Item::TippedArrow, Item::SpectralArrow]));
+pub static PIGLIN_LOVED: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::GoldBlock,
+ Item::GildedBlackstone,
+ Item::LightWeightedPressurePlate,
+ Item::GoldIngot,
+ Item::Bell,
+ Item::Clock,
+ Item::GoldenCarrot,
+ Item::GlisteringMelonSlice,
+ Item::GoldenApple,
+ Item::EnchantedGoldenApple,
+ Item::GoldenHelmet,
+ Item::GoldenChestplate,
+ Item::GoldenLeggings,
+ Item::GoldenBoots,
+ Item::GoldenHorseArmor,
+ Item::GoldenSword,
+ Item::GoldenPickaxe,
+ Item::GoldenShovel,
+ Item::GoldenAxe,
+ Item::GoldenHoe,
+ Item::RawGold,
+ Item::RawGoldBlock,
+ Item::GoldOre,
+ Item::NetherGoldOre,
+ Item::DeepslateGoldOre,
+ ])
+});
+pub static WOODEN_BUTTONS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakButton,
+ Item::SpruceButton,
+ Item::BirchButton,
+ Item::JungleButton,
+ Item::AcaciaButton,
+ Item::DarkOakButton,
+ Item::CrimsonButton,
+ Item::WarpedButton,
+ Item::MangroveButton,
+ Item::BambooButton,
+ Item::CherryButton,
+ ])
+});
+pub static SMELTS_TO_GLASS: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::Sand, Item::RedSand]));
+pub static JUNGLE_LOGS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::JungleLog,
+ Item::JungleWood,
+ Item::StrippedJungleLog,
+ Item::StrippedJungleWood,
+ ])
+});
+pub static TRAPDOORS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::IronTrapdoor,
+ Item::AcaciaTrapdoor,
+ Item::BirchTrapdoor,
+ Item::DarkOakTrapdoor,
+ Item::JungleTrapdoor,
+ Item::OakTrapdoor,
+ Item::SpruceTrapdoor,
+ Item::CrimsonTrapdoor,
+ Item::WarpedTrapdoor,
+ Item::MangroveTrapdoor,
+ Item::BambooTrapdoor,
+ Item::CherryTrapdoor,
+ ])
+});
+pub static IGNORED_BY_PIGLIN_BABIES: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::Leather]));
+pub static WARPED_STEMS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::WarpedStem,
+ Item::StrippedWarpedStem,
+ Item::WarpedHyphae,
+ Item::StrippedWarpedHyphae,
+ ])
+});
+pub static BEACON_PAYMENT_ITEMS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::NetheriteIngot,
+ Item::Emerald,
+ Item::Diamond,
+ Item::GoldIngot,
+ Item::IronIngot,
+ ])
+});
+pub static IRON_ORES: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::IronOre, Item::DeepslateIronOre]));
+pub static BOATS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakBoat,
+ Item::SpruceBoat,
+ Item::BirchBoat,
+ Item::JungleBoat,
+ Item::AcaciaBoat,
+ Item::DarkOakBoat,
+ Item::MangroveBoat,
+ Item::BambooRaft,
+ Item::CherryBoat,
+ Item::OakChestBoat,
+ Item::SpruceChestBoat,
+ Item::BirchChestBoat,
+ Item::JungleChestBoat,
+ Item::AcaciaChestBoat,
+ Item::DarkOakChestBoat,
+ Item::MangroveChestBoat,
+ Item::BambooChestRaft,
+ Item::CherryChestBoat,
+ ])
+});
+pub static RAILS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Rail,
+ Item::PoweredRail,
+ Item::DetectorRail,
+ Item::ActivatorRail,
+ ])
+});
+pub static TRIMMABLE_ARMOR: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::NetheriteHelmet,
+ Item::NetheriteChestplate,
+ Item::NetheriteLeggings,
+ Item::NetheriteBoots,
+ Item::DiamondHelmet,
+ Item::DiamondChestplate,
+ Item::DiamondLeggings,
+ Item::DiamondBoots,
+ Item::GoldenHelmet,
+ Item::GoldenChestplate,
+ Item::GoldenLeggings,
+ Item::GoldenBoots,
+ Item::IronHelmet,
+ Item::IronChestplate,
+ Item::IronLeggings,
+ Item::IronBoots,
+ Item::ChainmailHelmet,
+ Item::ChainmailChestplate,
+ Item::ChainmailLeggings,
+ Item::ChainmailBoots,
+ Item::LeatherHelmet,
+ Item::LeatherChestplate,
+ Item::LeatherLeggings,
+ Item::LeatherBoots,
+ Item::TurtleHelmet,
+ ])
+});
+pub static PLANKS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakPlanks,
+ Item::SprucePlanks,
+ Item::BirchPlanks,
+ Item::JunglePlanks,
+ Item::AcaciaPlanks,
+ Item::DarkOakPlanks,
+ Item::CrimsonPlanks,
+ Item::WarpedPlanks,
+ Item::MangrovePlanks,
+ Item::BambooPlanks,
+ Item::CherryPlanks,
+ ])
+});
+pub static FOX_FOOD: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::SweetBerries, Item::GlowBerries]));
+pub static BAMBOO_BLOCKS: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::BambooBlock, Item::StrippedBambooBlock]));
+pub static SNIFFER_FOOD: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::TorchflowerSeeds]));
+pub static CANDLES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::Candle,
+ Item::WhiteCandle,
+ Item::OrangeCandle,
+ Item::MagentaCandle,
+ Item::LightBlueCandle,
+ Item::YellowCandle,
+ Item::LimeCandle,
+ Item::PinkCandle,
+ Item::GrayCandle,
+ Item::LightGrayCandle,
+ Item::CyanCandle,
+ Item::PurpleCandle,
+ Item::BlueCandle,
+ Item::BrownCandle,
+ Item::GreenCandle,
+ Item::RedCandle,
+ Item::BlackCandle,
+ ])
+});
+pub static SPRUCE_LOGS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::SpruceLog,
+ Item::SpruceWood,
+ Item::StrippedSpruceLog,
+ Item::StrippedSpruceWood,
+ ])
+});
+pub static SWORDS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::DiamondSword,
+ Item::StoneSword,
+ Item::GoldenSword,
+ Item::NetheriteSword,
+ Item::WoodenSword,
+ Item::IronSword,
+ ])
+});
+pub static LECTERN_BOOKS: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::WrittenBook, Item::WritableBook]));
+pub static DECORATED_POT_SHERDS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::AnglerPotterySherd,
+ Item::ArcherPotterySherd,
+ Item::ArmsUpPotterySherd,
+ Item::BladePotterySherd,
+ Item::BrewerPotterySherd,
+ Item::BurnPotterySherd,
+ Item::DangerPotterySherd,
+ Item::ExplorerPotterySherd,
+ Item::FriendPotterySherd,
+ Item::HeartPotterySherd,
+ Item::HeartbreakPotterySherd,
+ Item::HowlPotterySherd,
+ Item::MinerPotterySherd,
+ Item::MournerPotterySherd,
+ Item::PlentyPotterySherd,
+ Item::PrizePotterySherd,
+ Item::SheafPotterySherd,
+ Item::ShelterPotterySherd,
+ Item::SkullPotterySherd,
+ Item::SnortPotterySherd,
+ ])
+});
+pub static SAPLINGS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakSapling,
+ Item::SpruceSapling,
+ Item::BirchSapling,
+ Item::JungleSapling,
+ Item::AcaciaSapling,
+ Item::DarkOakSapling,
+ Item::Azalea,
+ Item::FloweringAzalea,
+ Item::MangrovePropagule,
+ Item::CherrySapling,
+ ])
+});
+pub static LEAVES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::JungleLeaves,
+ Item::OakLeaves,
+ Item::SpruceLeaves,
+ Item::DarkOakLeaves,
+ Item::AcaciaLeaves,
+ Item::BirchLeaves,
+ Item::AzaleaLeaves,
+ Item::FloweringAzaleaLeaves,
+ Item::MangroveLeaves,
+ Item::CherryLeaves,
+ ])
+});
+pub static STONE_BUTTONS: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::StoneButton, Item::PolishedBlackstoneButton]));
+pub static REDSTONE_ORES: Lazy<HashSet<Item>> =
+ Lazy::new(|| HashSet::from_iter(vec![Item::RedstoneOre, Item::DeepslateRedstoneOre]));
+pub static CRIMSON_STEMS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::CrimsonStem,
+ Item::StrippedCrimsonStem,
+ Item::CrimsonHyphae,
+ Item::StrippedCrimsonHyphae,
+ ])
+});
+pub static HANGING_SIGNS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::OakHangingSign,
+ Item::SpruceHangingSign,
+ Item::BirchHangingSign,
+ Item::AcaciaHangingSign,
+ Item::CherryHangingSign,
+ Item::JungleHangingSign,
+ Item::DarkOakHangingSign,
+ Item::CrimsonHangingSign,
+ Item::WarpedHangingSign,
+ Item::MangroveHangingSign,
+ Item::BambooHangingSign,
+ ])
+});
+pub static WALLS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::CobblestoneWall,
+ Item::MossyCobblestoneWall,
+ Item::BrickWall,
+ Item::PrismarineWall,
+ Item::RedSandstoneWall,
+ Item::MossyStoneBrickWall,
+ Item::GraniteWall,
+ Item::StoneBrickWall,
+ Item::NetherBrickWall,
+ Item::AndesiteWall,
+ Item::RedNetherBrickWall,
+ Item::SandstoneWall,
+ Item::EndStoneBrickWall,
+ Item::DioriteWall,
+ Item::BlackstoneWall,
+ Item::PolishedBlackstoneBrickWall,
+ Item::PolishedBlackstoneWall,
+ Item::CobbledDeepslateWall,
+ Item::PolishedDeepslateWall,
+ Item::DeepslateTileWall,
+ Item::DeepslateBrickWall,
+ Item::MudBrickWall,
+ ])
+});
+pub static CLUSTER_MAX_HARVESTABLES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::DiamondPickaxe,
+ Item::GoldenPickaxe,
+ Item::IronPickaxe,
+ Item::NetheritePickaxe,
+ Item::StonePickaxe,
+ Item::WoodenPickaxe,
+ ])
+});
+pub static MUSIC_DISCS: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::MusicDiscPigstep,
+ Item::MusicDiscOtherside,
+ Item::MusicDisc5,
+ Item::MusicDiscRelic,
+ Item::MusicDisc13,
+ Item::MusicDiscCat,
+ Item::MusicDiscBlocks,
+ Item::MusicDiscChirp,
+ Item::MusicDiscFar,
+ Item::MusicDiscMall,
+ Item::MusicDiscMellohi,
+ Item::MusicDiscStal,
+ Item::MusicDiscStrad,
+ Item::MusicDiscWard,
+ Item::MusicDisc11,
+ Item::MusicDiscWait,
+ ])
+});
+pub static FREEZE_IMMUNE_WEARABLES: Lazy<HashSet<Item>> = Lazy::new(|| {
+ HashSet::from_iter(vec![
+ Item::LeatherBoots,
+ Item::LeatherLeggings,
+ Item::LeatherChestplate,
+ Item::LeatherHelmet,
+ Item::LeatherHorseArmor,
+ ])
+});
diff --git a/azalea-registry/src/tags/mod.rs b/azalea-registry/src/tags/mod.rs
new file mode 100644
index 00000000..7ac46e6a
--- /dev/null
+++ b/azalea-registry/src/tags/mod.rs
@@ -0,0 +1,3 @@
+pub mod blocks;
+pub mod fluids;
+pub mod items;