diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2023-07-14 22:20:40 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-14 22:20:40 -0500 |
| commit | 7405427199e5a994d4a6a706f84434a69cb7a7d9 (patch) | |
| tree | ca537e5d761bc053187d952fced0915c850b92aa /azalea-registry/src | |
| parent | d1afd02aa84e7b4450c1607277f078eb2a0f1bf3 (diff) | |
| download | azalea-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-x | azalea-registry/src/lib.rs | 2 | ||||
| -rw-r--r-- | azalea-registry/src/tags/blocks.rs | 3374 | ||||
| -rw-r--r-- | azalea-registry/src/tags/fluids.rs | 12 | ||||
| -rw-r--r-- | azalea-registry/src/tags/items.rs | 1379 | ||||
| -rw-r--r-- | azalea-registry/src/tags/mod.rs | 3 |
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; |
