diff --git a/crates/pumpkin-data/src/lib.rs b/crates/pumpkin-data/src/lib.rs index f5d06b175..a5d1f0f41 100644 --- a/crates/pumpkin-data/src/lib.rs +++ b/crates/pumpkin-data/src/lib.rs @@ -161,7 +161,7 @@ mod entity_pose; #[cfg(feature = "entity_status")] #[rustfmt::skip] #[path = "generated/entity_status.rs"] -mod entity_status; +pub mod entity_status; #[cfg(feature = "entity_type")] #[rustfmt::skip] diff --git a/crates/pumpkin-plugin-api/src/block.rs b/crates/pumpkin-plugin-api/src/block.rs new file mode 100644 index 000000000..e9aa68be7 --- /dev/null +++ b/crates/pumpkin-plugin-api/src/block.rs @@ -0,0 +1,160 @@ +pub use crate::generated::block::BlockType; +use crate::wit::pumpkin::plugin::world::{Block, BlockState}; + +/// Trait for converting types into a valid Minecraft block registry key (e.g. `"minecraft:stone"`). +pub trait IntoBlockKey { + /// Returns the namespaced block registry key. + fn into_block_key(self) -> String; +} + +impl IntoBlockKey for BlockType { + fn into_block_key(self) -> String { + self.resource_location().to_string() + } +} + +impl IntoBlockKey for &BlockType { + fn into_block_key(self) -> String { + self.resource_location().to_string() + } +} + +impl IntoBlockKey for &str { + fn into_block_key(self) -> String { + if self.contains(':') { + self.to_string() + } else { + format!("minecraft:{self}") + } + } +} + +impl IntoBlockKey for String { + fn into_block_key(self) -> String { + if self.contains(':') { + self + } else { + format!("minecraft:{self}") + } + } +} + +impl IntoBlockKey for &String { + fn into_block_key(self) -> String { + self.as_str().into_block_key() + } +} + +/// Extension trait providing typed helper methods on `Block`. +pub trait BlockTypeExt { + /// Gets a block definition by any valid block key (e.g. `BlockType::Stone`, `"minecraft:stone"`, or `"custom:block"`). + #[must_use] + fn of(key: impl IntoBlockKey) -> Option; + + /// Returns the typed `BlockType` if this block corresponds to a known vanilla block, + /// or `None` if it is a custom, modded, or newer unknown block. + #[must_use] + fn get_block_type(&self) -> Option; + + /// Checks if this block matches the given `BlockType`. + #[must_use] + fn is_block_type(&self, block_type: BlockType) -> bool; + + /// Checks if this block matches the given block key. + #[must_use] + fn matches_block(&self, key: impl IntoBlockKey) -> bool; +} + +impl BlockTypeExt for Block { + fn of(key: impl IntoBlockKey) -> Option { + Block::from_name(&key.into_block_key()) + } + + fn get_block_type(&self) -> Option { + BlockType::from_registry_key(&self.name) + } + + fn is_block_type(&self, block_type: BlockType) -> bool { + self.get_block_type() == Some(block_type) + } + + fn matches_block(&self, key: impl IntoBlockKey) -> bool { + let expected = key.into_block_key(); + let expected_clean = expected.strip_prefix("minecraft:").unwrap_or(&expected); + let actual_clean = self.name.strip_prefix("minecraft:").unwrap_or(&self.name); + expected_clean == actual_clean + } +} + +/// Extension trait providing typed helper methods on `BlockState`. +pub trait BlockStateTypeExt { + /// Returns the typed `BlockType` if this block state corresponds to a known vanilla block, + /// or `None` if it is a custom, modded, or newer unknown block. + #[must_use] + fn get_block_type(&self) -> Option; + + /// Checks if this block state matches the given `BlockType`. + #[must_use] + fn is_block_type(&self, block_type: BlockType) -> bool; + + /// Checks if this block state matches the given block key. + #[must_use] + fn matches_block(&self, key: impl IntoBlockKey) -> bool; +} + +impl BlockStateTypeExt for BlockState { + fn get_block_type(&self) -> Option { + BlockType::from_registry_key(&self.block_name) + } + + fn is_block_type(&self, block_type: BlockType) -> bool { + self.get_block_type() == Some(block_type) + } + + fn matches_block(&self, key: impl IntoBlockKey) -> bool { + let expected = key.into_block_key(); + let expected_clean = expected.strip_prefix("minecraft:").unwrap_or(&expected); + let actual_clean = self + .block_name + .strip_prefix("minecraft:") + .unwrap_or(&self.block_name); + expected_clean == actual_clean + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn block_to_resource_location() { + assert_eq!(BlockType::Stone.into_block_key(), "minecraft:stone"); + assert_eq!( + BlockType::DiamondBlock.into_block_key(), + "minecraft:diamond_block" + ); + assert_eq!(BlockType::OakLog.into_block_key(), "minecraft:oak_log"); + assert_eq!(BlockType::Obsidian.into_block_key(), "minecraft:obsidian"); + } + + #[test] + fn string_to_resource_location() { + assert_eq!("stone".into_block_key(), "minecraft:stone"); + assert_eq!("minecraft:stone".into_block_key(), "minecraft:stone"); + assert_eq!("custom:ruby_block".into_block_key(), "custom:ruby_block"); + } + + #[test] + fn block_parsing() { + assert_eq!(BlockType::from_name("stone"), Some(BlockType::Stone)); + assert_eq!( + BlockType::from_name("minecraft:stone"), + Some(BlockType::Stone) + ); + assert_eq!( + BlockType::from_name("diamond_block"), + Some(BlockType::DiamondBlock) + ); + assert_eq!(BlockType::from_name("custom:ruby_block"), None); + } +} diff --git a/crates/pumpkin-plugin-api/src/ext/attributes.rs b/crates/pumpkin-plugin-api/src/ext/attributes.rs index 7da96559f..3ddacb629 100644 --- a/crates/pumpkin-plugin-api/src/ext/attributes.rs +++ b/crates/pumpkin-plugin-api/src/ext/attributes.rs @@ -29,3 +29,23 @@ impl AttributeModifier { Self::new(id, amount, ModifierOperation::MultiplyTotal) } } + +use crate::wit::pumpkin::plugin::attributes::Attribute; +use crate::wit::pumpkin::plugin::enchantments::AttributeModifierSlot; +use crate::wit::pumpkin::plugin::item_stack::ItemAttributeModifier; + +impl ItemAttributeModifier { + /// Creates a new item attribute modifier for a specific equipment slot. + #[must_use] + pub const fn new( + attribute: Attribute, + modifier: AttributeModifier, + slot: AttributeModifierSlot, + ) -> Self { + Self { + attribute, + modifier, + slot, + } + } +} diff --git a/crates/pumpkin-plugin-api/src/ext/player.rs b/crates/pumpkin-plugin-api/src/ext/player.rs index e7c1b84fb..88fca1558 100644 --- a/crates/pumpkin-plugin-api/src/ext/player.rs +++ b/crates/pumpkin-plugin-api/src/ext/player.rs @@ -133,6 +133,32 @@ impl BanIpOptions { } } +/// Extension trait providing typed cooldown helpers for `Player`. +pub trait PlayerCooldownExt { + /// Sets a client-side item cooldown overlay using any item key or `Item` enum. + fn set_cooldown(&self, item: impl crate::item::IntoItemKey, ticks: i32); + + /// Returns the remaining cooldown ticks for an item, if active. + fn get_cooldown(&self, item: impl crate::item::IntoItemKey) -> Option; + + /// Checks if an item is currently on cooldown. + fn has_cooldown(&self, item: impl crate::item::IntoItemKey) -> bool; +} + +impl PlayerCooldownExt for Player { + fn set_cooldown(&self, item: impl crate::item::IntoItemKey, ticks: i32) { + self.set_item_cooldown(&item.into_item_key(), ticks); + } + + fn get_cooldown(&self, item: impl crate::item::IntoItemKey) -> Option { + self.get_item_cooldown(&item.into_item_key()) + } + + fn has_cooldown(&self, item: impl crate::item::IntoItemKey) -> bool { + self.has_item_cooldown(&item.into_item_key()) + } +} + #[cfg(test)] mod tests { use crate::{CustomStatistic, StatisticCategory}; diff --git a/crates/pumpkin-plugin-api/src/generated/block.rs b/crates/pumpkin-plugin-api/src/generated/block.rs new file mode 100644 index 000000000..efdb5d32b --- /dev/null +++ b/crates/pumpkin-plugin-api/src/generated/block.rs @@ -0,0 +1,4835 @@ +// Generated by pumpkin-codegen. Do not edit. +#![allow(missing_docs, clippy::all)] + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub enum BlockType { + AcaciaButton, + AcaciaDoor, + AcaciaFence, + AcaciaFenceGate, + AcaciaHangingSign, + AcaciaLeaves, + AcaciaLog, + AcaciaPlanks, + AcaciaPressurePlate, + AcaciaSapling, + AcaciaShelf, + AcaciaSign, + AcaciaSlab, + AcaciaStairs, + AcaciaTrapdoor, + AcaciaWallHangingSign, + AcaciaWallSign, + AcaciaWood, + ActivatorRail, + Air, + Allium, + AmethystBlock, + AmethystCluster, + AncientDebris, + Andesite, + AndesiteSlab, + AndesiteStairs, + AndesiteWall, + Anvil, + AttachedMelonStem, + AttachedPumpkinStem, + Azalea, + AzaleaLeaves, + AzureBluet, + Bamboo, + BambooBlock, + BambooButton, + BambooDoor, + BambooFence, + BambooFenceGate, + BambooHangingSign, + BambooMosaic, + BambooMosaicSlab, + BambooMosaicStairs, + BambooPlanks, + BambooPressurePlate, + BambooSapling, + BambooShelf, + BambooSign, + BambooSlab, + BambooStairs, + BambooTrapdoor, + BambooWallHangingSign, + BambooWallSign, + Barrel, + Barrier, + Basalt, + Beacon, + Bedrock, + BeeNest, + Beehive, + Beetroots, + Bell, + BigDripleaf, + BigDripleafStem, + BirchButton, + BirchDoor, + BirchFence, + BirchFenceGate, + BirchHangingSign, + BirchLeaves, + BirchLog, + BirchPlanks, + BirchPressurePlate, + BirchSapling, + BirchShelf, + BirchSign, + BirchSlab, + BirchStairs, + BirchTrapdoor, + BirchWallHangingSign, + BirchWallSign, + BirchWood, + BlackBanner, + BlackBed, + BlackCandle, + BlackCandleCake, + BlackCarpet, + BlackConcrete, + BlackConcretePowder, + BlackGlazedTerracotta, + BlackShulkerBox, + BlackStainedGlass, + BlackStainedGlassPane, + BlackTerracotta, + BlackWallBanner, + BlackWool, + Blackstone, + BlackstoneSlab, + BlackstoneStairs, + BlackstoneWall, + BlastFurnace, + BlueBanner, + BlueBed, + BlueCandle, + BlueCandleCake, + BlueCarpet, + BlueConcrete, + BlueConcretePowder, + BlueGlazedTerracotta, + BlueIce, + BlueOrchid, + BlueShulkerBox, + BlueStainedGlass, + BlueStainedGlassPane, + BlueTerracotta, + BlueWallBanner, + BlueWool, + BoneBlock, + Bookshelf, + BrainCoral, + BrainCoralBlock, + BrainCoralFan, + BrainCoralWallFan, + BrewingStand, + BrickSlab, + BrickStairs, + BrickWall, + Bricks, + BrownBanner, + BrownBed, + BrownCandle, + BrownCandleCake, + BrownCarpet, + BrownConcrete, + BrownConcretePowder, + BrownGlazedTerracotta, + BrownMushroom, + BrownMushroomBlock, + BrownShulkerBox, + BrownStainedGlass, + BrownStainedGlassPane, + BrownTerracotta, + BrownWallBanner, + BrownWool, + BubbleColumn, + BubbleCoral, + BubbleCoralBlock, + BubbleCoralFan, + BubbleCoralWallFan, + BuddingAmethyst, + Bush, + Cactus, + CactusFlower, + Cake, + Calcite, + CalibratedSculkSensor, + Campfire, + Candle, + CandleCake, + Carrots, + CartographyTable, + CarvedPumpkin, + Cauldron, + CaveAir, + CaveVines, + CaveVinesPlant, + ChainCommandBlock, + CherryButton, + CherryDoor, + CherryFence, + CherryFenceGate, + CherryHangingSign, + CherryLeaves, + CherryLog, + CherryPlanks, + CherryPressurePlate, + CherrySapling, + CherryShelf, + CherrySign, + CherrySlab, + CherryStairs, + CherryTrapdoor, + CherryWallHangingSign, + CherryWallSign, + CherryWood, + Chest, + ChippedAnvil, + ChiseledBookshelf, + ChiseledCinnabar, + ChiseledCopper, + ChiseledDeepslate, + ChiseledNetherBricks, + ChiseledPolishedBlackstone, + ChiseledQuartzBlock, + ChiseledRedSandstone, + ChiseledResinBricks, + ChiseledSandstone, + ChiseledStoneBricks, + ChiseledSulfur, + ChiseledTuff, + ChiseledTuffBricks, + ChorusFlower, + ChorusPlant, + Cinnabar, + CinnabarBrickSlab, + CinnabarBrickStairs, + CinnabarBrickWall, + CinnabarBricks, + CinnabarSlab, + CinnabarStairs, + CinnabarWall, + Clay, + ClosedEyeblossom, + CoalBlock, + CoalOre, + CoarseDirt, + CobbledDeepslate, + CobbledDeepslateSlab, + CobbledDeepslateStairs, + CobbledDeepslateWall, + Cobblestone, + CobblestoneSlab, + CobblestoneStairs, + CobblestoneWall, + Cobweb, + Cocoa, + CommandBlock, + Comparator, + Composter, + Conduit, + CopperBars, + CopperBlock, + CopperBulb, + CopperChain, + CopperChest, + CopperDoor, + CopperGolemStatue, + CopperGrate, + CopperLantern, + CopperOre, + CopperTorch, + CopperTrapdoor, + CopperWallTorch, + Cornflower, + CrackedDeepslateBricks, + CrackedDeepslateTiles, + CrackedNetherBricks, + CrackedPolishedBlackstoneBricks, + CrackedStoneBricks, + Crafter, + CraftingTable, + CreakingHeart, + CreeperHead, + CreeperWallHead, + CrimsonButton, + CrimsonDoor, + CrimsonFence, + CrimsonFenceGate, + CrimsonFungus, + CrimsonHangingSign, + CrimsonHyphae, + CrimsonNylium, + CrimsonPlanks, + CrimsonPressurePlate, + CrimsonRoots, + CrimsonShelf, + CrimsonSign, + CrimsonSlab, + CrimsonStairs, + CrimsonStem, + CrimsonTrapdoor, + CrimsonWallHangingSign, + CrimsonWallSign, + CryingObsidian, + CutCopper, + CutCopperSlab, + CutCopperStairs, + CutRedSandstone, + CutRedSandstoneSlab, + CutSandstone, + CutSandstoneSlab, + CyanBanner, + CyanBed, + CyanCandle, + CyanCandleCake, + CyanCarpet, + CyanConcrete, + CyanConcretePowder, + CyanGlazedTerracotta, + CyanShulkerBox, + CyanStainedGlass, + CyanStainedGlassPane, + CyanTerracotta, + CyanWallBanner, + CyanWool, + DamagedAnvil, + Dandelion, + DarkOakButton, + DarkOakDoor, + DarkOakFence, + DarkOakFenceGate, + DarkOakHangingSign, + DarkOakLeaves, + DarkOakLog, + DarkOakPlanks, + DarkOakPressurePlate, + DarkOakSapling, + DarkOakShelf, + DarkOakSign, + DarkOakSlab, + DarkOakStairs, + DarkOakTrapdoor, + DarkOakWallHangingSign, + DarkOakWallSign, + DarkOakWood, + DarkPrismarine, + DarkPrismarineSlab, + DarkPrismarineStairs, + DaylightDetector, + DeadBrainCoral, + DeadBrainCoralBlock, + DeadBrainCoralFan, + DeadBrainCoralWallFan, + DeadBubbleCoral, + DeadBubbleCoralBlock, + DeadBubbleCoralFan, + DeadBubbleCoralWallFan, + DeadBush, + DeadFireCoral, + DeadFireCoralBlock, + DeadFireCoralFan, + DeadFireCoralWallFan, + DeadHornCoral, + DeadHornCoralBlock, + DeadHornCoralFan, + DeadHornCoralWallFan, + DeadTubeCoral, + DeadTubeCoralBlock, + DeadTubeCoralFan, + DeadTubeCoralWallFan, + DecoratedPot, + Deepslate, + DeepslateBrickSlab, + DeepslateBrickStairs, + DeepslateBrickWall, + DeepslateBricks, + DeepslateCoalOre, + DeepslateCopperOre, + DeepslateDiamondOre, + DeepslateEmeraldOre, + DeepslateGoldOre, + DeepslateIronOre, + DeepslateLapisOre, + DeepslateRedstoneOre, + DeepslateTileSlab, + DeepslateTileStairs, + DeepslateTileWall, + DeepslateTiles, + DetectorRail, + DiamondBlock, + DiamondOre, + Diorite, + DioriteSlab, + DioriteStairs, + DioriteWall, + Dirt, + DirtPath, + Dispenser, + DragonEgg, + DragonHead, + DragonWallHead, + DriedGhast, + DriedKelpBlock, + DripstoneBlock, + Dropper, + EmeraldBlock, + EmeraldOre, + EnchantingTable, + EndGateway, + EndPortal, + EndPortalFrame, + EndRod, + EndStone, + EndStoneBrickSlab, + EndStoneBrickStairs, + EndStoneBrickWall, + EndStoneBricks, + EnderChest, + ExposedChiseledCopper, + ExposedCopper, + ExposedCopperBars, + ExposedCopperBulb, + ExposedCopperChain, + ExposedCopperChest, + ExposedCopperDoor, + ExposedCopperGolemStatue, + ExposedCopperGrate, + ExposedCopperLantern, + ExposedCopperTrapdoor, + ExposedCutCopper, + ExposedCutCopperSlab, + ExposedCutCopperStairs, + ExposedLightningRod, + Farmland, + Fern, + Fire, + FireCoral, + FireCoralBlock, + FireCoralFan, + FireCoralWallFan, + FireflyBush, + FletchingTable, + FlowerPot, + FloweringAzalea, + FloweringAzaleaLeaves, + Frogspawn, + FrostedIce, + Furnace, + GildedBlackstone, + Glass, + GlassPane, + GlowLichen, + Glowstone, + GoldBlock, + GoldOre, + GoldenDandelion, + Granite, + GraniteSlab, + GraniteStairs, + GraniteWall, + GrassBlock, + Gravel, + GrayBanner, + GrayBed, + GrayCandle, + GrayCandleCake, + GrayCarpet, + GrayConcrete, + GrayConcretePowder, + GrayGlazedTerracotta, + GrayShulkerBox, + GrayStainedGlass, + GrayStainedGlassPane, + GrayTerracotta, + GrayWallBanner, + GrayWool, + GreenBanner, + GreenBed, + GreenCandle, + GreenCandleCake, + GreenCarpet, + GreenConcrete, + GreenConcretePowder, + GreenGlazedTerracotta, + GreenShulkerBox, + GreenStainedGlass, + GreenStainedGlassPane, + GreenTerracotta, + GreenWallBanner, + GreenWool, + Grindstone, + HangingRoots, + HayBlock, + HeavyCore, + HeavyWeightedPressurePlate, + HoneyBlock, + HoneycombBlock, + Hopper, + HornCoral, + HornCoralBlock, + HornCoralFan, + HornCoralWallFan, + Ice, + InfestedChiseledStoneBricks, + InfestedCobblestone, + InfestedCrackedStoneBricks, + InfestedDeepslate, + InfestedMossyStoneBricks, + InfestedStone, + InfestedStoneBricks, + IronBars, + IronBlock, + IronChain, + IronDoor, + IronOre, + IronTrapdoor, + JackOLantern, + Jigsaw, + Jukebox, + JungleButton, + JungleDoor, + JungleFence, + JungleFenceGate, + JungleHangingSign, + JungleLeaves, + JungleLog, + JunglePlanks, + JunglePressurePlate, + JungleSapling, + JungleShelf, + JungleSign, + JungleSlab, + JungleStairs, + JungleTrapdoor, + JungleWallHangingSign, + JungleWallSign, + JungleWood, + Kelp, + KelpPlant, + Ladder, + Lantern, + LapisBlock, + LapisOre, + LargeAmethystBud, + LargeFern, + Lava, + LavaCauldron, + LeafLitter, + Lectern, + Lever, + Light, + LightBlueBanner, + LightBlueBed, + LightBlueCandle, + LightBlueCandleCake, + LightBlueCarpet, + LightBlueConcrete, + LightBlueConcretePowder, + LightBlueGlazedTerracotta, + LightBlueShulkerBox, + LightBlueStainedGlass, + LightBlueStainedGlassPane, + LightBlueTerracotta, + LightBlueWallBanner, + LightBlueWool, + LightGrayBanner, + LightGrayBed, + LightGrayCandle, + LightGrayCandleCake, + LightGrayCarpet, + LightGrayConcrete, + LightGrayConcretePowder, + LightGrayGlazedTerracotta, + LightGrayShulkerBox, + LightGrayStainedGlass, + LightGrayStainedGlassPane, + LightGrayTerracotta, + LightGrayWallBanner, + LightGrayWool, + LightWeightedPressurePlate, + LightningRod, + Lilac, + LilyOfTheValley, + LilyPad, + LimeBanner, + LimeBed, + LimeCandle, + LimeCandleCake, + LimeCarpet, + LimeConcrete, + LimeConcretePowder, + LimeGlazedTerracotta, + LimeShulkerBox, + LimeStainedGlass, + LimeStainedGlassPane, + LimeTerracotta, + LimeWallBanner, + LimeWool, + Lodestone, + Loom, + MagentaBanner, + MagentaBed, + MagentaCandle, + MagentaCandleCake, + MagentaCarpet, + MagentaConcrete, + MagentaConcretePowder, + MagentaGlazedTerracotta, + MagentaShulkerBox, + MagentaStainedGlass, + MagentaStainedGlassPane, + MagentaTerracotta, + MagentaWallBanner, + MagentaWool, + MagmaBlock, + MangroveButton, + MangroveDoor, + MangroveFence, + MangroveFenceGate, + MangroveHangingSign, + MangroveLeaves, + MangroveLog, + MangrovePlanks, + MangrovePressurePlate, + MangrovePropagule, + MangroveRoots, + MangroveShelf, + MangroveSign, + MangroveSlab, + MangroveStairs, + MangroveTrapdoor, + MangroveWallHangingSign, + MangroveWallSign, + MangroveWood, + MediumAmethystBud, + Melon, + MelonStem, + MossBlock, + MossCarpet, + MossyCobblestone, + MossyCobblestoneSlab, + MossyCobblestoneStairs, + MossyCobblestoneWall, + MossyStoneBrickSlab, + MossyStoneBrickStairs, + MossyStoneBrickWall, + MossyStoneBricks, + MovingPiston, + Mud, + MudBrickSlab, + MudBrickStairs, + MudBrickWall, + MudBricks, + MuddyMangroveRoots, + MushroomStem, + Mycelium, + NetherBrickFence, + NetherBrickSlab, + NetherBrickStairs, + NetherBrickWall, + NetherBricks, + NetherGoldOre, + NetherPortal, + NetherQuartzOre, + NetherSprouts, + NetherWart, + NetherWartBlock, + NetheriteBlock, + Netherrack, + NoteBlock, + OakButton, + OakDoor, + OakFence, + OakFenceGate, + OakHangingSign, + OakLeaves, + OakLog, + OakPlanks, + OakPressurePlate, + OakSapling, + OakShelf, + OakSign, + OakSlab, + OakStairs, + OakTrapdoor, + OakWallHangingSign, + OakWallSign, + OakWood, + Observer, + Obsidian, + OchreFroglight, + OpenEyeblossom, + OrangeBanner, + OrangeBed, + OrangeCandle, + OrangeCandleCake, + OrangeCarpet, + OrangeConcrete, + OrangeConcretePowder, + OrangeGlazedTerracotta, + OrangeShulkerBox, + OrangeStainedGlass, + OrangeStainedGlassPane, + OrangeTerracotta, + OrangeTulip, + OrangeWallBanner, + OrangeWool, + OxeyeDaisy, + OxidizedChiseledCopper, + OxidizedCopper, + OxidizedCopperBars, + OxidizedCopperBulb, + OxidizedCopperChain, + OxidizedCopperChest, + OxidizedCopperDoor, + OxidizedCopperGolemStatue, + OxidizedCopperGrate, + OxidizedCopperLantern, + OxidizedCopperTrapdoor, + OxidizedCutCopper, + OxidizedCutCopperSlab, + OxidizedCutCopperStairs, + OxidizedLightningRod, + PackedIce, + PackedMud, + PaleHangingMoss, + PaleMossBlock, + PaleMossCarpet, + PaleOakButton, + PaleOakDoor, + PaleOakFence, + PaleOakFenceGate, + PaleOakHangingSign, + PaleOakLeaves, + PaleOakLog, + PaleOakPlanks, + PaleOakPressurePlate, + PaleOakSapling, + PaleOakShelf, + PaleOakSign, + PaleOakSlab, + PaleOakStairs, + PaleOakTrapdoor, + PaleOakWallHangingSign, + PaleOakWallSign, + PaleOakWood, + PearlescentFroglight, + Peony, + PetrifiedOakSlab, + PiglinHead, + PiglinWallHead, + PinkBanner, + PinkBed, + PinkCandle, + PinkCandleCake, + PinkCarpet, + PinkConcrete, + PinkConcretePowder, + PinkGlazedTerracotta, + PinkPetals, + PinkShulkerBox, + PinkStainedGlass, + PinkStainedGlassPane, + PinkTerracotta, + PinkTulip, + PinkWallBanner, + PinkWool, + Piston, + PistonHead, + PitcherCrop, + PitcherPlant, + PlayerHead, + PlayerWallHead, + Podzol, + PointedDripstone, + PolishedAndesite, + PolishedAndesiteSlab, + PolishedAndesiteStairs, + PolishedBasalt, + PolishedBlackstone, + PolishedBlackstoneBrickSlab, + PolishedBlackstoneBrickStairs, + PolishedBlackstoneBrickWall, + PolishedBlackstoneBricks, + PolishedBlackstoneButton, + PolishedBlackstonePressurePlate, + PolishedBlackstoneSlab, + PolishedBlackstoneStairs, + PolishedBlackstoneWall, + PolishedCinnabar, + PolishedCinnabarSlab, + PolishedCinnabarStairs, + PolishedCinnabarWall, + PolishedDeepslate, + PolishedDeepslateSlab, + PolishedDeepslateStairs, + PolishedDeepslateWall, + PolishedDiorite, + PolishedDioriteSlab, + PolishedDioriteStairs, + PolishedGranite, + PolishedGraniteSlab, + PolishedGraniteStairs, + PolishedSulfur, + PolishedSulfurSlab, + PolishedSulfurStairs, + PolishedSulfurWall, + PolishedTuff, + PolishedTuffSlab, + PolishedTuffStairs, + PolishedTuffWall, + Poppy, + Potatoes, + PotentSulfur, + PottedAcaciaSapling, + PottedAllium, + PottedAzaleaBush, + PottedAzureBluet, + PottedBamboo, + PottedBirchSapling, + PottedBlueOrchid, + PottedBrownMushroom, + PottedCactus, + PottedCherrySapling, + PottedClosedEyeblossom, + PottedCornflower, + PottedCrimsonFungus, + PottedCrimsonRoots, + PottedDandelion, + PottedDarkOakSapling, + PottedDeadBush, + PottedFern, + PottedFloweringAzaleaBush, + PottedGoldenDandelion, + PottedJungleSapling, + PottedLilyOfTheValley, + PottedMangrovePropagule, + PottedOakSapling, + PottedOpenEyeblossom, + PottedOrangeTulip, + PottedOxeyeDaisy, + PottedPaleOakSapling, + PottedPinkTulip, + PottedPoppy, + PottedRedMushroom, + PottedRedTulip, + PottedSpruceSapling, + PottedTorchflower, + PottedWarpedFungus, + PottedWarpedRoots, + PottedWhiteTulip, + PottedWitherRose, + PowderSnow, + PowderSnowCauldron, + PoweredRail, + Prismarine, + PrismarineBrickSlab, + PrismarineBrickStairs, + PrismarineBricks, + PrismarineSlab, + PrismarineStairs, + PrismarineWall, + Pumpkin, + PumpkinStem, + PurpleBanner, + PurpleBed, + PurpleCandle, + PurpleCandleCake, + PurpleCarpet, + PurpleConcrete, + PurpleConcretePowder, + PurpleGlazedTerracotta, + PurpleShulkerBox, + PurpleStainedGlass, + PurpleStainedGlassPane, + PurpleTerracotta, + PurpleWallBanner, + PurpleWool, + PurpurBlock, + PurpurPillar, + PurpurSlab, + PurpurStairs, + QuartzBlock, + QuartzBricks, + QuartzPillar, + QuartzSlab, + QuartzStairs, + Rail, + RawCopperBlock, + RawGoldBlock, + RawIronBlock, + RedBanner, + RedBed, + RedCandle, + RedCandleCake, + RedCarpet, + RedConcrete, + RedConcretePowder, + RedGlazedTerracotta, + RedMushroom, + RedMushroomBlock, + RedNetherBrickSlab, + RedNetherBrickStairs, + RedNetherBrickWall, + RedNetherBricks, + RedSand, + RedSandstone, + RedSandstoneSlab, + RedSandstoneStairs, + RedSandstoneWall, + RedShulkerBox, + RedStainedGlass, + RedStainedGlassPane, + RedTerracotta, + RedTulip, + RedWallBanner, + RedWool, + RedstoneBlock, + RedstoneLamp, + RedstoneOre, + RedstoneTorch, + RedstoneWallTorch, + RedstoneWire, + ReinforcedDeepslate, + Repeater, + RepeatingCommandBlock, + ResinBlock, + ResinBrickSlab, + ResinBrickStairs, + ResinBrickWall, + ResinBricks, + ResinClump, + RespawnAnchor, + RootedDirt, + RoseBush, + Sand, + Sandstone, + SandstoneSlab, + SandstoneStairs, + SandstoneWall, + Scaffolding, + Sculk, + SculkCatalyst, + SculkSensor, + SculkShrieker, + SculkVein, + SeaLantern, + SeaPickle, + Seagrass, + ShortDryGrass, + ShortGrass, + Shroomlight, + ShulkerBox, + SkeletonSkull, + SkeletonWallSkull, + SlimeBlock, + SmallAmethystBud, + SmallDripleaf, + SmithingTable, + Smoker, + SmoothBasalt, + SmoothQuartz, + SmoothQuartzSlab, + SmoothQuartzStairs, + SmoothRedSandstone, + SmoothRedSandstoneSlab, + SmoothRedSandstoneStairs, + SmoothSandstone, + SmoothSandstoneSlab, + SmoothSandstoneStairs, + SmoothStone, + SmoothStoneSlab, + SnifferEgg, + Snow, + SnowBlock, + SoulCampfire, + SoulFire, + SoulLantern, + SoulSand, + SoulSoil, + SoulTorch, + SoulWallTorch, + Spawner, + Sponge, + SporeBlossom, + SpruceButton, + SpruceDoor, + SpruceFence, + SpruceFenceGate, + SpruceHangingSign, + SpruceLeaves, + SpruceLog, + SprucePlanks, + SprucePressurePlate, + SpruceSapling, + SpruceShelf, + SpruceSign, + SpruceSlab, + SpruceStairs, + SpruceTrapdoor, + SpruceWallHangingSign, + SpruceWallSign, + SpruceWood, + StickyPiston, + Stone, + StoneBrickSlab, + StoneBrickStairs, + StoneBrickWall, + StoneBricks, + StoneButton, + StonePressurePlate, + StoneSlab, + StoneStairs, + Stonecutter, + StrippedAcaciaLog, + StrippedAcaciaWood, + StrippedBambooBlock, + StrippedBirchLog, + StrippedBirchWood, + StrippedCherryLog, + StrippedCherryWood, + StrippedCrimsonHyphae, + StrippedCrimsonStem, + StrippedDarkOakLog, + StrippedDarkOakWood, + StrippedJungleLog, + StrippedJungleWood, + StrippedMangroveLog, + StrippedMangroveWood, + StrippedOakLog, + StrippedOakWood, + StrippedPaleOakLog, + StrippedPaleOakWood, + StrippedSpruceLog, + StrippedSpruceWood, + StrippedWarpedHyphae, + StrippedWarpedStem, + StructureBlock, + StructureVoid, + SugarCane, + Sulfur, + SulfurBrickSlab, + SulfurBrickStairs, + SulfurBrickWall, + SulfurBricks, + SulfurSlab, + SulfurSpike, + SulfurStairs, + SulfurWall, + Sunflower, + SuspiciousGravel, + SuspiciousSand, + SweetBerryBush, + TallDryGrass, + TallGrass, + TallSeagrass, + Target, + Terracotta, + TestBlock, + TestInstanceBlock, + TintedGlass, + Tnt, + Torch, + Torchflower, + TorchflowerCrop, + TrappedChest, + TrialSpawner, + Tripwire, + TripwireHook, + TubeCoral, + TubeCoralBlock, + TubeCoralFan, + TubeCoralWallFan, + Tuff, + TuffBrickSlab, + TuffBrickStairs, + TuffBrickWall, + TuffBricks, + TuffSlab, + TuffStairs, + TuffWall, + TurtleEgg, + TwistingVines, + TwistingVinesPlant, + Vault, + VerdantFroglight, + Vine, + VoidAir, + WallTorch, + WarpedButton, + WarpedDoor, + WarpedFence, + WarpedFenceGate, + WarpedFungus, + WarpedHangingSign, + WarpedHyphae, + WarpedNylium, + WarpedPlanks, + WarpedPressurePlate, + WarpedRoots, + WarpedShelf, + WarpedSign, + WarpedSlab, + WarpedStairs, + WarpedStem, + WarpedTrapdoor, + WarpedWallHangingSign, + WarpedWallSign, + WarpedWartBlock, + Water, + WaterCauldron, + WaxedChiseledCopper, + WaxedCopperBars, + WaxedCopperBlock, + WaxedCopperBulb, + WaxedCopperChain, + WaxedCopperChest, + WaxedCopperDoor, + WaxedCopperGolemStatue, + WaxedCopperGrate, + WaxedCopperLantern, + WaxedCopperTrapdoor, + WaxedCutCopper, + WaxedCutCopperSlab, + WaxedCutCopperStairs, + WaxedExposedChiseledCopper, + WaxedExposedCopper, + WaxedExposedCopperBars, + WaxedExposedCopperBulb, + WaxedExposedCopperChain, + WaxedExposedCopperChest, + WaxedExposedCopperDoor, + WaxedExposedCopperGolemStatue, + WaxedExposedCopperGrate, + WaxedExposedCopperLantern, + WaxedExposedCopperTrapdoor, + WaxedExposedCutCopper, + WaxedExposedCutCopperSlab, + WaxedExposedCutCopperStairs, + WaxedExposedLightningRod, + WaxedLightningRod, + WaxedOxidizedChiseledCopper, + WaxedOxidizedCopper, + WaxedOxidizedCopperBars, + WaxedOxidizedCopperBulb, + WaxedOxidizedCopperChain, + WaxedOxidizedCopperChest, + WaxedOxidizedCopperDoor, + WaxedOxidizedCopperGolemStatue, + WaxedOxidizedCopperGrate, + WaxedOxidizedCopperLantern, + WaxedOxidizedCopperTrapdoor, + WaxedOxidizedCutCopper, + WaxedOxidizedCutCopperSlab, + WaxedOxidizedCutCopperStairs, + WaxedOxidizedLightningRod, + WaxedWeatheredChiseledCopper, + WaxedWeatheredCopper, + WaxedWeatheredCopperBars, + WaxedWeatheredCopperBulb, + WaxedWeatheredCopperChain, + WaxedWeatheredCopperChest, + WaxedWeatheredCopperDoor, + WaxedWeatheredCopperGolemStatue, + WaxedWeatheredCopperGrate, + WaxedWeatheredCopperLantern, + WaxedWeatheredCopperTrapdoor, + WaxedWeatheredCutCopper, + WaxedWeatheredCutCopperSlab, + WaxedWeatheredCutCopperStairs, + WaxedWeatheredLightningRod, + WeatheredChiseledCopper, + WeatheredCopper, + WeatheredCopperBars, + WeatheredCopperBulb, + WeatheredCopperChain, + WeatheredCopperChest, + WeatheredCopperDoor, + WeatheredCopperGolemStatue, + WeatheredCopperGrate, + WeatheredCopperLantern, + WeatheredCopperTrapdoor, + WeatheredCutCopper, + WeatheredCutCopperSlab, + WeatheredCutCopperStairs, + WeatheredLightningRod, + WeepingVines, + WeepingVinesPlant, + WetSponge, + Wheat, + WhiteBanner, + WhiteBed, + WhiteCandle, + WhiteCandleCake, + WhiteCarpet, + WhiteConcrete, + WhiteConcretePowder, + WhiteGlazedTerracotta, + WhiteShulkerBox, + WhiteStainedGlass, + WhiteStainedGlassPane, + WhiteTerracotta, + WhiteTulip, + WhiteWallBanner, + WhiteWool, + Wildflowers, + WitherRose, + WitherSkeletonSkull, + WitherSkeletonWallSkull, + YellowBanner, + YellowBed, + YellowCandle, + YellowCandleCake, + YellowCarpet, + YellowConcrete, + YellowConcretePowder, + YellowGlazedTerracotta, + YellowShulkerBox, + YellowStainedGlass, + YellowStainedGlassPane, + YellowTerracotta, + YellowWallBanner, + YellowWool, + ZombieHead, + ZombieWallHead, +} + +impl BlockType { + /// Returns the plain block name (e.g. `"stone"` or `"diamond_block"`). + #[must_use] + pub const fn as_str(&self) -> &'static str { + match self { + Self::AcaciaButton => "acacia_button", + Self::AcaciaDoor => "acacia_door", + Self::AcaciaFence => "acacia_fence", + Self::AcaciaFenceGate => "acacia_fence_gate", + Self::AcaciaHangingSign => "acacia_hanging_sign", + Self::AcaciaLeaves => "acacia_leaves", + Self::AcaciaLog => "acacia_log", + Self::AcaciaPlanks => "acacia_planks", + Self::AcaciaPressurePlate => "acacia_pressure_plate", + Self::AcaciaSapling => "acacia_sapling", + Self::AcaciaShelf => "acacia_shelf", + Self::AcaciaSign => "acacia_sign", + Self::AcaciaSlab => "acacia_slab", + Self::AcaciaStairs => "acacia_stairs", + Self::AcaciaTrapdoor => "acacia_trapdoor", + Self::AcaciaWallHangingSign => "acacia_wall_hanging_sign", + Self::AcaciaWallSign => "acacia_wall_sign", + Self::AcaciaWood => "acacia_wood", + Self::ActivatorRail => "activator_rail", + Self::Air => "air", + Self::Allium => "allium", + Self::AmethystBlock => "amethyst_block", + Self::AmethystCluster => "amethyst_cluster", + Self::AncientDebris => "ancient_debris", + Self::Andesite => "andesite", + Self::AndesiteSlab => "andesite_slab", + Self::AndesiteStairs => "andesite_stairs", + Self::AndesiteWall => "andesite_wall", + Self::Anvil => "anvil", + Self::AttachedMelonStem => "attached_melon_stem", + Self::AttachedPumpkinStem => "attached_pumpkin_stem", + Self::Azalea => "azalea", + Self::AzaleaLeaves => "azalea_leaves", + Self::AzureBluet => "azure_bluet", + Self::Bamboo => "bamboo", + Self::BambooBlock => "bamboo_block", + Self::BambooButton => "bamboo_button", + Self::BambooDoor => "bamboo_door", + Self::BambooFence => "bamboo_fence", + Self::BambooFenceGate => "bamboo_fence_gate", + Self::BambooHangingSign => "bamboo_hanging_sign", + Self::BambooMosaic => "bamboo_mosaic", + Self::BambooMosaicSlab => "bamboo_mosaic_slab", + Self::BambooMosaicStairs => "bamboo_mosaic_stairs", + Self::BambooPlanks => "bamboo_planks", + Self::BambooPressurePlate => "bamboo_pressure_plate", + Self::BambooSapling => "bamboo_sapling", + Self::BambooShelf => "bamboo_shelf", + Self::BambooSign => "bamboo_sign", + Self::BambooSlab => "bamboo_slab", + Self::BambooStairs => "bamboo_stairs", + Self::BambooTrapdoor => "bamboo_trapdoor", + Self::BambooWallHangingSign => "bamboo_wall_hanging_sign", + Self::BambooWallSign => "bamboo_wall_sign", + Self::Barrel => "barrel", + Self::Barrier => "barrier", + Self::Basalt => "basalt", + Self::Beacon => "beacon", + Self::Bedrock => "bedrock", + Self::BeeNest => "bee_nest", + Self::Beehive => "beehive", + Self::Beetroots => "beetroots", + Self::Bell => "bell", + Self::BigDripleaf => "big_dripleaf", + Self::BigDripleafStem => "big_dripleaf_stem", + Self::BirchButton => "birch_button", + Self::BirchDoor => "birch_door", + Self::BirchFence => "birch_fence", + Self::BirchFenceGate => "birch_fence_gate", + Self::BirchHangingSign => "birch_hanging_sign", + Self::BirchLeaves => "birch_leaves", + Self::BirchLog => "birch_log", + Self::BirchPlanks => "birch_planks", + Self::BirchPressurePlate => "birch_pressure_plate", + Self::BirchSapling => "birch_sapling", + Self::BirchShelf => "birch_shelf", + Self::BirchSign => "birch_sign", + Self::BirchSlab => "birch_slab", + Self::BirchStairs => "birch_stairs", + Self::BirchTrapdoor => "birch_trapdoor", + Self::BirchWallHangingSign => "birch_wall_hanging_sign", + Self::BirchWallSign => "birch_wall_sign", + Self::BirchWood => "birch_wood", + Self::BlackBanner => "black_banner", + Self::BlackBed => "black_bed", + Self::BlackCandle => "black_candle", + Self::BlackCandleCake => "black_candle_cake", + Self::BlackCarpet => "black_carpet", + Self::BlackConcrete => "black_concrete", + Self::BlackConcretePowder => "black_concrete_powder", + Self::BlackGlazedTerracotta => "black_glazed_terracotta", + Self::BlackShulkerBox => "black_shulker_box", + Self::BlackStainedGlass => "black_stained_glass", + Self::BlackStainedGlassPane => "black_stained_glass_pane", + Self::BlackTerracotta => "black_terracotta", + Self::BlackWallBanner => "black_wall_banner", + Self::BlackWool => "black_wool", + Self::Blackstone => "blackstone", + Self::BlackstoneSlab => "blackstone_slab", + Self::BlackstoneStairs => "blackstone_stairs", + Self::BlackstoneWall => "blackstone_wall", + Self::BlastFurnace => "blast_furnace", + Self::BlueBanner => "blue_banner", + Self::BlueBed => "blue_bed", + Self::BlueCandle => "blue_candle", + Self::BlueCandleCake => "blue_candle_cake", + Self::BlueCarpet => "blue_carpet", + Self::BlueConcrete => "blue_concrete", + Self::BlueConcretePowder => "blue_concrete_powder", + Self::BlueGlazedTerracotta => "blue_glazed_terracotta", + Self::BlueIce => "blue_ice", + Self::BlueOrchid => "blue_orchid", + Self::BlueShulkerBox => "blue_shulker_box", + Self::BlueStainedGlass => "blue_stained_glass", + Self::BlueStainedGlassPane => "blue_stained_glass_pane", + Self::BlueTerracotta => "blue_terracotta", + Self::BlueWallBanner => "blue_wall_banner", + Self::BlueWool => "blue_wool", + Self::BoneBlock => "bone_block", + Self::Bookshelf => "bookshelf", + Self::BrainCoral => "brain_coral", + Self::BrainCoralBlock => "brain_coral_block", + Self::BrainCoralFan => "brain_coral_fan", + Self::BrainCoralWallFan => "brain_coral_wall_fan", + Self::BrewingStand => "brewing_stand", + Self::BrickSlab => "brick_slab", + Self::BrickStairs => "brick_stairs", + Self::BrickWall => "brick_wall", + Self::Bricks => "bricks", + Self::BrownBanner => "brown_banner", + Self::BrownBed => "brown_bed", + Self::BrownCandle => "brown_candle", + Self::BrownCandleCake => "brown_candle_cake", + Self::BrownCarpet => "brown_carpet", + Self::BrownConcrete => "brown_concrete", + Self::BrownConcretePowder => "brown_concrete_powder", + Self::BrownGlazedTerracotta => "brown_glazed_terracotta", + Self::BrownMushroom => "brown_mushroom", + Self::BrownMushroomBlock => "brown_mushroom_block", + Self::BrownShulkerBox => "brown_shulker_box", + Self::BrownStainedGlass => "brown_stained_glass", + Self::BrownStainedGlassPane => "brown_stained_glass_pane", + Self::BrownTerracotta => "brown_terracotta", + Self::BrownWallBanner => "brown_wall_banner", + Self::BrownWool => "brown_wool", + Self::BubbleColumn => "bubble_column", + Self::BubbleCoral => "bubble_coral", + Self::BubbleCoralBlock => "bubble_coral_block", + Self::BubbleCoralFan => "bubble_coral_fan", + Self::BubbleCoralWallFan => "bubble_coral_wall_fan", + Self::BuddingAmethyst => "budding_amethyst", + Self::Bush => "bush", + Self::Cactus => "cactus", + Self::CactusFlower => "cactus_flower", + Self::Cake => "cake", + Self::Calcite => "calcite", + Self::CalibratedSculkSensor => "calibrated_sculk_sensor", + Self::Campfire => "campfire", + Self::Candle => "candle", + Self::CandleCake => "candle_cake", + Self::Carrots => "carrots", + Self::CartographyTable => "cartography_table", + Self::CarvedPumpkin => "carved_pumpkin", + Self::Cauldron => "cauldron", + Self::CaveAir => "cave_air", + Self::CaveVines => "cave_vines", + Self::CaveVinesPlant => "cave_vines_plant", + Self::ChainCommandBlock => "chain_command_block", + Self::CherryButton => "cherry_button", + Self::CherryDoor => "cherry_door", + Self::CherryFence => "cherry_fence", + Self::CherryFenceGate => "cherry_fence_gate", + Self::CherryHangingSign => "cherry_hanging_sign", + Self::CherryLeaves => "cherry_leaves", + Self::CherryLog => "cherry_log", + Self::CherryPlanks => "cherry_planks", + Self::CherryPressurePlate => "cherry_pressure_plate", + Self::CherrySapling => "cherry_sapling", + Self::CherryShelf => "cherry_shelf", + Self::CherrySign => "cherry_sign", + Self::CherrySlab => "cherry_slab", + Self::CherryStairs => "cherry_stairs", + Self::CherryTrapdoor => "cherry_trapdoor", + Self::CherryWallHangingSign => "cherry_wall_hanging_sign", + Self::CherryWallSign => "cherry_wall_sign", + Self::CherryWood => "cherry_wood", + Self::Chest => "chest", + Self::ChippedAnvil => "chipped_anvil", + Self::ChiseledBookshelf => "chiseled_bookshelf", + Self::ChiseledCinnabar => "chiseled_cinnabar", + Self::ChiseledCopper => "chiseled_copper", + Self::ChiseledDeepslate => "chiseled_deepslate", + Self::ChiseledNetherBricks => "chiseled_nether_bricks", + Self::ChiseledPolishedBlackstone => "chiseled_polished_blackstone", + Self::ChiseledQuartzBlock => "chiseled_quartz_block", + Self::ChiseledRedSandstone => "chiseled_red_sandstone", + Self::ChiseledResinBricks => "chiseled_resin_bricks", + Self::ChiseledSandstone => "chiseled_sandstone", + Self::ChiseledStoneBricks => "chiseled_stone_bricks", + Self::ChiseledSulfur => "chiseled_sulfur", + Self::ChiseledTuff => "chiseled_tuff", + Self::ChiseledTuffBricks => "chiseled_tuff_bricks", + Self::ChorusFlower => "chorus_flower", + Self::ChorusPlant => "chorus_plant", + Self::Cinnabar => "cinnabar", + Self::CinnabarBrickSlab => "cinnabar_brick_slab", + Self::CinnabarBrickStairs => "cinnabar_brick_stairs", + Self::CinnabarBrickWall => "cinnabar_brick_wall", + Self::CinnabarBricks => "cinnabar_bricks", + Self::CinnabarSlab => "cinnabar_slab", + Self::CinnabarStairs => "cinnabar_stairs", + Self::CinnabarWall => "cinnabar_wall", + Self::Clay => "clay", + Self::ClosedEyeblossom => "closed_eyeblossom", + Self::CoalBlock => "coal_block", + Self::CoalOre => "coal_ore", + Self::CoarseDirt => "coarse_dirt", + Self::CobbledDeepslate => "cobbled_deepslate", + Self::CobbledDeepslateSlab => "cobbled_deepslate_slab", + Self::CobbledDeepslateStairs => "cobbled_deepslate_stairs", + Self::CobbledDeepslateWall => "cobbled_deepslate_wall", + Self::Cobblestone => "cobblestone", + Self::CobblestoneSlab => "cobblestone_slab", + Self::CobblestoneStairs => "cobblestone_stairs", + Self::CobblestoneWall => "cobblestone_wall", + Self::Cobweb => "cobweb", + Self::Cocoa => "cocoa", + Self::CommandBlock => "command_block", + Self::Comparator => "comparator", + Self::Composter => "composter", + Self::Conduit => "conduit", + Self::CopperBars => "copper_bars", + Self::CopperBlock => "copper_block", + Self::CopperBulb => "copper_bulb", + Self::CopperChain => "copper_chain", + Self::CopperChest => "copper_chest", + Self::CopperDoor => "copper_door", + Self::CopperGolemStatue => "copper_golem_statue", + Self::CopperGrate => "copper_grate", + Self::CopperLantern => "copper_lantern", + Self::CopperOre => "copper_ore", + Self::CopperTorch => "copper_torch", + Self::CopperTrapdoor => "copper_trapdoor", + Self::CopperWallTorch => "copper_wall_torch", + Self::Cornflower => "cornflower", + Self::CrackedDeepslateBricks => "cracked_deepslate_bricks", + Self::CrackedDeepslateTiles => "cracked_deepslate_tiles", + Self::CrackedNetherBricks => "cracked_nether_bricks", + Self::CrackedPolishedBlackstoneBricks => "cracked_polished_blackstone_bricks", + Self::CrackedStoneBricks => "cracked_stone_bricks", + Self::Crafter => "crafter", + Self::CraftingTable => "crafting_table", + Self::CreakingHeart => "creaking_heart", + Self::CreeperHead => "creeper_head", + Self::CreeperWallHead => "creeper_wall_head", + Self::CrimsonButton => "crimson_button", + Self::CrimsonDoor => "crimson_door", + Self::CrimsonFence => "crimson_fence", + Self::CrimsonFenceGate => "crimson_fence_gate", + Self::CrimsonFungus => "crimson_fungus", + Self::CrimsonHangingSign => "crimson_hanging_sign", + Self::CrimsonHyphae => "crimson_hyphae", + Self::CrimsonNylium => "crimson_nylium", + Self::CrimsonPlanks => "crimson_planks", + Self::CrimsonPressurePlate => "crimson_pressure_plate", + Self::CrimsonRoots => "crimson_roots", + Self::CrimsonShelf => "crimson_shelf", + Self::CrimsonSign => "crimson_sign", + Self::CrimsonSlab => "crimson_slab", + Self::CrimsonStairs => "crimson_stairs", + Self::CrimsonStem => "crimson_stem", + Self::CrimsonTrapdoor => "crimson_trapdoor", + Self::CrimsonWallHangingSign => "crimson_wall_hanging_sign", + Self::CrimsonWallSign => "crimson_wall_sign", + Self::CryingObsidian => "crying_obsidian", + Self::CutCopper => "cut_copper", + Self::CutCopperSlab => "cut_copper_slab", + Self::CutCopperStairs => "cut_copper_stairs", + Self::CutRedSandstone => "cut_red_sandstone", + Self::CutRedSandstoneSlab => "cut_red_sandstone_slab", + Self::CutSandstone => "cut_sandstone", + Self::CutSandstoneSlab => "cut_sandstone_slab", + Self::CyanBanner => "cyan_banner", + Self::CyanBed => "cyan_bed", + Self::CyanCandle => "cyan_candle", + Self::CyanCandleCake => "cyan_candle_cake", + Self::CyanCarpet => "cyan_carpet", + Self::CyanConcrete => "cyan_concrete", + Self::CyanConcretePowder => "cyan_concrete_powder", + Self::CyanGlazedTerracotta => "cyan_glazed_terracotta", + Self::CyanShulkerBox => "cyan_shulker_box", + Self::CyanStainedGlass => "cyan_stained_glass", + Self::CyanStainedGlassPane => "cyan_stained_glass_pane", + Self::CyanTerracotta => "cyan_terracotta", + Self::CyanWallBanner => "cyan_wall_banner", + Self::CyanWool => "cyan_wool", + Self::DamagedAnvil => "damaged_anvil", + Self::Dandelion => "dandelion", + Self::DarkOakButton => "dark_oak_button", + Self::DarkOakDoor => "dark_oak_door", + Self::DarkOakFence => "dark_oak_fence", + Self::DarkOakFenceGate => "dark_oak_fence_gate", + Self::DarkOakHangingSign => "dark_oak_hanging_sign", + Self::DarkOakLeaves => "dark_oak_leaves", + Self::DarkOakLog => "dark_oak_log", + Self::DarkOakPlanks => "dark_oak_planks", + Self::DarkOakPressurePlate => "dark_oak_pressure_plate", + Self::DarkOakSapling => "dark_oak_sapling", + Self::DarkOakShelf => "dark_oak_shelf", + Self::DarkOakSign => "dark_oak_sign", + Self::DarkOakSlab => "dark_oak_slab", + Self::DarkOakStairs => "dark_oak_stairs", + Self::DarkOakTrapdoor => "dark_oak_trapdoor", + Self::DarkOakWallHangingSign => "dark_oak_wall_hanging_sign", + Self::DarkOakWallSign => "dark_oak_wall_sign", + Self::DarkOakWood => "dark_oak_wood", + Self::DarkPrismarine => "dark_prismarine", + Self::DarkPrismarineSlab => "dark_prismarine_slab", + Self::DarkPrismarineStairs => "dark_prismarine_stairs", + Self::DaylightDetector => "daylight_detector", + Self::DeadBrainCoral => "dead_brain_coral", + Self::DeadBrainCoralBlock => "dead_brain_coral_block", + Self::DeadBrainCoralFan => "dead_brain_coral_fan", + Self::DeadBrainCoralWallFan => "dead_brain_coral_wall_fan", + Self::DeadBubbleCoral => "dead_bubble_coral", + Self::DeadBubbleCoralBlock => "dead_bubble_coral_block", + Self::DeadBubbleCoralFan => "dead_bubble_coral_fan", + Self::DeadBubbleCoralWallFan => "dead_bubble_coral_wall_fan", + Self::DeadBush => "dead_bush", + Self::DeadFireCoral => "dead_fire_coral", + Self::DeadFireCoralBlock => "dead_fire_coral_block", + Self::DeadFireCoralFan => "dead_fire_coral_fan", + Self::DeadFireCoralWallFan => "dead_fire_coral_wall_fan", + Self::DeadHornCoral => "dead_horn_coral", + Self::DeadHornCoralBlock => "dead_horn_coral_block", + Self::DeadHornCoralFan => "dead_horn_coral_fan", + Self::DeadHornCoralWallFan => "dead_horn_coral_wall_fan", + Self::DeadTubeCoral => "dead_tube_coral", + Self::DeadTubeCoralBlock => "dead_tube_coral_block", + Self::DeadTubeCoralFan => "dead_tube_coral_fan", + Self::DeadTubeCoralWallFan => "dead_tube_coral_wall_fan", + Self::DecoratedPot => "decorated_pot", + Self::Deepslate => "deepslate", + Self::DeepslateBrickSlab => "deepslate_brick_slab", + Self::DeepslateBrickStairs => "deepslate_brick_stairs", + Self::DeepslateBrickWall => "deepslate_brick_wall", + Self::DeepslateBricks => "deepslate_bricks", + Self::DeepslateCoalOre => "deepslate_coal_ore", + Self::DeepslateCopperOre => "deepslate_copper_ore", + Self::DeepslateDiamondOre => "deepslate_diamond_ore", + Self::DeepslateEmeraldOre => "deepslate_emerald_ore", + Self::DeepslateGoldOre => "deepslate_gold_ore", + Self::DeepslateIronOre => "deepslate_iron_ore", + Self::DeepslateLapisOre => "deepslate_lapis_ore", + Self::DeepslateRedstoneOre => "deepslate_redstone_ore", + Self::DeepslateTileSlab => "deepslate_tile_slab", + Self::DeepslateTileStairs => "deepslate_tile_stairs", + Self::DeepslateTileWall => "deepslate_tile_wall", + Self::DeepslateTiles => "deepslate_tiles", + Self::DetectorRail => "detector_rail", + Self::DiamondBlock => "diamond_block", + Self::DiamondOre => "diamond_ore", + Self::Diorite => "diorite", + Self::DioriteSlab => "diorite_slab", + Self::DioriteStairs => "diorite_stairs", + Self::DioriteWall => "diorite_wall", + Self::Dirt => "dirt", + Self::DirtPath => "dirt_path", + Self::Dispenser => "dispenser", + Self::DragonEgg => "dragon_egg", + Self::DragonHead => "dragon_head", + Self::DragonWallHead => "dragon_wall_head", + Self::DriedGhast => "dried_ghast", + Self::DriedKelpBlock => "dried_kelp_block", + Self::DripstoneBlock => "dripstone_block", + Self::Dropper => "dropper", + Self::EmeraldBlock => "emerald_block", + Self::EmeraldOre => "emerald_ore", + Self::EnchantingTable => "enchanting_table", + Self::EndGateway => "end_gateway", + Self::EndPortal => "end_portal", + Self::EndPortalFrame => "end_portal_frame", + Self::EndRod => "end_rod", + Self::EndStone => "end_stone", + Self::EndStoneBrickSlab => "end_stone_brick_slab", + Self::EndStoneBrickStairs => "end_stone_brick_stairs", + Self::EndStoneBrickWall => "end_stone_brick_wall", + Self::EndStoneBricks => "end_stone_bricks", + Self::EnderChest => "ender_chest", + Self::ExposedChiseledCopper => "exposed_chiseled_copper", + Self::ExposedCopper => "exposed_copper", + Self::ExposedCopperBars => "exposed_copper_bars", + Self::ExposedCopperBulb => "exposed_copper_bulb", + Self::ExposedCopperChain => "exposed_copper_chain", + Self::ExposedCopperChest => "exposed_copper_chest", + Self::ExposedCopperDoor => "exposed_copper_door", + Self::ExposedCopperGolemStatue => "exposed_copper_golem_statue", + Self::ExposedCopperGrate => "exposed_copper_grate", + Self::ExposedCopperLantern => "exposed_copper_lantern", + Self::ExposedCopperTrapdoor => "exposed_copper_trapdoor", + Self::ExposedCutCopper => "exposed_cut_copper", + Self::ExposedCutCopperSlab => "exposed_cut_copper_slab", + Self::ExposedCutCopperStairs => "exposed_cut_copper_stairs", + Self::ExposedLightningRod => "exposed_lightning_rod", + Self::Farmland => "farmland", + Self::Fern => "fern", + Self::Fire => "fire", + Self::FireCoral => "fire_coral", + Self::FireCoralBlock => "fire_coral_block", + Self::FireCoralFan => "fire_coral_fan", + Self::FireCoralWallFan => "fire_coral_wall_fan", + Self::FireflyBush => "firefly_bush", + Self::FletchingTable => "fletching_table", + Self::FlowerPot => "flower_pot", + Self::FloweringAzalea => "flowering_azalea", + Self::FloweringAzaleaLeaves => "flowering_azalea_leaves", + Self::Frogspawn => "frogspawn", + Self::FrostedIce => "frosted_ice", + Self::Furnace => "furnace", + Self::GildedBlackstone => "gilded_blackstone", + Self::Glass => "glass", + Self::GlassPane => "glass_pane", + Self::GlowLichen => "glow_lichen", + Self::Glowstone => "glowstone", + Self::GoldBlock => "gold_block", + Self::GoldOre => "gold_ore", + Self::GoldenDandelion => "golden_dandelion", + Self::Granite => "granite", + Self::GraniteSlab => "granite_slab", + Self::GraniteStairs => "granite_stairs", + Self::GraniteWall => "granite_wall", + Self::GrassBlock => "grass_block", + Self::Gravel => "gravel", + Self::GrayBanner => "gray_banner", + Self::GrayBed => "gray_bed", + Self::GrayCandle => "gray_candle", + Self::GrayCandleCake => "gray_candle_cake", + Self::GrayCarpet => "gray_carpet", + Self::GrayConcrete => "gray_concrete", + Self::GrayConcretePowder => "gray_concrete_powder", + Self::GrayGlazedTerracotta => "gray_glazed_terracotta", + Self::GrayShulkerBox => "gray_shulker_box", + Self::GrayStainedGlass => "gray_stained_glass", + Self::GrayStainedGlassPane => "gray_stained_glass_pane", + Self::GrayTerracotta => "gray_terracotta", + Self::GrayWallBanner => "gray_wall_banner", + Self::GrayWool => "gray_wool", + Self::GreenBanner => "green_banner", + Self::GreenBed => "green_bed", + Self::GreenCandle => "green_candle", + Self::GreenCandleCake => "green_candle_cake", + Self::GreenCarpet => "green_carpet", + Self::GreenConcrete => "green_concrete", + Self::GreenConcretePowder => "green_concrete_powder", + Self::GreenGlazedTerracotta => "green_glazed_terracotta", + Self::GreenShulkerBox => "green_shulker_box", + Self::GreenStainedGlass => "green_stained_glass", + Self::GreenStainedGlassPane => "green_stained_glass_pane", + Self::GreenTerracotta => "green_terracotta", + Self::GreenWallBanner => "green_wall_banner", + Self::GreenWool => "green_wool", + Self::Grindstone => "grindstone", + Self::HangingRoots => "hanging_roots", + Self::HayBlock => "hay_block", + Self::HeavyCore => "heavy_core", + Self::HeavyWeightedPressurePlate => "heavy_weighted_pressure_plate", + Self::HoneyBlock => "honey_block", + Self::HoneycombBlock => "honeycomb_block", + Self::Hopper => "hopper", + Self::HornCoral => "horn_coral", + Self::HornCoralBlock => "horn_coral_block", + Self::HornCoralFan => "horn_coral_fan", + Self::HornCoralWallFan => "horn_coral_wall_fan", + Self::Ice => "ice", + Self::InfestedChiseledStoneBricks => "infested_chiseled_stone_bricks", + Self::InfestedCobblestone => "infested_cobblestone", + Self::InfestedCrackedStoneBricks => "infested_cracked_stone_bricks", + Self::InfestedDeepslate => "infested_deepslate", + Self::InfestedMossyStoneBricks => "infested_mossy_stone_bricks", + Self::InfestedStone => "infested_stone", + Self::InfestedStoneBricks => "infested_stone_bricks", + Self::IronBars => "iron_bars", + Self::IronBlock => "iron_block", + Self::IronChain => "iron_chain", + Self::IronDoor => "iron_door", + Self::IronOre => "iron_ore", + Self::IronTrapdoor => "iron_trapdoor", + Self::JackOLantern => "jack_o_lantern", + Self::Jigsaw => "jigsaw", + Self::Jukebox => "jukebox", + Self::JungleButton => "jungle_button", + Self::JungleDoor => "jungle_door", + Self::JungleFence => "jungle_fence", + Self::JungleFenceGate => "jungle_fence_gate", + Self::JungleHangingSign => "jungle_hanging_sign", + Self::JungleLeaves => "jungle_leaves", + Self::JungleLog => "jungle_log", + Self::JunglePlanks => "jungle_planks", + Self::JunglePressurePlate => "jungle_pressure_plate", + Self::JungleSapling => "jungle_sapling", + Self::JungleShelf => "jungle_shelf", + Self::JungleSign => "jungle_sign", + Self::JungleSlab => "jungle_slab", + Self::JungleStairs => "jungle_stairs", + Self::JungleTrapdoor => "jungle_trapdoor", + Self::JungleWallHangingSign => "jungle_wall_hanging_sign", + Self::JungleWallSign => "jungle_wall_sign", + Self::JungleWood => "jungle_wood", + Self::Kelp => "kelp", + Self::KelpPlant => "kelp_plant", + Self::Ladder => "ladder", + Self::Lantern => "lantern", + Self::LapisBlock => "lapis_block", + Self::LapisOre => "lapis_ore", + Self::LargeAmethystBud => "large_amethyst_bud", + Self::LargeFern => "large_fern", + Self::Lava => "lava", + Self::LavaCauldron => "lava_cauldron", + Self::LeafLitter => "leaf_litter", + Self::Lectern => "lectern", + Self::Lever => "lever", + Self::Light => "light", + Self::LightBlueBanner => "light_blue_banner", + Self::LightBlueBed => "light_blue_bed", + Self::LightBlueCandle => "light_blue_candle", + Self::LightBlueCandleCake => "light_blue_candle_cake", + Self::LightBlueCarpet => "light_blue_carpet", + Self::LightBlueConcrete => "light_blue_concrete", + Self::LightBlueConcretePowder => "light_blue_concrete_powder", + Self::LightBlueGlazedTerracotta => "light_blue_glazed_terracotta", + Self::LightBlueShulkerBox => "light_blue_shulker_box", + Self::LightBlueStainedGlass => "light_blue_stained_glass", + Self::LightBlueStainedGlassPane => "light_blue_stained_glass_pane", + Self::LightBlueTerracotta => "light_blue_terracotta", + Self::LightBlueWallBanner => "light_blue_wall_banner", + Self::LightBlueWool => "light_blue_wool", + Self::LightGrayBanner => "light_gray_banner", + Self::LightGrayBed => "light_gray_bed", + Self::LightGrayCandle => "light_gray_candle", + Self::LightGrayCandleCake => "light_gray_candle_cake", + Self::LightGrayCarpet => "light_gray_carpet", + Self::LightGrayConcrete => "light_gray_concrete", + Self::LightGrayConcretePowder => "light_gray_concrete_powder", + Self::LightGrayGlazedTerracotta => "light_gray_glazed_terracotta", + Self::LightGrayShulkerBox => "light_gray_shulker_box", + Self::LightGrayStainedGlass => "light_gray_stained_glass", + Self::LightGrayStainedGlassPane => "light_gray_stained_glass_pane", + Self::LightGrayTerracotta => "light_gray_terracotta", + Self::LightGrayWallBanner => "light_gray_wall_banner", + Self::LightGrayWool => "light_gray_wool", + Self::LightWeightedPressurePlate => "light_weighted_pressure_plate", + Self::LightningRod => "lightning_rod", + Self::Lilac => "lilac", + Self::LilyOfTheValley => "lily_of_the_valley", + Self::LilyPad => "lily_pad", + Self::LimeBanner => "lime_banner", + Self::LimeBed => "lime_bed", + Self::LimeCandle => "lime_candle", + Self::LimeCandleCake => "lime_candle_cake", + Self::LimeCarpet => "lime_carpet", + Self::LimeConcrete => "lime_concrete", + Self::LimeConcretePowder => "lime_concrete_powder", + Self::LimeGlazedTerracotta => "lime_glazed_terracotta", + Self::LimeShulkerBox => "lime_shulker_box", + Self::LimeStainedGlass => "lime_stained_glass", + Self::LimeStainedGlassPane => "lime_stained_glass_pane", + Self::LimeTerracotta => "lime_terracotta", + Self::LimeWallBanner => "lime_wall_banner", + Self::LimeWool => "lime_wool", + Self::Lodestone => "lodestone", + Self::Loom => "loom", + Self::MagentaBanner => "magenta_banner", + Self::MagentaBed => "magenta_bed", + Self::MagentaCandle => "magenta_candle", + Self::MagentaCandleCake => "magenta_candle_cake", + Self::MagentaCarpet => "magenta_carpet", + Self::MagentaConcrete => "magenta_concrete", + Self::MagentaConcretePowder => "magenta_concrete_powder", + Self::MagentaGlazedTerracotta => "magenta_glazed_terracotta", + Self::MagentaShulkerBox => "magenta_shulker_box", + Self::MagentaStainedGlass => "magenta_stained_glass", + Self::MagentaStainedGlassPane => "magenta_stained_glass_pane", + Self::MagentaTerracotta => "magenta_terracotta", + Self::MagentaWallBanner => "magenta_wall_banner", + Self::MagentaWool => "magenta_wool", + Self::MagmaBlock => "magma_block", + Self::MangroveButton => "mangrove_button", + Self::MangroveDoor => "mangrove_door", + Self::MangroveFence => "mangrove_fence", + Self::MangroveFenceGate => "mangrove_fence_gate", + Self::MangroveHangingSign => "mangrove_hanging_sign", + Self::MangroveLeaves => "mangrove_leaves", + Self::MangroveLog => "mangrove_log", + Self::MangrovePlanks => "mangrove_planks", + Self::MangrovePressurePlate => "mangrove_pressure_plate", + Self::MangrovePropagule => "mangrove_propagule", + Self::MangroveRoots => "mangrove_roots", + Self::MangroveShelf => "mangrove_shelf", + Self::MangroveSign => "mangrove_sign", + Self::MangroveSlab => "mangrove_slab", + Self::MangroveStairs => "mangrove_stairs", + Self::MangroveTrapdoor => "mangrove_trapdoor", + Self::MangroveWallHangingSign => "mangrove_wall_hanging_sign", + Self::MangroveWallSign => "mangrove_wall_sign", + Self::MangroveWood => "mangrove_wood", + Self::MediumAmethystBud => "medium_amethyst_bud", + Self::Melon => "melon", + Self::MelonStem => "melon_stem", + Self::MossBlock => "moss_block", + Self::MossCarpet => "moss_carpet", + Self::MossyCobblestone => "mossy_cobblestone", + Self::MossyCobblestoneSlab => "mossy_cobblestone_slab", + Self::MossyCobblestoneStairs => "mossy_cobblestone_stairs", + Self::MossyCobblestoneWall => "mossy_cobblestone_wall", + Self::MossyStoneBrickSlab => "mossy_stone_brick_slab", + Self::MossyStoneBrickStairs => "mossy_stone_brick_stairs", + Self::MossyStoneBrickWall => "mossy_stone_brick_wall", + Self::MossyStoneBricks => "mossy_stone_bricks", + Self::MovingPiston => "moving_piston", + Self::Mud => "mud", + Self::MudBrickSlab => "mud_brick_slab", + Self::MudBrickStairs => "mud_brick_stairs", + Self::MudBrickWall => "mud_brick_wall", + Self::MudBricks => "mud_bricks", + Self::MuddyMangroveRoots => "muddy_mangrove_roots", + Self::MushroomStem => "mushroom_stem", + Self::Mycelium => "mycelium", + Self::NetherBrickFence => "nether_brick_fence", + Self::NetherBrickSlab => "nether_brick_slab", + Self::NetherBrickStairs => "nether_brick_stairs", + Self::NetherBrickWall => "nether_brick_wall", + Self::NetherBricks => "nether_bricks", + Self::NetherGoldOre => "nether_gold_ore", + Self::NetherPortal => "nether_portal", + Self::NetherQuartzOre => "nether_quartz_ore", + Self::NetherSprouts => "nether_sprouts", + Self::NetherWart => "nether_wart", + Self::NetherWartBlock => "nether_wart_block", + Self::NetheriteBlock => "netherite_block", + Self::Netherrack => "netherrack", + Self::NoteBlock => "note_block", + Self::OakButton => "oak_button", + Self::OakDoor => "oak_door", + Self::OakFence => "oak_fence", + Self::OakFenceGate => "oak_fence_gate", + Self::OakHangingSign => "oak_hanging_sign", + Self::OakLeaves => "oak_leaves", + Self::OakLog => "oak_log", + Self::OakPlanks => "oak_planks", + Self::OakPressurePlate => "oak_pressure_plate", + Self::OakSapling => "oak_sapling", + Self::OakShelf => "oak_shelf", + Self::OakSign => "oak_sign", + Self::OakSlab => "oak_slab", + Self::OakStairs => "oak_stairs", + Self::OakTrapdoor => "oak_trapdoor", + Self::OakWallHangingSign => "oak_wall_hanging_sign", + Self::OakWallSign => "oak_wall_sign", + Self::OakWood => "oak_wood", + Self::Observer => "observer", + Self::Obsidian => "obsidian", + Self::OchreFroglight => "ochre_froglight", + Self::OpenEyeblossom => "open_eyeblossom", + Self::OrangeBanner => "orange_banner", + Self::OrangeBed => "orange_bed", + Self::OrangeCandle => "orange_candle", + Self::OrangeCandleCake => "orange_candle_cake", + Self::OrangeCarpet => "orange_carpet", + Self::OrangeConcrete => "orange_concrete", + Self::OrangeConcretePowder => "orange_concrete_powder", + Self::OrangeGlazedTerracotta => "orange_glazed_terracotta", + Self::OrangeShulkerBox => "orange_shulker_box", + Self::OrangeStainedGlass => "orange_stained_glass", + Self::OrangeStainedGlassPane => "orange_stained_glass_pane", + Self::OrangeTerracotta => "orange_terracotta", + Self::OrangeTulip => "orange_tulip", + Self::OrangeWallBanner => "orange_wall_banner", + Self::OrangeWool => "orange_wool", + Self::OxeyeDaisy => "oxeye_daisy", + Self::OxidizedChiseledCopper => "oxidized_chiseled_copper", + Self::OxidizedCopper => "oxidized_copper", + Self::OxidizedCopperBars => "oxidized_copper_bars", + Self::OxidizedCopperBulb => "oxidized_copper_bulb", + Self::OxidizedCopperChain => "oxidized_copper_chain", + Self::OxidizedCopperChest => "oxidized_copper_chest", + Self::OxidizedCopperDoor => "oxidized_copper_door", + Self::OxidizedCopperGolemStatue => "oxidized_copper_golem_statue", + Self::OxidizedCopperGrate => "oxidized_copper_grate", + Self::OxidizedCopperLantern => "oxidized_copper_lantern", + Self::OxidizedCopperTrapdoor => "oxidized_copper_trapdoor", + Self::OxidizedCutCopper => "oxidized_cut_copper", + Self::OxidizedCutCopperSlab => "oxidized_cut_copper_slab", + Self::OxidizedCutCopperStairs => "oxidized_cut_copper_stairs", + Self::OxidizedLightningRod => "oxidized_lightning_rod", + Self::PackedIce => "packed_ice", + Self::PackedMud => "packed_mud", + Self::PaleHangingMoss => "pale_hanging_moss", + Self::PaleMossBlock => "pale_moss_block", + Self::PaleMossCarpet => "pale_moss_carpet", + Self::PaleOakButton => "pale_oak_button", + Self::PaleOakDoor => "pale_oak_door", + Self::PaleOakFence => "pale_oak_fence", + Self::PaleOakFenceGate => "pale_oak_fence_gate", + Self::PaleOakHangingSign => "pale_oak_hanging_sign", + Self::PaleOakLeaves => "pale_oak_leaves", + Self::PaleOakLog => "pale_oak_log", + Self::PaleOakPlanks => "pale_oak_planks", + Self::PaleOakPressurePlate => "pale_oak_pressure_plate", + Self::PaleOakSapling => "pale_oak_sapling", + Self::PaleOakShelf => "pale_oak_shelf", + Self::PaleOakSign => "pale_oak_sign", + Self::PaleOakSlab => "pale_oak_slab", + Self::PaleOakStairs => "pale_oak_stairs", + Self::PaleOakTrapdoor => "pale_oak_trapdoor", + Self::PaleOakWallHangingSign => "pale_oak_wall_hanging_sign", + Self::PaleOakWallSign => "pale_oak_wall_sign", + Self::PaleOakWood => "pale_oak_wood", + Self::PearlescentFroglight => "pearlescent_froglight", + Self::Peony => "peony", + Self::PetrifiedOakSlab => "petrified_oak_slab", + Self::PiglinHead => "piglin_head", + Self::PiglinWallHead => "piglin_wall_head", + Self::PinkBanner => "pink_banner", + Self::PinkBed => "pink_bed", + Self::PinkCandle => "pink_candle", + Self::PinkCandleCake => "pink_candle_cake", + Self::PinkCarpet => "pink_carpet", + Self::PinkConcrete => "pink_concrete", + Self::PinkConcretePowder => "pink_concrete_powder", + Self::PinkGlazedTerracotta => "pink_glazed_terracotta", + Self::PinkPetals => "pink_petals", + Self::PinkShulkerBox => "pink_shulker_box", + Self::PinkStainedGlass => "pink_stained_glass", + Self::PinkStainedGlassPane => "pink_stained_glass_pane", + Self::PinkTerracotta => "pink_terracotta", + Self::PinkTulip => "pink_tulip", + Self::PinkWallBanner => "pink_wall_banner", + Self::PinkWool => "pink_wool", + Self::Piston => "piston", + Self::PistonHead => "piston_head", + Self::PitcherCrop => "pitcher_crop", + Self::PitcherPlant => "pitcher_plant", + Self::PlayerHead => "player_head", + Self::PlayerWallHead => "player_wall_head", + Self::Podzol => "podzol", + Self::PointedDripstone => "pointed_dripstone", + Self::PolishedAndesite => "polished_andesite", + Self::PolishedAndesiteSlab => "polished_andesite_slab", + Self::PolishedAndesiteStairs => "polished_andesite_stairs", + Self::PolishedBasalt => "polished_basalt", + Self::PolishedBlackstone => "polished_blackstone", + Self::PolishedBlackstoneBrickSlab => "polished_blackstone_brick_slab", + Self::PolishedBlackstoneBrickStairs => "polished_blackstone_brick_stairs", + Self::PolishedBlackstoneBrickWall => "polished_blackstone_brick_wall", + Self::PolishedBlackstoneBricks => "polished_blackstone_bricks", + Self::PolishedBlackstoneButton => "polished_blackstone_button", + Self::PolishedBlackstonePressurePlate => "polished_blackstone_pressure_plate", + Self::PolishedBlackstoneSlab => "polished_blackstone_slab", + Self::PolishedBlackstoneStairs => "polished_blackstone_stairs", + Self::PolishedBlackstoneWall => "polished_blackstone_wall", + Self::PolishedCinnabar => "polished_cinnabar", + Self::PolishedCinnabarSlab => "polished_cinnabar_slab", + Self::PolishedCinnabarStairs => "polished_cinnabar_stairs", + Self::PolishedCinnabarWall => "polished_cinnabar_wall", + Self::PolishedDeepslate => "polished_deepslate", + Self::PolishedDeepslateSlab => "polished_deepslate_slab", + Self::PolishedDeepslateStairs => "polished_deepslate_stairs", + Self::PolishedDeepslateWall => "polished_deepslate_wall", + Self::PolishedDiorite => "polished_diorite", + Self::PolishedDioriteSlab => "polished_diorite_slab", + Self::PolishedDioriteStairs => "polished_diorite_stairs", + Self::PolishedGranite => "polished_granite", + Self::PolishedGraniteSlab => "polished_granite_slab", + Self::PolishedGraniteStairs => "polished_granite_stairs", + Self::PolishedSulfur => "polished_sulfur", + Self::PolishedSulfurSlab => "polished_sulfur_slab", + Self::PolishedSulfurStairs => "polished_sulfur_stairs", + Self::PolishedSulfurWall => "polished_sulfur_wall", + Self::PolishedTuff => "polished_tuff", + Self::PolishedTuffSlab => "polished_tuff_slab", + Self::PolishedTuffStairs => "polished_tuff_stairs", + Self::PolishedTuffWall => "polished_tuff_wall", + Self::Poppy => "poppy", + Self::Potatoes => "potatoes", + Self::PotentSulfur => "potent_sulfur", + Self::PottedAcaciaSapling => "potted_acacia_sapling", + Self::PottedAllium => "potted_allium", + Self::PottedAzaleaBush => "potted_azalea_bush", + Self::PottedAzureBluet => "potted_azure_bluet", + Self::PottedBamboo => "potted_bamboo", + Self::PottedBirchSapling => "potted_birch_sapling", + Self::PottedBlueOrchid => "potted_blue_orchid", + Self::PottedBrownMushroom => "potted_brown_mushroom", + Self::PottedCactus => "potted_cactus", + Self::PottedCherrySapling => "potted_cherry_sapling", + Self::PottedClosedEyeblossom => "potted_closed_eyeblossom", + Self::PottedCornflower => "potted_cornflower", + Self::PottedCrimsonFungus => "potted_crimson_fungus", + Self::PottedCrimsonRoots => "potted_crimson_roots", + Self::PottedDandelion => "potted_dandelion", + Self::PottedDarkOakSapling => "potted_dark_oak_sapling", + Self::PottedDeadBush => "potted_dead_bush", + Self::PottedFern => "potted_fern", + Self::PottedFloweringAzaleaBush => "potted_flowering_azalea_bush", + Self::PottedGoldenDandelion => "potted_golden_dandelion", + Self::PottedJungleSapling => "potted_jungle_sapling", + Self::PottedLilyOfTheValley => "potted_lily_of_the_valley", + Self::PottedMangrovePropagule => "potted_mangrove_propagule", + Self::PottedOakSapling => "potted_oak_sapling", + Self::PottedOpenEyeblossom => "potted_open_eyeblossom", + Self::PottedOrangeTulip => "potted_orange_tulip", + Self::PottedOxeyeDaisy => "potted_oxeye_daisy", + Self::PottedPaleOakSapling => "potted_pale_oak_sapling", + Self::PottedPinkTulip => "potted_pink_tulip", + Self::PottedPoppy => "potted_poppy", + Self::PottedRedMushroom => "potted_red_mushroom", + Self::PottedRedTulip => "potted_red_tulip", + Self::PottedSpruceSapling => "potted_spruce_sapling", + Self::PottedTorchflower => "potted_torchflower", + Self::PottedWarpedFungus => "potted_warped_fungus", + Self::PottedWarpedRoots => "potted_warped_roots", + Self::PottedWhiteTulip => "potted_white_tulip", + Self::PottedWitherRose => "potted_wither_rose", + Self::PowderSnow => "powder_snow", + Self::PowderSnowCauldron => "powder_snow_cauldron", + Self::PoweredRail => "powered_rail", + Self::Prismarine => "prismarine", + Self::PrismarineBrickSlab => "prismarine_brick_slab", + Self::PrismarineBrickStairs => "prismarine_brick_stairs", + Self::PrismarineBricks => "prismarine_bricks", + Self::PrismarineSlab => "prismarine_slab", + Self::PrismarineStairs => "prismarine_stairs", + Self::PrismarineWall => "prismarine_wall", + Self::Pumpkin => "pumpkin", + Self::PumpkinStem => "pumpkin_stem", + Self::PurpleBanner => "purple_banner", + Self::PurpleBed => "purple_bed", + Self::PurpleCandle => "purple_candle", + Self::PurpleCandleCake => "purple_candle_cake", + Self::PurpleCarpet => "purple_carpet", + Self::PurpleConcrete => "purple_concrete", + Self::PurpleConcretePowder => "purple_concrete_powder", + Self::PurpleGlazedTerracotta => "purple_glazed_terracotta", + Self::PurpleShulkerBox => "purple_shulker_box", + Self::PurpleStainedGlass => "purple_stained_glass", + Self::PurpleStainedGlassPane => "purple_stained_glass_pane", + Self::PurpleTerracotta => "purple_terracotta", + Self::PurpleWallBanner => "purple_wall_banner", + Self::PurpleWool => "purple_wool", + Self::PurpurBlock => "purpur_block", + Self::PurpurPillar => "purpur_pillar", + Self::PurpurSlab => "purpur_slab", + Self::PurpurStairs => "purpur_stairs", + Self::QuartzBlock => "quartz_block", + Self::QuartzBricks => "quartz_bricks", + Self::QuartzPillar => "quartz_pillar", + Self::QuartzSlab => "quartz_slab", + Self::QuartzStairs => "quartz_stairs", + Self::Rail => "rail", + Self::RawCopperBlock => "raw_copper_block", + Self::RawGoldBlock => "raw_gold_block", + Self::RawIronBlock => "raw_iron_block", + Self::RedBanner => "red_banner", + Self::RedBed => "red_bed", + Self::RedCandle => "red_candle", + Self::RedCandleCake => "red_candle_cake", + Self::RedCarpet => "red_carpet", + Self::RedConcrete => "red_concrete", + Self::RedConcretePowder => "red_concrete_powder", + Self::RedGlazedTerracotta => "red_glazed_terracotta", + Self::RedMushroom => "red_mushroom", + Self::RedMushroomBlock => "red_mushroom_block", + Self::RedNetherBrickSlab => "red_nether_brick_slab", + Self::RedNetherBrickStairs => "red_nether_brick_stairs", + Self::RedNetherBrickWall => "red_nether_brick_wall", + Self::RedNetherBricks => "red_nether_bricks", + Self::RedSand => "red_sand", + Self::RedSandstone => "red_sandstone", + Self::RedSandstoneSlab => "red_sandstone_slab", + Self::RedSandstoneStairs => "red_sandstone_stairs", + Self::RedSandstoneWall => "red_sandstone_wall", + Self::RedShulkerBox => "red_shulker_box", + Self::RedStainedGlass => "red_stained_glass", + Self::RedStainedGlassPane => "red_stained_glass_pane", + Self::RedTerracotta => "red_terracotta", + Self::RedTulip => "red_tulip", + Self::RedWallBanner => "red_wall_banner", + Self::RedWool => "red_wool", + Self::RedstoneBlock => "redstone_block", + Self::RedstoneLamp => "redstone_lamp", + Self::RedstoneOre => "redstone_ore", + Self::RedstoneTorch => "redstone_torch", + Self::RedstoneWallTorch => "redstone_wall_torch", + Self::RedstoneWire => "redstone_wire", + Self::ReinforcedDeepslate => "reinforced_deepslate", + Self::Repeater => "repeater", + Self::RepeatingCommandBlock => "repeating_command_block", + Self::ResinBlock => "resin_block", + Self::ResinBrickSlab => "resin_brick_slab", + Self::ResinBrickStairs => "resin_brick_stairs", + Self::ResinBrickWall => "resin_brick_wall", + Self::ResinBricks => "resin_bricks", + Self::ResinClump => "resin_clump", + Self::RespawnAnchor => "respawn_anchor", + Self::RootedDirt => "rooted_dirt", + Self::RoseBush => "rose_bush", + Self::Sand => "sand", + Self::Sandstone => "sandstone", + Self::SandstoneSlab => "sandstone_slab", + Self::SandstoneStairs => "sandstone_stairs", + Self::SandstoneWall => "sandstone_wall", + Self::Scaffolding => "scaffolding", + Self::Sculk => "sculk", + Self::SculkCatalyst => "sculk_catalyst", + Self::SculkSensor => "sculk_sensor", + Self::SculkShrieker => "sculk_shrieker", + Self::SculkVein => "sculk_vein", + Self::SeaLantern => "sea_lantern", + Self::SeaPickle => "sea_pickle", + Self::Seagrass => "seagrass", + Self::ShortDryGrass => "short_dry_grass", + Self::ShortGrass => "short_grass", + Self::Shroomlight => "shroomlight", + Self::ShulkerBox => "shulker_box", + Self::SkeletonSkull => "skeleton_skull", + Self::SkeletonWallSkull => "skeleton_wall_skull", + Self::SlimeBlock => "slime_block", + Self::SmallAmethystBud => "small_amethyst_bud", + Self::SmallDripleaf => "small_dripleaf", + Self::SmithingTable => "smithing_table", + Self::Smoker => "smoker", + Self::SmoothBasalt => "smooth_basalt", + Self::SmoothQuartz => "smooth_quartz", + Self::SmoothQuartzSlab => "smooth_quartz_slab", + Self::SmoothQuartzStairs => "smooth_quartz_stairs", + Self::SmoothRedSandstone => "smooth_red_sandstone", + Self::SmoothRedSandstoneSlab => "smooth_red_sandstone_slab", + Self::SmoothRedSandstoneStairs => "smooth_red_sandstone_stairs", + Self::SmoothSandstone => "smooth_sandstone", + Self::SmoothSandstoneSlab => "smooth_sandstone_slab", + Self::SmoothSandstoneStairs => "smooth_sandstone_stairs", + Self::SmoothStone => "smooth_stone", + Self::SmoothStoneSlab => "smooth_stone_slab", + Self::SnifferEgg => "sniffer_egg", + Self::Snow => "snow", + Self::SnowBlock => "snow_block", + Self::SoulCampfire => "soul_campfire", + Self::SoulFire => "soul_fire", + Self::SoulLantern => "soul_lantern", + Self::SoulSand => "soul_sand", + Self::SoulSoil => "soul_soil", + Self::SoulTorch => "soul_torch", + Self::SoulWallTorch => "soul_wall_torch", + Self::Spawner => "spawner", + Self::Sponge => "sponge", + Self::SporeBlossom => "spore_blossom", + Self::SpruceButton => "spruce_button", + Self::SpruceDoor => "spruce_door", + Self::SpruceFence => "spruce_fence", + Self::SpruceFenceGate => "spruce_fence_gate", + Self::SpruceHangingSign => "spruce_hanging_sign", + Self::SpruceLeaves => "spruce_leaves", + Self::SpruceLog => "spruce_log", + Self::SprucePlanks => "spruce_planks", + Self::SprucePressurePlate => "spruce_pressure_plate", + Self::SpruceSapling => "spruce_sapling", + Self::SpruceShelf => "spruce_shelf", + Self::SpruceSign => "spruce_sign", + Self::SpruceSlab => "spruce_slab", + Self::SpruceStairs => "spruce_stairs", + Self::SpruceTrapdoor => "spruce_trapdoor", + Self::SpruceWallHangingSign => "spruce_wall_hanging_sign", + Self::SpruceWallSign => "spruce_wall_sign", + Self::SpruceWood => "spruce_wood", + Self::StickyPiston => "sticky_piston", + Self::Stone => "stone", + Self::StoneBrickSlab => "stone_brick_slab", + Self::StoneBrickStairs => "stone_brick_stairs", + Self::StoneBrickWall => "stone_brick_wall", + Self::StoneBricks => "stone_bricks", + Self::StoneButton => "stone_button", + Self::StonePressurePlate => "stone_pressure_plate", + Self::StoneSlab => "stone_slab", + Self::StoneStairs => "stone_stairs", + Self::Stonecutter => "stonecutter", + Self::StrippedAcaciaLog => "stripped_acacia_log", + Self::StrippedAcaciaWood => "stripped_acacia_wood", + Self::StrippedBambooBlock => "stripped_bamboo_block", + Self::StrippedBirchLog => "stripped_birch_log", + Self::StrippedBirchWood => "stripped_birch_wood", + Self::StrippedCherryLog => "stripped_cherry_log", + Self::StrippedCherryWood => "stripped_cherry_wood", + Self::StrippedCrimsonHyphae => "stripped_crimson_hyphae", + Self::StrippedCrimsonStem => "stripped_crimson_stem", + Self::StrippedDarkOakLog => "stripped_dark_oak_log", + Self::StrippedDarkOakWood => "stripped_dark_oak_wood", + Self::StrippedJungleLog => "stripped_jungle_log", + Self::StrippedJungleWood => "stripped_jungle_wood", + Self::StrippedMangroveLog => "stripped_mangrove_log", + Self::StrippedMangroveWood => "stripped_mangrove_wood", + Self::StrippedOakLog => "stripped_oak_log", + Self::StrippedOakWood => "stripped_oak_wood", + Self::StrippedPaleOakLog => "stripped_pale_oak_log", + Self::StrippedPaleOakWood => "stripped_pale_oak_wood", + Self::StrippedSpruceLog => "stripped_spruce_log", + Self::StrippedSpruceWood => "stripped_spruce_wood", + Self::StrippedWarpedHyphae => "stripped_warped_hyphae", + Self::StrippedWarpedStem => "stripped_warped_stem", + Self::StructureBlock => "structure_block", + Self::StructureVoid => "structure_void", + Self::SugarCane => "sugar_cane", + Self::Sulfur => "sulfur", + Self::SulfurBrickSlab => "sulfur_brick_slab", + Self::SulfurBrickStairs => "sulfur_brick_stairs", + Self::SulfurBrickWall => "sulfur_brick_wall", + Self::SulfurBricks => "sulfur_bricks", + Self::SulfurSlab => "sulfur_slab", + Self::SulfurSpike => "sulfur_spike", + Self::SulfurStairs => "sulfur_stairs", + Self::SulfurWall => "sulfur_wall", + Self::Sunflower => "sunflower", + Self::SuspiciousGravel => "suspicious_gravel", + Self::SuspiciousSand => "suspicious_sand", + Self::SweetBerryBush => "sweet_berry_bush", + Self::TallDryGrass => "tall_dry_grass", + Self::TallGrass => "tall_grass", + Self::TallSeagrass => "tall_seagrass", + Self::Target => "target", + Self::Terracotta => "terracotta", + Self::TestBlock => "test_block", + Self::TestInstanceBlock => "test_instance_block", + Self::TintedGlass => "tinted_glass", + Self::Tnt => "tnt", + Self::Torch => "torch", + Self::Torchflower => "torchflower", + Self::TorchflowerCrop => "torchflower_crop", + Self::TrappedChest => "trapped_chest", + Self::TrialSpawner => "trial_spawner", + Self::Tripwire => "tripwire", + Self::TripwireHook => "tripwire_hook", + Self::TubeCoral => "tube_coral", + Self::TubeCoralBlock => "tube_coral_block", + Self::TubeCoralFan => "tube_coral_fan", + Self::TubeCoralWallFan => "tube_coral_wall_fan", + Self::Tuff => "tuff", + Self::TuffBrickSlab => "tuff_brick_slab", + Self::TuffBrickStairs => "tuff_brick_stairs", + Self::TuffBrickWall => "tuff_brick_wall", + Self::TuffBricks => "tuff_bricks", + Self::TuffSlab => "tuff_slab", + Self::TuffStairs => "tuff_stairs", + Self::TuffWall => "tuff_wall", + Self::TurtleEgg => "turtle_egg", + Self::TwistingVines => "twisting_vines", + Self::TwistingVinesPlant => "twisting_vines_plant", + Self::Vault => "vault", + Self::VerdantFroglight => "verdant_froglight", + Self::Vine => "vine", + Self::VoidAir => "void_air", + Self::WallTorch => "wall_torch", + Self::WarpedButton => "warped_button", + Self::WarpedDoor => "warped_door", + Self::WarpedFence => "warped_fence", + Self::WarpedFenceGate => "warped_fence_gate", + Self::WarpedFungus => "warped_fungus", + Self::WarpedHangingSign => "warped_hanging_sign", + Self::WarpedHyphae => "warped_hyphae", + Self::WarpedNylium => "warped_nylium", + Self::WarpedPlanks => "warped_planks", + Self::WarpedPressurePlate => "warped_pressure_plate", + Self::WarpedRoots => "warped_roots", + Self::WarpedShelf => "warped_shelf", + Self::WarpedSign => "warped_sign", + Self::WarpedSlab => "warped_slab", + Self::WarpedStairs => "warped_stairs", + Self::WarpedStem => "warped_stem", + Self::WarpedTrapdoor => "warped_trapdoor", + Self::WarpedWallHangingSign => "warped_wall_hanging_sign", + Self::WarpedWallSign => "warped_wall_sign", + Self::WarpedWartBlock => "warped_wart_block", + Self::Water => "water", + Self::WaterCauldron => "water_cauldron", + Self::WaxedChiseledCopper => "waxed_chiseled_copper", + Self::WaxedCopperBars => "waxed_copper_bars", + Self::WaxedCopperBlock => "waxed_copper_block", + Self::WaxedCopperBulb => "waxed_copper_bulb", + Self::WaxedCopperChain => "waxed_copper_chain", + Self::WaxedCopperChest => "waxed_copper_chest", + Self::WaxedCopperDoor => "waxed_copper_door", + Self::WaxedCopperGolemStatue => "waxed_copper_golem_statue", + Self::WaxedCopperGrate => "waxed_copper_grate", + Self::WaxedCopperLantern => "waxed_copper_lantern", + Self::WaxedCopperTrapdoor => "waxed_copper_trapdoor", + Self::WaxedCutCopper => "waxed_cut_copper", + Self::WaxedCutCopperSlab => "waxed_cut_copper_slab", + Self::WaxedCutCopperStairs => "waxed_cut_copper_stairs", + Self::WaxedExposedChiseledCopper => "waxed_exposed_chiseled_copper", + Self::WaxedExposedCopper => "waxed_exposed_copper", + Self::WaxedExposedCopperBars => "waxed_exposed_copper_bars", + Self::WaxedExposedCopperBulb => "waxed_exposed_copper_bulb", + Self::WaxedExposedCopperChain => "waxed_exposed_copper_chain", + Self::WaxedExposedCopperChest => "waxed_exposed_copper_chest", + Self::WaxedExposedCopperDoor => "waxed_exposed_copper_door", + Self::WaxedExposedCopperGolemStatue => "waxed_exposed_copper_golem_statue", + Self::WaxedExposedCopperGrate => "waxed_exposed_copper_grate", + Self::WaxedExposedCopperLantern => "waxed_exposed_copper_lantern", + Self::WaxedExposedCopperTrapdoor => "waxed_exposed_copper_trapdoor", + Self::WaxedExposedCutCopper => "waxed_exposed_cut_copper", + Self::WaxedExposedCutCopperSlab => "waxed_exposed_cut_copper_slab", + Self::WaxedExposedCutCopperStairs => "waxed_exposed_cut_copper_stairs", + Self::WaxedExposedLightningRod => "waxed_exposed_lightning_rod", + Self::WaxedLightningRod => "waxed_lightning_rod", + Self::WaxedOxidizedChiseledCopper => "waxed_oxidized_chiseled_copper", + Self::WaxedOxidizedCopper => "waxed_oxidized_copper", + Self::WaxedOxidizedCopperBars => "waxed_oxidized_copper_bars", + Self::WaxedOxidizedCopperBulb => "waxed_oxidized_copper_bulb", + Self::WaxedOxidizedCopperChain => "waxed_oxidized_copper_chain", + Self::WaxedOxidizedCopperChest => "waxed_oxidized_copper_chest", + Self::WaxedOxidizedCopperDoor => "waxed_oxidized_copper_door", + Self::WaxedOxidizedCopperGolemStatue => "waxed_oxidized_copper_golem_statue", + Self::WaxedOxidizedCopperGrate => "waxed_oxidized_copper_grate", + Self::WaxedOxidizedCopperLantern => "waxed_oxidized_copper_lantern", + Self::WaxedOxidizedCopperTrapdoor => "waxed_oxidized_copper_trapdoor", + Self::WaxedOxidizedCutCopper => "waxed_oxidized_cut_copper", + Self::WaxedOxidizedCutCopperSlab => "waxed_oxidized_cut_copper_slab", + Self::WaxedOxidizedCutCopperStairs => "waxed_oxidized_cut_copper_stairs", + Self::WaxedOxidizedLightningRod => "waxed_oxidized_lightning_rod", + Self::WaxedWeatheredChiseledCopper => "waxed_weathered_chiseled_copper", + Self::WaxedWeatheredCopper => "waxed_weathered_copper", + Self::WaxedWeatheredCopperBars => "waxed_weathered_copper_bars", + Self::WaxedWeatheredCopperBulb => "waxed_weathered_copper_bulb", + Self::WaxedWeatheredCopperChain => "waxed_weathered_copper_chain", + Self::WaxedWeatheredCopperChest => "waxed_weathered_copper_chest", + Self::WaxedWeatheredCopperDoor => "waxed_weathered_copper_door", + Self::WaxedWeatheredCopperGolemStatue => "waxed_weathered_copper_golem_statue", + Self::WaxedWeatheredCopperGrate => "waxed_weathered_copper_grate", + Self::WaxedWeatheredCopperLantern => "waxed_weathered_copper_lantern", + Self::WaxedWeatheredCopperTrapdoor => "waxed_weathered_copper_trapdoor", + Self::WaxedWeatheredCutCopper => "waxed_weathered_cut_copper", + Self::WaxedWeatheredCutCopperSlab => "waxed_weathered_cut_copper_slab", + Self::WaxedWeatheredCutCopperStairs => "waxed_weathered_cut_copper_stairs", + Self::WaxedWeatheredLightningRod => "waxed_weathered_lightning_rod", + Self::WeatheredChiseledCopper => "weathered_chiseled_copper", + Self::WeatheredCopper => "weathered_copper", + Self::WeatheredCopperBars => "weathered_copper_bars", + Self::WeatheredCopperBulb => "weathered_copper_bulb", + Self::WeatheredCopperChain => "weathered_copper_chain", + Self::WeatheredCopperChest => "weathered_copper_chest", + Self::WeatheredCopperDoor => "weathered_copper_door", + Self::WeatheredCopperGolemStatue => "weathered_copper_golem_statue", + Self::WeatheredCopperGrate => "weathered_copper_grate", + Self::WeatheredCopperLantern => "weathered_copper_lantern", + Self::WeatheredCopperTrapdoor => "weathered_copper_trapdoor", + Self::WeatheredCutCopper => "weathered_cut_copper", + Self::WeatheredCutCopperSlab => "weathered_cut_copper_slab", + Self::WeatheredCutCopperStairs => "weathered_cut_copper_stairs", + Self::WeatheredLightningRod => "weathered_lightning_rod", + Self::WeepingVines => "weeping_vines", + Self::WeepingVinesPlant => "weeping_vines_plant", + Self::WetSponge => "wet_sponge", + Self::Wheat => "wheat", + Self::WhiteBanner => "white_banner", + Self::WhiteBed => "white_bed", + Self::WhiteCandle => "white_candle", + Self::WhiteCandleCake => "white_candle_cake", + Self::WhiteCarpet => "white_carpet", + Self::WhiteConcrete => "white_concrete", + Self::WhiteConcretePowder => "white_concrete_powder", + Self::WhiteGlazedTerracotta => "white_glazed_terracotta", + Self::WhiteShulkerBox => "white_shulker_box", + Self::WhiteStainedGlass => "white_stained_glass", + Self::WhiteStainedGlassPane => "white_stained_glass_pane", + Self::WhiteTerracotta => "white_terracotta", + Self::WhiteTulip => "white_tulip", + Self::WhiteWallBanner => "white_wall_banner", + Self::WhiteWool => "white_wool", + Self::Wildflowers => "wildflowers", + Self::WitherRose => "wither_rose", + Self::WitherSkeletonSkull => "wither_skeleton_skull", + Self::WitherSkeletonWallSkull => "wither_skeleton_wall_skull", + Self::YellowBanner => "yellow_banner", + Self::YellowBed => "yellow_bed", + Self::YellowCandle => "yellow_candle", + Self::YellowCandleCake => "yellow_candle_cake", + Self::YellowCarpet => "yellow_carpet", + Self::YellowConcrete => "yellow_concrete", + Self::YellowConcretePowder => "yellow_concrete_powder", + Self::YellowGlazedTerracotta => "yellow_glazed_terracotta", + Self::YellowShulkerBox => "yellow_shulker_box", + Self::YellowStainedGlass => "yellow_stained_glass", + Self::YellowStainedGlassPane => "yellow_stained_glass_pane", + Self::YellowTerracotta => "yellow_terracotta", + Self::YellowWallBanner => "yellow_wall_banner", + Self::YellowWool => "yellow_wool", + Self::ZombieHead => "zombie_head", + Self::ZombieWallHead => "zombie_wall_head", + } + } + + /// Returns the namespaced resource location (e.g. `"minecraft:stone"`). + #[must_use] + pub const fn resource_location(&self) -> &'static str { + match self { + Self::AcaciaButton => "minecraft:acacia_button", + Self::AcaciaDoor => "minecraft:acacia_door", + Self::AcaciaFence => "minecraft:acacia_fence", + Self::AcaciaFenceGate => "minecraft:acacia_fence_gate", + Self::AcaciaHangingSign => "minecraft:acacia_hanging_sign", + Self::AcaciaLeaves => "minecraft:acacia_leaves", + Self::AcaciaLog => "minecraft:acacia_log", + Self::AcaciaPlanks => "minecraft:acacia_planks", + Self::AcaciaPressurePlate => "minecraft:acacia_pressure_plate", + Self::AcaciaSapling => "minecraft:acacia_sapling", + Self::AcaciaShelf => "minecraft:acacia_shelf", + Self::AcaciaSign => "minecraft:acacia_sign", + Self::AcaciaSlab => "minecraft:acacia_slab", + Self::AcaciaStairs => "minecraft:acacia_stairs", + Self::AcaciaTrapdoor => "minecraft:acacia_trapdoor", + Self::AcaciaWallHangingSign => "minecraft:acacia_wall_hanging_sign", + Self::AcaciaWallSign => "minecraft:acacia_wall_sign", + Self::AcaciaWood => "minecraft:acacia_wood", + Self::ActivatorRail => "minecraft:activator_rail", + Self::Air => "minecraft:air", + Self::Allium => "minecraft:allium", + Self::AmethystBlock => "minecraft:amethyst_block", + Self::AmethystCluster => "minecraft:amethyst_cluster", + Self::AncientDebris => "minecraft:ancient_debris", + Self::Andesite => "minecraft:andesite", + Self::AndesiteSlab => "minecraft:andesite_slab", + Self::AndesiteStairs => "minecraft:andesite_stairs", + Self::AndesiteWall => "minecraft:andesite_wall", + Self::Anvil => "minecraft:anvil", + Self::AttachedMelonStem => "minecraft:attached_melon_stem", + Self::AttachedPumpkinStem => "minecraft:attached_pumpkin_stem", + Self::Azalea => "minecraft:azalea", + Self::AzaleaLeaves => "minecraft:azalea_leaves", + Self::AzureBluet => "minecraft:azure_bluet", + Self::Bamboo => "minecraft:bamboo", + Self::BambooBlock => "minecraft:bamboo_block", + Self::BambooButton => "minecraft:bamboo_button", + Self::BambooDoor => "minecraft:bamboo_door", + Self::BambooFence => "minecraft:bamboo_fence", + Self::BambooFenceGate => "minecraft:bamboo_fence_gate", + Self::BambooHangingSign => "minecraft:bamboo_hanging_sign", + Self::BambooMosaic => "minecraft:bamboo_mosaic", + Self::BambooMosaicSlab => "minecraft:bamboo_mosaic_slab", + Self::BambooMosaicStairs => "minecraft:bamboo_mosaic_stairs", + Self::BambooPlanks => "minecraft:bamboo_planks", + Self::BambooPressurePlate => "minecraft:bamboo_pressure_plate", + Self::BambooSapling => "minecraft:bamboo_sapling", + Self::BambooShelf => "minecraft:bamboo_shelf", + Self::BambooSign => "minecraft:bamboo_sign", + Self::BambooSlab => "minecraft:bamboo_slab", + Self::BambooStairs => "minecraft:bamboo_stairs", + Self::BambooTrapdoor => "minecraft:bamboo_trapdoor", + Self::BambooWallHangingSign => "minecraft:bamboo_wall_hanging_sign", + Self::BambooWallSign => "minecraft:bamboo_wall_sign", + Self::Barrel => "minecraft:barrel", + Self::Barrier => "minecraft:barrier", + Self::Basalt => "minecraft:basalt", + Self::Beacon => "minecraft:beacon", + Self::Bedrock => "minecraft:bedrock", + Self::BeeNest => "minecraft:bee_nest", + Self::Beehive => "minecraft:beehive", + Self::Beetroots => "minecraft:beetroots", + Self::Bell => "minecraft:bell", + Self::BigDripleaf => "minecraft:big_dripleaf", + Self::BigDripleafStem => "minecraft:big_dripleaf_stem", + Self::BirchButton => "minecraft:birch_button", + Self::BirchDoor => "minecraft:birch_door", + Self::BirchFence => "minecraft:birch_fence", + Self::BirchFenceGate => "minecraft:birch_fence_gate", + Self::BirchHangingSign => "minecraft:birch_hanging_sign", + Self::BirchLeaves => "minecraft:birch_leaves", + Self::BirchLog => "minecraft:birch_log", + Self::BirchPlanks => "minecraft:birch_planks", + Self::BirchPressurePlate => "minecraft:birch_pressure_plate", + Self::BirchSapling => "minecraft:birch_sapling", + Self::BirchShelf => "minecraft:birch_shelf", + Self::BirchSign => "minecraft:birch_sign", + Self::BirchSlab => "minecraft:birch_slab", + Self::BirchStairs => "minecraft:birch_stairs", + Self::BirchTrapdoor => "minecraft:birch_trapdoor", + Self::BirchWallHangingSign => "minecraft:birch_wall_hanging_sign", + Self::BirchWallSign => "minecraft:birch_wall_sign", + Self::BirchWood => "minecraft:birch_wood", + Self::BlackBanner => "minecraft:black_banner", + Self::BlackBed => "minecraft:black_bed", + Self::BlackCandle => "minecraft:black_candle", + Self::BlackCandleCake => "minecraft:black_candle_cake", + Self::BlackCarpet => "minecraft:black_carpet", + Self::BlackConcrete => "minecraft:black_concrete", + Self::BlackConcretePowder => "minecraft:black_concrete_powder", + Self::BlackGlazedTerracotta => "minecraft:black_glazed_terracotta", + Self::BlackShulkerBox => "minecraft:black_shulker_box", + Self::BlackStainedGlass => "minecraft:black_stained_glass", + Self::BlackStainedGlassPane => "minecraft:black_stained_glass_pane", + Self::BlackTerracotta => "minecraft:black_terracotta", + Self::BlackWallBanner => "minecraft:black_wall_banner", + Self::BlackWool => "minecraft:black_wool", + Self::Blackstone => "minecraft:blackstone", + Self::BlackstoneSlab => "minecraft:blackstone_slab", + Self::BlackstoneStairs => "minecraft:blackstone_stairs", + Self::BlackstoneWall => "minecraft:blackstone_wall", + Self::BlastFurnace => "minecraft:blast_furnace", + Self::BlueBanner => "minecraft:blue_banner", + Self::BlueBed => "minecraft:blue_bed", + Self::BlueCandle => "minecraft:blue_candle", + Self::BlueCandleCake => "minecraft:blue_candle_cake", + Self::BlueCarpet => "minecraft:blue_carpet", + Self::BlueConcrete => "minecraft:blue_concrete", + Self::BlueConcretePowder => "minecraft:blue_concrete_powder", + Self::BlueGlazedTerracotta => "minecraft:blue_glazed_terracotta", + Self::BlueIce => "minecraft:blue_ice", + Self::BlueOrchid => "minecraft:blue_orchid", + Self::BlueShulkerBox => "minecraft:blue_shulker_box", + Self::BlueStainedGlass => "minecraft:blue_stained_glass", + Self::BlueStainedGlassPane => "minecraft:blue_stained_glass_pane", + Self::BlueTerracotta => "minecraft:blue_terracotta", + Self::BlueWallBanner => "minecraft:blue_wall_banner", + Self::BlueWool => "minecraft:blue_wool", + Self::BoneBlock => "minecraft:bone_block", + Self::Bookshelf => "minecraft:bookshelf", + Self::BrainCoral => "minecraft:brain_coral", + Self::BrainCoralBlock => "minecraft:brain_coral_block", + Self::BrainCoralFan => "minecraft:brain_coral_fan", + Self::BrainCoralWallFan => "minecraft:brain_coral_wall_fan", + Self::BrewingStand => "minecraft:brewing_stand", + Self::BrickSlab => "minecraft:brick_slab", + Self::BrickStairs => "minecraft:brick_stairs", + Self::BrickWall => "minecraft:brick_wall", + Self::Bricks => "minecraft:bricks", + Self::BrownBanner => "minecraft:brown_banner", + Self::BrownBed => "minecraft:brown_bed", + Self::BrownCandle => "minecraft:brown_candle", + Self::BrownCandleCake => "minecraft:brown_candle_cake", + Self::BrownCarpet => "minecraft:brown_carpet", + Self::BrownConcrete => "minecraft:brown_concrete", + Self::BrownConcretePowder => "minecraft:brown_concrete_powder", + Self::BrownGlazedTerracotta => "minecraft:brown_glazed_terracotta", + Self::BrownMushroom => "minecraft:brown_mushroom", + Self::BrownMushroomBlock => "minecraft:brown_mushroom_block", + Self::BrownShulkerBox => "minecraft:brown_shulker_box", + Self::BrownStainedGlass => "minecraft:brown_stained_glass", + Self::BrownStainedGlassPane => "minecraft:brown_stained_glass_pane", + Self::BrownTerracotta => "minecraft:brown_terracotta", + Self::BrownWallBanner => "minecraft:brown_wall_banner", + Self::BrownWool => "minecraft:brown_wool", + Self::BubbleColumn => "minecraft:bubble_column", + Self::BubbleCoral => "minecraft:bubble_coral", + Self::BubbleCoralBlock => "minecraft:bubble_coral_block", + Self::BubbleCoralFan => "minecraft:bubble_coral_fan", + Self::BubbleCoralWallFan => "minecraft:bubble_coral_wall_fan", + Self::BuddingAmethyst => "minecraft:budding_amethyst", + Self::Bush => "minecraft:bush", + Self::Cactus => "minecraft:cactus", + Self::CactusFlower => "minecraft:cactus_flower", + Self::Cake => "minecraft:cake", + Self::Calcite => "minecraft:calcite", + Self::CalibratedSculkSensor => "minecraft:calibrated_sculk_sensor", + Self::Campfire => "minecraft:campfire", + Self::Candle => "minecraft:candle", + Self::CandleCake => "minecraft:candle_cake", + Self::Carrots => "minecraft:carrots", + Self::CartographyTable => "minecraft:cartography_table", + Self::CarvedPumpkin => "minecraft:carved_pumpkin", + Self::Cauldron => "minecraft:cauldron", + Self::CaveAir => "minecraft:cave_air", + Self::CaveVines => "minecraft:cave_vines", + Self::CaveVinesPlant => "minecraft:cave_vines_plant", + Self::ChainCommandBlock => "minecraft:chain_command_block", + Self::CherryButton => "minecraft:cherry_button", + Self::CherryDoor => "minecraft:cherry_door", + Self::CherryFence => "minecraft:cherry_fence", + Self::CherryFenceGate => "minecraft:cherry_fence_gate", + Self::CherryHangingSign => "minecraft:cherry_hanging_sign", + Self::CherryLeaves => "minecraft:cherry_leaves", + Self::CherryLog => "minecraft:cherry_log", + Self::CherryPlanks => "minecraft:cherry_planks", + Self::CherryPressurePlate => "minecraft:cherry_pressure_plate", + Self::CherrySapling => "minecraft:cherry_sapling", + Self::CherryShelf => "minecraft:cherry_shelf", + Self::CherrySign => "minecraft:cherry_sign", + Self::CherrySlab => "minecraft:cherry_slab", + Self::CherryStairs => "minecraft:cherry_stairs", + Self::CherryTrapdoor => "minecraft:cherry_trapdoor", + Self::CherryWallHangingSign => "minecraft:cherry_wall_hanging_sign", + Self::CherryWallSign => "minecraft:cherry_wall_sign", + Self::CherryWood => "minecraft:cherry_wood", + Self::Chest => "minecraft:chest", + Self::ChippedAnvil => "minecraft:chipped_anvil", + Self::ChiseledBookshelf => "minecraft:chiseled_bookshelf", + Self::ChiseledCinnabar => "minecraft:chiseled_cinnabar", + Self::ChiseledCopper => "minecraft:chiseled_copper", + Self::ChiseledDeepslate => "minecraft:chiseled_deepslate", + Self::ChiseledNetherBricks => "minecraft:chiseled_nether_bricks", + Self::ChiseledPolishedBlackstone => "minecraft:chiseled_polished_blackstone", + Self::ChiseledQuartzBlock => "minecraft:chiseled_quartz_block", + Self::ChiseledRedSandstone => "minecraft:chiseled_red_sandstone", + Self::ChiseledResinBricks => "minecraft:chiseled_resin_bricks", + Self::ChiseledSandstone => "minecraft:chiseled_sandstone", + Self::ChiseledStoneBricks => "minecraft:chiseled_stone_bricks", + Self::ChiseledSulfur => "minecraft:chiseled_sulfur", + Self::ChiseledTuff => "minecraft:chiseled_tuff", + Self::ChiseledTuffBricks => "minecraft:chiseled_tuff_bricks", + Self::ChorusFlower => "minecraft:chorus_flower", + Self::ChorusPlant => "minecraft:chorus_plant", + Self::Cinnabar => "minecraft:cinnabar", + Self::CinnabarBrickSlab => "minecraft:cinnabar_brick_slab", + Self::CinnabarBrickStairs => "minecraft:cinnabar_brick_stairs", + Self::CinnabarBrickWall => "minecraft:cinnabar_brick_wall", + Self::CinnabarBricks => "minecraft:cinnabar_bricks", + Self::CinnabarSlab => "minecraft:cinnabar_slab", + Self::CinnabarStairs => "minecraft:cinnabar_stairs", + Self::CinnabarWall => "minecraft:cinnabar_wall", + Self::Clay => "minecraft:clay", + Self::ClosedEyeblossom => "minecraft:closed_eyeblossom", + Self::CoalBlock => "minecraft:coal_block", + Self::CoalOre => "minecraft:coal_ore", + Self::CoarseDirt => "minecraft:coarse_dirt", + Self::CobbledDeepslate => "minecraft:cobbled_deepslate", + Self::CobbledDeepslateSlab => "minecraft:cobbled_deepslate_slab", + Self::CobbledDeepslateStairs => "minecraft:cobbled_deepslate_stairs", + Self::CobbledDeepslateWall => "minecraft:cobbled_deepslate_wall", + Self::Cobblestone => "minecraft:cobblestone", + Self::CobblestoneSlab => "minecraft:cobblestone_slab", + Self::CobblestoneStairs => "minecraft:cobblestone_stairs", + Self::CobblestoneWall => "minecraft:cobblestone_wall", + Self::Cobweb => "minecraft:cobweb", + Self::Cocoa => "minecraft:cocoa", + Self::CommandBlock => "minecraft:command_block", + Self::Comparator => "minecraft:comparator", + Self::Composter => "minecraft:composter", + Self::Conduit => "minecraft:conduit", + Self::CopperBars => "minecraft:copper_bars", + Self::CopperBlock => "minecraft:copper_block", + Self::CopperBulb => "minecraft:copper_bulb", + Self::CopperChain => "minecraft:copper_chain", + Self::CopperChest => "minecraft:copper_chest", + Self::CopperDoor => "minecraft:copper_door", + Self::CopperGolemStatue => "minecraft:copper_golem_statue", + Self::CopperGrate => "minecraft:copper_grate", + Self::CopperLantern => "minecraft:copper_lantern", + Self::CopperOre => "minecraft:copper_ore", + Self::CopperTorch => "minecraft:copper_torch", + Self::CopperTrapdoor => "minecraft:copper_trapdoor", + Self::CopperWallTorch => "minecraft:copper_wall_torch", + Self::Cornflower => "minecraft:cornflower", + Self::CrackedDeepslateBricks => "minecraft:cracked_deepslate_bricks", + Self::CrackedDeepslateTiles => "minecraft:cracked_deepslate_tiles", + Self::CrackedNetherBricks => "minecraft:cracked_nether_bricks", + Self::CrackedPolishedBlackstoneBricks => "minecraft:cracked_polished_blackstone_bricks", + Self::CrackedStoneBricks => "minecraft:cracked_stone_bricks", + Self::Crafter => "minecraft:crafter", + Self::CraftingTable => "minecraft:crafting_table", + Self::CreakingHeart => "minecraft:creaking_heart", + Self::CreeperHead => "minecraft:creeper_head", + Self::CreeperWallHead => "minecraft:creeper_wall_head", + Self::CrimsonButton => "minecraft:crimson_button", + Self::CrimsonDoor => "minecraft:crimson_door", + Self::CrimsonFence => "minecraft:crimson_fence", + Self::CrimsonFenceGate => "minecraft:crimson_fence_gate", + Self::CrimsonFungus => "minecraft:crimson_fungus", + Self::CrimsonHangingSign => "minecraft:crimson_hanging_sign", + Self::CrimsonHyphae => "minecraft:crimson_hyphae", + Self::CrimsonNylium => "minecraft:crimson_nylium", + Self::CrimsonPlanks => "minecraft:crimson_planks", + Self::CrimsonPressurePlate => "minecraft:crimson_pressure_plate", + Self::CrimsonRoots => "minecraft:crimson_roots", + Self::CrimsonShelf => "minecraft:crimson_shelf", + Self::CrimsonSign => "minecraft:crimson_sign", + Self::CrimsonSlab => "minecraft:crimson_slab", + Self::CrimsonStairs => "minecraft:crimson_stairs", + Self::CrimsonStem => "minecraft:crimson_stem", + Self::CrimsonTrapdoor => "minecraft:crimson_trapdoor", + Self::CrimsonWallHangingSign => "minecraft:crimson_wall_hanging_sign", + Self::CrimsonWallSign => "minecraft:crimson_wall_sign", + Self::CryingObsidian => "minecraft:crying_obsidian", + Self::CutCopper => "minecraft:cut_copper", + Self::CutCopperSlab => "minecraft:cut_copper_slab", + Self::CutCopperStairs => "minecraft:cut_copper_stairs", + Self::CutRedSandstone => "minecraft:cut_red_sandstone", + Self::CutRedSandstoneSlab => "minecraft:cut_red_sandstone_slab", + Self::CutSandstone => "minecraft:cut_sandstone", + Self::CutSandstoneSlab => "minecraft:cut_sandstone_slab", + Self::CyanBanner => "minecraft:cyan_banner", + Self::CyanBed => "minecraft:cyan_bed", + Self::CyanCandle => "minecraft:cyan_candle", + Self::CyanCandleCake => "minecraft:cyan_candle_cake", + Self::CyanCarpet => "minecraft:cyan_carpet", + Self::CyanConcrete => "minecraft:cyan_concrete", + Self::CyanConcretePowder => "minecraft:cyan_concrete_powder", + Self::CyanGlazedTerracotta => "minecraft:cyan_glazed_terracotta", + Self::CyanShulkerBox => "minecraft:cyan_shulker_box", + Self::CyanStainedGlass => "minecraft:cyan_stained_glass", + Self::CyanStainedGlassPane => "minecraft:cyan_stained_glass_pane", + Self::CyanTerracotta => "minecraft:cyan_terracotta", + Self::CyanWallBanner => "minecraft:cyan_wall_banner", + Self::CyanWool => "minecraft:cyan_wool", + Self::DamagedAnvil => "minecraft:damaged_anvil", + Self::Dandelion => "minecraft:dandelion", + Self::DarkOakButton => "minecraft:dark_oak_button", + Self::DarkOakDoor => "minecraft:dark_oak_door", + Self::DarkOakFence => "minecraft:dark_oak_fence", + Self::DarkOakFenceGate => "minecraft:dark_oak_fence_gate", + Self::DarkOakHangingSign => "minecraft:dark_oak_hanging_sign", + Self::DarkOakLeaves => "minecraft:dark_oak_leaves", + Self::DarkOakLog => "minecraft:dark_oak_log", + Self::DarkOakPlanks => "minecraft:dark_oak_planks", + Self::DarkOakPressurePlate => "minecraft:dark_oak_pressure_plate", + Self::DarkOakSapling => "minecraft:dark_oak_sapling", + Self::DarkOakShelf => "minecraft:dark_oak_shelf", + Self::DarkOakSign => "minecraft:dark_oak_sign", + Self::DarkOakSlab => "minecraft:dark_oak_slab", + Self::DarkOakStairs => "minecraft:dark_oak_stairs", + Self::DarkOakTrapdoor => "minecraft:dark_oak_trapdoor", + Self::DarkOakWallHangingSign => "minecraft:dark_oak_wall_hanging_sign", + Self::DarkOakWallSign => "minecraft:dark_oak_wall_sign", + Self::DarkOakWood => "minecraft:dark_oak_wood", + Self::DarkPrismarine => "minecraft:dark_prismarine", + Self::DarkPrismarineSlab => "minecraft:dark_prismarine_slab", + Self::DarkPrismarineStairs => "minecraft:dark_prismarine_stairs", + Self::DaylightDetector => "minecraft:daylight_detector", + Self::DeadBrainCoral => "minecraft:dead_brain_coral", + Self::DeadBrainCoralBlock => "minecraft:dead_brain_coral_block", + Self::DeadBrainCoralFan => "minecraft:dead_brain_coral_fan", + Self::DeadBrainCoralWallFan => "minecraft:dead_brain_coral_wall_fan", + Self::DeadBubbleCoral => "minecraft:dead_bubble_coral", + Self::DeadBubbleCoralBlock => "minecraft:dead_bubble_coral_block", + Self::DeadBubbleCoralFan => "minecraft:dead_bubble_coral_fan", + Self::DeadBubbleCoralWallFan => "minecraft:dead_bubble_coral_wall_fan", + Self::DeadBush => "minecraft:dead_bush", + Self::DeadFireCoral => "minecraft:dead_fire_coral", + Self::DeadFireCoralBlock => "minecraft:dead_fire_coral_block", + Self::DeadFireCoralFan => "minecraft:dead_fire_coral_fan", + Self::DeadFireCoralWallFan => "minecraft:dead_fire_coral_wall_fan", + Self::DeadHornCoral => "minecraft:dead_horn_coral", + Self::DeadHornCoralBlock => "minecraft:dead_horn_coral_block", + Self::DeadHornCoralFan => "minecraft:dead_horn_coral_fan", + Self::DeadHornCoralWallFan => "minecraft:dead_horn_coral_wall_fan", + Self::DeadTubeCoral => "minecraft:dead_tube_coral", + Self::DeadTubeCoralBlock => "minecraft:dead_tube_coral_block", + Self::DeadTubeCoralFan => "minecraft:dead_tube_coral_fan", + Self::DeadTubeCoralWallFan => "minecraft:dead_tube_coral_wall_fan", + Self::DecoratedPot => "minecraft:decorated_pot", + Self::Deepslate => "minecraft:deepslate", + Self::DeepslateBrickSlab => "minecraft:deepslate_brick_slab", + Self::DeepslateBrickStairs => "minecraft:deepslate_brick_stairs", + Self::DeepslateBrickWall => "minecraft:deepslate_brick_wall", + Self::DeepslateBricks => "minecraft:deepslate_bricks", + Self::DeepslateCoalOre => "minecraft:deepslate_coal_ore", + Self::DeepslateCopperOre => "minecraft:deepslate_copper_ore", + Self::DeepslateDiamondOre => "minecraft:deepslate_diamond_ore", + Self::DeepslateEmeraldOre => "minecraft:deepslate_emerald_ore", + Self::DeepslateGoldOre => "minecraft:deepslate_gold_ore", + Self::DeepslateIronOre => "minecraft:deepslate_iron_ore", + Self::DeepslateLapisOre => "minecraft:deepslate_lapis_ore", + Self::DeepslateRedstoneOre => "minecraft:deepslate_redstone_ore", + Self::DeepslateTileSlab => "minecraft:deepslate_tile_slab", + Self::DeepslateTileStairs => "minecraft:deepslate_tile_stairs", + Self::DeepslateTileWall => "minecraft:deepslate_tile_wall", + Self::DeepslateTiles => "minecraft:deepslate_tiles", + Self::DetectorRail => "minecraft:detector_rail", + Self::DiamondBlock => "minecraft:diamond_block", + Self::DiamondOre => "minecraft:diamond_ore", + Self::Diorite => "minecraft:diorite", + Self::DioriteSlab => "minecraft:diorite_slab", + Self::DioriteStairs => "minecraft:diorite_stairs", + Self::DioriteWall => "minecraft:diorite_wall", + Self::Dirt => "minecraft:dirt", + Self::DirtPath => "minecraft:dirt_path", + Self::Dispenser => "minecraft:dispenser", + Self::DragonEgg => "minecraft:dragon_egg", + Self::DragonHead => "minecraft:dragon_head", + Self::DragonWallHead => "minecraft:dragon_wall_head", + Self::DriedGhast => "minecraft:dried_ghast", + Self::DriedKelpBlock => "minecraft:dried_kelp_block", + Self::DripstoneBlock => "minecraft:dripstone_block", + Self::Dropper => "minecraft:dropper", + Self::EmeraldBlock => "minecraft:emerald_block", + Self::EmeraldOre => "minecraft:emerald_ore", + Self::EnchantingTable => "minecraft:enchanting_table", + Self::EndGateway => "minecraft:end_gateway", + Self::EndPortal => "minecraft:end_portal", + Self::EndPortalFrame => "minecraft:end_portal_frame", + Self::EndRod => "minecraft:end_rod", + Self::EndStone => "minecraft:end_stone", + Self::EndStoneBrickSlab => "minecraft:end_stone_brick_slab", + Self::EndStoneBrickStairs => "minecraft:end_stone_brick_stairs", + Self::EndStoneBrickWall => "minecraft:end_stone_brick_wall", + Self::EndStoneBricks => "minecraft:end_stone_bricks", + Self::EnderChest => "minecraft:ender_chest", + Self::ExposedChiseledCopper => "minecraft:exposed_chiseled_copper", + Self::ExposedCopper => "minecraft:exposed_copper", + Self::ExposedCopperBars => "minecraft:exposed_copper_bars", + Self::ExposedCopperBulb => "minecraft:exposed_copper_bulb", + Self::ExposedCopperChain => "minecraft:exposed_copper_chain", + Self::ExposedCopperChest => "minecraft:exposed_copper_chest", + Self::ExposedCopperDoor => "minecraft:exposed_copper_door", + Self::ExposedCopperGolemStatue => "minecraft:exposed_copper_golem_statue", + Self::ExposedCopperGrate => "minecraft:exposed_copper_grate", + Self::ExposedCopperLantern => "minecraft:exposed_copper_lantern", + Self::ExposedCopperTrapdoor => "minecraft:exposed_copper_trapdoor", + Self::ExposedCutCopper => "minecraft:exposed_cut_copper", + Self::ExposedCutCopperSlab => "minecraft:exposed_cut_copper_slab", + Self::ExposedCutCopperStairs => "minecraft:exposed_cut_copper_stairs", + Self::ExposedLightningRod => "minecraft:exposed_lightning_rod", + Self::Farmland => "minecraft:farmland", + Self::Fern => "minecraft:fern", + Self::Fire => "minecraft:fire", + Self::FireCoral => "minecraft:fire_coral", + Self::FireCoralBlock => "minecraft:fire_coral_block", + Self::FireCoralFan => "minecraft:fire_coral_fan", + Self::FireCoralWallFan => "minecraft:fire_coral_wall_fan", + Self::FireflyBush => "minecraft:firefly_bush", + Self::FletchingTable => "minecraft:fletching_table", + Self::FlowerPot => "minecraft:flower_pot", + Self::FloweringAzalea => "minecraft:flowering_azalea", + Self::FloweringAzaleaLeaves => "minecraft:flowering_azalea_leaves", + Self::Frogspawn => "minecraft:frogspawn", + Self::FrostedIce => "minecraft:frosted_ice", + Self::Furnace => "minecraft:furnace", + Self::GildedBlackstone => "minecraft:gilded_blackstone", + Self::Glass => "minecraft:glass", + Self::GlassPane => "minecraft:glass_pane", + Self::GlowLichen => "minecraft:glow_lichen", + Self::Glowstone => "minecraft:glowstone", + Self::GoldBlock => "minecraft:gold_block", + Self::GoldOre => "minecraft:gold_ore", + Self::GoldenDandelion => "minecraft:golden_dandelion", + Self::Granite => "minecraft:granite", + Self::GraniteSlab => "minecraft:granite_slab", + Self::GraniteStairs => "minecraft:granite_stairs", + Self::GraniteWall => "minecraft:granite_wall", + Self::GrassBlock => "minecraft:grass_block", + Self::Gravel => "minecraft:gravel", + Self::GrayBanner => "minecraft:gray_banner", + Self::GrayBed => "minecraft:gray_bed", + Self::GrayCandle => "minecraft:gray_candle", + Self::GrayCandleCake => "minecraft:gray_candle_cake", + Self::GrayCarpet => "minecraft:gray_carpet", + Self::GrayConcrete => "minecraft:gray_concrete", + Self::GrayConcretePowder => "minecraft:gray_concrete_powder", + Self::GrayGlazedTerracotta => "minecraft:gray_glazed_terracotta", + Self::GrayShulkerBox => "minecraft:gray_shulker_box", + Self::GrayStainedGlass => "minecraft:gray_stained_glass", + Self::GrayStainedGlassPane => "minecraft:gray_stained_glass_pane", + Self::GrayTerracotta => "minecraft:gray_terracotta", + Self::GrayWallBanner => "minecraft:gray_wall_banner", + Self::GrayWool => "minecraft:gray_wool", + Self::GreenBanner => "minecraft:green_banner", + Self::GreenBed => "minecraft:green_bed", + Self::GreenCandle => "minecraft:green_candle", + Self::GreenCandleCake => "minecraft:green_candle_cake", + Self::GreenCarpet => "minecraft:green_carpet", + Self::GreenConcrete => "minecraft:green_concrete", + Self::GreenConcretePowder => "minecraft:green_concrete_powder", + Self::GreenGlazedTerracotta => "minecraft:green_glazed_terracotta", + Self::GreenShulkerBox => "minecraft:green_shulker_box", + Self::GreenStainedGlass => "minecraft:green_stained_glass", + Self::GreenStainedGlassPane => "minecraft:green_stained_glass_pane", + Self::GreenTerracotta => "minecraft:green_terracotta", + Self::GreenWallBanner => "minecraft:green_wall_banner", + Self::GreenWool => "minecraft:green_wool", + Self::Grindstone => "minecraft:grindstone", + Self::HangingRoots => "minecraft:hanging_roots", + Self::HayBlock => "minecraft:hay_block", + Self::HeavyCore => "minecraft:heavy_core", + Self::HeavyWeightedPressurePlate => "minecraft:heavy_weighted_pressure_plate", + Self::HoneyBlock => "minecraft:honey_block", + Self::HoneycombBlock => "minecraft:honeycomb_block", + Self::Hopper => "minecraft:hopper", + Self::HornCoral => "minecraft:horn_coral", + Self::HornCoralBlock => "minecraft:horn_coral_block", + Self::HornCoralFan => "minecraft:horn_coral_fan", + Self::HornCoralWallFan => "minecraft:horn_coral_wall_fan", + Self::Ice => "minecraft:ice", + Self::InfestedChiseledStoneBricks => "minecraft:infested_chiseled_stone_bricks", + Self::InfestedCobblestone => "minecraft:infested_cobblestone", + Self::InfestedCrackedStoneBricks => "minecraft:infested_cracked_stone_bricks", + Self::InfestedDeepslate => "minecraft:infested_deepslate", + Self::InfestedMossyStoneBricks => "minecraft:infested_mossy_stone_bricks", + Self::InfestedStone => "minecraft:infested_stone", + Self::InfestedStoneBricks => "minecraft:infested_stone_bricks", + Self::IronBars => "minecraft:iron_bars", + Self::IronBlock => "minecraft:iron_block", + Self::IronChain => "minecraft:iron_chain", + Self::IronDoor => "minecraft:iron_door", + Self::IronOre => "minecraft:iron_ore", + Self::IronTrapdoor => "minecraft:iron_trapdoor", + Self::JackOLantern => "minecraft:jack_o_lantern", + Self::Jigsaw => "minecraft:jigsaw", + Self::Jukebox => "minecraft:jukebox", + Self::JungleButton => "minecraft:jungle_button", + Self::JungleDoor => "minecraft:jungle_door", + Self::JungleFence => "minecraft:jungle_fence", + Self::JungleFenceGate => "minecraft:jungle_fence_gate", + Self::JungleHangingSign => "minecraft:jungle_hanging_sign", + Self::JungleLeaves => "minecraft:jungle_leaves", + Self::JungleLog => "minecraft:jungle_log", + Self::JunglePlanks => "minecraft:jungle_planks", + Self::JunglePressurePlate => "minecraft:jungle_pressure_plate", + Self::JungleSapling => "minecraft:jungle_sapling", + Self::JungleShelf => "minecraft:jungle_shelf", + Self::JungleSign => "minecraft:jungle_sign", + Self::JungleSlab => "minecraft:jungle_slab", + Self::JungleStairs => "minecraft:jungle_stairs", + Self::JungleTrapdoor => "minecraft:jungle_trapdoor", + Self::JungleWallHangingSign => "minecraft:jungle_wall_hanging_sign", + Self::JungleWallSign => "minecraft:jungle_wall_sign", + Self::JungleWood => "minecraft:jungle_wood", + Self::Kelp => "minecraft:kelp", + Self::KelpPlant => "minecraft:kelp_plant", + Self::Ladder => "minecraft:ladder", + Self::Lantern => "minecraft:lantern", + Self::LapisBlock => "minecraft:lapis_block", + Self::LapisOre => "minecraft:lapis_ore", + Self::LargeAmethystBud => "minecraft:large_amethyst_bud", + Self::LargeFern => "minecraft:large_fern", + Self::Lava => "minecraft:lava", + Self::LavaCauldron => "minecraft:lava_cauldron", + Self::LeafLitter => "minecraft:leaf_litter", + Self::Lectern => "minecraft:lectern", + Self::Lever => "minecraft:lever", + Self::Light => "minecraft:light", + Self::LightBlueBanner => "minecraft:light_blue_banner", + Self::LightBlueBed => "minecraft:light_blue_bed", + Self::LightBlueCandle => "minecraft:light_blue_candle", + Self::LightBlueCandleCake => "minecraft:light_blue_candle_cake", + Self::LightBlueCarpet => "minecraft:light_blue_carpet", + Self::LightBlueConcrete => "minecraft:light_blue_concrete", + Self::LightBlueConcretePowder => "minecraft:light_blue_concrete_powder", + Self::LightBlueGlazedTerracotta => "minecraft:light_blue_glazed_terracotta", + Self::LightBlueShulkerBox => "minecraft:light_blue_shulker_box", + Self::LightBlueStainedGlass => "minecraft:light_blue_stained_glass", + Self::LightBlueStainedGlassPane => "minecraft:light_blue_stained_glass_pane", + Self::LightBlueTerracotta => "minecraft:light_blue_terracotta", + Self::LightBlueWallBanner => "minecraft:light_blue_wall_banner", + Self::LightBlueWool => "minecraft:light_blue_wool", + Self::LightGrayBanner => "minecraft:light_gray_banner", + Self::LightGrayBed => "minecraft:light_gray_bed", + Self::LightGrayCandle => "minecraft:light_gray_candle", + Self::LightGrayCandleCake => "minecraft:light_gray_candle_cake", + Self::LightGrayCarpet => "minecraft:light_gray_carpet", + Self::LightGrayConcrete => "minecraft:light_gray_concrete", + Self::LightGrayConcretePowder => "minecraft:light_gray_concrete_powder", + Self::LightGrayGlazedTerracotta => "minecraft:light_gray_glazed_terracotta", + Self::LightGrayShulkerBox => "minecraft:light_gray_shulker_box", + Self::LightGrayStainedGlass => "minecraft:light_gray_stained_glass", + Self::LightGrayStainedGlassPane => "minecraft:light_gray_stained_glass_pane", + Self::LightGrayTerracotta => "minecraft:light_gray_terracotta", + Self::LightGrayWallBanner => "minecraft:light_gray_wall_banner", + Self::LightGrayWool => "minecraft:light_gray_wool", + Self::LightWeightedPressurePlate => "minecraft:light_weighted_pressure_plate", + Self::LightningRod => "minecraft:lightning_rod", + Self::Lilac => "minecraft:lilac", + Self::LilyOfTheValley => "minecraft:lily_of_the_valley", + Self::LilyPad => "minecraft:lily_pad", + Self::LimeBanner => "minecraft:lime_banner", + Self::LimeBed => "minecraft:lime_bed", + Self::LimeCandle => "minecraft:lime_candle", + Self::LimeCandleCake => "minecraft:lime_candle_cake", + Self::LimeCarpet => "minecraft:lime_carpet", + Self::LimeConcrete => "minecraft:lime_concrete", + Self::LimeConcretePowder => "minecraft:lime_concrete_powder", + Self::LimeGlazedTerracotta => "minecraft:lime_glazed_terracotta", + Self::LimeShulkerBox => "minecraft:lime_shulker_box", + Self::LimeStainedGlass => "minecraft:lime_stained_glass", + Self::LimeStainedGlassPane => "minecraft:lime_stained_glass_pane", + Self::LimeTerracotta => "minecraft:lime_terracotta", + Self::LimeWallBanner => "minecraft:lime_wall_banner", + Self::LimeWool => "minecraft:lime_wool", + Self::Lodestone => "minecraft:lodestone", + Self::Loom => "minecraft:loom", + Self::MagentaBanner => "minecraft:magenta_banner", + Self::MagentaBed => "minecraft:magenta_bed", + Self::MagentaCandle => "minecraft:magenta_candle", + Self::MagentaCandleCake => "minecraft:magenta_candle_cake", + Self::MagentaCarpet => "minecraft:magenta_carpet", + Self::MagentaConcrete => "minecraft:magenta_concrete", + Self::MagentaConcretePowder => "minecraft:magenta_concrete_powder", + Self::MagentaGlazedTerracotta => "minecraft:magenta_glazed_terracotta", + Self::MagentaShulkerBox => "minecraft:magenta_shulker_box", + Self::MagentaStainedGlass => "minecraft:magenta_stained_glass", + Self::MagentaStainedGlassPane => "minecraft:magenta_stained_glass_pane", + Self::MagentaTerracotta => "minecraft:magenta_terracotta", + Self::MagentaWallBanner => "minecraft:magenta_wall_banner", + Self::MagentaWool => "minecraft:magenta_wool", + Self::MagmaBlock => "minecraft:magma_block", + Self::MangroveButton => "minecraft:mangrove_button", + Self::MangroveDoor => "minecraft:mangrove_door", + Self::MangroveFence => "minecraft:mangrove_fence", + Self::MangroveFenceGate => "minecraft:mangrove_fence_gate", + Self::MangroveHangingSign => "minecraft:mangrove_hanging_sign", + Self::MangroveLeaves => "minecraft:mangrove_leaves", + Self::MangroveLog => "minecraft:mangrove_log", + Self::MangrovePlanks => "minecraft:mangrove_planks", + Self::MangrovePressurePlate => "minecraft:mangrove_pressure_plate", + Self::MangrovePropagule => "minecraft:mangrove_propagule", + Self::MangroveRoots => "minecraft:mangrove_roots", + Self::MangroveShelf => "minecraft:mangrove_shelf", + Self::MangroveSign => "minecraft:mangrove_sign", + Self::MangroveSlab => "minecraft:mangrove_slab", + Self::MangroveStairs => "minecraft:mangrove_stairs", + Self::MangroveTrapdoor => "minecraft:mangrove_trapdoor", + Self::MangroveWallHangingSign => "minecraft:mangrove_wall_hanging_sign", + Self::MangroveWallSign => "minecraft:mangrove_wall_sign", + Self::MangroveWood => "minecraft:mangrove_wood", + Self::MediumAmethystBud => "minecraft:medium_amethyst_bud", + Self::Melon => "minecraft:melon", + Self::MelonStem => "minecraft:melon_stem", + Self::MossBlock => "minecraft:moss_block", + Self::MossCarpet => "minecraft:moss_carpet", + Self::MossyCobblestone => "minecraft:mossy_cobblestone", + Self::MossyCobblestoneSlab => "minecraft:mossy_cobblestone_slab", + Self::MossyCobblestoneStairs => "minecraft:mossy_cobblestone_stairs", + Self::MossyCobblestoneWall => "minecraft:mossy_cobblestone_wall", + Self::MossyStoneBrickSlab => "minecraft:mossy_stone_brick_slab", + Self::MossyStoneBrickStairs => "minecraft:mossy_stone_brick_stairs", + Self::MossyStoneBrickWall => "minecraft:mossy_stone_brick_wall", + Self::MossyStoneBricks => "minecraft:mossy_stone_bricks", + Self::MovingPiston => "minecraft:moving_piston", + Self::Mud => "minecraft:mud", + Self::MudBrickSlab => "minecraft:mud_brick_slab", + Self::MudBrickStairs => "minecraft:mud_brick_stairs", + Self::MudBrickWall => "minecraft:mud_brick_wall", + Self::MudBricks => "minecraft:mud_bricks", + Self::MuddyMangroveRoots => "minecraft:muddy_mangrove_roots", + Self::MushroomStem => "minecraft:mushroom_stem", + Self::Mycelium => "minecraft:mycelium", + Self::NetherBrickFence => "minecraft:nether_brick_fence", + Self::NetherBrickSlab => "minecraft:nether_brick_slab", + Self::NetherBrickStairs => "minecraft:nether_brick_stairs", + Self::NetherBrickWall => "minecraft:nether_brick_wall", + Self::NetherBricks => "minecraft:nether_bricks", + Self::NetherGoldOre => "minecraft:nether_gold_ore", + Self::NetherPortal => "minecraft:nether_portal", + Self::NetherQuartzOre => "minecraft:nether_quartz_ore", + Self::NetherSprouts => "minecraft:nether_sprouts", + Self::NetherWart => "minecraft:nether_wart", + Self::NetherWartBlock => "minecraft:nether_wart_block", + Self::NetheriteBlock => "minecraft:netherite_block", + Self::Netherrack => "minecraft:netherrack", + Self::NoteBlock => "minecraft:note_block", + Self::OakButton => "minecraft:oak_button", + Self::OakDoor => "minecraft:oak_door", + Self::OakFence => "minecraft:oak_fence", + Self::OakFenceGate => "minecraft:oak_fence_gate", + Self::OakHangingSign => "minecraft:oak_hanging_sign", + Self::OakLeaves => "minecraft:oak_leaves", + Self::OakLog => "minecraft:oak_log", + Self::OakPlanks => "minecraft:oak_planks", + Self::OakPressurePlate => "minecraft:oak_pressure_plate", + Self::OakSapling => "minecraft:oak_sapling", + Self::OakShelf => "minecraft:oak_shelf", + Self::OakSign => "minecraft:oak_sign", + Self::OakSlab => "minecraft:oak_slab", + Self::OakStairs => "minecraft:oak_stairs", + Self::OakTrapdoor => "minecraft:oak_trapdoor", + Self::OakWallHangingSign => "minecraft:oak_wall_hanging_sign", + Self::OakWallSign => "minecraft:oak_wall_sign", + Self::OakWood => "minecraft:oak_wood", + Self::Observer => "minecraft:observer", + Self::Obsidian => "minecraft:obsidian", + Self::OchreFroglight => "minecraft:ochre_froglight", + Self::OpenEyeblossom => "minecraft:open_eyeblossom", + Self::OrangeBanner => "minecraft:orange_banner", + Self::OrangeBed => "minecraft:orange_bed", + Self::OrangeCandle => "minecraft:orange_candle", + Self::OrangeCandleCake => "minecraft:orange_candle_cake", + Self::OrangeCarpet => "minecraft:orange_carpet", + Self::OrangeConcrete => "minecraft:orange_concrete", + Self::OrangeConcretePowder => "minecraft:orange_concrete_powder", + Self::OrangeGlazedTerracotta => "minecraft:orange_glazed_terracotta", + Self::OrangeShulkerBox => "minecraft:orange_shulker_box", + Self::OrangeStainedGlass => "minecraft:orange_stained_glass", + Self::OrangeStainedGlassPane => "minecraft:orange_stained_glass_pane", + Self::OrangeTerracotta => "minecraft:orange_terracotta", + Self::OrangeTulip => "minecraft:orange_tulip", + Self::OrangeWallBanner => "minecraft:orange_wall_banner", + Self::OrangeWool => "minecraft:orange_wool", + Self::OxeyeDaisy => "minecraft:oxeye_daisy", + Self::OxidizedChiseledCopper => "minecraft:oxidized_chiseled_copper", + Self::OxidizedCopper => "minecraft:oxidized_copper", + Self::OxidizedCopperBars => "minecraft:oxidized_copper_bars", + Self::OxidizedCopperBulb => "minecraft:oxidized_copper_bulb", + Self::OxidizedCopperChain => "minecraft:oxidized_copper_chain", + Self::OxidizedCopperChest => "minecraft:oxidized_copper_chest", + Self::OxidizedCopperDoor => "minecraft:oxidized_copper_door", + Self::OxidizedCopperGolemStatue => "minecraft:oxidized_copper_golem_statue", + Self::OxidizedCopperGrate => "minecraft:oxidized_copper_grate", + Self::OxidizedCopperLantern => "minecraft:oxidized_copper_lantern", + Self::OxidizedCopperTrapdoor => "minecraft:oxidized_copper_trapdoor", + Self::OxidizedCutCopper => "minecraft:oxidized_cut_copper", + Self::OxidizedCutCopperSlab => "minecraft:oxidized_cut_copper_slab", + Self::OxidizedCutCopperStairs => "minecraft:oxidized_cut_copper_stairs", + Self::OxidizedLightningRod => "minecraft:oxidized_lightning_rod", + Self::PackedIce => "minecraft:packed_ice", + Self::PackedMud => "minecraft:packed_mud", + Self::PaleHangingMoss => "minecraft:pale_hanging_moss", + Self::PaleMossBlock => "minecraft:pale_moss_block", + Self::PaleMossCarpet => "minecraft:pale_moss_carpet", + Self::PaleOakButton => "minecraft:pale_oak_button", + Self::PaleOakDoor => "minecraft:pale_oak_door", + Self::PaleOakFence => "minecraft:pale_oak_fence", + Self::PaleOakFenceGate => "minecraft:pale_oak_fence_gate", + Self::PaleOakHangingSign => "minecraft:pale_oak_hanging_sign", + Self::PaleOakLeaves => "minecraft:pale_oak_leaves", + Self::PaleOakLog => "minecraft:pale_oak_log", + Self::PaleOakPlanks => "minecraft:pale_oak_planks", + Self::PaleOakPressurePlate => "minecraft:pale_oak_pressure_plate", + Self::PaleOakSapling => "minecraft:pale_oak_sapling", + Self::PaleOakShelf => "minecraft:pale_oak_shelf", + Self::PaleOakSign => "minecraft:pale_oak_sign", + Self::PaleOakSlab => "minecraft:pale_oak_slab", + Self::PaleOakStairs => "minecraft:pale_oak_stairs", + Self::PaleOakTrapdoor => "minecraft:pale_oak_trapdoor", + Self::PaleOakWallHangingSign => "minecraft:pale_oak_wall_hanging_sign", + Self::PaleOakWallSign => "minecraft:pale_oak_wall_sign", + Self::PaleOakWood => "minecraft:pale_oak_wood", + Self::PearlescentFroglight => "minecraft:pearlescent_froglight", + Self::Peony => "minecraft:peony", + Self::PetrifiedOakSlab => "minecraft:petrified_oak_slab", + Self::PiglinHead => "minecraft:piglin_head", + Self::PiglinWallHead => "minecraft:piglin_wall_head", + Self::PinkBanner => "minecraft:pink_banner", + Self::PinkBed => "minecraft:pink_bed", + Self::PinkCandle => "minecraft:pink_candle", + Self::PinkCandleCake => "minecraft:pink_candle_cake", + Self::PinkCarpet => "minecraft:pink_carpet", + Self::PinkConcrete => "minecraft:pink_concrete", + Self::PinkConcretePowder => "minecraft:pink_concrete_powder", + Self::PinkGlazedTerracotta => "minecraft:pink_glazed_terracotta", + Self::PinkPetals => "minecraft:pink_petals", + Self::PinkShulkerBox => "minecraft:pink_shulker_box", + Self::PinkStainedGlass => "minecraft:pink_stained_glass", + Self::PinkStainedGlassPane => "minecraft:pink_stained_glass_pane", + Self::PinkTerracotta => "minecraft:pink_terracotta", + Self::PinkTulip => "minecraft:pink_tulip", + Self::PinkWallBanner => "minecraft:pink_wall_banner", + Self::PinkWool => "minecraft:pink_wool", + Self::Piston => "minecraft:piston", + Self::PistonHead => "minecraft:piston_head", + Self::PitcherCrop => "minecraft:pitcher_crop", + Self::PitcherPlant => "minecraft:pitcher_plant", + Self::PlayerHead => "minecraft:player_head", + Self::PlayerWallHead => "minecraft:player_wall_head", + Self::Podzol => "minecraft:podzol", + Self::PointedDripstone => "minecraft:pointed_dripstone", + Self::PolishedAndesite => "minecraft:polished_andesite", + Self::PolishedAndesiteSlab => "minecraft:polished_andesite_slab", + Self::PolishedAndesiteStairs => "minecraft:polished_andesite_stairs", + Self::PolishedBasalt => "minecraft:polished_basalt", + Self::PolishedBlackstone => "minecraft:polished_blackstone", + Self::PolishedBlackstoneBrickSlab => "minecraft:polished_blackstone_brick_slab", + Self::PolishedBlackstoneBrickStairs => "minecraft:polished_blackstone_brick_stairs", + Self::PolishedBlackstoneBrickWall => "minecraft:polished_blackstone_brick_wall", + Self::PolishedBlackstoneBricks => "minecraft:polished_blackstone_bricks", + Self::PolishedBlackstoneButton => "minecraft:polished_blackstone_button", + Self::PolishedBlackstonePressurePlate => "minecraft:polished_blackstone_pressure_plate", + Self::PolishedBlackstoneSlab => "minecraft:polished_blackstone_slab", + Self::PolishedBlackstoneStairs => "minecraft:polished_blackstone_stairs", + Self::PolishedBlackstoneWall => "minecraft:polished_blackstone_wall", + Self::PolishedCinnabar => "minecraft:polished_cinnabar", + Self::PolishedCinnabarSlab => "minecraft:polished_cinnabar_slab", + Self::PolishedCinnabarStairs => "minecraft:polished_cinnabar_stairs", + Self::PolishedCinnabarWall => "minecraft:polished_cinnabar_wall", + Self::PolishedDeepslate => "minecraft:polished_deepslate", + Self::PolishedDeepslateSlab => "minecraft:polished_deepslate_slab", + Self::PolishedDeepslateStairs => "minecraft:polished_deepslate_stairs", + Self::PolishedDeepslateWall => "minecraft:polished_deepslate_wall", + Self::PolishedDiorite => "minecraft:polished_diorite", + Self::PolishedDioriteSlab => "minecraft:polished_diorite_slab", + Self::PolishedDioriteStairs => "minecraft:polished_diorite_stairs", + Self::PolishedGranite => "minecraft:polished_granite", + Self::PolishedGraniteSlab => "minecraft:polished_granite_slab", + Self::PolishedGraniteStairs => "minecraft:polished_granite_stairs", + Self::PolishedSulfur => "minecraft:polished_sulfur", + Self::PolishedSulfurSlab => "minecraft:polished_sulfur_slab", + Self::PolishedSulfurStairs => "minecraft:polished_sulfur_stairs", + Self::PolishedSulfurWall => "minecraft:polished_sulfur_wall", + Self::PolishedTuff => "minecraft:polished_tuff", + Self::PolishedTuffSlab => "minecraft:polished_tuff_slab", + Self::PolishedTuffStairs => "minecraft:polished_tuff_stairs", + Self::PolishedTuffWall => "minecraft:polished_tuff_wall", + Self::Poppy => "minecraft:poppy", + Self::Potatoes => "minecraft:potatoes", + Self::PotentSulfur => "minecraft:potent_sulfur", + Self::PottedAcaciaSapling => "minecraft:potted_acacia_sapling", + Self::PottedAllium => "minecraft:potted_allium", + Self::PottedAzaleaBush => "minecraft:potted_azalea_bush", + Self::PottedAzureBluet => "minecraft:potted_azure_bluet", + Self::PottedBamboo => "minecraft:potted_bamboo", + Self::PottedBirchSapling => "minecraft:potted_birch_sapling", + Self::PottedBlueOrchid => "minecraft:potted_blue_orchid", + Self::PottedBrownMushroom => "minecraft:potted_brown_mushroom", + Self::PottedCactus => "minecraft:potted_cactus", + Self::PottedCherrySapling => "minecraft:potted_cherry_sapling", + Self::PottedClosedEyeblossom => "minecraft:potted_closed_eyeblossom", + Self::PottedCornflower => "minecraft:potted_cornflower", + Self::PottedCrimsonFungus => "minecraft:potted_crimson_fungus", + Self::PottedCrimsonRoots => "minecraft:potted_crimson_roots", + Self::PottedDandelion => "minecraft:potted_dandelion", + Self::PottedDarkOakSapling => "minecraft:potted_dark_oak_sapling", + Self::PottedDeadBush => "minecraft:potted_dead_bush", + Self::PottedFern => "minecraft:potted_fern", + Self::PottedFloweringAzaleaBush => "minecraft:potted_flowering_azalea_bush", + Self::PottedGoldenDandelion => "minecraft:potted_golden_dandelion", + Self::PottedJungleSapling => "minecraft:potted_jungle_sapling", + Self::PottedLilyOfTheValley => "minecraft:potted_lily_of_the_valley", + Self::PottedMangrovePropagule => "minecraft:potted_mangrove_propagule", + Self::PottedOakSapling => "minecraft:potted_oak_sapling", + Self::PottedOpenEyeblossom => "minecraft:potted_open_eyeblossom", + Self::PottedOrangeTulip => "minecraft:potted_orange_tulip", + Self::PottedOxeyeDaisy => "minecraft:potted_oxeye_daisy", + Self::PottedPaleOakSapling => "minecraft:potted_pale_oak_sapling", + Self::PottedPinkTulip => "minecraft:potted_pink_tulip", + Self::PottedPoppy => "minecraft:potted_poppy", + Self::PottedRedMushroom => "minecraft:potted_red_mushroom", + Self::PottedRedTulip => "minecraft:potted_red_tulip", + Self::PottedSpruceSapling => "minecraft:potted_spruce_sapling", + Self::PottedTorchflower => "minecraft:potted_torchflower", + Self::PottedWarpedFungus => "minecraft:potted_warped_fungus", + Self::PottedWarpedRoots => "minecraft:potted_warped_roots", + Self::PottedWhiteTulip => "minecraft:potted_white_tulip", + Self::PottedWitherRose => "minecraft:potted_wither_rose", + Self::PowderSnow => "minecraft:powder_snow", + Self::PowderSnowCauldron => "minecraft:powder_snow_cauldron", + Self::PoweredRail => "minecraft:powered_rail", + Self::Prismarine => "minecraft:prismarine", + Self::PrismarineBrickSlab => "minecraft:prismarine_brick_slab", + Self::PrismarineBrickStairs => "minecraft:prismarine_brick_stairs", + Self::PrismarineBricks => "minecraft:prismarine_bricks", + Self::PrismarineSlab => "minecraft:prismarine_slab", + Self::PrismarineStairs => "minecraft:prismarine_stairs", + Self::PrismarineWall => "minecraft:prismarine_wall", + Self::Pumpkin => "minecraft:pumpkin", + Self::PumpkinStem => "minecraft:pumpkin_stem", + Self::PurpleBanner => "minecraft:purple_banner", + Self::PurpleBed => "minecraft:purple_bed", + Self::PurpleCandle => "minecraft:purple_candle", + Self::PurpleCandleCake => "minecraft:purple_candle_cake", + Self::PurpleCarpet => "minecraft:purple_carpet", + Self::PurpleConcrete => "minecraft:purple_concrete", + Self::PurpleConcretePowder => "minecraft:purple_concrete_powder", + Self::PurpleGlazedTerracotta => "minecraft:purple_glazed_terracotta", + Self::PurpleShulkerBox => "minecraft:purple_shulker_box", + Self::PurpleStainedGlass => "minecraft:purple_stained_glass", + Self::PurpleStainedGlassPane => "minecraft:purple_stained_glass_pane", + Self::PurpleTerracotta => "minecraft:purple_terracotta", + Self::PurpleWallBanner => "minecraft:purple_wall_banner", + Self::PurpleWool => "minecraft:purple_wool", + Self::PurpurBlock => "minecraft:purpur_block", + Self::PurpurPillar => "minecraft:purpur_pillar", + Self::PurpurSlab => "minecraft:purpur_slab", + Self::PurpurStairs => "minecraft:purpur_stairs", + Self::QuartzBlock => "minecraft:quartz_block", + Self::QuartzBricks => "minecraft:quartz_bricks", + Self::QuartzPillar => "minecraft:quartz_pillar", + Self::QuartzSlab => "minecraft:quartz_slab", + Self::QuartzStairs => "minecraft:quartz_stairs", + Self::Rail => "minecraft:rail", + Self::RawCopperBlock => "minecraft:raw_copper_block", + Self::RawGoldBlock => "minecraft:raw_gold_block", + Self::RawIronBlock => "minecraft:raw_iron_block", + Self::RedBanner => "minecraft:red_banner", + Self::RedBed => "minecraft:red_bed", + Self::RedCandle => "minecraft:red_candle", + Self::RedCandleCake => "minecraft:red_candle_cake", + Self::RedCarpet => "minecraft:red_carpet", + Self::RedConcrete => "minecraft:red_concrete", + Self::RedConcretePowder => "minecraft:red_concrete_powder", + Self::RedGlazedTerracotta => "minecraft:red_glazed_terracotta", + Self::RedMushroom => "minecraft:red_mushroom", + Self::RedMushroomBlock => "minecraft:red_mushroom_block", + Self::RedNetherBrickSlab => "minecraft:red_nether_brick_slab", + Self::RedNetherBrickStairs => "minecraft:red_nether_brick_stairs", + Self::RedNetherBrickWall => "minecraft:red_nether_brick_wall", + Self::RedNetherBricks => "minecraft:red_nether_bricks", + Self::RedSand => "minecraft:red_sand", + Self::RedSandstone => "minecraft:red_sandstone", + Self::RedSandstoneSlab => "minecraft:red_sandstone_slab", + Self::RedSandstoneStairs => "minecraft:red_sandstone_stairs", + Self::RedSandstoneWall => "minecraft:red_sandstone_wall", + Self::RedShulkerBox => "minecraft:red_shulker_box", + Self::RedStainedGlass => "minecraft:red_stained_glass", + Self::RedStainedGlassPane => "minecraft:red_stained_glass_pane", + Self::RedTerracotta => "minecraft:red_terracotta", + Self::RedTulip => "minecraft:red_tulip", + Self::RedWallBanner => "minecraft:red_wall_banner", + Self::RedWool => "minecraft:red_wool", + Self::RedstoneBlock => "minecraft:redstone_block", + Self::RedstoneLamp => "minecraft:redstone_lamp", + Self::RedstoneOre => "minecraft:redstone_ore", + Self::RedstoneTorch => "minecraft:redstone_torch", + Self::RedstoneWallTorch => "minecraft:redstone_wall_torch", + Self::RedstoneWire => "minecraft:redstone_wire", + Self::ReinforcedDeepslate => "minecraft:reinforced_deepslate", + Self::Repeater => "minecraft:repeater", + Self::RepeatingCommandBlock => "minecraft:repeating_command_block", + Self::ResinBlock => "minecraft:resin_block", + Self::ResinBrickSlab => "minecraft:resin_brick_slab", + Self::ResinBrickStairs => "minecraft:resin_brick_stairs", + Self::ResinBrickWall => "minecraft:resin_brick_wall", + Self::ResinBricks => "minecraft:resin_bricks", + Self::ResinClump => "minecraft:resin_clump", + Self::RespawnAnchor => "minecraft:respawn_anchor", + Self::RootedDirt => "minecraft:rooted_dirt", + Self::RoseBush => "minecraft:rose_bush", + Self::Sand => "minecraft:sand", + Self::Sandstone => "minecraft:sandstone", + Self::SandstoneSlab => "minecraft:sandstone_slab", + Self::SandstoneStairs => "minecraft:sandstone_stairs", + Self::SandstoneWall => "minecraft:sandstone_wall", + Self::Scaffolding => "minecraft:scaffolding", + Self::Sculk => "minecraft:sculk", + Self::SculkCatalyst => "minecraft:sculk_catalyst", + Self::SculkSensor => "minecraft:sculk_sensor", + Self::SculkShrieker => "minecraft:sculk_shrieker", + Self::SculkVein => "minecraft:sculk_vein", + Self::SeaLantern => "minecraft:sea_lantern", + Self::SeaPickle => "minecraft:sea_pickle", + Self::Seagrass => "minecraft:seagrass", + Self::ShortDryGrass => "minecraft:short_dry_grass", + Self::ShortGrass => "minecraft:short_grass", + Self::Shroomlight => "minecraft:shroomlight", + Self::ShulkerBox => "minecraft:shulker_box", + Self::SkeletonSkull => "minecraft:skeleton_skull", + Self::SkeletonWallSkull => "minecraft:skeleton_wall_skull", + Self::SlimeBlock => "minecraft:slime_block", + Self::SmallAmethystBud => "minecraft:small_amethyst_bud", + Self::SmallDripleaf => "minecraft:small_dripleaf", + Self::SmithingTable => "minecraft:smithing_table", + Self::Smoker => "minecraft:smoker", + Self::SmoothBasalt => "minecraft:smooth_basalt", + Self::SmoothQuartz => "minecraft:smooth_quartz", + Self::SmoothQuartzSlab => "minecraft:smooth_quartz_slab", + Self::SmoothQuartzStairs => "minecraft:smooth_quartz_stairs", + Self::SmoothRedSandstone => "minecraft:smooth_red_sandstone", + Self::SmoothRedSandstoneSlab => "minecraft:smooth_red_sandstone_slab", + Self::SmoothRedSandstoneStairs => "minecraft:smooth_red_sandstone_stairs", + Self::SmoothSandstone => "minecraft:smooth_sandstone", + Self::SmoothSandstoneSlab => "minecraft:smooth_sandstone_slab", + Self::SmoothSandstoneStairs => "minecraft:smooth_sandstone_stairs", + Self::SmoothStone => "minecraft:smooth_stone", + Self::SmoothStoneSlab => "minecraft:smooth_stone_slab", + Self::SnifferEgg => "minecraft:sniffer_egg", + Self::Snow => "minecraft:snow", + Self::SnowBlock => "minecraft:snow_block", + Self::SoulCampfire => "minecraft:soul_campfire", + Self::SoulFire => "minecraft:soul_fire", + Self::SoulLantern => "minecraft:soul_lantern", + Self::SoulSand => "minecraft:soul_sand", + Self::SoulSoil => "minecraft:soul_soil", + Self::SoulTorch => "minecraft:soul_torch", + Self::SoulWallTorch => "minecraft:soul_wall_torch", + Self::Spawner => "minecraft:spawner", + Self::Sponge => "minecraft:sponge", + Self::SporeBlossom => "minecraft:spore_blossom", + Self::SpruceButton => "minecraft:spruce_button", + Self::SpruceDoor => "minecraft:spruce_door", + Self::SpruceFence => "minecraft:spruce_fence", + Self::SpruceFenceGate => "minecraft:spruce_fence_gate", + Self::SpruceHangingSign => "minecraft:spruce_hanging_sign", + Self::SpruceLeaves => "minecraft:spruce_leaves", + Self::SpruceLog => "minecraft:spruce_log", + Self::SprucePlanks => "minecraft:spruce_planks", + Self::SprucePressurePlate => "minecraft:spruce_pressure_plate", + Self::SpruceSapling => "minecraft:spruce_sapling", + Self::SpruceShelf => "minecraft:spruce_shelf", + Self::SpruceSign => "minecraft:spruce_sign", + Self::SpruceSlab => "minecraft:spruce_slab", + Self::SpruceStairs => "minecraft:spruce_stairs", + Self::SpruceTrapdoor => "minecraft:spruce_trapdoor", + Self::SpruceWallHangingSign => "minecraft:spruce_wall_hanging_sign", + Self::SpruceWallSign => "minecraft:spruce_wall_sign", + Self::SpruceWood => "minecraft:spruce_wood", + Self::StickyPiston => "minecraft:sticky_piston", + Self::Stone => "minecraft:stone", + Self::StoneBrickSlab => "minecraft:stone_brick_slab", + Self::StoneBrickStairs => "minecraft:stone_brick_stairs", + Self::StoneBrickWall => "minecraft:stone_brick_wall", + Self::StoneBricks => "minecraft:stone_bricks", + Self::StoneButton => "minecraft:stone_button", + Self::StonePressurePlate => "minecraft:stone_pressure_plate", + Self::StoneSlab => "minecraft:stone_slab", + Self::StoneStairs => "minecraft:stone_stairs", + Self::Stonecutter => "minecraft:stonecutter", + Self::StrippedAcaciaLog => "minecraft:stripped_acacia_log", + Self::StrippedAcaciaWood => "minecraft:stripped_acacia_wood", + Self::StrippedBambooBlock => "minecraft:stripped_bamboo_block", + Self::StrippedBirchLog => "minecraft:stripped_birch_log", + Self::StrippedBirchWood => "minecraft:stripped_birch_wood", + Self::StrippedCherryLog => "minecraft:stripped_cherry_log", + Self::StrippedCherryWood => "minecraft:stripped_cherry_wood", + Self::StrippedCrimsonHyphae => "minecraft:stripped_crimson_hyphae", + Self::StrippedCrimsonStem => "minecraft:stripped_crimson_stem", + Self::StrippedDarkOakLog => "minecraft:stripped_dark_oak_log", + Self::StrippedDarkOakWood => "minecraft:stripped_dark_oak_wood", + Self::StrippedJungleLog => "minecraft:stripped_jungle_log", + Self::StrippedJungleWood => "minecraft:stripped_jungle_wood", + Self::StrippedMangroveLog => "minecraft:stripped_mangrove_log", + Self::StrippedMangroveWood => "minecraft:stripped_mangrove_wood", + Self::StrippedOakLog => "minecraft:stripped_oak_log", + Self::StrippedOakWood => "minecraft:stripped_oak_wood", + Self::StrippedPaleOakLog => "minecraft:stripped_pale_oak_log", + Self::StrippedPaleOakWood => "minecraft:stripped_pale_oak_wood", + Self::StrippedSpruceLog => "minecraft:stripped_spruce_log", + Self::StrippedSpruceWood => "minecraft:stripped_spruce_wood", + Self::StrippedWarpedHyphae => "minecraft:stripped_warped_hyphae", + Self::StrippedWarpedStem => "minecraft:stripped_warped_stem", + Self::StructureBlock => "minecraft:structure_block", + Self::StructureVoid => "minecraft:structure_void", + Self::SugarCane => "minecraft:sugar_cane", + Self::Sulfur => "minecraft:sulfur", + Self::SulfurBrickSlab => "minecraft:sulfur_brick_slab", + Self::SulfurBrickStairs => "minecraft:sulfur_brick_stairs", + Self::SulfurBrickWall => "minecraft:sulfur_brick_wall", + Self::SulfurBricks => "minecraft:sulfur_bricks", + Self::SulfurSlab => "minecraft:sulfur_slab", + Self::SulfurSpike => "minecraft:sulfur_spike", + Self::SulfurStairs => "minecraft:sulfur_stairs", + Self::SulfurWall => "minecraft:sulfur_wall", + Self::Sunflower => "minecraft:sunflower", + Self::SuspiciousGravel => "minecraft:suspicious_gravel", + Self::SuspiciousSand => "minecraft:suspicious_sand", + Self::SweetBerryBush => "minecraft:sweet_berry_bush", + Self::TallDryGrass => "minecraft:tall_dry_grass", + Self::TallGrass => "minecraft:tall_grass", + Self::TallSeagrass => "minecraft:tall_seagrass", + Self::Target => "minecraft:target", + Self::Terracotta => "minecraft:terracotta", + Self::TestBlock => "minecraft:test_block", + Self::TestInstanceBlock => "minecraft:test_instance_block", + Self::TintedGlass => "minecraft:tinted_glass", + Self::Tnt => "minecraft:tnt", + Self::Torch => "minecraft:torch", + Self::Torchflower => "minecraft:torchflower", + Self::TorchflowerCrop => "minecraft:torchflower_crop", + Self::TrappedChest => "minecraft:trapped_chest", + Self::TrialSpawner => "minecraft:trial_spawner", + Self::Tripwire => "minecraft:tripwire", + Self::TripwireHook => "minecraft:tripwire_hook", + Self::TubeCoral => "minecraft:tube_coral", + Self::TubeCoralBlock => "minecraft:tube_coral_block", + Self::TubeCoralFan => "minecraft:tube_coral_fan", + Self::TubeCoralWallFan => "minecraft:tube_coral_wall_fan", + Self::Tuff => "minecraft:tuff", + Self::TuffBrickSlab => "minecraft:tuff_brick_slab", + Self::TuffBrickStairs => "minecraft:tuff_brick_stairs", + Self::TuffBrickWall => "minecraft:tuff_brick_wall", + Self::TuffBricks => "minecraft:tuff_bricks", + Self::TuffSlab => "minecraft:tuff_slab", + Self::TuffStairs => "minecraft:tuff_stairs", + Self::TuffWall => "minecraft:tuff_wall", + Self::TurtleEgg => "minecraft:turtle_egg", + Self::TwistingVines => "minecraft:twisting_vines", + Self::TwistingVinesPlant => "minecraft:twisting_vines_plant", + Self::Vault => "minecraft:vault", + Self::VerdantFroglight => "minecraft:verdant_froglight", + Self::Vine => "minecraft:vine", + Self::VoidAir => "minecraft:void_air", + Self::WallTorch => "minecraft:wall_torch", + Self::WarpedButton => "minecraft:warped_button", + Self::WarpedDoor => "minecraft:warped_door", + Self::WarpedFence => "minecraft:warped_fence", + Self::WarpedFenceGate => "minecraft:warped_fence_gate", + Self::WarpedFungus => "minecraft:warped_fungus", + Self::WarpedHangingSign => "minecraft:warped_hanging_sign", + Self::WarpedHyphae => "minecraft:warped_hyphae", + Self::WarpedNylium => "minecraft:warped_nylium", + Self::WarpedPlanks => "minecraft:warped_planks", + Self::WarpedPressurePlate => "minecraft:warped_pressure_plate", + Self::WarpedRoots => "minecraft:warped_roots", + Self::WarpedShelf => "minecraft:warped_shelf", + Self::WarpedSign => "minecraft:warped_sign", + Self::WarpedSlab => "minecraft:warped_slab", + Self::WarpedStairs => "minecraft:warped_stairs", + Self::WarpedStem => "minecraft:warped_stem", + Self::WarpedTrapdoor => "minecraft:warped_trapdoor", + Self::WarpedWallHangingSign => "minecraft:warped_wall_hanging_sign", + Self::WarpedWallSign => "minecraft:warped_wall_sign", + Self::WarpedWartBlock => "minecraft:warped_wart_block", + Self::Water => "minecraft:water", + Self::WaterCauldron => "minecraft:water_cauldron", + Self::WaxedChiseledCopper => "minecraft:waxed_chiseled_copper", + Self::WaxedCopperBars => "minecraft:waxed_copper_bars", + Self::WaxedCopperBlock => "minecraft:waxed_copper_block", + Self::WaxedCopperBulb => "minecraft:waxed_copper_bulb", + Self::WaxedCopperChain => "minecraft:waxed_copper_chain", + Self::WaxedCopperChest => "minecraft:waxed_copper_chest", + Self::WaxedCopperDoor => "minecraft:waxed_copper_door", + Self::WaxedCopperGolemStatue => "minecraft:waxed_copper_golem_statue", + Self::WaxedCopperGrate => "minecraft:waxed_copper_grate", + Self::WaxedCopperLantern => "minecraft:waxed_copper_lantern", + Self::WaxedCopperTrapdoor => "minecraft:waxed_copper_trapdoor", + Self::WaxedCutCopper => "minecraft:waxed_cut_copper", + Self::WaxedCutCopperSlab => "minecraft:waxed_cut_copper_slab", + Self::WaxedCutCopperStairs => "minecraft:waxed_cut_copper_stairs", + Self::WaxedExposedChiseledCopper => "minecraft:waxed_exposed_chiseled_copper", + Self::WaxedExposedCopper => "minecraft:waxed_exposed_copper", + Self::WaxedExposedCopperBars => "minecraft:waxed_exposed_copper_bars", + Self::WaxedExposedCopperBulb => "minecraft:waxed_exposed_copper_bulb", + Self::WaxedExposedCopperChain => "minecraft:waxed_exposed_copper_chain", + Self::WaxedExposedCopperChest => "minecraft:waxed_exposed_copper_chest", + Self::WaxedExposedCopperDoor => "minecraft:waxed_exposed_copper_door", + Self::WaxedExposedCopperGolemStatue => "minecraft:waxed_exposed_copper_golem_statue", + Self::WaxedExposedCopperGrate => "minecraft:waxed_exposed_copper_grate", + Self::WaxedExposedCopperLantern => "minecraft:waxed_exposed_copper_lantern", + Self::WaxedExposedCopperTrapdoor => "minecraft:waxed_exposed_copper_trapdoor", + Self::WaxedExposedCutCopper => "minecraft:waxed_exposed_cut_copper", + Self::WaxedExposedCutCopperSlab => "minecraft:waxed_exposed_cut_copper_slab", + Self::WaxedExposedCutCopperStairs => "minecraft:waxed_exposed_cut_copper_stairs", + Self::WaxedExposedLightningRod => "minecraft:waxed_exposed_lightning_rod", + Self::WaxedLightningRod => "minecraft:waxed_lightning_rod", + Self::WaxedOxidizedChiseledCopper => "minecraft:waxed_oxidized_chiseled_copper", + Self::WaxedOxidizedCopper => "minecraft:waxed_oxidized_copper", + Self::WaxedOxidizedCopperBars => "minecraft:waxed_oxidized_copper_bars", + Self::WaxedOxidizedCopperBulb => "minecraft:waxed_oxidized_copper_bulb", + Self::WaxedOxidizedCopperChain => "minecraft:waxed_oxidized_copper_chain", + Self::WaxedOxidizedCopperChest => "minecraft:waxed_oxidized_copper_chest", + Self::WaxedOxidizedCopperDoor => "minecraft:waxed_oxidized_copper_door", + Self::WaxedOxidizedCopperGolemStatue => "minecraft:waxed_oxidized_copper_golem_statue", + Self::WaxedOxidizedCopperGrate => "minecraft:waxed_oxidized_copper_grate", + Self::WaxedOxidizedCopperLantern => "minecraft:waxed_oxidized_copper_lantern", + Self::WaxedOxidizedCopperTrapdoor => "minecraft:waxed_oxidized_copper_trapdoor", + Self::WaxedOxidizedCutCopper => "minecraft:waxed_oxidized_cut_copper", + Self::WaxedOxidizedCutCopperSlab => "minecraft:waxed_oxidized_cut_copper_slab", + Self::WaxedOxidizedCutCopperStairs => "minecraft:waxed_oxidized_cut_copper_stairs", + Self::WaxedOxidizedLightningRod => "minecraft:waxed_oxidized_lightning_rod", + Self::WaxedWeatheredChiseledCopper => "minecraft:waxed_weathered_chiseled_copper", + Self::WaxedWeatheredCopper => "minecraft:waxed_weathered_copper", + Self::WaxedWeatheredCopperBars => "minecraft:waxed_weathered_copper_bars", + Self::WaxedWeatheredCopperBulb => "minecraft:waxed_weathered_copper_bulb", + Self::WaxedWeatheredCopperChain => "minecraft:waxed_weathered_copper_chain", + Self::WaxedWeatheredCopperChest => "minecraft:waxed_weathered_copper_chest", + Self::WaxedWeatheredCopperDoor => "minecraft:waxed_weathered_copper_door", + Self::WaxedWeatheredCopperGolemStatue => { + "minecraft:waxed_weathered_copper_golem_statue" + } + Self::WaxedWeatheredCopperGrate => "minecraft:waxed_weathered_copper_grate", + Self::WaxedWeatheredCopperLantern => "minecraft:waxed_weathered_copper_lantern", + Self::WaxedWeatheredCopperTrapdoor => "minecraft:waxed_weathered_copper_trapdoor", + Self::WaxedWeatheredCutCopper => "minecraft:waxed_weathered_cut_copper", + Self::WaxedWeatheredCutCopperSlab => "minecraft:waxed_weathered_cut_copper_slab", + Self::WaxedWeatheredCutCopperStairs => "minecraft:waxed_weathered_cut_copper_stairs", + Self::WaxedWeatheredLightningRod => "minecraft:waxed_weathered_lightning_rod", + Self::WeatheredChiseledCopper => "minecraft:weathered_chiseled_copper", + Self::WeatheredCopper => "minecraft:weathered_copper", + Self::WeatheredCopperBars => "minecraft:weathered_copper_bars", + Self::WeatheredCopperBulb => "minecraft:weathered_copper_bulb", + Self::WeatheredCopperChain => "minecraft:weathered_copper_chain", + Self::WeatheredCopperChest => "minecraft:weathered_copper_chest", + Self::WeatheredCopperDoor => "minecraft:weathered_copper_door", + Self::WeatheredCopperGolemStatue => "minecraft:weathered_copper_golem_statue", + Self::WeatheredCopperGrate => "minecraft:weathered_copper_grate", + Self::WeatheredCopperLantern => "minecraft:weathered_copper_lantern", + Self::WeatheredCopperTrapdoor => "minecraft:weathered_copper_trapdoor", + Self::WeatheredCutCopper => "minecraft:weathered_cut_copper", + Self::WeatheredCutCopperSlab => "minecraft:weathered_cut_copper_slab", + Self::WeatheredCutCopperStairs => "minecraft:weathered_cut_copper_stairs", + Self::WeatheredLightningRod => "minecraft:weathered_lightning_rod", + Self::WeepingVines => "minecraft:weeping_vines", + Self::WeepingVinesPlant => "minecraft:weeping_vines_plant", + Self::WetSponge => "minecraft:wet_sponge", + Self::Wheat => "minecraft:wheat", + Self::WhiteBanner => "minecraft:white_banner", + Self::WhiteBed => "minecraft:white_bed", + Self::WhiteCandle => "minecraft:white_candle", + Self::WhiteCandleCake => "minecraft:white_candle_cake", + Self::WhiteCarpet => "minecraft:white_carpet", + Self::WhiteConcrete => "minecraft:white_concrete", + Self::WhiteConcretePowder => "minecraft:white_concrete_powder", + Self::WhiteGlazedTerracotta => "minecraft:white_glazed_terracotta", + Self::WhiteShulkerBox => "minecraft:white_shulker_box", + Self::WhiteStainedGlass => "minecraft:white_stained_glass", + Self::WhiteStainedGlassPane => "minecraft:white_stained_glass_pane", + Self::WhiteTerracotta => "minecraft:white_terracotta", + Self::WhiteTulip => "minecraft:white_tulip", + Self::WhiteWallBanner => "minecraft:white_wall_banner", + Self::WhiteWool => "minecraft:white_wool", + Self::Wildflowers => "minecraft:wildflowers", + Self::WitherRose => "minecraft:wither_rose", + Self::WitherSkeletonSkull => "minecraft:wither_skeleton_skull", + Self::WitherSkeletonWallSkull => "minecraft:wither_skeleton_wall_skull", + Self::YellowBanner => "minecraft:yellow_banner", + Self::YellowBed => "minecraft:yellow_bed", + Self::YellowCandle => "minecraft:yellow_candle", + Self::YellowCandleCake => "minecraft:yellow_candle_cake", + Self::YellowCarpet => "minecraft:yellow_carpet", + Self::YellowConcrete => "minecraft:yellow_concrete", + Self::YellowConcretePowder => "minecraft:yellow_concrete_powder", + Self::YellowGlazedTerracotta => "minecraft:yellow_glazed_terracotta", + Self::YellowShulkerBox => "minecraft:yellow_shulker_box", + Self::YellowStainedGlass => "minecraft:yellow_stained_glass", + Self::YellowStainedGlassPane => "minecraft:yellow_stained_glass_pane", + Self::YellowTerracotta => "minecraft:yellow_terracotta", + Self::YellowWallBanner => "minecraft:yellow_wall_banner", + Self::YellowWool => "minecraft:yellow_wool", + Self::ZombieHead => "minecraft:zombie_head", + Self::ZombieWallHead => "minecraft:zombie_wall_head", + } + } + + /// Resolves a typed `BlockType` from a name or namespaced identifier. + #[must_use] + pub fn from_name(name: &str) -> Option { + let clean = name.strip_prefix("minecraft:").unwrap_or(name); + match clean { + "acacia_button" => Some(Self::AcaciaButton), + "acacia_door" => Some(Self::AcaciaDoor), + "acacia_fence" => Some(Self::AcaciaFence), + "acacia_fence_gate" => Some(Self::AcaciaFenceGate), + "acacia_hanging_sign" => Some(Self::AcaciaHangingSign), + "acacia_leaves" => Some(Self::AcaciaLeaves), + "acacia_log" => Some(Self::AcaciaLog), + "acacia_planks" => Some(Self::AcaciaPlanks), + "acacia_pressure_plate" => Some(Self::AcaciaPressurePlate), + "acacia_sapling" => Some(Self::AcaciaSapling), + "acacia_shelf" => Some(Self::AcaciaShelf), + "acacia_sign" => Some(Self::AcaciaSign), + "acacia_slab" => Some(Self::AcaciaSlab), + "acacia_stairs" => Some(Self::AcaciaStairs), + "acacia_trapdoor" => Some(Self::AcaciaTrapdoor), + "acacia_wall_hanging_sign" => Some(Self::AcaciaWallHangingSign), + "acacia_wall_sign" => Some(Self::AcaciaWallSign), + "acacia_wood" => Some(Self::AcaciaWood), + "activator_rail" => Some(Self::ActivatorRail), + "air" => Some(Self::Air), + "allium" => Some(Self::Allium), + "amethyst_block" => Some(Self::AmethystBlock), + "amethyst_cluster" => Some(Self::AmethystCluster), + "ancient_debris" => Some(Self::AncientDebris), + "andesite" => Some(Self::Andesite), + "andesite_slab" => Some(Self::AndesiteSlab), + "andesite_stairs" => Some(Self::AndesiteStairs), + "andesite_wall" => Some(Self::AndesiteWall), + "anvil" => Some(Self::Anvil), + "attached_melon_stem" => Some(Self::AttachedMelonStem), + "attached_pumpkin_stem" => Some(Self::AttachedPumpkinStem), + "azalea" => Some(Self::Azalea), + "azalea_leaves" => Some(Self::AzaleaLeaves), + "azure_bluet" => Some(Self::AzureBluet), + "bamboo" => Some(Self::Bamboo), + "bamboo_block" => Some(Self::BambooBlock), + "bamboo_button" => Some(Self::BambooButton), + "bamboo_door" => Some(Self::BambooDoor), + "bamboo_fence" => Some(Self::BambooFence), + "bamboo_fence_gate" => Some(Self::BambooFenceGate), + "bamboo_hanging_sign" => Some(Self::BambooHangingSign), + "bamboo_mosaic" => Some(Self::BambooMosaic), + "bamboo_mosaic_slab" => Some(Self::BambooMosaicSlab), + "bamboo_mosaic_stairs" => Some(Self::BambooMosaicStairs), + "bamboo_planks" => Some(Self::BambooPlanks), + "bamboo_pressure_plate" => Some(Self::BambooPressurePlate), + "bamboo_sapling" => Some(Self::BambooSapling), + "bamboo_shelf" => Some(Self::BambooShelf), + "bamboo_sign" => Some(Self::BambooSign), + "bamboo_slab" => Some(Self::BambooSlab), + "bamboo_stairs" => Some(Self::BambooStairs), + "bamboo_trapdoor" => Some(Self::BambooTrapdoor), + "bamboo_wall_hanging_sign" => Some(Self::BambooWallHangingSign), + "bamboo_wall_sign" => Some(Self::BambooWallSign), + "barrel" => Some(Self::Barrel), + "barrier" => Some(Self::Barrier), + "basalt" => Some(Self::Basalt), + "beacon" => Some(Self::Beacon), + "bedrock" => Some(Self::Bedrock), + "bee_nest" => Some(Self::BeeNest), + "beehive" => Some(Self::Beehive), + "beetroots" => Some(Self::Beetroots), + "bell" => Some(Self::Bell), + "big_dripleaf" => Some(Self::BigDripleaf), + "big_dripleaf_stem" => Some(Self::BigDripleafStem), + "birch_button" => Some(Self::BirchButton), + "birch_door" => Some(Self::BirchDoor), + "birch_fence" => Some(Self::BirchFence), + "birch_fence_gate" => Some(Self::BirchFenceGate), + "birch_hanging_sign" => Some(Self::BirchHangingSign), + "birch_leaves" => Some(Self::BirchLeaves), + "birch_log" => Some(Self::BirchLog), + "birch_planks" => Some(Self::BirchPlanks), + "birch_pressure_plate" => Some(Self::BirchPressurePlate), + "birch_sapling" => Some(Self::BirchSapling), + "birch_shelf" => Some(Self::BirchShelf), + "birch_sign" => Some(Self::BirchSign), + "birch_slab" => Some(Self::BirchSlab), + "birch_stairs" => Some(Self::BirchStairs), + "birch_trapdoor" => Some(Self::BirchTrapdoor), + "birch_wall_hanging_sign" => Some(Self::BirchWallHangingSign), + "birch_wall_sign" => Some(Self::BirchWallSign), + "birch_wood" => Some(Self::BirchWood), + "black_banner" => Some(Self::BlackBanner), + "black_bed" => Some(Self::BlackBed), + "black_candle" => Some(Self::BlackCandle), + "black_candle_cake" => Some(Self::BlackCandleCake), + "black_carpet" => Some(Self::BlackCarpet), + "black_concrete" => Some(Self::BlackConcrete), + "black_concrete_powder" => Some(Self::BlackConcretePowder), + "black_glazed_terracotta" => Some(Self::BlackGlazedTerracotta), + "black_shulker_box" => Some(Self::BlackShulkerBox), + "black_stained_glass" => Some(Self::BlackStainedGlass), + "black_stained_glass_pane" => Some(Self::BlackStainedGlassPane), + "black_terracotta" => Some(Self::BlackTerracotta), + "black_wall_banner" => Some(Self::BlackWallBanner), + "black_wool" => Some(Self::BlackWool), + "blackstone" => Some(Self::Blackstone), + "blackstone_slab" => Some(Self::BlackstoneSlab), + "blackstone_stairs" => Some(Self::BlackstoneStairs), + "blackstone_wall" => Some(Self::BlackstoneWall), + "blast_furnace" => Some(Self::BlastFurnace), + "blue_banner" => Some(Self::BlueBanner), + "blue_bed" => Some(Self::BlueBed), + "blue_candle" => Some(Self::BlueCandle), + "blue_candle_cake" => Some(Self::BlueCandleCake), + "blue_carpet" => Some(Self::BlueCarpet), + "blue_concrete" => Some(Self::BlueConcrete), + "blue_concrete_powder" => Some(Self::BlueConcretePowder), + "blue_glazed_terracotta" => Some(Self::BlueGlazedTerracotta), + "blue_ice" => Some(Self::BlueIce), + "blue_orchid" => Some(Self::BlueOrchid), + "blue_shulker_box" => Some(Self::BlueShulkerBox), + "blue_stained_glass" => Some(Self::BlueStainedGlass), + "blue_stained_glass_pane" => Some(Self::BlueStainedGlassPane), + "blue_terracotta" => Some(Self::BlueTerracotta), + "blue_wall_banner" => Some(Self::BlueWallBanner), + "blue_wool" => Some(Self::BlueWool), + "bone_block" => Some(Self::BoneBlock), + "bookshelf" => Some(Self::Bookshelf), + "brain_coral" => Some(Self::BrainCoral), + "brain_coral_block" => Some(Self::BrainCoralBlock), + "brain_coral_fan" => Some(Self::BrainCoralFan), + "brain_coral_wall_fan" => Some(Self::BrainCoralWallFan), + "brewing_stand" => Some(Self::BrewingStand), + "brick_slab" => Some(Self::BrickSlab), + "brick_stairs" => Some(Self::BrickStairs), + "brick_wall" => Some(Self::BrickWall), + "bricks" => Some(Self::Bricks), + "brown_banner" => Some(Self::BrownBanner), + "brown_bed" => Some(Self::BrownBed), + "brown_candle" => Some(Self::BrownCandle), + "brown_candle_cake" => Some(Self::BrownCandleCake), + "brown_carpet" => Some(Self::BrownCarpet), + "brown_concrete" => Some(Self::BrownConcrete), + "brown_concrete_powder" => Some(Self::BrownConcretePowder), + "brown_glazed_terracotta" => Some(Self::BrownGlazedTerracotta), + "brown_mushroom" => Some(Self::BrownMushroom), + "brown_mushroom_block" => Some(Self::BrownMushroomBlock), + "brown_shulker_box" => Some(Self::BrownShulkerBox), + "brown_stained_glass" => Some(Self::BrownStainedGlass), + "brown_stained_glass_pane" => Some(Self::BrownStainedGlassPane), + "brown_terracotta" => Some(Self::BrownTerracotta), + "brown_wall_banner" => Some(Self::BrownWallBanner), + "brown_wool" => Some(Self::BrownWool), + "bubble_column" => Some(Self::BubbleColumn), + "bubble_coral" => Some(Self::BubbleCoral), + "bubble_coral_block" => Some(Self::BubbleCoralBlock), + "bubble_coral_fan" => Some(Self::BubbleCoralFan), + "bubble_coral_wall_fan" => Some(Self::BubbleCoralWallFan), + "budding_amethyst" => Some(Self::BuddingAmethyst), + "bush" => Some(Self::Bush), + "cactus" => Some(Self::Cactus), + "cactus_flower" => Some(Self::CactusFlower), + "cake" => Some(Self::Cake), + "calcite" => Some(Self::Calcite), + "calibrated_sculk_sensor" => Some(Self::CalibratedSculkSensor), + "campfire" => Some(Self::Campfire), + "candle" => Some(Self::Candle), + "candle_cake" => Some(Self::CandleCake), + "carrots" => Some(Self::Carrots), + "cartography_table" => Some(Self::CartographyTable), + "carved_pumpkin" => Some(Self::CarvedPumpkin), + "cauldron" => Some(Self::Cauldron), + "cave_air" => Some(Self::CaveAir), + "cave_vines" => Some(Self::CaveVines), + "cave_vines_plant" => Some(Self::CaveVinesPlant), + "chain_command_block" => Some(Self::ChainCommandBlock), + "cherry_button" => Some(Self::CherryButton), + "cherry_door" => Some(Self::CherryDoor), + "cherry_fence" => Some(Self::CherryFence), + "cherry_fence_gate" => Some(Self::CherryFenceGate), + "cherry_hanging_sign" => Some(Self::CherryHangingSign), + "cherry_leaves" => Some(Self::CherryLeaves), + "cherry_log" => Some(Self::CherryLog), + "cherry_planks" => Some(Self::CherryPlanks), + "cherry_pressure_plate" => Some(Self::CherryPressurePlate), + "cherry_sapling" => Some(Self::CherrySapling), + "cherry_shelf" => Some(Self::CherryShelf), + "cherry_sign" => Some(Self::CherrySign), + "cherry_slab" => Some(Self::CherrySlab), + "cherry_stairs" => Some(Self::CherryStairs), + "cherry_trapdoor" => Some(Self::CherryTrapdoor), + "cherry_wall_hanging_sign" => Some(Self::CherryWallHangingSign), + "cherry_wall_sign" => Some(Self::CherryWallSign), + "cherry_wood" => Some(Self::CherryWood), + "chest" => Some(Self::Chest), + "chipped_anvil" => Some(Self::ChippedAnvil), + "chiseled_bookshelf" => Some(Self::ChiseledBookshelf), + "chiseled_cinnabar" => Some(Self::ChiseledCinnabar), + "chiseled_copper" => Some(Self::ChiseledCopper), + "chiseled_deepslate" => Some(Self::ChiseledDeepslate), + "chiseled_nether_bricks" => Some(Self::ChiseledNetherBricks), + "chiseled_polished_blackstone" => Some(Self::ChiseledPolishedBlackstone), + "chiseled_quartz_block" => Some(Self::ChiseledQuartzBlock), + "chiseled_red_sandstone" => Some(Self::ChiseledRedSandstone), + "chiseled_resin_bricks" => Some(Self::ChiseledResinBricks), + "chiseled_sandstone" => Some(Self::ChiseledSandstone), + "chiseled_stone_bricks" => Some(Self::ChiseledStoneBricks), + "chiseled_sulfur" => Some(Self::ChiseledSulfur), + "chiseled_tuff" => Some(Self::ChiseledTuff), + "chiseled_tuff_bricks" => Some(Self::ChiseledTuffBricks), + "chorus_flower" => Some(Self::ChorusFlower), + "chorus_plant" => Some(Self::ChorusPlant), + "cinnabar" => Some(Self::Cinnabar), + "cinnabar_brick_slab" => Some(Self::CinnabarBrickSlab), + "cinnabar_brick_stairs" => Some(Self::CinnabarBrickStairs), + "cinnabar_brick_wall" => Some(Self::CinnabarBrickWall), + "cinnabar_bricks" => Some(Self::CinnabarBricks), + "cinnabar_slab" => Some(Self::CinnabarSlab), + "cinnabar_stairs" => Some(Self::CinnabarStairs), + "cinnabar_wall" => Some(Self::CinnabarWall), + "clay" => Some(Self::Clay), + "closed_eyeblossom" => Some(Self::ClosedEyeblossom), + "coal_block" => Some(Self::CoalBlock), + "coal_ore" => Some(Self::CoalOre), + "coarse_dirt" => Some(Self::CoarseDirt), + "cobbled_deepslate" => Some(Self::CobbledDeepslate), + "cobbled_deepslate_slab" => Some(Self::CobbledDeepslateSlab), + "cobbled_deepslate_stairs" => Some(Self::CobbledDeepslateStairs), + "cobbled_deepslate_wall" => Some(Self::CobbledDeepslateWall), + "cobblestone" => Some(Self::Cobblestone), + "cobblestone_slab" => Some(Self::CobblestoneSlab), + "cobblestone_stairs" => Some(Self::CobblestoneStairs), + "cobblestone_wall" => Some(Self::CobblestoneWall), + "cobweb" => Some(Self::Cobweb), + "cocoa" => Some(Self::Cocoa), + "command_block" => Some(Self::CommandBlock), + "comparator" => Some(Self::Comparator), + "composter" => Some(Self::Composter), + "conduit" => Some(Self::Conduit), + "copper_bars" => Some(Self::CopperBars), + "copper_block" => Some(Self::CopperBlock), + "copper_bulb" => Some(Self::CopperBulb), + "copper_chain" => Some(Self::CopperChain), + "copper_chest" => Some(Self::CopperChest), + "copper_door" => Some(Self::CopperDoor), + "copper_golem_statue" => Some(Self::CopperGolemStatue), + "copper_grate" => Some(Self::CopperGrate), + "copper_lantern" => Some(Self::CopperLantern), + "copper_ore" => Some(Self::CopperOre), + "copper_torch" => Some(Self::CopperTorch), + "copper_trapdoor" => Some(Self::CopperTrapdoor), + "copper_wall_torch" => Some(Self::CopperWallTorch), + "cornflower" => Some(Self::Cornflower), + "cracked_deepslate_bricks" => Some(Self::CrackedDeepslateBricks), + "cracked_deepslate_tiles" => Some(Self::CrackedDeepslateTiles), + "cracked_nether_bricks" => Some(Self::CrackedNetherBricks), + "cracked_polished_blackstone_bricks" => Some(Self::CrackedPolishedBlackstoneBricks), + "cracked_stone_bricks" => Some(Self::CrackedStoneBricks), + "crafter" => Some(Self::Crafter), + "crafting_table" => Some(Self::CraftingTable), + "creaking_heart" => Some(Self::CreakingHeart), + "creeper_head" => Some(Self::CreeperHead), + "creeper_wall_head" => Some(Self::CreeperWallHead), + "crimson_button" => Some(Self::CrimsonButton), + "crimson_door" => Some(Self::CrimsonDoor), + "crimson_fence" => Some(Self::CrimsonFence), + "crimson_fence_gate" => Some(Self::CrimsonFenceGate), + "crimson_fungus" => Some(Self::CrimsonFungus), + "crimson_hanging_sign" => Some(Self::CrimsonHangingSign), + "crimson_hyphae" => Some(Self::CrimsonHyphae), + "crimson_nylium" => Some(Self::CrimsonNylium), + "crimson_planks" => Some(Self::CrimsonPlanks), + "crimson_pressure_plate" => Some(Self::CrimsonPressurePlate), + "crimson_roots" => Some(Self::CrimsonRoots), + "crimson_shelf" => Some(Self::CrimsonShelf), + "crimson_sign" => Some(Self::CrimsonSign), + "crimson_slab" => Some(Self::CrimsonSlab), + "crimson_stairs" => Some(Self::CrimsonStairs), + "crimson_stem" => Some(Self::CrimsonStem), + "crimson_trapdoor" => Some(Self::CrimsonTrapdoor), + "crimson_wall_hanging_sign" => Some(Self::CrimsonWallHangingSign), + "crimson_wall_sign" => Some(Self::CrimsonWallSign), + "crying_obsidian" => Some(Self::CryingObsidian), + "cut_copper" => Some(Self::CutCopper), + "cut_copper_slab" => Some(Self::CutCopperSlab), + "cut_copper_stairs" => Some(Self::CutCopperStairs), + "cut_red_sandstone" => Some(Self::CutRedSandstone), + "cut_red_sandstone_slab" => Some(Self::CutRedSandstoneSlab), + "cut_sandstone" => Some(Self::CutSandstone), + "cut_sandstone_slab" => Some(Self::CutSandstoneSlab), + "cyan_banner" => Some(Self::CyanBanner), + "cyan_bed" => Some(Self::CyanBed), + "cyan_candle" => Some(Self::CyanCandle), + "cyan_candle_cake" => Some(Self::CyanCandleCake), + "cyan_carpet" => Some(Self::CyanCarpet), + "cyan_concrete" => Some(Self::CyanConcrete), + "cyan_concrete_powder" => Some(Self::CyanConcretePowder), + "cyan_glazed_terracotta" => Some(Self::CyanGlazedTerracotta), + "cyan_shulker_box" => Some(Self::CyanShulkerBox), + "cyan_stained_glass" => Some(Self::CyanStainedGlass), + "cyan_stained_glass_pane" => Some(Self::CyanStainedGlassPane), + "cyan_terracotta" => Some(Self::CyanTerracotta), + "cyan_wall_banner" => Some(Self::CyanWallBanner), + "cyan_wool" => Some(Self::CyanWool), + "damaged_anvil" => Some(Self::DamagedAnvil), + "dandelion" => Some(Self::Dandelion), + "dark_oak_button" => Some(Self::DarkOakButton), + "dark_oak_door" => Some(Self::DarkOakDoor), + "dark_oak_fence" => Some(Self::DarkOakFence), + "dark_oak_fence_gate" => Some(Self::DarkOakFenceGate), + "dark_oak_hanging_sign" => Some(Self::DarkOakHangingSign), + "dark_oak_leaves" => Some(Self::DarkOakLeaves), + "dark_oak_log" => Some(Self::DarkOakLog), + "dark_oak_planks" => Some(Self::DarkOakPlanks), + "dark_oak_pressure_plate" => Some(Self::DarkOakPressurePlate), + "dark_oak_sapling" => Some(Self::DarkOakSapling), + "dark_oak_shelf" => Some(Self::DarkOakShelf), + "dark_oak_sign" => Some(Self::DarkOakSign), + "dark_oak_slab" => Some(Self::DarkOakSlab), + "dark_oak_stairs" => Some(Self::DarkOakStairs), + "dark_oak_trapdoor" => Some(Self::DarkOakTrapdoor), + "dark_oak_wall_hanging_sign" => Some(Self::DarkOakWallHangingSign), + "dark_oak_wall_sign" => Some(Self::DarkOakWallSign), + "dark_oak_wood" => Some(Self::DarkOakWood), + "dark_prismarine" => Some(Self::DarkPrismarine), + "dark_prismarine_slab" => Some(Self::DarkPrismarineSlab), + "dark_prismarine_stairs" => Some(Self::DarkPrismarineStairs), + "daylight_detector" => Some(Self::DaylightDetector), + "dead_brain_coral" => Some(Self::DeadBrainCoral), + "dead_brain_coral_block" => Some(Self::DeadBrainCoralBlock), + "dead_brain_coral_fan" => Some(Self::DeadBrainCoralFan), + "dead_brain_coral_wall_fan" => Some(Self::DeadBrainCoralWallFan), + "dead_bubble_coral" => Some(Self::DeadBubbleCoral), + "dead_bubble_coral_block" => Some(Self::DeadBubbleCoralBlock), + "dead_bubble_coral_fan" => Some(Self::DeadBubbleCoralFan), + "dead_bubble_coral_wall_fan" => Some(Self::DeadBubbleCoralWallFan), + "dead_bush" => Some(Self::DeadBush), + "dead_fire_coral" => Some(Self::DeadFireCoral), + "dead_fire_coral_block" => Some(Self::DeadFireCoralBlock), + "dead_fire_coral_fan" => Some(Self::DeadFireCoralFan), + "dead_fire_coral_wall_fan" => Some(Self::DeadFireCoralWallFan), + "dead_horn_coral" => Some(Self::DeadHornCoral), + "dead_horn_coral_block" => Some(Self::DeadHornCoralBlock), + "dead_horn_coral_fan" => Some(Self::DeadHornCoralFan), + "dead_horn_coral_wall_fan" => Some(Self::DeadHornCoralWallFan), + "dead_tube_coral" => Some(Self::DeadTubeCoral), + "dead_tube_coral_block" => Some(Self::DeadTubeCoralBlock), + "dead_tube_coral_fan" => Some(Self::DeadTubeCoralFan), + "dead_tube_coral_wall_fan" => Some(Self::DeadTubeCoralWallFan), + "decorated_pot" => Some(Self::DecoratedPot), + "deepslate" => Some(Self::Deepslate), + "deepslate_brick_slab" => Some(Self::DeepslateBrickSlab), + "deepslate_brick_stairs" => Some(Self::DeepslateBrickStairs), + "deepslate_brick_wall" => Some(Self::DeepslateBrickWall), + "deepslate_bricks" => Some(Self::DeepslateBricks), + "deepslate_coal_ore" => Some(Self::DeepslateCoalOre), + "deepslate_copper_ore" => Some(Self::DeepslateCopperOre), + "deepslate_diamond_ore" => Some(Self::DeepslateDiamondOre), + "deepslate_emerald_ore" => Some(Self::DeepslateEmeraldOre), + "deepslate_gold_ore" => Some(Self::DeepslateGoldOre), + "deepslate_iron_ore" => Some(Self::DeepslateIronOre), + "deepslate_lapis_ore" => Some(Self::DeepslateLapisOre), + "deepslate_redstone_ore" => Some(Self::DeepslateRedstoneOre), + "deepslate_tile_slab" => Some(Self::DeepslateTileSlab), + "deepslate_tile_stairs" => Some(Self::DeepslateTileStairs), + "deepslate_tile_wall" => Some(Self::DeepslateTileWall), + "deepslate_tiles" => Some(Self::DeepslateTiles), + "detector_rail" => Some(Self::DetectorRail), + "diamond_block" => Some(Self::DiamondBlock), + "diamond_ore" => Some(Self::DiamondOre), + "diorite" => Some(Self::Diorite), + "diorite_slab" => Some(Self::DioriteSlab), + "diorite_stairs" => Some(Self::DioriteStairs), + "diorite_wall" => Some(Self::DioriteWall), + "dirt" => Some(Self::Dirt), + "dirt_path" => Some(Self::DirtPath), + "dispenser" => Some(Self::Dispenser), + "dragon_egg" => Some(Self::DragonEgg), + "dragon_head" => Some(Self::DragonHead), + "dragon_wall_head" => Some(Self::DragonWallHead), + "dried_ghast" => Some(Self::DriedGhast), + "dried_kelp_block" => Some(Self::DriedKelpBlock), + "dripstone_block" => Some(Self::DripstoneBlock), + "dropper" => Some(Self::Dropper), + "emerald_block" => Some(Self::EmeraldBlock), + "emerald_ore" => Some(Self::EmeraldOre), + "enchanting_table" => Some(Self::EnchantingTable), + "end_gateway" => Some(Self::EndGateway), + "end_portal" => Some(Self::EndPortal), + "end_portal_frame" => Some(Self::EndPortalFrame), + "end_rod" => Some(Self::EndRod), + "end_stone" => Some(Self::EndStone), + "end_stone_brick_slab" => Some(Self::EndStoneBrickSlab), + "end_stone_brick_stairs" => Some(Self::EndStoneBrickStairs), + "end_stone_brick_wall" => Some(Self::EndStoneBrickWall), + "end_stone_bricks" => Some(Self::EndStoneBricks), + "ender_chest" => Some(Self::EnderChest), + "exposed_chiseled_copper" => Some(Self::ExposedChiseledCopper), + "exposed_copper" => Some(Self::ExposedCopper), + "exposed_copper_bars" => Some(Self::ExposedCopperBars), + "exposed_copper_bulb" => Some(Self::ExposedCopperBulb), + "exposed_copper_chain" => Some(Self::ExposedCopperChain), + "exposed_copper_chest" => Some(Self::ExposedCopperChest), + "exposed_copper_door" => Some(Self::ExposedCopperDoor), + "exposed_copper_golem_statue" => Some(Self::ExposedCopperGolemStatue), + "exposed_copper_grate" => Some(Self::ExposedCopperGrate), + "exposed_copper_lantern" => Some(Self::ExposedCopperLantern), + "exposed_copper_trapdoor" => Some(Self::ExposedCopperTrapdoor), + "exposed_cut_copper" => Some(Self::ExposedCutCopper), + "exposed_cut_copper_slab" => Some(Self::ExposedCutCopperSlab), + "exposed_cut_copper_stairs" => Some(Self::ExposedCutCopperStairs), + "exposed_lightning_rod" => Some(Self::ExposedLightningRod), + "farmland" => Some(Self::Farmland), + "fern" => Some(Self::Fern), + "fire" => Some(Self::Fire), + "fire_coral" => Some(Self::FireCoral), + "fire_coral_block" => Some(Self::FireCoralBlock), + "fire_coral_fan" => Some(Self::FireCoralFan), + "fire_coral_wall_fan" => Some(Self::FireCoralWallFan), + "firefly_bush" => Some(Self::FireflyBush), + "fletching_table" => Some(Self::FletchingTable), + "flower_pot" => Some(Self::FlowerPot), + "flowering_azalea" => Some(Self::FloweringAzalea), + "flowering_azalea_leaves" => Some(Self::FloweringAzaleaLeaves), + "frogspawn" => Some(Self::Frogspawn), + "frosted_ice" => Some(Self::FrostedIce), + "furnace" => Some(Self::Furnace), + "gilded_blackstone" => Some(Self::GildedBlackstone), + "glass" => Some(Self::Glass), + "glass_pane" => Some(Self::GlassPane), + "glow_lichen" => Some(Self::GlowLichen), + "glowstone" => Some(Self::Glowstone), + "gold_block" => Some(Self::GoldBlock), + "gold_ore" => Some(Self::GoldOre), + "golden_dandelion" => Some(Self::GoldenDandelion), + "granite" => Some(Self::Granite), + "granite_slab" => Some(Self::GraniteSlab), + "granite_stairs" => Some(Self::GraniteStairs), + "granite_wall" => Some(Self::GraniteWall), + "grass_block" => Some(Self::GrassBlock), + "gravel" => Some(Self::Gravel), + "gray_banner" => Some(Self::GrayBanner), + "gray_bed" => Some(Self::GrayBed), + "gray_candle" => Some(Self::GrayCandle), + "gray_candle_cake" => Some(Self::GrayCandleCake), + "gray_carpet" => Some(Self::GrayCarpet), + "gray_concrete" => Some(Self::GrayConcrete), + "gray_concrete_powder" => Some(Self::GrayConcretePowder), + "gray_glazed_terracotta" => Some(Self::GrayGlazedTerracotta), + "gray_shulker_box" => Some(Self::GrayShulkerBox), + "gray_stained_glass" => Some(Self::GrayStainedGlass), + "gray_stained_glass_pane" => Some(Self::GrayStainedGlassPane), + "gray_terracotta" => Some(Self::GrayTerracotta), + "gray_wall_banner" => Some(Self::GrayWallBanner), + "gray_wool" => Some(Self::GrayWool), + "green_banner" => Some(Self::GreenBanner), + "green_bed" => Some(Self::GreenBed), + "green_candle" => Some(Self::GreenCandle), + "green_candle_cake" => Some(Self::GreenCandleCake), + "green_carpet" => Some(Self::GreenCarpet), + "green_concrete" => Some(Self::GreenConcrete), + "green_concrete_powder" => Some(Self::GreenConcretePowder), + "green_glazed_terracotta" => Some(Self::GreenGlazedTerracotta), + "green_shulker_box" => Some(Self::GreenShulkerBox), + "green_stained_glass" => Some(Self::GreenStainedGlass), + "green_stained_glass_pane" => Some(Self::GreenStainedGlassPane), + "green_terracotta" => Some(Self::GreenTerracotta), + "green_wall_banner" => Some(Self::GreenWallBanner), + "green_wool" => Some(Self::GreenWool), + "grindstone" => Some(Self::Grindstone), + "hanging_roots" => Some(Self::HangingRoots), + "hay_block" => Some(Self::HayBlock), + "heavy_core" => Some(Self::HeavyCore), + "heavy_weighted_pressure_plate" => Some(Self::HeavyWeightedPressurePlate), + "honey_block" => Some(Self::HoneyBlock), + "honeycomb_block" => Some(Self::HoneycombBlock), + "hopper" => Some(Self::Hopper), + "horn_coral" => Some(Self::HornCoral), + "horn_coral_block" => Some(Self::HornCoralBlock), + "horn_coral_fan" => Some(Self::HornCoralFan), + "horn_coral_wall_fan" => Some(Self::HornCoralWallFan), + "ice" => Some(Self::Ice), + "infested_chiseled_stone_bricks" => Some(Self::InfestedChiseledStoneBricks), + "infested_cobblestone" => Some(Self::InfestedCobblestone), + "infested_cracked_stone_bricks" => Some(Self::InfestedCrackedStoneBricks), + "infested_deepslate" => Some(Self::InfestedDeepslate), + "infested_mossy_stone_bricks" => Some(Self::InfestedMossyStoneBricks), + "infested_stone" => Some(Self::InfestedStone), + "infested_stone_bricks" => Some(Self::InfestedStoneBricks), + "iron_bars" => Some(Self::IronBars), + "iron_block" => Some(Self::IronBlock), + "iron_chain" => Some(Self::IronChain), + "iron_door" => Some(Self::IronDoor), + "iron_ore" => Some(Self::IronOre), + "iron_trapdoor" => Some(Self::IronTrapdoor), + "jack_o_lantern" => Some(Self::JackOLantern), + "jigsaw" => Some(Self::Jigsaw), + "jukebox" => Some(Self::Jukebox), + "jungle_button" => Some(Self::JungleButton), + "jungle_door" => Some(Self::JungleDoor), + "jungle_fence" => Some(Self::JungleFence), + "jungle_fence_gate" => Some(Self::JungleFenceGate), + "jungle_hanging_sign" => Some(Self::JungleHangingSign), + "jungle_leaves" => Some(Self::JungleLeaves), + "jungle_log" => Some(Self::JungleLog), + "jungle_planks" => Some(Self::JunglePlanks), + "jungle_pressure_plate" => Some(Self::JunglePressurePlate), + "jungle_sapling" => Some(Self::JungleSapling), + "jungle_shelf" => Some(Self::JungleShelf), + "jungle_sign" => Some(Self::JungleSign), + "jungle_slab" => Some(Self::JungleSlab), + "jungle_stairs" => Some(Self::JungleStairs), + "jungle_trapdoor" => Some(Self::JungleTrapdoor), + "jungle_wall_hanging_sign" => Some(Self::JungleWallHangingSign), + "jungle_wall_sign" => Some(Self::JungleWallSign), + "jungle_wood" => Some(Self::JungleWood), + "kelp" => Some(Self::Kelp), + "kelp_plant" => Some(Self::KelpPlant), + "ladder" => Some(Self::Ladder), + "lantern" => Some(Self::Lantern), + "lapis_block" => Some(Self::LapisBlock), + "lapis_ore" => Some(Self::LapisOre), + "large_amethyst_bud" => Some(Self::LargeAmethystBud), + "large_fern" => Some(Self::LargeFern), + "lava" => Some(Self::Lava), + "lava_cauldron" => Some(Self::LavaCauldron), + "leaf_litter" => Some(Self::LeafLitter), + "lectern" => Some(Self::Lectern), + "lever" => Some(Self::Lever), + "light" => Some(Self::Light), + "light_blue_banner" => Some(Self::LightBlueBanner), + "light_blue_bed" => Some(Self::LightBlueBed), + "light_blue_candle" => Some(Self::LightBlueCandle), + "light_blue_candle_cake" => Some(Self::LightBlueCandleCake), + "light_blue_carpet" => Some(Self::LightBlueCarpet), + "light_blue_concrete" => Some(Self::LightBlueConcrete), + "light_blue_concrete_powder" => Some(Self::LightBlueConcretePowder), + "light_blue_glazed_terracotta" => Some(Self::LightBlueGlazedTerracotta), + "light_blue_shulker_box" => Some(Self::LightBlueShulkerBox), + "light_blue_stained_glass" => Some(Self::LightBlueStainedGlass), + "light_blue_stained_glass_pane" => Some(Self::LightBlueStainedGlassPane), + "light_blue_terracotta" => Some(Self::LightBlueTerracotta), + "light_blue_wall_banner" => Some(Self::LightBlueWallBanner), + "light_blue_wool" => Some(Self::LightBlueWool), + "light_gray_banner" => Some(Self::LightGrayBanner), + "light_gray_bed" => Some(Self::LightGrayBed), + "light_gray_candle" => Some(Self::LightGrayCandle), + "light_gray_candle_cake" => Some(Self::LightGrayCandleCake), + "light_gray_carpet" => Some(Self::LightGrayCarpet), + "light_gray_concrete" => Some(Self::LightGrayConcrete), + "light_gray_concrete_powder" => Some(Self::LightGrayConcretePowder), + "light_gray_glazed_terracotta" => Some(Self::LightGrayGlazedTerracotta), + "light_gray_shulker_box" => Some(Self::LightGrayShulkerBox), + "light_gray_stained_glass" => Some(Self::LightGrayStainedGlass), + "light_gray_stained_glass_pane" => Some(Self::LightGrayStainedGlassPane), + "light_gray_terracotta" => Some(Self::LightGrayTerracotta), + "light_gray_wall_banner" => Some(Self::LightGrayWallBanner), + "light_gray_wool" => Some(Self::LightGrayWool), + "light_weighted_pressure_plate" => Some(Self::LightWeightedPressurePlate), + "lightning_rod" => Some(Self::LightningRod), + "lilac" => Some(Self::Lilac), + "lily_of_the_valley" => Some(Self::LilyOfTheValley), + "lily_pad" => Some(Self::LilyPad), + "lime_banner" => Some(Self::LimeBanner), + "lime_bed" => Some(Self::LimeBed), + "lime_candle" => Some(Self::LimeCandle), + "lime_candle_cake" => Some(Self::LimeCandleCake), + "lime_carpet" => Some(Self::LimeCarpet), + "lime_concrete" => Some(Self::LimeConcrete), + "lime_concrete_powder" => Some(Self::LimeConcretePowder), + "lime_glazed_terracotta" => Some(Self::LimeGlazedTerracotta), + "lime_shulker_box" => Some(Self::LimeShulkerBox), + "lime_stained_glass" => Some(Self::LimeStainedGlass), + "lime_stained_glass_pane" => Some(Self::LimeStainedGlassPane), + "lime_terracotta" => Some(Self::LimeTerracotta), + "lime_wall_banner" => Some(Self::LimeWallBanner), + "lime_wool" => Some(Self::LimeWool), + "lodestone" => Some(Self::Lodestone), + "loom" => Some(Self::Loom), + "magenta_banner" => Some(Self::MagentaBanner), + "magenta_bed" => Some(Self::MagentaBed), + "magenta_candle" => Some(Self::MagentaCandle), + "magenta_candle_cake" => Some(Self::MagentaCandleCake), + "magenta_carpet" => Some(Self::MagentaCarpet), + "magenta_concrete" => Some(Self::MagentaConcrete), + "magenta_concrete_powder" => Some(Self::MagentaConcretePowder), + "magenta_glazed_terracotta" => Some(Self::MagentaGlazedTerracotta), + "magenta_shulker_box" => Some(Self::MagentaShulkerBox), + "magenta_stained_glass" => Some(Self::MagentaStainedGlass), + "magenta_stained_glass_pane" => Some(Self::MagentaStainedGlassPane), + "magenta_terracotta" => Some(Self::MagentaTerracotta), + "magenta_wall_banner" => Some(Self::MagentaWallBanner), + "magenta_wool" => Some(Self::MagentaWool), + "magma_block" => Some(Self::MagmaBlock), + "mangrove_button" => Some(Self::MangroveButton), + "mangrove_door" => Some(Self::MangroveDoor), + "mangrove_fence" => Some(Self::MangroveFence), + "mangrove_fence_gate" => Some(Self::MangroveFenceGate), + "mangrove_hanging_sign" => Some(Self::MangroveHangingSign), + "mangrove_leaves" => Some(Self::MangroveLeaves), + "mangrove_log" => Some(Self::MangroveLog), + "mangrove_planks" => Some(Self::MangrovePlanks), + "mangrove_pressure_plate" => Some(Self::MangrovePressurePlate), + "mangrove_propagule" => Some(Self::MangrovePropagule), + "mangrove_roots" => Some(Self::MangroveRoots), + "mangrove_shelf" => Some(Self::MangroveShelf), + "mangrove_sign" => Some(Self::MangroveSign), + "mangrove_slab" => Some(Self::MangroveSlab), + "mangrove_stairs" => Some(Self::MangroveStairs), + "mangrove_trapdoor" => Some(Self::MangroveTrapdoor), + "mangrove_wall_hanging_sign" => Some(Self::MangroveWallHangingSign), + "mangrove_wall_sign" => Some(Self::MangroveWallSign), + "mangrove_wood" => Some(Self::MangroveWood), + "medium_amethyst_bud" => Some(Self::MediumAmethystBud), + "melon" => Some(Self::Melon), + "melon_stem" => Some(Self::MelonStem), + "moss_block" => Some(Self::MossBlock), + "moss_carpet" => Some(Self::MossCarpet), + "mossy_cobblestone" => Some(Self::MossyCobblestone), + "mossy_cobblestone_slab" => Some(Self::MossyCobblestoneSlab), + "mossy_cobblestone_stairs" => Some(Self::MossyCobblestoneStairs), + "mossy_cobblestone_wall" => Some(Self::MossyCobblestoneWall), + "mossy_stone_brick_slab" => Some(Self::MossyStoneBrickSlab), + "mossy_stone_brick_stairs" => Some(Self::MossyStoneBrickStairs), + "mossy_stone_brick_wall" => Some(Self::MossyStoneBrickWall), + "mossy_stone_bricks" => Some(Self::MossyStoneBricks), + "moving_piston" => Some(Self::MovingPiston), + "mud" => Some(Self::Mud), + "mud_brick_slab" => Some(Self::MudBrickSlab), + "mud_brick_stairs" => Some(Self::MudBrickStairs), + "mud_brick_wall" => Some(Self::MudBrickWall), + "mud_bricks" => Some(Self::MudBricks), + "muddy_mangrove_roots" => Some(Self::MuddyMangroveRoots), + "mushroom_stem" => Some(Self::MushroomStem), + "mycelium" => Some(Self::Mycelium), + "nether_brick_fence" => Some(Self::NetherBrickFence), + "nether_brick_slab" => Some(Self::NetherBrickSlab), + "nether_brick_stairs" => Some(Self::NetherBrickStairs), + "nether_brick_wall" => Some(Self::NetherBrickWall), + "nether_bricks" => Some(Self::NetherBricks), + "nether_gold_ore" => Some(Self::NetherGoldOre), + "nether_portal" => Some(Self::NetherPortal), + "nether_quartz_ore" => Some(Self::NetherQuartzOre), + "nether_sprouts" => Some(Self::NetherSprouts), + "nether_wart" => Some(Self::NetherWart), + "nether_wart_block" => Some(Self::NetherWartBlock), + "netherite_block" => Some(Self::NetheriteBlock), + "netherrack" => Some(Self::Netherrack), + "note_block" => Some(Self::NoteBlock), + "oak_button" => Some(Self::OakButton), + "oak_door" => Some(Self::OakDoor), + "oak_fence" => Some(Self::OakFence), + "oak_fence_gate" => Some(Self::OakFenceGate), + "oak_hanging_sign" => Some(Self::OakHangingSign), + "oak_leaves" => Some(Self::OakLeaves), + "oak_log" => Some(Self::OakLog), + "oak_planks" => Some(Self::OakPlanks), + "oak_pressure_plate" => Some(Self::OakPressurePlate), + "oak_sapling" => Some(Self::OakSapling), + "oak_shelf" => Some(Self::OakShelf), + "oak_sign" => Some(Self::OakSign), + "oak_slab" => Some(Self::OakSlab), + "oak_stairs" => Some(Self::OakStairs), + "oak_trapdoor" => Some(Self::OakTrapdoor), + "oak_wall_hanging_sign" => Some(Self::OakWallHangingSign), + "oak_wall_sign" => Some(Self::OakWallSign), + "oak_wood" => Some(Self::OakWood), + "observer" => Some(Self::Observer), + "obsidian" => Some(Self::Obsidian), + "ochre_froglight" => Some(Self::OchreFroglight), + "open_eyeblossom" => Some(Self::OpenEyeblossom), + "orange_banner" => Some(Self::OrangeBanner), + "orange_bed" => Some(Self::OrangeBed), + "orange_candle" => Some(Self::OrangeCandle), + "orange_candle_cake" => Some(Self::OrangeCandleCake), + "orange_carpet" => Some(Self::OrangeCarpet), + "orange_concrete" => Some(Self::OrangeConcrete), + "orange_concrete_powder" => Some(Self::OrangeConcretePowder), + "orange_glazed_terracotta" => Some(Self::OrangeGlazedTerracotta), + "orange_shulker_box" => Some(Self::OrangeShulkerBox), + "orange_stained_glass" => Some(Self::OrangeStainedGlass), + "orange_stained_glass_pane" => Some(Self::OrangeStainedGlassPane), + "orange_terracotta" => Some(Self::OrangeTerracotta), + "orange_tulip" => Some(Self::OrangeTulip), + "orange_wall_banner" => Some(Self::OrangeWallBanner), + "orange_wool" => Some(Self::OrangeWool), + "oxeye_daisy" => Some(Self::OxeyeDaisy), + "oxidized_chiseled_copper" => Some(Self::OxidizedChiseledCopper), + "oxidized_copper" => Some(Self::OxidizedCopper), + "oxidized_copper_bars" => Some(Self::OxidizedCopperBars), + "oxidized_copper_bulb" => Some(Self::OxidizedCopperBulb), + "oxidized_copper_chain" => Some(Self::OxidizedCopperChain), + "oxidized_copper_chest" => Some(Self::OxidizedCopperChest), + "oxidized_copper_door" => Some(Self::OxidizedCopperDoor), + "oxidized_copper_golem_statue" => Some(Self::OxidizedCopperGolemStatue), + "oxidized_copper_grate" => Some(Self::OxidizedCopperGrate), + "oxidized_copper_lantern" => Some(Self::OxidizedCopperLantern), + "oxidized_copper_trapdoor" => Some(Self::OxidizedCopperTrapdoor), + "oxidized_cut_copper" => Some(Self::OxidizedCutCopper), + "oxidized_cut_copper_slab" => Some(Self::OxidizedCutCopperSlab), + "oxidized_cut_copper_stairs" => Some(Self::OxidizedCutCopperStairs), + "oxidized_lightning_rod" => Some(Self::OxidizedLightningRod), + "packed_ice" => Some(Self::PackedIce), + "packed_mud" => Some(Self::PackedMud), + "pale_hanging_moss" => Some(Self::PaleHangingMoss), + "pale_moss_block" => Some(Self::PaleMossBlock), + "pale_moss_carpet" => Some(Self::PaleMossCarpet), + "pale_oak_button" => Some(Self::PaleOakButton), + "pale_oak_door" => Some(Self::PaleOakDoor), + "pale_oak_fence" => Some(Self::PaleOakFence), + "pale_oak_fence_gate" => Some(Self::PaleOakFenceGate), + "pale_oak_hanging_sign" => Some(Self::PaleOakHangingSign), + "pale_oak_leaves" => Some(Self::PaleOakLeaves), + "pale_oak_log" => Some(Self::PaleOakLog), + "pale_oak_planks" => Some(Self::PaleOakPlanks), + "pale_oak_pressure_plate" => Some(Self::PaleOakPressurePlate), + "pale_oak_sapling" => Some(Self::PaleOakSapling), + "pale_oak_shelf" => Some(Self::PaleOakShelf), + "pale_oak_sign" => Some(Self::PaleOakSign), + "pale_oak_slab" => Some(Self::PaleOakSlab), + "pale_oak_stairs" => Some(Self::PaleOakStairs), + "pale_oak_trapdoor" => Some(Self::PaleOakTrapdoor), + "pale_oak_wall_hanging_sign" => Some(Self::PaleOakWallHangingSign), + "pale_oak_wall_sign" => Some(Self::PaleOakWallSign), + "pale_oak_wood" => Some(Self::PaleOakWood), + "pearlescent_froglight" => Some(Self::PearlescentFroglight), + "peony" => Some(Self::Peony), + "petrified_oak_slab" => Some(Self::PetrifiedOakSlab), + "piglin_head" => Some(Self::PiglinHead), + "piglin_wall_head" => Some(Self::PiglinWallHead), + "pink_banner" => Some(Self::PinkBanner), + "pink_bed" => Some(Self::PinkBed), + "pink_candle" => Some(Self::PinkCandle), + "pink_candle_cake" => Some(Self::PinkCandleCake), + "pink_carpet" => Some(Self::PinkCarpet), + "pink_concrete" => Some(Self::PinkConcrete), + "pink_concrete_powder" => Some(Self::PinkConcretePowder), + "pink_glazed_terracotta" => Some(Self::PinkGlazedTerracotta), + "pink_petals" => Some(Self::PinkPetals), + "pink_shulker_box" => Some(Self::PinkShulkerBox), + "pink_stained_glass" => Some(Self::PinkStainedGlass), + "pink_stained_glass_pane" => Some(Self::PinkStainedGlassPane), + "pink_terracotta" => Some(Self::PinkTerracotta), + "pink_tulip" => Some(Self::PinkTulip), + "pink_wall_banner" => Some(Self::PinkWallBanner), + "pink_wool" => Some(Self::PinkWool), + "piston" => Some(Self::Piston), + "piston_head" => Some(Self::PistonHead), + "pitcher_crop" => Some(Self::PitcherCrop), + "pitcher_plant" => Some(Self::PitcherPlant), + "player_head" => Some(Self::PlayerHead), + "player_wall_head" => Some(Self::PlayerWallHead), + "podzol" => Some(Self::Podzol), + "pointed_dripstone" => Some(Self::PointedDripstone), + "polished_andesite" => Some(Self::PolishedAndesite), + "polished_andesite_slab" => Some(Self::PolishedAndesiteSlab), + "polished_andesite_stairs" => Some(Self::PolishedAndesiteStairs), + "polished_basalt" => Some(Self::PolishedBasalt), + "polished_blackstone" => Some(Self::PolishedBlackstone), + "polished_blackstone_brick_slab" => Some(Self::PolishedBlackstoneBrickSlab), + "polished_blackstone_brick_stairs" => Some(Self::PolishedBlackstoneBrickStairs), + "polished_blackstone_brick_wall" => Some(Self::PolishedBlackstoneBrickWall), + "polished_blackstone_bricks" => Some(Self::PolishedBlackstoneBricks), + "polished_blackstone_button" => Some(Self::PolishedBlackstoneButton), + "polished_blackstone_pressure_plate" => Some(Self::PolishedBlackstonePressurePlate), + "polished_blackstone_slab" => Some(Self::PolishedBlackstoneSlab), + "polished_blackstone_stairs" => Some(Self::PolishedBlackstoneStairs), + "polished_blackstone_wall" => Some(Self::PolishedBlackstoneWall), + "polished_cinnabar" => Some(Self::PolishedCinnabar), + "polished_cinnabar_slab" => Some(Self::PolishedCinnabarSlab), + "polished_cinnabar_stairs" => Some(Self::PolishedCinnabarStairs), + "polished_cinnabar_wall" => Some(Self::PolishedCinnabarWall), + "polished_deepslate" => Some(Self::PolishedDeepslate), + "polished_deepslate_slab" => Some(Self::PolishedDeepslateSlab), + "polished_deepslate_stairs" => Some(Self::PolishedDeepslateStairs), + "polished_deepslate_wall" => Some(Self::PolishedDeepslateWall), + "polished_diorite" => Some(Self::PolishedDiorite), + "polished_diorite_slab" => Some(Self::PolishedDioriteSlab), + "polished_diorite_stairs" => Some(Self::PolishedDioriteStairs), + "polished_granite" => Some(Self::PolishedGranite), + "polished_granite_slab" => Some(Self::PolishedGraniteSlab), + "polished_granite_stairs" => Some(Self::PolishedGraniteStairs), + "polished_sulfur" => Some(Self::PolishedSulfur), + "polished_sulfur_slab" => Some(Self::PolishedSulfurSlab), + "polished_sulfur_stairs" => Some(Self::PolishedSulfurStairs), + "polished_sulfur_wall" => Some(Self::PolishedSulfurWall), + "polished_tuff" => Some(Self::PolishedTuff), + "polished_tuff_slab" => Some(Self::PolishedTuffSlab), + "polished_tuff_stairs" => Some(Self::PolishedTuffStairs), + "polished_tuff_wall" => Some(Self::PolishedTuffWall), + "poppy" => Some(Self::Poppy), + "potatoes" => Some(Self::Potatoes), + "potent_sulfur" => Some(Self::PotentSulfur), + "potted_acacia_sapling" => Some(Self::PottedAcaciaSapling), + "potted_allium" => Some(Self::PottedAllium), + "potted_azalea_bush" => Some(Self::PottedAzaleaBush), + "potted_azure_bluet" => Some(Self::PottedAzureBluet), + "potted_bamboo" => Some(Self::PottedBamboo), + "potted_birch_sapling" => Some(Self::PottedBirchSapling), + "potted_blue_orchid" => Some(Self::PottedBlueOrchid), + "potted_brown_mushroom" => Some(Self::PottedBrownMushroom), + "potted_cactus" => Some(Self::PottedCactus), + "potted_cherry_sapling" => Some(Self::PottedCherrySapling), + "potted_closed_eyeblossom" => Some(Self::PottedClosedEyeblossom), + "potted_cornflower" => Some(Self::PottedCornflower), + "potted_crimson_fungus" => Some(Self::PottedCrimsonFungus), + "potted_crimson_roots" => Some(Self::PottedCrimsonRoots), + "potted_dandelion" => Some(Self::PottedDandelion), + "potted_dark_oak_sapling" => Some(Self::PottedDarkOakSapling), + "potted_dead_bush" => Some(Self::PottedDeadBush), + "potted_fern" => Some(Self::PottedFern), + "potted_flowering_azalea_bush" => Some(Self::PottedFloweringAzaleaBush), + "potted_golden_dandelion" => Some(Self::PottedGoldenDandelion), + "potted_jungle_sapling" => Some(Self::PottedJungleSapling), + "potted_lily_of_the_valley" => Some(Self::PottedLilyOfTheValley), + "potted_mangrove_propagule" => Some(Self::PottedMangrovePropagule), + "potted_oak_sapling" => Some(Self::PottedOakSapling), + "potted_open_eyeblossom" => Some(Self::PottedOpenEyeblossom), + "potted_orange_tulip" => Some(Self::PottedOrangeTulip), + "potted_oxeye_daisy" => Some(Self::PottedOxeyeDaisy), + "potted_pale_oak_sapling" => Some(Self::PottedPaleOakSapling), + "potted_pink_tulip" => Some(Self::PottedPinkTulip), + "potted_poppy" => Some(Self::PottedPoppy), + "potted_red_mushroom" => Some(Self::PottedRedMushroom), + "potted_red_tulip" => Some(Self::PottedRedTulip), + "potted_spruce_sapling" => Some(Self::PottedSpruceSapling), + "potted_torchflower" => Some(Self::PottedTorchflower), + "potted_warped_fungus" => Some(Self::PottedWarpedFungus), + "potted_warped_roots" => Some(Self::PottedWarpedRoots), + "potted_white_tulip" => Some(Self::PottedWhiteTulip), + "potted_wither_rose" => Some(Self::PottedWitherRose), + "powder_snow" => Some(Self::PowderSnow), + "powder_snow_cauldron" => Some(Self::PowderSnowCauldron), + "powered_rail" => Some(Self::PoweredRail), + "prismarine" => Some(Self::Prismarine), + "prismarine_brick_slab" => Some(Self::PrismarineBrickSlab), + "prismarine_brick_stairs" => Some(Self::PrismarineBrickStairs), + "prismarine_bricks" => Some(Self::PrismarineBricks), + "prismarine_slab" => Some(Self::PrismarineSlab), + "prismarine_stairs" => Some(Self::PrismarineStairs), + "prismarine_wall" => Some(Self::PrismarineWall), + "pumpkin" => Some(Self::Pumpkin), + "pumpkin_stem" => Some(Self::PumpkinStem), + "purple_banner" => Some(Self::PurpleBanner), + "purple_bed" => Some(Self::PurpleBed), + "purple_candle" => Some(Self::PurpleCandle), + "purple_candle_cake" => Some(Self::PurpleCandleCake), + "purple_carpet" => Some(Self::PurpleCarpet), + "purple_concrete" => Some(Self::PurpleConcrete), + "purple_concrete_powder" => Some(Self::PurpleConcretePowder), + "purple_glazed_terracotta" => Some(Self::PurpleGlazedTerracotta), + "purple_shulker_box" => Some(Self::PurpleShulkerBox), + "purple_stained_glass" => Some(Self::PurpleStainedGlass), + "purple_stained_glass_pane" => Some(Self::PurpleStainedGlassPane), + "purple_terracotta" => Some(Self::PurpleTerracotta), + "purple_wall_banner" => Some(Self::PurpleWallBanner), + "purple_wool" => Some(Self::PurpleWool), + "purpur_block" => Some(Self::PurpurBlock), + "purpur_pillar" => Some(Self::PurpurPillar), + "purpur_slab" => Some(Self::PurpurSlab), + "purpur_stairs" => Some(Self::PurpurStairs), + "quartz_block" => Some(Self::QuartzBlock), + "quartz_bricks" => Some(Self::QuartzBricks), + "quartz_pillar" => Some(Self::QuartzPillar), + "quartz_slab" => Some(Self::QuartzSlab), + "quartz_stairs" => Some(Self::QuartzStairs), + "rail" => Some(Self::Rail), + "raw_copper_block" => Some(Self::RawCopperBlock), + "raw_gold_block" => Some(Self::RawGoldBlock), + "raw_iron_block" => Some(Self::RawIronBlock), + "red_banner" => Some(Self::RedBanner), + "red_bed" => Some(Self::RedBed), + "red_candle" => Some(Self::RedCandle), + "red_candle_cake" => Some(Self::RedCandleCake), + "red_carpet" => Some(Self::RedCarpet), + "red_concrete" => Some(Self::RedConcrete), + "red_concrete_powder" => Some(Self::RedConcretePowder), + "red_glazed_terracotta" => Some(Self::RedGlazedTerracotta), + "red_mushroom" => Some(Self::RedMushroom), + "red_mushroom_block" => Some(Self::RedMushroomBlock), + "red_nether_brick_slab" => Some(Self::RedNetherBrickSlab), + "red_nether_brick_stairs" => Some(Self::RedNetherBrickStairs), + "red_nether_brick_wall" => Some(Self::RedNetherBrickWall), + "red_nether_bricks" => Some(Self::RedNetherBricks), + "red_sand" => Some(Self::RedSand), + "red_sandstone" => Some(Self::RedSandstone), + "red_sandstone_slab" => Some(Self::RedSandstoneSlab), + "red_sandstone_stairs" => Some(Self::RedSandstoneStairs), + "red_sandstone_wall" => Some(Self::RedSandstoneWall), + "red_shulker_box" => Some(Self::RedShulkerBox), + "red_stained_glass" => Some(Self::RedStainedGlass), + "red_stained_glass_pane" => Some(Self::RedStainedGlassPane), + "red_terracotta" => Some(Self::RedTerracotta), + "red_tulip" => Some(Self::RedTulip), + "red_wall_banner" => Some(Self::RedWallBanner), + "red_wool" => Some(Self::RedWool), + "redstone_block" => Some(Self::RedstoneBlock), + "redstone_lamp" => Some(Self::RedstoneLamp), + "redstone_ore" => Some(Self::RedstoneOre), + "redstone_torch" => Some(Self::RedstoneTorch), + "redstone_wall_torch" => Some(Self::RedstoneWallTorch), + "redstone_wire" => Some(Self::RedstoneWire), + "reinforced_deepslate" => Some(Self::ReinforcedDeepslate), + "repeater" => Some(Self::Repeater), + "repeating_command_block" => Some(Self::RepeatingCommandBlock), + "resin_block" => Some(Self::ResinBlock), + "resin_brick_slab" => Some(Self::ResinBrickSlab), + "resin_brick_stairs" => Some(Self::ResinBrickStairs), + "resin_brick_wall" => Some(Self::ResinBrickWall), + "resin_bricks" => Some(Self::ResinBricks), + "resin_clump" => Some(Self::ResinClump), + "respawn_anchor" => Some(Self::RespawnAnchor), + "rooted_dirt" => Some(Self::RootedDirt), + "rose_bush" => Some(Self::RoseBush), + "sand" => Some(Self::Sand), + "sandstone" => Some(Self::Sandstone), + "sandstone_slab" => Some(Self::SandstoneSlab), + "sandstone_stairs" => Some(Self::SandstoneStairs), + "sandstone_wall" => Some(Self::SandstoneWall), + "scaffolding" => Some(Self::Scaffolding), + "sculk" => Some(Self::Sculk), + "sculk_catalyst" => Some(Self::SculkCatalyst), + "sculk_sensor" => Some(Self::SculkSensor), + "sculk_shrieker" => Some(Self::SculkShrieker), + "sculk_vein" => Some(Self::SculkVein), + "sea_lantern" => Some(Self::SeaLantern), + "sea_pickle" => Some(Self::SeaPickle), + "seagrass" => Some(Self::Seagrass), + "short_dry_grass" => Some(Self::ShortDryGrass), + "short_grass" => Some(Self::ShortGrass), + "shroomlight" => Some(Self::Shroomlight), + "shulker_box" => Some(Self::ShulkerBox), + "skeleton_skull" => Some(Self::SkeletonSkull), + "skeleton_wall_skull" => Some(Self::SkeletonWallSkull), + "slime_block" => Some(Self::SlimeBlock), + "small_amethyst_bud" => Some(Self::SmallAmethystBud), + "small_dripleaf" => Some(Self::SmallDripleaf), + "smithing_table" => Some(Self::SmithingTable), + "smoker" => Some(Self::Smoker), + "smooth_basalt" => Some(Self::SmoothBasalt), + "smooth_quartz" => Some(Self::SmoothQuartz), + "smooth_quartz_slab" => Some(Self::SmoothQuartzSlab), + "smooth_quartz_stairs" => Some(Self::SmoothQuartzStairs), + "smooth_red_sandstone" => Some(Self::SmoothRedSandstone), + "smooth_red_sandstone_slab" => Some(Self::SmoothRedSandstoneSlab), + "smooth_red_sandstone_stairs" => Some(Self::SmoothRedSandstoneStairs), + "smooth_sandstone" => Some(Self::SmoothSandstone), + "smooth_sandstone_slab" => Some(Self::SmoothSandstoneSlab), + "smooth_sandstone_stairs" => Some(Self::SmoothSandstoneStairs), + "smooth_stone" => Some(Self::SmoothStone), + "smooth_stone_slab" => Some(Self::SmoothStoneSlab), + "sniffer_egg" => Some(Self::SnifferEgg), + "snow" => Some(Self::Snow), + "snow_block" => Some(Self::SnowBlock), + "soul_campfire" => Some(Self::SoulCampfire), + "soul_fire" => Some(Self::SoulFire), + "soul_lantern" => Some(Self::SoulLantern), + "soul_sand" => Some(Self::SoulSand), + "soul_soil" => Some(Self::SoulSoil), + "soul_torch" => Some(Self::SoulTorch), + "soul_wall_torch" => Some(Self::SoulWallTorch), + "spawner" => Some(Self::Spawner), + "sponge" => Some(Self::Sponge), + "spore_blossom" => Some(Self::SporeBlossom), + "spruce_button" => Some(Self::SpruceButton), + "spruce_door" => Some(Self::SpruceDoor), + "spruce_fence" => Some(Self::SpruceFence), + "spruce_fence_gate" => Some(Self::SpruceFenceGate), + "spruce_hanging_sign" => Some(Self::SpruceHangingSign), + "spruce_leaves" => Some(Self::SpruceLeaves), + "spruce_log" => Some(Self::SpruceLog), + "spruce_planks" => Some(Self::SprucePlanks), + "spruce_pressure_plate" => Some(Self::SprucePressurePlate), + "spruce_sapling" => Some(Self::SpruceSapling), + "spruce_shelf" => Some(Self::SpruceShelf), + "spruce_sign" => Some(Self::SpruceSign), + "spruce_slab" => Some(Self::SpruceSlab), + "spruce_stairs" => Some(Self::SpruceStairs), + "spruce_trapdoor" => Some(Self::SpruceTrapdoor), + "spruce_wall_hanging_sign" => Some(Self::SpruceWallHangingSign), + "spruce_wall_sign" => Some(Self::SpruceWallSign), + "spruce_wood" => Some(Self::SpruceWood), + "sticky_piston" => Some(Self::StickyPiston), + "stone" => Some(Self::Stone), + "stone_brick_slab" => Some(Self::StoneBrickSlab), + "stone_brick_stairs" => Some(Self::StoneBrickStairs), + "stone_brick_wall" => Some(Self::StoneBrickWall), + "stone_bricks" => Some(Self::StoneBricks), + "stone_button" => Some(Self::StoneButton), + "stone_pressure_plate" => Some(Self::StonePressurePlate), + "stone_slab" => Some(Self::StoneSlab), + "stone_stairs" => Some(Self::StoneStairs), + "stonecutter" => Some(Self::Stonecutter), + "stripped_acacia_log" => Some(Self::StrippedAcaciaLog), + "stripped_acacia_wood" => Some(Self::StrippedAcaciaWood), + "stripped_bamboo_block" => Some(Self::StrippedBambooBlock), + "stripped_birch_log" => Some(Self::StrippedBirchLog), + "stripped_birch_wood" => Some(Self::StrippedBirchWood), + "stripped_cherry_log" => Some(Self::StrippedCherryLog), + "stripped_cherry_wood" => Some(Self::StrippedCherryWood), + "stripped_crimson_hyphae" => Some(Self::StrippedCrimsonHyphae), + "stripped_crimson_stem" => Some(Self::StrippedCrimsonStem), + "stripped_dark_oak_log" => Some(Self::StrippedDarkOakLog), + "stripped_dark_oak_wood" => Some(Self::StrippedDarkOakWood), + "stripped_jungle_log" => Some(Self::StrippedJungleLog), + "stripped_jungle_wood" => Some(Self::StrippedJungleWood), + "stripped_mangrove_log" => Some(Self::StrippedMangroveLog), + "stripped_mangrove_wood" => Some(Self::StrippedMangroveWood), + "stripped_oak_log" => Some(Self::StrippedOakLog), + "stripped_oak_wood" => Some(Self::StrippedOakWood), + "stripped_pale_oak_log" => Some(Self::StrippedPaleOakLog), + "stripped_pale_oak_wood" => Some(Self::StrippedPaleOakWood), + "stripped_spruce_log" => Some(Self::StrippedSpruceLog), + "stripped_spruce_wood" => Some(Self::StrippedSpruceWood), + "stripped_warped_hyphae" => Some(Self::StrippedWarpedHyphae), + "stripped_warped_stem" => Some(Self::StrippedWarpedStem), + "structure_block" => Some(Self::StructureBlock), + "structure_void" => Some(Self::StructureVoid), + "sugar_cane" => Some(Self::SugarCane), + "sulfur" => Some(Self::Sulfur), + "sulfur_brick_slab" => Some(Self::SulfurBrickSlab), + "sulfur_brick_stairs" => Some(Self::SulfurBrickStairs), + "sulfur_brick_wall" => Some(Self::SulfurBrickWall), + "sulfur_bricks" => Some(Self::SulfurBricks), + "sulfur_slab" => Some(Self::SulfurSlab), + "sulfur_spike" => Some(Self::SulfurSpike), + "sulfur_stairs" => Some(Self::SulfurStairs), + "sulfur_wall" => Some(Self::SulfurWall), + "sunflower" => Some(Self::Sunflower), + "suspicious_gravel" => Some(Self::SuspiciousGravel), + "suspicious_sand" => Some(Self::SuspiciousSand), + "sweet_berry_bush" => Some(Self::SweetBerryBush), + "tall_dry_grass" => Some(Self::TallDryGrass), + "tall_grass" => Some(Self::TallGrass), + "tall_seagrass" => Some(Self::TallSeagrass), + "target" => Some(Self::Target), + "terracotta" => Some(Self::Terracotta), + "test_block" => Some(Self::TestBlock), + "test_instance_block" => Some(Self::TestInstanceBlock), + "tinted_glass" => Some(Self::TintedGlass), + "tnt" => Some(Self::Tnt), + "torch" => Some(Self::Torch), + "torchflower" => Some(Self::Torchflower), + "torchflower_crop" => Some(Self::TorchflowerCrop), + "trapped_chest" => Some(Self::TrappedChest), + "trial_spawner" => Some(Self::TrialSpawner), + "tripwire" => Some(Self::Tripwire), + "tripwire_hook" => Some(Self::TripwireHook), + "tube_coral" => Some(Self::TubeCoral), + "tube_coral_block" => Some(Self::TubeCoralBlock), + "tube_coral_fan" => Some(Self::TubeCoralFan), + "tube_coral_wall_fan" => Some(Self::TubeCoralWallFan), + "tuff" => Some(Self::Tuff), + "tuff_brick_slab" => Some(Self::TuffBrickSlab), + "tuff_brick_stairs" => Some(Self::TuffBrickStairs), + "tuff_brick_wall" => Some(Self::TuffBrickWall), + "tuff_bricks" => Some(Self::TuffBricks), + "tuff_slab" => Some(Self::TuffSlab), + "tuff_stairs" => Some(Self::TuffStairs), + "tuff_wall" => Some(Self::TuffWall), + "turtle_egg" => Some(Self::TurtleEgg), + "twisting_vines" => Some(Self::TwistingVines), + "twisting_vines_plant" => Some(Self::TwistingVinesPlant), + "vault" => Some(Self::Vault), + "verdant_froglight" => Some(Self::VerdantFroglight), + "vine" => Some(Self::Vine), + "void_air" => Some(Self::VoidAir), + "wall_torch" => Some(Self::WallTorch), + "warped_button" => Some(Self::WarpedButton), + "warped_door" => Some(Self::WarpedDoor), + "warped_fence" => Some(Self::WarpedFence), + "warped_fence_gate" => Some(Self::WarpedFenceGate), + "warped_fungus" => Some(Self::WarpedFungus), + "warped_hanging_sign" => Some(Self::WarpedHangingSign), + "warped_hyphae" => Some(Self::WarpedHyphae), + "warped_nylium" => Some(Self::WarpedNylium), + "warped_planks" => Some(Self::WarpedPlanks), + "warped_pressure_plate" => Some(Self::WarpedPressurePlate), + "warped_roots" => Some(Self::WarpedRoots), + "warped_shelf" => Some(Self::WarpedShelf), + "warped_sign" => Some(Self::WarpedSign), + "warped_slab" => Some(Self::WarpedSlab), + "warped_stairs" => Some(Self::WarpedStairs), + "warped_stem" => Some(Self::WarpedStem), + "warped_trapdoor" => Some(Self::WarpedTrapdoor), + "warped_wall_hanging_sign" => Some(Self::WarpedWallHangingSign), + "warped_wall_sign" => Some(Self::WarpedWallSign), + "warped_wart_block" => Some(Self::WarpedWartBlock), + "water" => Some(Self::Water), + "water_cauldron" => Some(Self::WaterCauldron), + "waxed_chiseled_copper" => Some(Self::WaxedChiseledCopper), + "waxed_copper_bars" => Some(Self::WaxedCopperBars), + "waxed_copper_block" => Some(Self::WaxedCopperBlock), + "waxed_copper_bulb" => Some(Self::WaxedCopperBulb), + "waxed_copper_chain" => Some(Self::WaxedCopperChain), + "waxed_copper_chest" => Some(Self::WaxedCopperChest), + "waxed_copper_door" => Some(Self::WaxedCopperDoor), + "waxed_copper_golem_statue" => Some(Self::WaxedCopperGolemStatue), + "waxed_copper_grate" => Some(Self::WaxedCopperGrate), + "waxed_copper_lantern" => Some(Self::WaxedCopperLantern), + "waxed_copper_trapdoor" => Some(Self::WaxedCopperTrapdoor), + "waxed_cut_copper" => Some(Self::WaxedCutCopper), + "waxed_cut_copper_slab" => Some(Self::WaxedCutCopperSlab), + "waxed_cut_copper_stairs" => Some(Self::WaxedCutCopperStairs), + "waxed_exposed_chiseled_copper" => Some(Self::WaxedExposedChiseledCopper), + "waxed_exposed_copper" => Some(Self::WaxedExposedCopper), + "waxed_exposed_copper_bars" => Some(Self::WaxedExposedCopperBars), + "waxed_exposed_copper_bulb" => Some(Self::WaxedExposedCopperBulb), + "waxed_exposed_copper_chain" => Some(Self::WaxedExposedCopperChain), + "waxed_exposed_copper_chest" => Some(Self::WaxedExposedCopperChest), + "waxed_exposed_copper_door" => Some(Self::WaxedExposedCopperDoor), + "waxed_exposed_copper_golem_statue" => Some(Self::WaxedExposedCopperGolemStatue), + "waxed_exposed_copper_grate" => Some(Self::WaxedExposedCopperGrate), + "waxed_exposed_copper_lantern" => Some(Self::WaxedExposedCopperLantern), + "waxed_exposed_copper_trapdoor" => Some(Self::WaxedExposedCopperTrapdoor), + "waxed_exposed_cut_copper" => Some(Self::WaxedExposedCutCopper), + "waxed_exposed_cut_copper_slab" => Some(Self::WaxedExposedCutCopperSlab), + "waxed_exposed_cut_copper_stairs" => Some(Self::WaxedExposedCutCopperStairs), + "waxed_exposed_lightning_rod" => Some(Self::WaxedExposedLightningRod), + "waxed_lightning_rod" => Some(Self::WaxedLightningRod), + "waxed_oxidized_chiseled_copper" => Some(Self::WaxedOxidizedChiseledCopper), + "waxed_oxidized_copper" => Some(Self::WaxedOxidizedCopper), + "waxed_oxidized_copper_bars" => Some(Self::WaxedOxidizedCopperBars), + "waxed_oxidized_copper_bulb" => Some(Self::WaxedOxidizedCopperBulb), + "waxed_oxidized_copper_chain" => Some(Self::WaxedOxidizedCopperChain), + "waxed_oxidized_copper_chest" => Some(Self::WaxedOxidizedCopperChest), + "waxed_oxidized_copper_door" => Some(Self::WaxedOxidizedCopperDoor), + "waxed_oxidized_copper_golem_statue" => Some(Self::WaxedOxidizedCopperGolemStatue), + "waxed_oxidized_copper_grate" => Some(Self::WaxedOxidizedCopperGrate), + "waxed_oxidized_copper_lantern" => Some(Self::WaxedOxidizedCopperLantern), + "waxed_oxidized_copper_trapdoor" => Some(Self::WaxedOxidizedCopperTrapdoor), + "waxed_oxidized_cut_copper" => Some(Self::WaxedOxidizedCutCopper), + "waxed_oxidized_cut_copper_slab" => Some(Self::WaxedOxidizedCutCopperSlab), + "waxed_oxidized_cut_copper_stairs" => Some(Self::WaxedOxidizedCutCopperStairs), + "waxed_oxidized_lightning_rod" => Some(Self::WaxedOxidizedLightningRod), + "waxed_weathered_chiseled_copper" => Some(Self::WaxedWeatheredChiseledCopper), + "waxed_weathered_copper" => Some(Self::WaxedWeatheredCopper), + "waxed_weathered_copper_bars" => Some(Self::WaxedWeatheredCopperBars), + "waxed_weathered_copper_bulb" => Some(Self::WaxedWeatheredCopperBulb), + "waxed_weathered_copper_chain" => Some(Self::WaxedWeatheredCopperChain), + "waxed_weathered_copper_chest" => Some(Self::WaxedWeatheredCopperChest), + "waxed_weathered_copper_door" => Some(Self::WaxedWeatheredCopperDoor), + "waxed_weathered_copper_golem_statue" => Some(Self::WaxedWeatheredCopperGolemStatue), + "waxed_weathered_copper_grate" => Some(Self::WaxedWeatheredCopperGrate), + "waxed_weathered_copper_lantern" => Some(Self::WaxedWeatheredCopperLantern), + "waxed_weathered_copper_trapdoor" => Some(Self::WaxedWeatheredCopperTrapdoor), + "waxed_weathered_cut_copper" => Some(Self::WaxedWeatheredCutCopper), + "waxed_weathered_cut_copper_slab" => Some(Self::WaxedWeatheredCutCopperSlab), + "waxed_weathered_cut_copper_stairs" => Some(Self::WaxedWeatheredCutCopperStairs), + "waxed_weathered_lightning_rod" => Some(Self::WaxedWeatheredLightningRod), + "weathered_chiseled_copper" => Some(Self::WeatheredChiseledCopper), + "weathered_copper" => Some(Self::WeatheredCopper), + "weathered_copper_bars" => Some(Self::WeatheredCopperBars), + "weathered_copper_bulb" => Some(Self::WeatheredCopperBulb), + "weathered_copper_chain" => Some(Self::WeatheredCopperChain), + "weathered_copper_chest" => Some(Self::WeatheredCopperChest), + "weathered_copper_door" => Some(Self::WeatheredCopperDoor), + "weathered_copper_golem_statue" => Some(Self::WeatheredCopperGolemStatue), + "weathered_copper_grate" => Some(Self::WeatheredCopperGrate), + "weathered_copper_lantern" => Some(Self::WeatheredCopperLantern), + "weathered_copper_trapdoor" => Some(Self::WeatheredCopperTrapdoor), + "weathered_cut_copper" => Some(Self::WeatheredCutCopper), + "weathered_cut_copper_slab" => Some(Self::WeatheredCutCopperSlab), + "weathered_cut_copper_stairs" => Some(Self::WeatheredCutCopperStairs), + "weathered_lightning_rod" => Some(Self::WeatheredLightningRod), + "weeping_vines" => Some(Self::WeepingVines), + "weeping_vines_plant" => Some(Self::WeepingVinesPlant), + "wet_sponge" => Some(Self::WetSponge), + "wheat" => Some(Self::Wheat), + "white_banner" => Some(Self::WhiteBanner), + "white_bed" => Some(Self::WhiteBed), + "white_candle" => Some(Self::WhiteCandle), + "white_candle_cake" => Some(Self::WhiteCandleCake), + "white_carpet" => Some(Self::WhiteCarpet), + "white_concrete" => Some(Self::WhiteConcrete), + "white_concrete_powder" => Some(Self::WhiteConcretePowder), + "white_glazed_terracotta" => Some(Self::WhiteGlazedTerracotta), + "white_shulker_box" => Some(Self::WhiteShulkerBox), + "white_stained_glass" => Some(Self::WhiteStainedGlass), + "white_stained_glass_pane" => Some(Self::WhiteStainedGlassPane), + "white_terracotta" => Some(Self::WhiteTerracotta), + "white_tulip" => Some(Self::WhiteTulip), + "white_wall_banner" => Some(Self::WhiteWallBanner), + "white_wool" => Some(Self::WhiteWool), + "wildflowers" => Some(Self::Wildflowers), + "wither_rose" => Some(Self::WitherRose), + "wither_skeleton_skull" => Some(Self::WitherSkeletonSkull), + "wither_skeleton_wall_skull" => Some(Self::WitherSkeletonWallSkull), + "yellow_banner" => Some(Self::YellowBanner), + "yellow_bed" => Some(Self::YellowBed), + "yellow_candle" => Some(Self::YellowCandle), + "yellow_candle_cake" => Some(Self::YellowCandleCake), + "yellow_carpet" => Some(Self::YellowCarpet), + "yellow_concrete" => Some(Self::YellowConcrete), + "yellow_concrete_powder" => Some(Self::YellowConcretePowder), + "yellow_glazed_terracotta" => Some(Self::YellowGlazedTerracotta), + "yellow_shulker_box" => Some(Self::YellowShulkerBox), + "yellow_stained_glass" => Some(Self::YellowStainedGlass), + "yellow_stained_glass_pane" => Some(Self::YellowStainedGlassPane), + "yellow_terracotta" => Some(Self::YellowTerracotta), + "yellow_wall_banner" => Some(Self::YellowWallBanner), + "yellow_wool" => Some(Self::YellowWool), + "zombie_head" => Some(Self::ZombieHead), + "zombie_wall_head" => Some(Self::ZombieWallHead), + _ => None, + } + } + + /// Resolves a typed `BlockType` from a registry key. + #[must_use] + pub fn from_registry_key(key: &str) -> Option { + Self::from_name(key) + } +} + +impl std::fmt::Display for BlockType { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.resource_location()) + } +} + +impl AsRef for BlockType { + fn as_ref(&self) -> &str { + self.as_str() + } +} diff --git a/crates/pumpkin-plugin-api/src/generated/item.rs b/crates/pumpkin-plugin-api/src/generated/item.rs new file mode 100644 index 000000000..6b6c344ef --- /dev/null +++ b/crates/pumpkin-plugin-api/src/generated/item.rs @@ -0,0 +1,6213 @@ +// Generated by pumpkin-codegen. Do not edit. +#![allow(missing_docs, clippy::all)] + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub enum Item { + AcaciaBoat, + AcaciaButton, + AcaciaChestBoat, + AcaciaDoor, + AcaciaFence, + AcaciaFenceGate, + AcaciaHangingSign, + AcaciaLeaves, + AcaciaLog, + AcaciaPlanks, + AcaciaPressurePlate, + AcaciaSapling, + AcaciaShelf, + AcaciaSign, + AcaciaSlab, + AcaciaStairs, + AcaciaTrapdoor, + AcaciaWood, + ActivatorRail, + Air, + AllaySpawnEgg, + Allium, + AmethystBlock, + AmethystCluster, + AmethystShard, + AncientDebris, + Andesite, + AndesiteSlab, + AndesiteStairs, + AndesiteWall, + AnglerPotterySherd, + Anvil, + Apple, + ArcherPotterySherd, + ArmadilloScute, + ArmadilloSpawnEgg, + ArmorStand, + ArmsUpPotterySherd, + Arrow, + AxolotlBucket, + AxolotlSpawnEgg, + Azalea, + AzaleaLeaves, + AzureBluet, + BakedPotato, + Bamboo, + BambooBlock, + BambooButton, + BambooChestRaft, + BambooDoor, + BambooFence, + BambooFenceGate, + BambooHangingSign, + BambooMosaic, + BambooMosaicSlab, + BambooMosaicStairs, + BambooPlanks, + BambooPressurePlate, + BambooRaft, + BambooShelf, + BambooSign, + BambooSlab, + BambooStairs, + BambooTrapdoor, + Barrel, + Barrier, + Basalt, + BatSpawnEgg, + Beacon, + Bedrock, + BeeNest, + BeeSpawnEgg, + Beef, + Beehive, + Beetroot, + BeetrootSeeds, + BeetrootSoup, + Bell, + BigDripleaf, + BirchBoat, + BirchButton, + BirchChestBoat, + BirchDoor, + BirchFence, + BirchFenceGate, + BirchHangingSign, + BirchLeaves, + BirchLog, + BirchPlanks, + BirchPressurePlate, + BirchSapling, + BirchShelf, + BirchSign, + BirchSlab, + BirchStairs, + BirchTrapdoor, + BirchWood, + BlackBanner, + BlackBed, + BlackBundle, + BlackCandle, + BlackCarpet, + BlackConcrete, + BlackConcretePowder, + BlackDye, + BlackGlazedTerracotta, + BlackHarness, + BlackShulkerBox, + BlackStainedGlass, + BlackStainedGlassPane, + BlackTerracotta, + BlackWool, + Blackstone, + BlackstoneSlab, + BlackstoneStairs, + BlackstoneWall, + BladePotterySherd, + BlastFurnace, + BlazePowder, + BlazeRod, + BlazeSpawnEgg, + BlueBanner, + BlueBed, + BlueBundle, + BlueCandle, + BlueCarpet, + BlueConcrete, + BlueConcretePowder, + BlueDye, + BlueEgg, + BlueGlazedTerracotta, + BlueHarness, + BlueIce, + BlueOrchid, + BlueShulkerBox, + BlueStainedGlass, + BlueStainedGlassPane, + BlueTerracotta, + BlueWool, + BoggedSpawnEgg, + BoltArmorTrimSmithingTemplate, + Bone, + BoneBlock, + BoneMeal, + Book, + Bookshelf, + BordureIndentedBannerPattern, + Bow, + Bowl, + BrainCoral, + BrainCoralBlock, + BrainCoralFan, + Bread, + BreezeRod, + BreezeSpawnEgg, + BrewerPotterySherd, + BrewingStand, + Brick, + BrickSlab, + BrickStairs, + BrickWall, + Bricks, + BrownBanner, + BrownBed, + BrownBundle, + BrownCandle, + BrownCarpet, + BrownConcrete, + BrownConcretePowder, + BrownDye, + BrownEgg, + BrownGlazedTerracotta, + BrownHarness, + BrownMushroom, + BrownMushroomBlock, + BrownShulkerBox, + BrownStainedGlass, + BrownStainedGlassPane, + BrownTerracotta, + BrownWool, + Brush, + BubbleCoral, + BubbleCoralBlock, + BubbleCoralFan, + Bucket, + BuddingAmethyst, + Bundle, + BurnPotterySherd, + Bush, + Cactus, + CactusFlower, + Cake, + Calcite, + CalibratedSculkSensor, + CamelHuskSpawnEgg, + CamelSpawnEgg, + Campfire, + Candle, + Carrot, + CarrotOnAStick, + CartographyTable, + CarvedPumpkin, + CatSpawnEgg, + Cauldron, + CaveSpiderSpawnEgg, + ChainCommandBlock, + ChainmailBoots, + ChainmailChestplate, + ChainmailHelmet, + ChainmailLeggings, + Charcoal, + CherryBoat, + CherryButton, + CherryChestBoat, + CherryDoor, + CherryFence, + CherryFenceGate, + CherryHangingSign, + CherryLeaves, + CherryLog, + CherryPlanks, + CherryPressurePlate, + CherrySapling, + CherryShelf, + CherrySign, + CherrySlab, + CherryStairs, + CherryTrapdoor, + CherryWood, + Chest, + ChestMinecart, + Chicken, + ChickenSpawnEgg, + ChippedAnvil, + ChiseledBookshelf, + ChiseledCinnabar, + ChiseledCopper, + ChiseledDeepslate, + ChiseledNetherBricks, + ChiseledPolishedBlackstone, + ChiseledQuartzBlock, + ChiseledRedSandstone, + ChiseledResinBricks, + ChiseledSandstone, + ChiseledStoneBricks, + ChiseledSulfur, + ChiseledTuff, + ChiseledTuffBricks, + ChorusFlower, + ChorusFruit, + ChorusPlant, + Cinnabar, + CinnabarBrickSlab, + CinnabarBrickStairs, + CinnabarBrickWall, + CinnabarBricks, + CinnabarSlab, + CinnabarStairs, + CinnabarWall, + Clay, + ClayBall, + Clock, + ClosedEyeblossom, + Coal, + CoalBlock, + CoalOre, + CoarseDirt, + CoastArmorTrimSmithingTemplate, + CobbledDeepslate, + CobbledDeepslateSlab, + CobbledDeepslateStairs, + CobbledDeepslateWall, + Cobblestone, + CobblestoneSlab, + CobblestoneStairs, + CobblestoneWall, + Cobweb, + CocoaBeans, + Cod, + CodBucket, + CodSpawnEgg, + CommandBlock, + CommandBlockMinecart, + Comparator, + Compass, + Composter, + Conduit, + CookedBeef, + CookedChicken, + CookedCod, + CookedMutton, + CookedPorkchop, + CookedRabbit, + CookedSalmon, + Cookie, + CopperAxe, + CopperBars, + CopperBlock, + CopperBoots, + CopperBulb, + CopperChain, + CopperChest, + CopperChestplate, + CopperDoor, + CopperGolemSpawnEgg, + CopperGolemStatue, + CopperGrate, + CopperHelmet, + CopperHoe, + CopperHorseArmor, + CopperIngot, + CopperLantern, + CopperLeggings, + CopperNautilusArmor, + CopperNugget, + CopperOre, + CopperPickaxe, + CopperShovel, + CopperSpear, + CopperSword, + CopperTorch, + CopperTrapdoor, + Cornflower, + CowSpawnEgg, + CrackedDeepslateBricks, + CrackedDeepslateTiles, + CrackedNetherBricks, + CrackedPolishedBlackstoneBricks, + CrackedStoneBricks, + Crafter, + CraftingTable, + CreakingHeart, + CreakingSpawnEgg, + CreeperBannerPattern, + CreeperHead, + CreeperSpawnEgg, + CrimsonButton, + CrimsonDoor, + CrimsonFence, + CrimsonFenceGate, + CrimsonFungus, + CrimsonHangingSign, + CrimsonHyphae, + CrimsonNylium, + CrimsonPlanks, + CrimsonPressurePlate, + CrimsonRoots, + CrimsonShelf, + CrimsonSign, + CrimsonSlab, + CrimsonStairs, + CrimsonStem, + CrimsonTrapdoor, + Crossbow, + CryingObsidian, + CutCopper, + CutCopperSlab, + CutCopperStairs, + CutRedSandstone, + CutRedSandstoneSlab, + CutSandstone, + CutSandstoneSlab, + CyanBanner, + CyanBed, + CyanBundle, + CyanCandle, + CyanCarpet, + CyanConcrete, + CyanConcretePowder, + CyanDye, + CyanGlazedTerracotta, + CyanHarness, + CyanShulkerBox, + CyanStainedGlass, + CyanStainedGlassPane, + CyanTerracotta, + CyanWool, + DamagedAnvil, + Dandelion, + DangerPotterySherd, + DarkOakBoat, + DarkOakButton, + DarkOakChestBoat, + DarkOakDoor, + DarkOakFence, + DarkOakFenceGate, + DarkOakHangingSign, + DarkOakLeaves, + DarkOakLog, + DarkOakPlanks, + DarkOakPressurePlate, + DarkOakSapling, + DarkOakShelf, + DarkOakSign, + DarkOakSlab, + DarkOakStairs, + DarkOakTrapdoor, + DarkOakWood, + DarkPrismarine, + DarkPrismarineSlab, + DarkPrismarineStairs, + DaylightDetector, + DeadBrainCoral, + DeadBrainCoralBlock, + DeadBrainCoralFan, + DeadBubbleCoral, + DeadBubbleCoralBlock, + DeadBubbleCoralFan, + DeadBush, + DeadFireCoral, + DeadFireCoralBlock, + DeadFireCoralFan, + DeadHornCoral, + DeadHornCoralBlock, + DeadHornCoralFan, + DeadTubeCoral, + DeadTubeCoralBlock, + DeadTubeCoralFan, + DebugStick, + DecoratedPot, + Deepslate, + DeepslateBrickSlab, + DeepslateBrickStairs, + DeepslateBrickWall, + DeepslateBricks, + DeepslateCoalOre, + DeepslateCopperOre, + DeepslateDiamondOre, + DeepslateEmeraldOre, + DeepslateGoldOre, + DeepslateIronOre, + DeepslateLapisOre, + DeepslateRedstoneOre, + DeepslateTileSlab, + DeepslateTileStairs, + DeepslateTileWall, + DeepslateTiles, + DetectorRail, + Diamond, + DiamondAxe, + DiamondBlock, + DiamondBoots, + DiamondChestplate, + DiamondHelmet, + DiamondHoe, + DiamondHorseArmor, + DiamondLeggings, + DiamondNautilusArmor, + DiamondOre, + DiamondPickaxe, + DiamondShovel, + DiamondSpear, + DiamondSword, + Diorite, + DioriteSlab, + DioriteStairs, + DioriteWall, + Dirt, + DirtPath, + DiscFragment5, + Dispenser, + DolphinSpawnEgg, + DonkeySpawnEgg, + DragonBreath, + DragonEgg, + DragonHead, + DriedGhast, + DriedKelp, + DriedKelpBlock, + DripstoneBlock, + Dropper, + DrownedSpawnEgg, + DuneArmorTrimSmithingTemplate, + EchoShard, + Egg, + ElderGuardianSpawnEgg, + Elytra, + Emerald, + EmeraldBlock, + EmeraldOre, + EnchantedBook, + EnchantedGoldenApple, + EnchantingTable, + EndCrystal, + EndPortalFrame, + EndRod, + EndStone, + EndStoneBrickSlab, + EndStoneBrickStairs, + EndStoneBrickWall, + EndStoneBricks, + EnderChest, + EnderDragonSpawnEgg, + EnderEye, + EnderPearl, + EndermanSpawnEgg, + EndermiteSpawnEgg, + EvokerSpawnEgg, + ExperienceBottle, + ExplorerPotterySherd, + ExposedChiseledCopper, + ExposedCopper, + ExposedCopperBars, + ExposedCopperBulb, + ExposedCopperChain, + ExposedCopperChest, + ExposedCopperDoor, + ExposedCopperGolemStatue, + ExposedCopperGrate, + ExposedCopperLantern, + ExposedCopperTrapdoor, + ExposedCutCopper, + ExposedCutCopperSlab, + ExposedCutCopperStairs, + ExposedLightningRod, + EyeArmorTrimSmithingTemplate, + Farmland, + Feather, + FermentedSpiderEye, + Fern, + FieldMasonedBannerPattern, + FilledMap, + FireCharge, + FireCoral, + FireCoralBlock, + FireCoralFan, + FireflyBush, + FireworkRocket, + FireworkStar, + FishingRod, + FletchingTable, + Flint, + FlintAndSteel, + FlowArmorTrimSmithingTemplate, + FlowBannerPattern, + FlowPotterySherd, + FlowerBannerPattern, + FlowerPot, + FloweringAzalea, + FloweringAzaleaLeaves, + FoxSpawnEgg, + FriendPotterySherd, + FrogSpawnEgg, + Frogspawn, + Furnace, + FurnaceMinecart, + GhastSpawnEgg, + GhastTear, + GildedBlackstone, + Glass, + GlassBottle, + GlassPane, + GlisteringMelonSlice, + GlobeBannerPattern, + GlowBerries, + GlowInkSac, + GlowItemFrame, + GlowLichen, + GlowSquidSpawnEgg, + Glowstone, + GlowstoneDust, + GoatHorn, + GoatSpawnEgg, + GoldBlock, + GoldIngot, + GoldNugget, + GoldOre, + GoldenApple, + GoldenAxe, + GoldenBoots, + GoldenCarrot, + GoldenChestplate, + GoldenDandelion, + GoldenHelmet, + GoldenHoe, + GoldenHorseArmor, + GoldenLeggings, + GoldenNautilusArmor, + GoldenPickaxe, + GoldenShovel, + GoldenSpear, + GoldenSword, + Granite, + GraniteSlab, + GraniteStairs, + GraniteWall, + GrassBlock, + Gravel, + GrayBanner, + GrayBed, + GrayBundle, + GrayCandle, + GrayCarpet, + GrayConcrete, + GrayConcretePowder, + GrayDye, + GrayGlazedTerracotta, + GrayHarness, + GrayShulkerBox, + GrayStainedGlass, + GrayStainedGlassPane, + GrayTerracotta, + GrayWool, + GreenBanner, + GreenBed, + GreenBundle, + GreenCandle, + GreenCarpet, + GreenConcrete, + GreenConcretePowder, + GreenDye, + GreenGlazedTerracotta, + GreenHarness, + GreenShulkerBox, + GreenStainedGlass, + GreenStainedGlassPane, + GreenTerracotta, + GreenWool, + Grindstone, + GuardianSpawnEgg, + Gunpowder, + GusterBannerPattern, + GusterPotterySherd, + HangingRoots, + HappyGhastSpawnEgg, + HayBlock, + HeartOfTheSea, + HeartPotterySherd, + HeartbreakPotterySherd, + HeavyCore, + HeavyWeightedPressurePlate, + HoglinSpawnEgg, + HoneyBlock, + HoneyBottle, + Honeycomb, + HoneycombBlock, + Hopper, + HopperMinecart, + HornCoral, + HornCoralBlock, + HornCoralFan, + HorseSpawnEgg, + HostArmorTrimSmithingTemplate, + HowlPotterySherd, + HuskSpawnEgg, + Ice, + InfestedChiseledStoneBricks, + InfestedCobblestone, + InfestedCrackedStoneBricks, + InfestedDeepslate, + InfestedMossyStoneBricks, + InfestedStone, + InfestedStoneBricks, + InkSac, + IronAxe, + IronBars, + IronBlock, + IronBoots, + IronChain, + IronChestplate, + IronDoor, + IronGolemSpawnEgg, + IronHelmet, + IronHoe, + IronHorseArmor, + IronIngot, + IronLeggings, + IronNautilusArmor, + IronNugget, + IronOre, + IronPickaxe, + IronShovel, + IronSpear, + IronSword, + IronTrapdoor, + ItemFrame, + JackOLantern, + Jigsaw, + Jukebox, + JungleBoat, + JungleButton, + JungleChestBoat, + JungleDoor, + JungleFence, + JungleFenceGate, + JungleHangingSign, + JungleLeaves, + JungleLog, + JunglePlanks, + JunglePressurePlate, + JungleSapling, + JungleShelf, + JungleSign, + JungleSlab, + JungleStairs, + JungleTrapdoor, + JungleWood, + Kelp, + KnowledgeBook, + Ladder, + Lantern, + LapisBlock, + LapisLazuli, + LapisOre, + LargeAmethystBud, + LargeFern, + LavaBucket, + Lead, + LeafLitter, + Leather, + LeatherBoots, + LeatherChestplate, + LeatherHelmet, + LeatherHorseArmor, + LeatherLeggings, + Lectern, + Lever, + Light, + LightBlueBanner, + LightBlueBed, + LightBlueBundle, + LightBlueCandle, + LightBlueCarpet, + LightBlueConcrete, + LightBlueConcretePowder, + LightBlueDye, + LightBlueGlazedTerracotta, + LightBlueHarness, + LightBlueShulkerBox, + LightBlueStainedGlass, + LightBlueStainedGlassPane, + LightBlueTerracotta, + LightBlueWool, + LightGrayBanner, + LightGrayBed, + LightGrayBundle, + LightGrayCandle, + LightGrayCarpet, + LightGrayConcrete, + LightGrayConcretePowder, + LightGrayDye, + LightGrayGlazedTerracotta, + LightGrayHarness, + LightGrayShulkerBox, + LightGrayStainedGlass, + LightGrayStainedGlassPane, + LightGrayTerracotta, + LightGrayWool, + LightWeightedPressurePlate, + LightningRod, + Lilac, + LilyOfTheValley, + LilyPad, + LimeBanner, + LimeBed, + LimeBundle, + LimeCandle, + LimeCarpet, + LimeConcrete, + LimeConcretePowder, + LimeDye, + LimeGlazedTerracotta, + LimeHarness, + LimeShulkerBox, + LimeStainedGlass, + LimeStainedGlassPane, + LimeTerracotta, + LimeWool, + LingeringPotion, + LlamaSpawnEgg, + Lodestone, + Loom, + Mace, + MagentaBanner, + MagentaBed, + MagentaBundle, + MagentaCandle, + MagentaCarpet, + MagentaConcrete, + MagentaConcretePowder, + MagentaDye, + MagentaGlazedTerracotta, + MagentaHarness, + MagentaShulkerBox, + MagentaStainedGlass, + MagentaStainedGlassPane, + MagentaTerracotta, + MagentaWool, + MagmaBlock, + MagmaCream, + MagmaCubeSpawnEgg, + MangroveBoat, + MangroveButton, + MangroveChestBoat, + MangroveDoor, + MangroveFence, + MangroveFenceGate, + MangroveHangingSign, + MangroveLeaves, + MangroveLog, + MangrovePlanks, + MangrovePressurePlate, + MangrovePropagule, + MangroveRoots, + MangroveShelf, + MangroveSign, + MangroveSlab, + MangroveStairs, + MangroveTrapdoor, + MangroveWood, + Map, + MediumAmethystBud, + Melon, + MelonSeeds, + MelonSlice, + MilkBucket, + Minecart, + MinerPotterySherd, + MojangBannerPattern, + MooshroomSpawnEgg, + MossBlock, + MossCarpet, + MossyCobblestone, + MossyCobblestoneSlab, + MossyCobblestoneStairs, + MossyCobblestoneWall, + MossyStoneBrickSlab, + MossyStoneBrickStairs, + MossyStoneBrickWall, + MossyStoneBricks, + MournerPotterySherd, + Mud, + MudBrickSlab, + MudBrickStairs, + MudBrickWall, + MudBricks, + MuddyMangroveRoots, + MuleSpawnEgg, + MushroomStem, + MushroomStew, + MusicDisc11, + MusicDisc13, + MusicDisc5, + MusicDiscBlocks, + MusicDiscBounce, + MusicDiscCat, + MusicDiscChirp, + MusicDiscCreator, + MusicDiscCreatorMusicBox, + MusicDiscFar, + MusicDiscLavaChicken, + MusicDiscMall, + MusicDiscMellohi, + MusicDiscOtherside, + MusicDiscPigstep, + MusicDiscPrecipice, + MusicDiscRelic, + MusicDiscStal, + MusicDiscStrad, + MusicDiscTears, + MusicDiscWait, + MusicDiscWard, + Mutton, + Mycelium, + NameTag, + NautilusShell, + NautilusSpawnEgg, + NetherBrick, + NetherBrickFence, + NetherBrickSlab, + NetherBrickStairs, + NetherBrickWall, + NetherBricks, + NetherGoldOre, + NetherQuartzOre, + NetherSprouts, + NetherStar, + NetherWart, + NetherWartBlock, + NetheriteAxe, + NetheriteBlock, + NetheriteBoots, + NetheriteChestplate, + NetheriteHelmet, + NetheriteHoe, + NetheriteHorseArmor, + NetheriteIngot, + NetheriteLeggings, + NetheriteNautilusArmor, + NetheritePickaxe, + NetheriteScrap, + NetheriteShovel, + NetheriteSpear, + NetheriteSword, + NetheriteUpgradeSmithingTemplate, + Netherrack, + NoteBlock, + OakBoat, + OakButton, + OakChestBoat, + OakDoor, + OakFence, + OakFenceGate, + OakHangingSign, + OakLeaves, + OakLog, + OakPlanks, + OakPressurePlate, + OakSapling, + OakShelf, + OakSign, + OakSlab, + OakStairs, + OakTrapdoor, + OakWood, + Observer, + Obsidian, + OcelotSpawnEgg, + OchreFroglight, + OminousBottle, + OminousTrialKey, + OpenEyeblossom, + OrangeBanner, + OrangeBed, + OrangeBundle, + OrangeCandle, + OrangeCarpet, + OrangeConcrete, + OrangeConcretePowder, + OrangeDye, + OrangeGlazedTerracotta, + OrangeHarness, + OrangeShulkerBox, + OrangeStainedGlass, + OrangeStainedGlassPane, + OrangeTerracotta, + OrangeTulip, + OrangeWool, + OxeyeDaisy, + OxidizedChiseledCopper, + OxidizedCopper, + OxidizedCopperBars, + OxidizedCopperBulb, + OxidizedCopperChain, + OxidizedCopperChest, + OxidizedCopperDoor, + OxidizedCopperGolemStatue, + OxidizedCopperGrate, + OxidizedCopperLantern, + OxidizedCopperTrapdoor, + OxidizedCutCopper, + OxidizedCutCopperSlab, + OxidizedCutCopperStairs, + OxidizedLightningRod, + PackedIce, + PackedMud, + Painting, + PaleHangingMoss, + PaleMossBlock, + PaleMossCarpet, + PaleOakBoat, + PaleOakButton, + PaleOakChestBoat, + PaleOakDoor, + PaleOakFence, + PaleOakFenceGate, + PaleOakHangingSign, + PaleOakLeaves, + PaleOakLog, + PaleOakPlanks, + PaleOakPressurePlate, + PaleOakSapling, + PaleOakShelf, + PaleOakSign, + PaleOakSlab, + PaleOakStairs, + PaleOakTrapdoor, + PaleOakWood, + PandaSpawnEgg, + Paper, + ParchedSpawnEgg, + ParrotSpawnEgg, + PearlescentFroglight, + Peony, + PetrifiedOakSlab, + PhantomMembrane, + PhantomSpawnEgg, + PigSpawnEgg, + PiglinBannerPattern, + PiglinBruteSpawnEgg, + PiglinHead, + PiglinSpawnEgg, + PillagerSpawnEgg, + PinkBanner, + PinkBed, + PinkBundle, + PinkCandle, + PinkCarpet, + PinkConcrete, + PinkConcretePowder, + PinkDye, + PinkGlazedTerracotta, + PinkHarness, + PinkPetals, + PinkShulkerBox, + PinkStainedGlass, + PinkStainedGlassPane, + PinkTerracotta, + PinkTulip, + PinkWool, + Piston, + PitcherPlant, + PitcherPod, + PlayerHead, + PlentyPotterySherd, + Podzol, + PointedDripstone, + PoisonousPotato, + PolarBearSpawnEgg, + PolishedAndesite, + PolishedAndesiteSlab, + PolishedAndesiteStairs, + PolishedBasalt, + PolishedBlackstone, + PolishedBlackstoneBrickSlab, + PolishedBlackstoneBrickStairs, + PolishedBlackstoneBrickWall, + PolishedBlackstoneBricks, + PolishedBlackstoneButton, + PolishedBlackstonePressurePlate, + PolishedBlackstoneSlab, + PolishedBlackstoneStairs, + PolishedBlackstoneWall, + PolishedCinnabar, + PolishedCinnabarSlab, + PolishedCinnabarStairs, + PolishedCinnabarWall, + PolishedDeepslate, + PolishedDeepslateSlab, + PolishedDeepslateStairs, + PolishedDeepslateWall, + PolishedDiorite, + PolishedDioriteSlab, + PolishedDioriteStairs, + PolishedGranite, + PolishedGraniteSlab, + PolishedGraniteStairs, + PolishedSulfur, + PolishedSulfurSlab, + PolishedSulfurStairs, + PolishedSulfurWall, + PolishedTuff, + PolishedTuffSlab, + PolishedTuffStairs, + PolishedTuffWall, + PoppedChorusFruit, + Poppy, + Porkchop, + Potato, + PotentSulfur, + Potion, + PowderSnowBucket, + PoweredRail, + Prismarine, + PrismarineBrickSlab, + PrismarineBrickStairs, + PrismarineBricks, + PrismarineCrystals, + PrismarineShard, + PrismarineSlab, + PrismarineStairs, + PrismarineWall, + PrizePotterySherd, + Pufferfish, + PufferfishBucket, + PufferfishSpawnEgg, + Pumpkin, + PumpkinPie, + PumpkinSeeds, + PurpleBanner, + PurpleBed, + PurpleBundle, + PurpleCandle, + PurpleCarpet, + PurpleConcrete, + PurpleConcretePowder, + PurpleDye, + PurpleGlazedTerracotta, + PurpleHarness, + PurpleShulkerBox, + PurpleStainedGlass, + PurpleStainedGlassPane, + PurpleTerracotta, + PurpleWool, + PurpurBlock, + PurpurPillar, + PurpurSlab, + PurpurStairs, + Quartz, + QuartzBlock, + QuartzBricks, + QuartzPillar, + QuartzSlab, + QuartzStairs, + Rabbit, + RabbitFoot, + RabbitHide, + RabbitSpawnEgg, + RabbitStew, + Rail, + RaiserArmorTrimSmithingTemplate, + RavagerSpawnEgg, + RawCopper, + RawCopperBlock, + RawGold, + RawGoldBlock, + RawIron, + RawIronBlock, + RecoveryCompass, + RedBanner, + RedBed, + RedBundle, + RedCandle, + RedCarpet, + RedConcrete, + RedConcretePowder, + RedDye, + RedGlazedTerracotta, + RedHarness, + RedMushroom, + RedMushroomBlock, + RedNetherBrickSlab, + RedNetherBrickStairs, + RedNetherBrickWall, + RedNetherBricks, + RedSand, + RedSandstone, + RedSandstoneSlab, + RedSandstoneStairs, + RedSandstoneWall, + RedShulkerBox, + RedStainedGlass, + RedStainedGlassPane, + RedTerracotta, + RedTulip, + RedWool, + Redstone, + RedstoneBlock, + RedstoneLamp, + RedstoneOre, + RedstoneTorch, + ReinforcedDeepslate, + Repeater, + RepeatingCommandBlock, + ResinBlock, + ResinBrick, + ResinBrickSlab, + ResinBrickStairs, + ResinBrickWall, + ResinBricks, + ResinClump, + RespawnAnchor, + RibArmorTrimSmithingTemplate, + RootedDirt, + RoseBush, + RottenFlesh, + Saddle, + Salmon, + SalmonBucket, + SalmonSpawnEgg, + Sand, + Sandstone, + SandstoneSlab, + SandstoneStairs, + SandstoneWall, + Scaffolding, + ScrapePotterySherd, + Sculk, + SculkCatalyst, + SculkSensor, + SculkShrieker, + SculkVein, + SeaLantern, + SeaPickle, + Seagrass, + SentryArmorTrimSmithingTemplate, + ShaperArmorTrimSmithingTemplate, + SheafPotterySherd, + Shears, + SheepSpawnEgg, + ShelterPotterySherd, + Shield, + ShortDryGrass, + ShortGrass, + Shroomlight, + ShulkerBox, + ShulkerShell, + ShulkerSpawnEgg, + SilenceArmorTrimSmithingTemplate, + SilverfishSpawnEgg, + SkeletonHorseSpawnEgg, + SkeletonSkull, + SkeletonSpawnEgg, + SkullBannerPattern, + SkullPotterySherd, + SlimeBall, + SlimeBlock, + SlimeSpawnEgg, + SmallAmethystBud, + SmallDripleaf, + SmithingTable, + Smoker, + SmoothBasalt, + SmoothQuartz, + SmoothQuartzSlab, + SmoothQuartzStairs, + SmoothRedSandstone, + SmoothRedSandstoneSlab, + SmoothRedSandstoneStairs, + SmoothSandstone, + SmoothSandstoneSlab, + SmoothSandstoneStairs, + SmoothStone, + SmoothStoneSlab, + SnifferEgg, + SnifferSpawnEgg, + SnortPotterySherd, + SnoutArmorTrimSmithingTemplate, + Snow, + SnowBlock, + SnowGolemSpawnEgg, + Snowball, + SoulCampfire, + SoulLantern, + SoulSand, + SoulSoil, + SoulTorch, + Spawner, + SpectralArrow, + SpiderEye, + SpiderSpawnEgg, + SpireArmorTrimSmithingTemplate, + SplashPotion, + Sponge, + SporeBlossom, + SpruceBoat, + SpruceButton, + SpruceChestBoat, + SpruceDoor, + SpruceFence, + SpruceFenceGate, + SpruceHangingSign, + SpruceLeaves, + SpruceLog, + SprucePlanks, + SprucePressurePlate, + SpruceSapling, + SpruceShelf, + SpruceSign, + SpruceSlab, + SpruceStairs, + SpruceTrapdoor, + SpruceWood, + Spyglass, + SquidSpawnEgg, + Stick, + StickyPiston, + Stone, + StoneAxe, + StoneBrickSlab, + StoneBrickStairs, + StoneBrickWall, + StoneBricks, + StoneButton, + StoneHoe, + StonePickaxe, + StonePressurePlate, + StoneShovel, + StoneSlab, + StoneSpear, + StoneStairs, + StoneSword, + Stonecutter, + StraySpawnEgg, + StriderSpawnEgg, + String, + StrippedAcaciaLog, + StrippedAcaciaWood, + StrippedBambooBlock, + StrippedBirchLog, + StrippedBirchWood, + StrippedCherryLog, + StrippedCherryWood, + StrippedCrimsonHyphae, + StrippedCrimsonStem, + StrippedDarkOakLog, + StrippedDarkOakWood, + StrippedJungleLog, + StrippedJungleWood, + StrippedMangroveLog, + StrippedMangroveWood, + StrippedOakLog, + StrippedOakWood, + StrippedPaleOakLog, + StrippedPaleOakWood, + StrippedSpruceLog, + StrippedSpruceWood, + StrippedWarpedHyphae, + StrippedWarpedStem, + StructureBlock, + StructureVoid, + Sugar, + SugarCane, + Sulfur, + SulfurBrickSlab, + SulfurBrickStairs, + SulfurBrickWall, + SulfurBricks, + SulfurCubeBucket, + SulfurCubeSpawnEgg, + SulfurSlab, + SulfurSpike, + SulfurStairs, + SulfurWall, + Sunflower, + SuspiciousGravel, + SuspiciousSand, + SuspiciousStew, + SweetBerries, + TadpoleBucket, + TadpoleSpawnEgg, + TallDryGrass, + TallGrass, + Target, + Terracotta, + TestBlock, + TestInstanceBlock, + TideArmorTrimSmithingTemplate, + TintedGlass, + TippedArrow, + Tnt, + TntMinecart, + Torch, + Torchflower, + TorchflowerSeeds, + TotemOfUndying, + TraderLlamaSpawnEgg, + TrappedChest, + TrialKey, + TrialSpawner, + Trident, + TripwireHook, + TropicalFish, + TropicalFishBucket, + TropicalFishSpawnEgg, + TubeCoral, + TubeCoralBlock, + TubeCoralFan, + Tuff, + TuffBrickSlab, + TuffBrickStairs, + TuffBrickWall, + TuffBricks, + TuffSlab, + TuffStairs, + TuffWall, + TurtleEgg, + TurtleHelmet, + TurtleScute, + TurtleSpawnEgg, + TwistingVines, + Vault, + VerdantFroglight, + VexArmorTrimSmithingTemplate, + VexSpawnEgg, + VillagerSpawnEgg, + VindicatorSpawnEgg, + Vine, + WanderingTraderSpawnEgg, + WardArmorTrimSmithingTemplate, + WardenSpawnEgg, + WarpedButton, + WarpedDoor, + WarpedFence, + WarpedFenceGate, + WarpedFungus, + WarpedFungusOnAStick, + WarpedHangingSign, + WarpedHyphae, + WarpedNylium, + WarpedPlanks, + WarpedPressurePlate, + WarpedRoots, + WarpedShelf, + WarpedSign, + WarpedSlab, + WarpedStairs, + WarpedStem, + WarpedTrapdoor, + WarpedWartBlock, + WaterBucket, + WaxedChiseledCopper, + WaxedCopperBars, + WaxedCopperBlock, + WaxedCopperBulb, + WaxedCopperChain, + WaxedCopperChest, + WaxedCopperDoor, + WaxedCopperGolemStatue, + WaxedCopperGrate, + WaxedCopperLantern, + WaxedCopperTrapdoor, + WaxedCutCopper, + WaxedCutCopperSlab, + WaxedCutCopperStairs, + WaxedExposedChiseledCopper, + WaxedExposedCopper, + WaxedExposedCopperBars, + WaxedExposedCopperBulb, + WaxedExposedCopperChain, + WaxedExposedCopperChest, + WaxedExposedCopperDoor, + WaxedExposedCopperGolemStatue, + WaxedExposedCopperGrate, + WaxedExposedCopperLantern, + WaxedExposedCopperTrapdoor, + WaxedExposedCutCopper, + WaxedExposedCutCopperSlab, + WaxedExposedCutCopperStairs, + WaxedExposedLightningRod, + WaxedLightningRod, + WaxedOxidizedChiseledCopper, + WaxedOxidizedCopper, + WaxedOxidizedCopperBars, + WaxedOxidizedCopperBulb, + WaxedOxidizedCopperChain, + WaxedOxidizedCopperChest, + WaxedOxidizedCopperDoor, + WaxedOxidizedCopperGolemStatue, + WaxedOxidizedCopperGrate, + WaxedOxidizedCopperLantern, + WaxedOxidizedCopperTrapdoor, + WaxedOxidizedCutCopper, + WaxedOxidizedCutCopperSlab, + WaxedOxidizedCutCopperStairs, + WaxedOxidizedLightningRod, + WaxedWeatheredChiseledCopper, + WaxedWeatheredCopper, + WaxedWeatheredCopperBars, + WaxedWeatheredCopperBulb, + WaxedWeatheredCopperChain, + WaxedWeatheredCopperChest, + WaxedWeatheredCopperDoor, + WaxedWeatheredCopperGolemStatue, + WaxedWeatheredCopperGrate, + WaxedWeatheredCopperLantern, + WaxedWeatheredCopperTrapdoor, + WaxedWeatheredCutCopper, + WaxedWeatheredCutCopperSlab, + WaxedWeatheredCutCopperStairs, + WaxedWeatheredLightningRod, + WayfinderArmorTrimSmithingTemplate, + WeatheredChiseledCopper, + WeatheredCopper, + WeatheredCopperBars, + WeatheredCopperBulb, + WeatheredCopperChain, + WeatheredCopperChest, + WeatheredCopperDoor, + WeatheredCopperGolemStatue, + WeatheredCopperGrate, + WeatheredCopperLantern, + WeatheredCopperTrapdoor, + WeatheredCutCopper, + WeatheredCutCopperSlab, + WeatheredCutCopperStairs, + WeatheredLightningRod, + WeepingVines, + WetSponge, + Wheat, + WheatSeeds, + WhiteBanner, + WhiteBed, + WhiteBundle, + WhiteCandle, + WhiteCarpet, + WhiteConcrete, + WhiteConcretePowder, + WhiteDye, + WhiteGlazedTerracotta, + WhiteHarness, + WhiteShulkerBox, + WhiteStainedGlass, + WhiteStainedGlassPane, + WhiteTerracotta, + WhiteTulip, + WhiteWool, + WildArmorTrimSmithingTemplate, + Wildflowers, + WindCharge, + WitchSpawnEgg, + WitherRose, + WitherSkeletonSkull, + WitherSkeletonSpawnEgg, + WitherSpawnEgg, + WolfArmor, + WolfSpawnEgg, + WoodenAxe, + WoodenHoe, + WoodenPickaxe, + WoodenShovel, + WoodenSpear, + WoodenSword, + WritableBook, + WrittenBook, + YellowBanner, + YellowBed, + YellowBundle, + YellowCandle, + YellowCarpet, + YellowConcrete, + YellowConcretePowder, + YellowDye, + YellowGlazedTerracotta, + YellowHarness, + YellowShulkerBox, + YellowStainedGlass, + YellowStainedGlassPane, + YellowTerracotta, + YellowWool, + ZoglinSpawnEgg, + ZombieHead, + ZombieHorseSpawnEgg, + ZombieNautilusSpawnEgg, + ZombieSpawnEgg, + ZombieVillagerSpawnEgg, + ZombifiedPiglinSpawnEgg, +} + +impl Item { + /// Returns the plain item name (e.g. `"diamond"` or `"netherite_sword"`). + #[must_use] + pub const fn as_str(&self) -> &'static str { + match self { + Self::AcaciaBoat => "acacia_boat", + Self::AcaciaButton => "acacia_button", + Self::AcaciaChestBoat => "acacia_chest_boat", + Self::AcaciaDoor => "acacia_door", + Self::AcaciaFence => "acacia_fence", + Self::AcaciaFenceGate => "acacia_fence_gate", + Self::AcaciaHangingSign => "acacia_hanging_sign", + Self::AcaciaLeaves => "acacia_leaves", + Self::AcaciaLog => "acacia_log", + Self::AcaciaPlanks => "acacia_planks", + Self::AcaciaPressurePlate => "acacia_pressure_plate", + Self::AcaciaSapling => "acacia_sapling", + Self::AcaciaShelf => "acacia_shelf", + Self::AcaciaSign => "acacia_sign", + Self::AcaciaSlab => "acacia_slab", + Self::AcaciaStairs => "acacia_stairs", + Self::AcaciaTrapdoor => "acacia_trapdoor", + Self::AcaciaWood => "acacia_wood", + Self::ActivatorRail => "activator_rail", + Self::Air => "air", + Self::AllaySpawnEgg => "allay_spawn_egg", + Self::Allium => "allium", + Self::AmethystBlock => "amethyst_block", + Self::AmethystCluster => "amethyst_cluster", + Self::AmethystShard => "amethyst_shard", + Self::AncientDebris => "ancient_debris", + Self::Andesite => "andesite", + Self::AndesiteSlab => "andesite_slab", + Self::AndesiteStairs => "andesite_stairs", + Self::AndesiteWall => "andesite_wall", + Self::AnglerPotterySherd => "angler_pottery_sherd", + Self::Anvil => "anvil", + Self::Apple => "apple", + Self::ArcherPotterySherd => "archer_pottery_sherd", + Self::ArmadilloScute => "armadillo_scute", + Self::ArmadilloSpawnEgg => "armadillo_spawn_egg", + Self::ArmorStand => "armor_stand", + Self::ArmsUpPotterySherd => "arms_up_pottery_sherd", + Self::Arrow => "arrow", + Self::AxolotlBucket => "axolotl_bucket", + Self::AxolotlSpawnEgg => "axolotl_spawn_egg", + Self::Azalea => "azalea", + Self::AzaleaLeaves => "azalea_leaves", + Self::AzureBluet => "azure_bluet", + Self::BakedPotato => "baked_potato", + Self::Bamboo => "bamboo", + Self::BambooBlock => "bamboo_block", + Self::BambooButton => "bamboo_button", + Self::BambooChestRaft => "bamboo_chest_raft", + Self::BambooDoor => "bamboo_door", + Self::BambooFence => "bamboo_fence", + Self::BambooFenceGate => "bamboo_fence_gate", + Self::BambooHangingSign => "bamboo_hanging_sign", + Self::BambooMosaic => "bamboo_mosaic", + Self::BambooMosaicSlab => "bamboo_mosaic_slab", + Self::BambooMosaicStairs => "bamboo_mosaic_stairs", + Self::BambooPlanks => "bamboo_planks", + Self::BambooPressurePlate => "bamboo_pressure_plate", + Self::BambooRaft => "bamboo_raft", + Self::BambooShelf => "bamboo_shelf", + Self::BambooSign => "bamboo_sign", + Self::BambooSlab => "bamboo_slab", + Self::BambooStairs => "bamboo_stairs", + Self::BambooTrapdoor => "bamboo_trapdoor", + Self::Barrel => "barrel", + Self::Barrier => "barrier", + Self::Basalt => "basalt", + Self::BatSpawnEgg => "bat_spawn_egg", + Self::Beacon => "beacon", + Self::Bedrock => "bedrock", + Self::BeeNest => "bee_nest", + Self::BeeSpawnEgg => "bee_spawn_egg", + Self::Beef => "beef", + Self::Beehive => "beehive", + Self::Beetroot => "beetroot", + Self::BeetrootSeeds => "beetroot_seeds", + Self::BeetrootSoup => "beetroot_soup", + Self::Bell => "bell", + Self::BigDripleaf => "big_dripleaf", + Self::BirchBoat => "birch_boat", + Self::BirchButton => "birch_button", + Self::BirchChestBoat => "birch_chest_boat", + Self::BirchDoor => "birch_door", + Self::BirchFence => "birch_fence", + Self::BirchFenceGate => "birch_fence_gate", + Self::BirchHangingSign => "birch_hanging_sign", + Self::BirchLeaves => "birch_leaves", + Self::BirchLog => "birch_log", + Self::BirchPlanks => "birch_planks", + Self::BirchPressurePlate => "birch_pressure_plate", + Self::BirchSapling => "birch_sapling", + Self::BirchShelf => "birch_shelf", + Self::BirchSign => "birch_sign", + Self::BirchSlab => "birch_slab", + Self::BirchStairs => "birch_stairs", + Self::BirchTrapdoor => "birch_trapdoor", + Self::BirchWood => "birch_wood", + Self::BlackBanner => "black_banner", + Self::BlackBed => "black_bed", + Self::BlackBundle => "black_bundle", + Self::BlackCandle => "black_candle", + Self::BlackCarpet => "black_carpet", + Self::BlackConcrete => "black_concrete", + Self::BlackConcretePowder => "black_concrete_powder", + Self::BlackDye => "black_dye", + Self::BlackGlazedTerracotta => "black_glazed_terracotta", + Self::BlackHarness => "black_harness", + Self::BlackShulkerBox => "black_shulker_box", + Self::BlackStainedGlass => "black_stained_glass", + Self::BlackStainedGlassPane => "black_stained_glass_pane", + Self::BlackTerracotta => "black_terracotta", + Self::BlackWool => "black_wool", + Self::Blackstone => "blackstone", + Self::BlackstoneSlab => "blackstone_slab", + Self::BlackstoneStairs => "blackstone_stairs", + Self::BlackstoneWall => "blackstone_wall", + Self::BladePotterySherd => "blade_pottery_sherd", + Self::BlastFurnace => "blast_furnace", + Self::BlazePowder => "blaze_powder", + Self::BlazeRod => "blaze_rod", + Self::BlazeSpawnEgg => "blaze_spawn_egg", + Self::BlueBanner => "blue_banner", + Self::BlueBed => "blue_bed", + Self::BlueBundle => "blue_bundle", + Self::BlueCandle => "blue_candle", + Self::BlueCarpet => "blue_carpet", + Self::BlueConcrete => "blue_concrete", + Self::BlueConcretePowder => "blue_concrete_powder", + Self::BlueDye => "blue_dye", + Self::BlueEgg => "blue_egg", + Self::BlueGlazedTerracotta => "blue_glazed_terracotta", + Self::BlueHarness => "blue_harness", + Self::BlueIce => "blue_ice", + Self::BlueOrchid => "blue_orchid", + Self::BlueShulkerBox => "blue_shulker_box", + Self::BlueStainedGlass => "blue_stained_glass", + Self::BlueStainedGlassPane => "blue_stained_glass_pane", + Self::BlueTerracotta => "blue_terracotta", + Self::BlueWool => "blue_wool", + Self::BoggedSpawnEgg => "bogged_spawn_egg", + Self::BoltArmorTrimSmithingTemplate => "bolt_armor_trim_smithing_template", + Self::Bone => "bone", + Self::BoneBlock => "bone_block", + Self::BoneMeal => "bone_meal", + Self::Book => "book", + Self::Bookshelf => "bookshelf", + Self::BordureIndentedBannerPattern => "bordure_indented_banner_pattern", + Self::Bow => "bow", + Self::Bowl => "bowl", + Self::BrainCoral => "brain_coral", + Self::BrainCoralBlock => "brain_coral_block", + Self::BrainCoralFan => "brain_coral_fan", + Self::Bread => "bread", + Self::BreezeRod => "breeze_rod", + Self::BreezeSpawnEgg => "breeze_spawn_egg", + Self::BrewerPotterySherd => "brewer_pottery_sherd", + Self::BrewingStand => "brewing_stand", + Self::Brick => "brick", + Self::BrickSlab => "brick_slab", + Self::BrickStairs => "brick_stairs", + Self::BrickWall => "brick_wall", + Self::Bricks => "bricks", + Self::BrownBanner => "brown_banner", + Self::BrownBed => "brown_bed", + Self::BrownBundle => "brown_bundle", + Self::BrownCandle => "brown_candle", + Self::BrownCarpet => "brown_carpet", + Self::BrownConcrete => "brown_concrete", + Self::BrownConcretePowder => "brown_concrete_powder", + Self::BrownDye => "brown_dye", + Self::BrownEgg => "brown_egg", + Self::BrownGlazedTerracotta => "brown_glazed_terracotta", + Self::BrownHarness => "brown_harness", + Self::BrownMushroom => "brown_mushroom", + Self::BrownMushroomBlock => "brown_mushroom_block", + Self::BrownShulkerBox => "brown_shulker_box", + Self::BrownStainedGlass => "brown_stained_glass", + Self::BrownStainedGlassPane => "brown_stained_glass_pane", + Self::BrownTerracotta => "brown_terracotta", + Self::BrownWool => "brown_wool", + Self::Brush => "brush", + Self::BubbleCoral => "bubble_coral", + Self::BubbleCoralBlock => "bubble_coral_block", + Self::BubbleCoralFan => "bubble_coral_fan", + Self::Bucket => "bucket", + Self::BuddingAmethyst => "budding_amethyst", + Self::Bundle => "bundle", + Self::BurnPotterySherd => "burn_pottery_sherd", + Self::Bush => "bush", + Self::Cactus => "cactus", + Self::CactusFlower => "cactus_flower", + Self::Cake => "cake", + Self::Calcite => "calcite", + Self::CalibratedSculkSensor => "calibrated_sculk_sensor", + Self::CamelHuskSpawnEgg => "camel_husk_spawn_egg", + Self::CamelSpawnEgg => "camel_spawn_egg", + Self::Campfire => "campfire", + Self::Candle => "candle", + Self::Carrot => "carrot", + Self::CarrotOnAStick => "carrot_on_a_stick", + Self::CartographyTable => "cartography_table", + Self::CarvedPumpkin => "carved_pumpkin", + Self::CatSpawnEgg => "cat_spawn_egg", + Self::Cauldron => "cauldron", + Self::CaveSpiderSpawnEgg => "cave_spider_spawn_egg", + Self::ChainCommandBlock => "chain_command_block", + Self::ChainmailBoots => "chainmail_boots", + Self::ChainmailChestplate => "chainmail_chestplate", + Self::ChainmailHelmet => "chainmail_helmet", + Self::ChainmailLeggings => "chainmail_leggings", + Self::Charcoal => "charcoal", + Self::CherryBoat => "cherry_boat", + Self::CherryButton => "cherry_button", + Self::CherryChestBoat => "cherry_chest_boat", + Self::CherryDoor => "cherry_door", + Self::CherryFence => "cherry_fence", + Self::CherryFenceGate => "cherry_fence_gate", + Self::CherryHangingSign => "cherry_hanging_sign", + Self::CherryLeaves => "cherry_leaves", + Self::CherryLog => "cherry_log", + Self::CherryPlanks => "cherry_planks", + Self::CherryPressurePlate => "cherry_pressure_plate", + Self::CherrySapling => "cherry_sapling", + Self::CherryShelf => "cherry_shelf", + Self::CherrySign => "cherry_sign", + Self::CherrySlab => "cherry_slab", + Self::CherryStairs => "cherry_stairs", + Self::CherryTrapdoor => "cherry_trapdoor", + Self::CherryWood => "cherry_wood", + Self::Chest => "chest", + Self::ChestMinecart => "chest_minecart", + Self::Chicken => "chicken", + Self::ChickenSpawnEgg => "chicken_spawn_egg", + Self::ChippedAnvil => "chipped_anvil", + Self::ChiseledBookshelf => "chiseled_bookshelf", + Self::ChiseledCinnabar => "chiseled_cinnabar", + Self::ChiseledCopper => "chiseled_copper", + Self::ChiseledDeepslate => "chiseled_deepslate", + Self::ChiseledNetherBricks => "chiseled_nether_bricks", + Self::ChiseledPolishedBlackstone => "chiseled_polished_blackstone", + Self::ChiseledQuartzBlock => "chiseled_quartz_block", + Self::ChiseledRedSandstone => "chiseled_red_sandstone", + Self::ChiseledResinBricks => "chiseled_resin_bricks", + Self::ChiseledSandstone => "chiseled_sandstone", + Self::ChiseledStoneBricks => "chiseled_stone_bricks", + Self::ChiseledSulfur => "chiseled_sulfur", + Self::ChiseledTuff => "chiseled_tuff", + Self::ChiseledTuffBricks => "chiseled_tuff_bricks", + Self::ChorusFlower => "chorus_flower", + Self::ChorusFruit => "chorus_fruit", + Self::ChorusPlant => "chorus_plant", + Self::Cinnabar => "cinnabar", + Self::CinnabarBrickSlab => "cinnabar_brick_slab", + Self::CinnabarBrickStairs => "cinnabar_brick_stairs", + Self::CinnabarBrickWall => "cinnabar_brick_wall", + Self::CinnabarBricks => "cinnabar_bricks", + Self::CinnabarSlab => "cinnabar_slab", + Self::CinnabarStairs => "cinnabar_stairs", + Self::CinnabarWall => "cinnabar_wall", + Self::Clay => "clay", + Self::ClayBall => "clay_ball", + Self::Clock => "clock", + Self::ClosedEyeblossom => "closed_eyeblossom", + Self::Coal => "coal", + Self::CoalBlock => "coal_block", + Self::CoalOre => "coal_ore", + Self::CoarseDirt => "coarse_dirt", + Self::CoastArmorTrimSmithingTemplate => "coast_armor_trim_smithing_template", + Self::CobbledDeepslate => "cobbled_deepslate", + Self::CobbledDeepslateSlab => "cobbled_deepslate_slab", + Self::CobbledDeepslateStairs => "cobbled_deepslate_stairs", + Self::CobbledDeepslateWall => "cobbled_deepslate_wall", + Self::Cobblestone => "cobblestone", + Self::CobblestoneSlab => "cobblestone_slab", + Self::CobblestoneStairs => "cobblestone_stairs", + Self::CobblestoneWall => "cobblestone_wall", + Self::Cobweb => "cobweb", + Self::CocoaBeans => "cocoa_beans", + Self::Cod => "cod", + Self::CodBucket => "cod_bucket", + Self::CodSpawnEgg => "cod_spawn_egg", + Self::CommandBlock => "command_block", + Self::CommandBlockMinecart => "command_block_minecart", + Self::Comparator => "comparator", + Self::Compass => "compass", + Self::Composter => "composter", + Self::Conduit => "conduit", + Self::CookedBeef => "cooked_beef", + Self::CookedChicken => "cooked_chicken", + Self::CookedCod => "cooked_cod", + Self::CookedMutton => "cooked_mutton", + Self::CookedPorkchop => "cooked_porkchop", + Self::CookedRabbit => "cooked_rabbit", + Self::CookedSalmon => "cooked_salmon", + Self::Cookie => "cookie", + Self::CopperAxe => "copper_axe", + Self::CopperBars => "copper_bars", + Self::CopperBlock => "copper_block", + Self::CopperBoots => "copper_boots", + Self::CopperBulb => "copper_bulb", + Self::CopperChain => "copper_chain", + Self::CopperChest => "copper_chest", + Self::CopperChestplate => "copper_chestplate", + Self::CopperDoor => "copper_door", + Self::CopperGolemSpawnEgg => "copper_golem_spawn_egg", + Self::CopperGolemStatue => "copper_golem_statue", + Self::CopperGrate => "copper_grate", + Self::CopperHelmet => "copper_helmet", + Self::CopperHoe => "copper_hoe", + Self::CopperHorseArmor => "copper_horse_armor", + Self::CopperIngot => "copper_ingot", + Self::CopperLantern => "copper_lantern", + Self::CopperLeggings => "copper_leggings", + Self::CopperNautilusArmor => "copper_nautilus_armor", + Self::CopperNugget => "copper_nugget", + Self::CopperOre => "copper_ore", + Self::CopperPickaxe => "copper_pickaxe", + Self::CopperShovel => "copper_shovel", + Self::CopperSpear => "copper_spear", + Self::CopperSword => "copper_sword", + Self::CopperTorch => "copper_torch", + Self::CopperTrapdoor => "copper_trapdoor", + Self::Cornflower => "cornflower", + Self::CowSpawnEgg => "cow_spawn_egg", + Self::CrackedDeepslateBricks => "cracked_deepslate_bricks", + Self::CrackedDeepslateTiles => "cracked_deepslate_tiles", + Self::CrackedNetherBricks => "cracked_nether_bricks", + Self::CrackedPolishedBlackstoneBricks => "cracked_polished_blackstone_bricks", + Self::CrackedStoneBricks => "cracked_stone_bricks", + Self::Crafter => "crafter", + Self::CraftingTable => "crafting_table", + Self::CreakingHeart => "creaking_heart", + Self::CreakingSpawnEgg => "creaking_spawn_egg", + Self::CreeperBannerPattern => "creeper_banner_pattern", + Self::CreeperHead => "creeper_head", + Self::CreeperSpawnEgg => "creeper_spawn_egg", + Self::CrimsonButton => "crimson_button", + Self::CrimsonDoor => "crimson_door", + Self::CrimsonFence => "crimson_fence", + Self::CrimsonFenceGate => "crimson_fence_gate", + Self::CrimsonFungus => "crimson_fungus", + Self::CrimsonHangingSign => "crimson_hanging_sign", + Self::CrimsonHyphae => "crimson_hyphae", + Self::CrimsonNylium => "crimson_nylium", + Self::CrimsonPlanks => "crimson_planks", + Self::CrimsonPressurePlate => "crimson_pressure_plate", + Self::CrimsonRoots => "crimson_roots", + Self::CrimsonShelf => "crimson_shelf", + Self::CrimsonSign => "crimson_sign", + Self::CrimsonSlab => "crimson_slab", + Self::CrimsonStairs => "crimson_stairs", + Self::CrimsonStem => "crimson_stem", + Self::CrimsonTrapdoor => "crimson_trapdoor", + Self::Crossbow => "crossbow", + Self::CryingObsidian => "crying_obsidian", + Self::CutCopper => "cut_copper", + Self::CutCopperSlab => "cut_copper_slab", + Self::CutCopperStairs => "cut_copper_stairs", + Self::CutRedSandstone => "cut_red_sandstone", + Self::CutRedSandstoneSlab => "cut_red_sandstone_slab", + Self::CutSandstone => "cut_sandstone", + Self::CutSandstoneSlab => "cut_sandstone_slab", + Self::CyanBanner => "cyan_banner", + Self::CyanBed => "cyan_bed", + Self::CyanBundle => "cyan_bundle", + Self::CyanCandle => "cyan_candle", + Self::CyanCarpet => "cyan_carpet", + Self::CyanConcrete => "cyan_concrete", + Self::CyanConcretePowder => "cyan_concrete_powder", + Self::CyanDye => "cyan_dye", + Self::CyanGlazedTerracotta => "cyan_glazed_terracotta", + Self::CyanHarness => "cyan_harness", + Self::CyanShulkerBox => "cyan_shulker_box", + Self::CyanStainedGlass => "cyan_stained_glass", + Self::CyanStainedGlassPane => "cyan_stained_glass_pane", + Self::CyanTerracotta => "cyan_terracotta", + Self::CyanWool => "cyan_wool", + Self::DamagedAnvil => "damaged_anvil", + Self::Dandelion => "dandelion", + Self::DangerPotterySherd => "danger_pottery_sherd", + Self::DarkOakBoat => "dark_oak_boat", + Self::DarkOakButton => "dark_oak_button", + Self::DarkOakChestBoat => "dark_oak_chest_boat", + Self::DarkOakDoor => "dark_oak_door", + Self::DarkOakFence => "dark_oak_fence", + Self::DarkOakFenceGate => "dark_oak_fence_gate", + Self::DarkOakHangingSign => "dark_oak_hanging_sign", + Self::DarkOakLeaves => "dark_oak_leaves", + Self::DarkOakLog => "dark_oak_log", + Self::DarkOakPlanks => "dark_oak_planks", + Self::DarkOakPressurePlate => "dark_oak_pressure_plate", + Self::DarkOakSapling => "dark_oak_sapling", + Self::DarkOakShelf => "dark_oak_shelf", + Self::DarkOakSign => "dark_oak_sign", + Self::DarkOakSlab => "dark_oak_slab", + Self::DarkOakStairs => "dark_oak_stairs", + Self::DarkOakTrapdoor => "dark_oak_trapdoor", + Self::DarkOakWood => "dark_oak_wood", + Self::DarkPrismarine => "dark_prismarine", + Self::DarkPrismarineSlab => "dark_prismarine_slab", + Self::DarkPrismarineStairs => "dark_prismarine_stairs", + Self::DaylightDetector => "daylight_detector", + Self::DeadBrainCoral => "dead_brain_coral", + Self::DeadBrainCoralBlock => "dead_brain_coral_block", + Self::DeadBrainCoralFan => "dead_brain_coral_fan", + Self::DeadBubbleCoral => "dead_bubble_coral", + Self::DeadBubbleCoralBlock => "dead_bubble_coral_block", + Self::DeadBubbleCoralFan => "dead_bubble_coral_fan", + Self::DeadBush => "dead_bush", + Self::DeadFireCoral => "dead_fire_coral", + Self::DeadFireCoralBlock => "dead_fire_coral_block", + Self::DeadFireCoralFan => "dead_fire_coral_fan", + Self::DeadHornCoral => "dead_horn_coral", + Self::DeadHornCoralBlock => "dead_horn_coral_block", + Self::DeadHornCoralFan => "dead_horn_coral_fan", + Self::DeadTubeCoral => "dead_tube_coral", + Self::DeadTubeCoralBlock => "dead_tube_coral_block", + Self::DeadTubeCoralFan => "dead_tube_coral_fan", + Self::DebugStick => "debug_stick", + Self::DecoratedPot => "decorated_pot", + Self::Deepslate => "deepslate", + Self::DeepslateBrickSlab => "deepslate_brick_slab", + Self::DeepslateBrickStairs => "deepslate_brick_stairs", + Self::DeepslateBrickWall => "deepslate_brick_wall", + Self::DeepslateBricks => "deepslate_bricks", + Self::DeepslateCoalOre => "deepslate_coal_ore", + Self::DeepslateCopperOre => "deepslate_copper_ore", + Self::DeepslateDiamondOre => "deepslate_diamond_ore", + Self::DeepslateEmeraldOre => "deepslate_emerald_ore", + Self::DeepslateGoldOre => "deepslate_gold_ore", + Self::DeepslateIronOre => "deepslate_iron_ore", + Self::DeepslateLapisOre => "deepslate_lapis_ore", + Self::DeepslateRedstoneOre => "deepslate_redstone_ore", + Self::DeepslateTileSlab => "deepslate_tile_slab", + Self::DeepslateTileStairs => "deepslate_tile_stairs", + Self::DeepslateTileWall => "deepslate_tile_wall", + Self::DeepslateTiles => "deepslate_tiles", + Self::DetectorRail => "detector_rail", + Self::Diamond => "diamond", + Self::DiamondAxe => "diamond_axe", + Self::DiamondBlock => "diamond_block", + Self::DiamondBoots => "diamond_boots", + Self::DiamondChestplate => "diamond_chestplate", + Self::DiamondHelmet => "diamond_helmet", + Self::DiamondHoe => "diamond_hoe", + Self::DiamondHorseArmor => "diamond_horse_armor", + Self::DiamondLeggings => "diamond_leggings", + Self::DiamondNautilusArmor => "diamond_nautilus_armor", + Self::DiamondOre => "diamond_ore", + Self::DiamondPickaxe => "diamond_pickaxe", + Self::DiamondShovel => "diamond_shovel", + Self::DiamondSpear => "diamond_spear", + Self::DiamondSword => "diamond_sword", + Self::Diorite => "diorite", + Self::DioriteSlab => "diorite_slab", + Self::DioriteStairs => "diorite_stairs", + Self::DioriteWall => "diorite_wall", + Self::Dirt => "dirt", + Self::DirtPath => "dirt_path", + Self::DiscFragment5 => "disc_fragment_5", + Self::Dispenser => "dispenser", + Self::DolphinSpawnEgg => "dolphin_spawn_egg", + Self::DonkeySpawnEgg => "donkey_spawn_egg", + Self::DragonBreath => "dragon_breath", + Self::DragonEgg => "dragon_egg", + Self::DragonHead => "dragon_head", + Self::DriedGhast => "dried_ghast", + Self::DriedKelp => "dried_kelp", + Self::DriedKelpBlock => "dried_kelp_block", + Self::DripstoneBlock => "dripstone_block", + Self::Dropper => "dropper", + Self::DrownedSpawnEgg => "drowned_spawn_egg", + Self::DuneArmorTrimSmithingTemplate => "dune_armor_trim_smithing_template", + Self::EchoShard => "echo_shard", + Self::Egg => "egg", + Self::ElderGuardianSpawnEgg => "elder_guardian_spawn_egg", + Self::Elytra => "elytra", + Self::Emerald => "emerald", + Self::EmeraldBlock => "emerald_block", + Self::EmeraldOre => "emerald_ore", + Self::EnchantedBook => "enchanted_book", + Self::EnchantedGoldenApple => "enchanted_golden_apple", + Self::EnchantingTable => "enchanting_table", + Self::EndCrystal => "end_crystal", + Self::EndPortalFrame => "end_portal_frame", + Self::EndRod => "end_rod", + Self::EndStone => "end_stone", + Self::EndStoneBrickSlab => "end_stone_brick_slab", + Self::EndStoneBrickStairs => "end_stone_brick_stairs", + Self::EndStoneBrickWall => "end_stone_brick_wall", + Self::EndStoneBricks => "end_stone_bricks", + Self::EnderChest => "ender_chest", + Self::EnderDragonSpawnEgg => "ender_dragon_spawn_egg", + Self::EnderEye => "ender_eye", + Self::EnderPearl => "ender_pearl", + Self::EndermanSpawnEgg => "enderman_spawn_egg", + Self::EndermiteSpawnEgg => "endermite_spawn_egg", + Self::EvokerSpawnEgg => "evoker_spawn_egg", + Self::ExperienceBottle => "experience_bottle", + Self::ExplorerPotterySherd => "explorer_pottery_sherd", + Self::ExposedChiseledCopper => "exposed_chiseled_copper", + Self::ExposedCopper => "exposed_copper", + Self::ExposedCopperBars => "exposed_copper_bars", + Self::ExposedCopperBulb => "exposed_copper_bulb", + Self::ExposedCopperChain => "exposed_copper_chain", + Self::ExposedCopperChest => "exposed_copper_chest", + Self::ExposedCopperDoor => "exposed_copper_door", + Self::ExposedCopperGolemStatue => "exposed_copper_golem_statue", + Self::ExposedCopperGrate => "exposed_copper_grate", + Self::ExposedCopperLantern => "exposed_copper_lantern", + Self::ExposedCopperTrapdoor => "exposed_copper_trapdoor", + Self::ExposedCutCopper => "exposed_cut_copper", + Self::ExposedCutCopperSlab => "exposed_cut_copper_slab", + Self::ExposedCutCopperStairs => "exposed_cut_copper_stairs", + Self::ExposedLightningRod => "exposed_lightning_rod", + Self::EyeArmorTrimSmithingTemplate => "eye_armor_trim_smithing_template", + Self::Farmland => "farmland", + Self::Feather => "feather", + Self::FermentedSpiderEye => "fermented_spider_eye", + Self::Fern => "fern", + Self::FieldMasonedBannerPattern => "field_masoned_banner_pattern", + Self::FilledMap => "filled_map", + Self::FireCharge => "fire_charge", + Self::FireCoral => "fire_coral", + Self::FireCoralBlock => "fire_coral_block", + Self::FireCoralFan => "fire_coral_fan", + Self::FireflyBush => "firefly_bush", + Self::FireworkRocket => "firework_rocket", + Self::FireworkStar => "firework_star", + Self::FishingRod => "fishing_rod", + Self::FletchingTable => "fletching_table", + Self::Flint => "flint", + Self::FlintAndSteel => "flint_and_steel", + Self::FlowArmorTrimSmithingTemplate => "flow_armor_trim_smithing_template", + Self::FlowBannerPattern => "flow_banner_pattern", + Self::FlowPotterySherd => "flow_pottery_sherd", + Self::FlowerBannerPattern => "flower_banner_pattern", + Self::FlowerPot => "flower_pot", + Self::FloweringAzalea => "flowering_azalea", + Self::FloweringAzaleaLeaves => "flowering_azalea_leaves", + Self::FoxSpawnEgg => "fox_spawn_egg", + Self::FriendPotterySherd => "friend_pottery_sherd", + Self::FrogSpawnEgg => "frog_spawn_egg", + Self::Frogspawn => "frogspawn", + Self::Furnace => "furnace", + Self::FurnaceMinecart => "furnace_minecart", + Self::GhastSpawnEgg => "ghast_spawn_egg", + Self::GhastTear => "ghast_tear", + Self::GildedBlackstone => "gilded_blackstone", + Self::Glass => "glass", + Self::GlassBottle => "glass_bottle", + Self::GlassPane => "glass_pane", + Self::GlisteringMelonSlice => "glistering_melon_slice", + Self::GlobeBannerPattern => "globe_banner_pattern", + Self::GlowBerries => "glow_berries", + Self::GlowInkSac => "glow_ink_sac", + Self::GlowItemFrame => "glow_item_frame", + Self::GlowLichen => "glow_lichen", + Self::GlowSquidSpawnEgg => "glow_squid_spawn_egg", + Self::Glowstone => "glowstone", + Self::GlowstoneDust => "glowstone_dust", + Self::GoatHorn => "goat_horn", + Self::GoatSpawnEgg => "goat_spawn_egg", + Self::GoldBlock => "gold_block", + Self::GoldIngot => "gold_ingot", + Self::GoldNugget => "gold_nugget", + Self::GoldOre => "gold_ore", + Self::GoldenApple => "golden_apple", + Self::GoldenAxe => "golden_axe", + Self::GoldenBoots => "golden_boots", + Self::GoldenCarrot => "golden_carrot", + Self::GoldenChestplate => "golden_chestplate", + Self::GoldenDandelion => "golden_dandelion", + Self::GoldenHelmet => "golden_helmet", + Self::GoldenHoe => "golden_hoe", + Self::GoldenHorseArmor => "golden_horse_armor", + Self::GoldenLeggings => "golden_leggings", + Self::GoldenNautilusArmor => "golden_nautilus_armor", + Self::GoldenPickaxe => "golden_pickaxe", + Self::GoldenShovel => "golden_shovel", + Self::GoldenSpear => "golden_spear", + Self::GoldenSword => "golden_sword", + Self::Granite => "granite", + Self::GraniteSlab => "granite_slab", + Self::GraniteStairs => "granite_stairs", + Self::GraniteWall => "granite_wall", + Self::GrassBlock => "grass_block", + Self::Gravel => "gravel", + Self::GrayBanner => "gray_banner", + Self::GrayBed => "gray_bed", + Self::GrayBundle => "gray_bundle", + Self::GrayCandle => "gray_candle", + Self::GrayCarpet => "gray_carpet", + Self::GrayConcrete => "gray_concrete", + Self::GrayConcretePowder => "gray_concrete_powder", + Self::GrayDye => "gray_dye", + Self::GrayGlazedTerracotta => "gray_glazed_terracotta", + Self::GrayHarness => "gray_harness", + Self::GrayShulkerBox => "gray_shulker_box", + Self::GrayStainedGlass => "gray_stained_glass", + Self::GrayStainedGlassPane => "gray_stained_glass_pane", + Self::GrayTerracotta => "gray_terracotta", + Self::GrayWool => "gray_wool", + Self::GreenBanner => "green_banner", + Self::GreenBed => "green_bed", + Self::GreenBundle => "green_bundle", + Self::GreenCandle => "green_candle", + Self::GreenCarpet => "green_carpet", + Self::GreenConcrete => "green_concrete", + Self::GreenConcretePowder => "green_concrete_powder", + Self::GreenDye => "green_dye", + Self::GreenGlazedTerracotta => "green_glazed_terracotta", + Self::GreenHarness => "green_harness", + Self::GreenShulkerBox => "green_shulker_box", + Self::GreenStainedGlass => "green_stained_glass", + Self::GreenStainedGlassPane => "green_stained_glass_pane", + Self::GreenTerracotta => "green_terracotta", + Self::GreenWool => "green_wool", + Self::Grindstone => "grindstone", + Self::GuardianSpawnEgg => "guardian_spawn_egg", + Self::Gunpowder => "gunpowder", + Self::GusterBannerPattern => "guster_banner_pattern", + Self::GusterPotterySherd => "guster_pottery_sherd", + Self::HangingRoots => "hanging_roots", + Self::HappyGhastSpawnEgg => "happy_ghast_spawn_egg", + Self::HayBlock => "hay_block", + Self::HeartOfTheSea => "heart_of_the_sea", + Self::HeartPotterySherd => "heart_pottery_sherd", + Self::HeartbreakPotterySherd => "heartbreak_pottery_sherd", + Self::HeavyCore => "heavy_core", + Self::HeavyWeightedPressurePlate => "heavy_weighted_pressure_plate", + Self::HoglinSpawnEgg => "hoglin_spawn_egg", + Self::HoneyBlock => "honey_block", + Self::HoneyBottle => "honey_bottle", + Self::Honeycomb => "honeycomb", + Self::HoneycombBlock => "honeycomb_block", + Self::Hopper => "hopper", + Self::HopperMinecart => "hopper_minecart", + Self::HornCoral => "horn_coral", + Self::HornCoralBlock => "horn_coral_block", + Self::HornCoralFan => "horn_coral_fan", + Self::HorseSpawnEgg => "horse_spawn_egg", + Self::HostArmorTrimSmithingTemplate => "host_armor_trim_smithing_template", + Self::HowlPotterySherd => "howl_pottery_sherd", + Self::HuskSpawnEgg => "husk_spawn_egg", + Self::Ice => "ice", + Self::InfestedChiseledStoneBricks => "infested_chiseled_stone_bricks", + Self::InfestedCobblestone => "infested_cobblestone", + Self::InfestedCrackedStoneBricks => "infested_cracked_stone_bricks", + Self::InfestedDeepslate => "infested_deepslate", + Self::InfestedMossyStoneBricks => "infested_mossy_stone_bricks", + Self::InfestedStone => "infested_stone", + Self::InfestedStoneBricks => "infested_stone_bricks", + Self::InkSac => "ink_sac", + Self::IronAxe => "iron_axe", + Self::IronBars => "iron_bars", + Self::IronBlock => "iron_block", + Self::IronBoots => "iron_boots", + Self::IronChain => "iron_chain", + Self::IronChestplate => "iron_chestplate", + Self::IronDoor => "iron_door", + Self::IronGolemSpawnEgg => "iron_golem_spawn_egg", + Self::IronHelmet => "iron_helmet", + Self::IronHoe => "iron_hoe", + Self::IronHorseArmor => "iron_horse_armor", + Self::IronIngot => "iron_ingot", + Self::IronLeggings => "iron_leggings", + Self::IronNautilusArmor => "iron_nautilus_armor", + Self::IronNugget => "iron_nugget", + Self::IronOre => "iron_ore", + Self::IronPickaxe => "iron_pickaxe", + Self::IronShovel => "iron_shovel", + Self::IronSpear => "iron_spear", + Self::IronSword => "iron_sword", + Self::IronTrapdoor => "iron_trapdoor", + Self::ItemFrame => "item_frame", + Self::JackOLantern => "jack_o_lantern", + Self::Jigsaw => "jigsaw", + Self::Jukebox => "jukebox", + Self::JungleBoat => "jungle_boat", + Self::JungleButton => "jungle_button", + Self::JungleChestBoat => "jungle_chest_boat", + Self::JungleDoor => "jungle_door", + Self::JungleFence => "jungle_fence", + Self::JungleFenceGate => "jungle_fence_gate", + Self::JungleHangingSign => "jungle_hanging_sign", + Self::JungleLeaves => "jungle_leaves", + Self::JungleLog => "jungle_log", + Self::JunglePlanks => "jungle_planks", + Self::JunglePressurePlate => "jungle_pressure_plate", + Self::JungleSapling => "jungle_sapling", + Self::JungleShelf => "jungle_shelf", + Self::JungleSign => "jungle_sign", + Self::JungleSlab => "jungle_slab", + Self::JungleStairs => "jungle_stairs", + Self::JungleTrapdoor => "jungle_trapdoor", + Self::JungleWood => "jungle_wood", + Self::Kelp => "kelp", + Self::KnowledgeBook => "knowledge_book", + Self::Ladder => "ladder", + Self::Lantern => "lantern", + Self::LapisBlock => "lapis_block", + Self::LapisLazuli => "lapis_lazuli", + Self::LapisOre => "lapis_ore", + Self::LargeAmethystBud => "large_amethyst_bud", + Self::LargeFern => "large_fern", + Self::LavaBucket => "lava_bucket", + Self::Lead => "lead", + Self::LeafLitter => "leaf_litter", + Self::Leather => "leather", + Self::LeatherBoots => "leather_boots", + Self::LeatherChestplate => "leather_chestplate", + Self::LeatherHelmet => "leather_helmet", + Self::LeatherHorseArmor => "leather_horse_armor", + Self::LeatherLeggings => "leather_leggings", + Self::Lectern => "lectern", + Self::Lever => "lever", + Self::Light => "light", + Self::LightBlueBanner => "light_blue_banner", + Self::LightBlueBed => "light_blue_bed", + Self::LightBlueBundle => "light_blue_bundle", + Self::LightBlueCandle => "light_blue_candle", + Self::LightBlueCarpet => "light_blue_carpet", + Self::LightBlueConcrete => "light_blue_concrete", + Self::LightBlueConcretePowder => "light_blue_concrete_powder", + Self::LightBlueDye => "light_blue_dye", + Self::LightBlueGlazedTerracotta => "light_blue_glazed_terracotta", + Self::LightBlueHarness => "light_blue_harness", + Self::LightBlueShulkerBox => "light_blue_shulker_box", + Self::LightBlueStainedGlass => "light_blue_stained_glass", + Self::LightBlueStainedGlassPane => "light_blue_stained_glass_pane", + Self::LightBlueTerracotta => "light_blue_terracotta", + Self::LightBlueWool => "light_blue_wool", + Self::LightGrayBanner => "light_gray_banner", + Self::LightGrayBed => "light_gray_bed", + Self::LightGrayBundle => "light_gray_bundle", + Self::LightGrayCandle => "light_gray_candle", + Self::LightGrayCarpet => "light_gray_carpet", + Self::LightGrayConcrete => "light_gray_concrete", + Self::LightGrayConcretePowder => "light_gray_concrete_powder", + Self::LightGrayDye => "light_gray_dye", + Self::LightGrayGlazedTerracotta => "light_gray_glazed_terracotta", + Self::LightGrayHarness => "light_gray_harness", + Self::LightGrayShulkerBox => "light_gray_shulker_box", + Self::LightGrayStainedGlass => "light_gray_stained_glass", + Self::LightGrayStainedGlassPane => "light_gray_stained_glass_pane", + Self::LightGrayTerracotta => "light_gray_terracotta", + Self::LightGrayWool => "light_gray_wool", + Self::LightWeightedPressurePlate => "light_weighted_pressure_plate", + Self::LightningRod => "lightning_rod", + Self::Lilac => "lilac", + Self::LilyOfTheValley => "lily_of_the_valley", + Self::LilyPad => "lily_pad", + Self::LimeBanner => "lime_banner", + Self::LimeBed => "lime_bed", + Self::LimeBundle => "lime_bundle", + Self::LimeCandle => "lime_candle", + Self::LimeCarpet => "lime_carpet", + Self::LimeConcrete => "lime_concrete", + Self::LimeConcretePowder => "lime_concrete_powder", + Self::LimeDye => "lime_dye", + Self::LimeGlazedTerracotta => "lime_glazed_terracotta", + Self::LimeHarness => "lime_harness", + Self::LimeShulkerBox => "lime_shulker_box", + Self::LimeStainedGlass => "lime_stained_glass", + Self::LimeStainedGlassPane => "lime_stained_glass_pane", + Self::LimeTerracotta => "lime_terracotta", + Self::LimeWool => "lime_wool", + Self::LingeringPotion => "lingering_potion", + Self::LlamaSpawnEgg => "llama_spawn_egg", + Self::Lodestone => "lodestone", + Self::Loom => "loom", + Self::Mace => "mace", + Self::MagentaBanner => "magenta_banner", + Self::MagentaBed => "magenta_bed", + Self::MagentaBundle => "magenta_bundle", + Self::MagentaCandle => "magenta_candle", + Self::MagentaCarpet => "magenta_carpet", + Self::MagentaConcrete => "magenta_concrete", + Self::MagentaConcretePowder => "magenta_concrete_powder", + Self::MagentaDye => "magenta_dye", + Self::MagentaGlazedTerracotta => "magenta_glazed_terracotta", + Self::MagentaHarness => "magenta_harness", + Self::MagentaShulkerBox => "magenta_shulker_box", + Self::MagentaStainedGlass => "magenta_stained_glass", + Self::MagentaStainedGlassPane => "magenta_stained_glass_pane", + Self::MagentaTerracotta => "magenta_terracotta", + Self::MagentaWool => "magenta_wool", + Self::MagmaBlock => "magma_block", + Self::MagmaCream => "magma_cream", + Self::MagmaCubeSpawnEgg => "magma_cube_spawn_egg", + Self::MangroveBoat => "mangrove_boat", + Self::MangroveButton => "mangrove_button", + Self::MangroveChestBoat => "mangrove_chest_boat", + Self::MangroveDoor => "mangrove_door", + Self::MangroveFence => "mangrove_fence", + Self::MangroveFenceGate => "mangrove_fence_gate", + Self::MangroveHangingSign => "mangrove_hanging_sign", + Self::MangroveLeaves => "mangrove_leaves", + Self::MangroveLog => "mangrove_log", + Self::MangrovePlanks => "mangrove_planks", + Self::MangrovePressurePlate => "mangrove_pressure_plate", + Self::MangrovePropagule => "mangrove_propagule", + Self::MangroveRoots => "mangrove_roots", + Self::MangroveShelf => "mangrove_shelf", + Self::MangroveSign => "mangrove_sign", + Self::MangroveSlab => "mangrove_slab", + Self::MangroveStairs => "mangrove_stairs", + Self::MangroveTrapdoor => "mangrove_trapdoor", + Self::MangroveWood => "mangrove_wood", + Self::Map => "map", + Self::MediumAmethystBud => "medium_amethyst_bud", + Self::Melon => "melon", + Self::MelonSeeds => "melon_seeds", + Self::MelonSlice => "melon_slice", + Self::MilkBucket => "milk_bucket", + Self::Minecart => "minecart", + Self::MinerPotterySherd => "miner_pottery_sherd", + Self::MojangBannerPattern => "mojang_banner_pattern", + Self::MooshroomSpawnEgg => "mooshroom_spawn_egg", + Self::MossBlock => "moss_block", + Self::MossCarpet => "moss_carpet", + Self::MossyCobblestone => "mossy_cobblestone", + Self::MossyCobblestoneSlab => "mossy_cobblestone_slab", + Self::MossyCobblestoneStairs => "mossy_cobblestone_stairs", + Self::MossyCobblestoneWall => "mossy_cobblestone_wall", + Self::MossyStoneBrickSlab => "mossy_stone_brick_slab", + Self::MossyStoneBrickStairs => "mossy_stone_brick_stairs", + Self::MossyStoneBrickWall => "mossy_stone_brick_wall", + Self::MossyStoneBricks => "mossy_stone_bricks", + Self::MournerPotterySherd => "mourner_pottery_sherd", + Self::Mud => "mud", + Self::MudBrickSlab => "mud_brick_slab", + Self::MudBrickStairs => "mud_brick_stairs", + Self::MudBrickWall => "mud_brick_wall", + Self::MudBricks => "mud_bricks", + Self::MuddyMangroveRoots => "muddy_mangrove_roots", + Self::MuleSpawnEgg => "mule_spawn_egg", + Self::MushroomStem => "mushroom_stem", + Self::MushroomStew => "mushroom_stew", + Self::MusicDisc11 => "music_disc_11", + Self::MusicDisc13 => "music_disc_13", + Self::MusicDisc5 => "music_disc_5", + Self::MusicDiscBlocks => "music_disc_blocks", + Self::MusicDiscBounce => "music_disc_bounce", + Self::MusicDiscCat => "music_disc_cat", + Self::MusicDiscChirp => "music_disc_chirp", + Self::MusicDiscCreator => "music_disc_creator", + Self::MusicDiscCreatorMusicBox => "music_disc_creator_music_box", + Self::MusicDiscFar => "music_disc_far", + Self::MusicDiscLavaChicken => "music_disc_lava_chicken", + Self::MusicDiscMall => "music_disc_mall", + Self::MusicDiscMellohi => "music_disc_mellohi", + Self::MusicDiscOtherside => "music_disc_otherside", + Self::MusicDiscPigstep => "music_disc_pigstep", + Self::MusicDiscPrecipice => "music_disc_precipice", + Self::MusicDiscRelic => "music_disc_relic", + Self::MusicDiscStal => "music_disc_stal", + Self::MusicDiscStrad => "music_disc_strad", + Self::MusicDiscTears => "music_disc_tears", + Self::MusicDiscWait => "music_disc_wait", + Self::MusicDiscWard => "music_disc_ward", + Self::Mutton => "mutton", + Self::Mycelium => "mycelium", + Self::NameTag => "name_tag", + Self::NautilusShell => "nautilus_shell", + Self::NautilusSpawnEgg => "nautilus_spawn_egg", + Self::NetherBrick => "nether_brick", + Self::NetherBrickFence => "nether_brick_fence", + Self::NetherBrickSlab => "nether_brick_slab", + Self::NetherBrickStairs => "nether_brick_stairs", + Self::NetherBrickWall => "nether_brick_wall", + Self::NetherBricks => "nether_bricks", + Self::NetherGoldOre => "nether_gold_ore", + Self::NetherQuartzOre => "nether_quartz_ore", + Self::NetherSprouts => "nether_sprouts", + Self::NetherStar => "nether_star", + Self::NetherWart => "nether_wart", + Self::NetherWartBlock => "nether_wart_block", + Self::NetheriteAxe => "netherite_axe", + Self::NetheriteBlock => "netherite_block", + Self::NetheriteBoots => "netherite_boots", + Self::NetheriteChestplate => "netherite_chestplate", + Self::NetheriteHelmet => "netherite_helmet", + Self::NetheriteHoe => "netherite_hoe", + Self::NetheriteHorseArmor => "netherite_horse_armor", + Self::NetheriteIngot => "netherite_ingot", + Self::NetheriteLeggings => "netherite_leggings", + Self::NetheriteNautilusArmor => "netherite_nautilus_armor", + Self::NetheritePickaxe => "netherite_pickaxe", + Self::NetheriteScrap => "netherite_scrap", + Self::NetheriteShovel => "netherite_shovel", + Self::NetheriteSpear => "netherite_spear", + Self::NetheriteSword => "netherite_sword", + Self::NetheriteUpgradeSmithingTemplate => "netherite_upgrade_smithing_template", + Self::Netherrack => "netherrack", + Self::NoteBlock => "note_block", + Self::OakBoat => "oak_boat", + Self::OakButton => "oak_button", + Self::OakChestBoat => "oak_chest_boat", + Self::OakDoor => "oak_door", + Self::OakFence => "oak_fence", + Self::OakFenceGate => "oak_fence_gate", + Self::OakHangingSign => "oak_hanging_sign", + Self::OakLeaves => "oak_leaves", + Self::OakLog => "oak_log", + Self::OakPlanks => "oak_planks", + Self::OakPressurePlate => "oak_pressure_plate", + Self::OakSapling => "oak_sapling", + Self::OakShelf => "oak_shelf", + Self::OakSign => "oak_sign", + Self::OakSlab => "oak_slab", + Self::OakStairs => "oak_stairs", + Self::OakTrapdoor => "oak_trapdoor", + Self::OakWood => "oak_wood", + Self::Observer => "observer", + Self::Obsidian => "obsidian", + Self::OcelotSpawnEgg => "ocelot_spawn_egg", + Self::OchreFroglight => "ochre_froglight", + Self::OminousBottle => "ominous_bottle", + Self::OminousTrialKey => "ominous_trial_key", + Self::OpenEyeblossom => "open_eyeblossom", + Self::OrangeBanner => "orange_banner", + Self::OrangeBed => "orange_bed", + Self::OrangeBundle => "orange_bundle", + Self::OrangeCandle => "orange_candle", + Self::OrangeCarpet => "orange_carpet", + Self::OrangeConcrete => "orange_concrete", + Self::OrangeConcretePowder => "orange_concrete_powder", + Self::OrangeDye => "orange_dye", + Self::OrangeGlazedTerracotta => "orange_glazed_terracotta", + Self::OrangeHarness => "orange_harness", + Self::OrangeShulkerBox => "orange_shulker_box", + Self::OrangeStainedGlass => "orange_stained_glass", + Self::OrangeStainedGlassPane => "orange_stained_glass_pane", + Self::OrangeTerracotta => "orange_terracotta", + Self::OrangeTulip => "orange_tulip", + Self::OrangeWool => "orange_wool", + Self::OxeyeDaisy => "oxeye_daisy", + Self::OxidizedChiseledCopper => "oxidized_chiseled_copper", + Self::OxidizedCopper => "oxidized_copper", + Self::OxidizedCopperBars => "oxidized_copper_bars", + Self::OxidizedCopperBulb => "oxidized_copper_bulb", + Self::OxidizedCopperChain => "oxidized_copper_chain", + Self::OxidizedCopperChest => "oxidized_copper_chest", + Self::OxidizedCopperDoor => "oxidized_copper_door", + Self::OxidizedCopperGolemStatue => "oxidized_copper_golem_statue", + Self::OxidizedCopperGrate => "oxidized_copper_grate", + Self::OxidizedCopperLantern => "oxidized_copper_lantern", + Self::OxidizedCopperTrapdoor => "oxidized_copper_trapdoor", + Self::OxidizedCutCopper => "oxidized_cut_copper", + Self::OxidizedCutCopperSlab => "oxidized_cut_copper_slab", + Self::OxidizedCutCopperStairs => "oxidized_cut_copper_stairs", + Self::OxidizedLightningRod => "oxidized_lightning_rod", + Self::PackedIce => "packed_ice", + Self::PackedMud => "packed_mud", + Self::Painting => "painting", + Self::PaleHangingMoss => "pale_hanging_moss", + Self::PaleMossBlock => "pale_moss_block", + Self::PaleMossCarpet => "pale_moss_carpet", + Self::PaleOakBoat => "pale_oak_boat", + Self::PaleOakButton => "pale_oak_button", + Self::PaleOakChestBoat => "pale_oak_chest_boat", + Self::PaleOakDoor => "pale_oak_door", + Self::PaleOakFence => "pale_oak_fence", + Self::PaleOakFenceGate => "pale_oak_fence_gate", + Self::PaleOakHangingSign => "pale_oak_hanging_sign", + Self::PaleOakLeaves => "pale_oak_leaves", + Self::PaleOakLog => "pale_oak_log", + Self::PaleOakPlanks => "pale_oak_planks", + Self::PaleOakPressurePlate => "pale_oak_pressure_plate", + Self::PaleOakSapling => "pale_oak_sapling", + Self::PaleOakShelf => "pale_oak_shelf", + Self::PaleOakSign => "pale_oak_sign", + Self::PaleOakSlab => "pale_oak_slab", + Self::PaleOakStairs => "pale_oak_stairs", + Self::PaleOakTrapdoor => "pale_oak_trapdoor", + Self::PaleOakWood => "pale_oak_wood", + Self::PandaSpawnEgg => "panda_spawn_egg", + Self::Paper => "paper", + Self::ParchedSpawnEgg => "parched_spawn_egg", + Self::ParrotSpawnEgg => "parrot_spawn_egg", + Self::PearlescentFroglight => "pearlescent_froglight", + Self::Peony => "peony", + Self::PetrifiedOakSlab => "petrified_oak_slab", + Self::PhantomMembrane => "phantom_membrane", + Self::PhantomSpawnEgg => "phantom_spawn_egg", + Self::PigSpawnEgg => "pig_spawn_egg", + Self::PiglinBannerPattern => "piglin_banner_pattern", + Self::PiglinBruteSpawnEgg => "piglin_brute_spawn_egg", + Self::PiglinHead => "piglin_head", + Self::PiglinSpawnEgg => "piglin_spawn_egg", + Self::PillagerSpawnEgg => "pillager_spawn_egg", + Self::PinkBanner => "pink_banner", + Self::PinkBed => "pink_bed", + Self::PinkBundle => "pink_bundle", + Self::PinkCandle => "pink_candle", + Self::PinkCarpet => "pink_carpet", + Self::PinkConcrete => "pink_concrete", + Self::PinkConcretePowder => "pink_concrete_powder", + Self::PinkDye => "pink_dye", + Self::PinkGlazedTerracotta => "pink_glazed_terracotta", + Self::PinkHarness => "pink_harness", + Self::PinkPetals => "pink_petals", + Self::PinkShulkerBox => "pink_shulker_box", + Self::PinkStainedGlass => "pink_stained_glass", + Self::PinkStainedGlassPane => "pink_stained_glass_pane", + Self::PinkTerracotta => "pink_terracotta", + Self::PinkTulip => "pink_tulip", + Self::PinkWool => "pink_wool", + Self::Piston => "piston", + Self::PitcherPlant => "pitcher_plant", + Self::PitcherPod => "pitcher_pod", + Self::PlayerHead => "player_head", + Self::PlentyPotterySherd => "plenty_pottery_sherd", + Self::Podzol => "podzol", + Self::PointedDripstone => "pointed_dripstone", + Self::PoisonousPotato => "poisonous_potato", + Self::PolarBearSpawnEgg => "polar_bear_spawn_egg", + Self::PolishedAndesite => "polished_andesite", + Self::PolishedAndesiteSlab => "polished_andesite_slab", + Self::PolishedAndesiteStairs => "polished_andesite_stairs", + Self::PolishedBasalt => "polished_basalt", + Self::PolishedBlackstone => "polished_blackstone", + Self::PolishedBlackstoneBrickSlab => "polished_blackstone_brick_slab", + Self::PolishedBlackstoneBrickStairs => "polished_blackstone_brick_stairs", + Self::PolishedBlackstoneBrickWall => "polished_blackstone_brick_wall", + Self::PolishedBlackstoneBricks => "polished_blackstone_bricks", + Self::PolishedBlackstoneButton => "polished_blackstone_button", + Self::PolishedBlackstonePressurePlate => "polished_blackstone_pressure_plate", + Self::PolishedBlackstoneSlab => "polished_blackstone_slab", + Self::PolishedBlackstoneStairs => "polished_blackstone_stairs", + Self::PolishedBlackstoneWall => "polished_blackstone_wall", + Self::PolishedCinnabar => "polished_cinnabar", + Self::PolishedCinnabarSlab => "polished_cinnabar_slab", + Self::PolishedCinnabarStairs => "polished_cinnabar_stairs", + Self::PolishedCinnabarWall => "polished_cinnabar_wall", + Self::PolishedDeepslate => "polished_deepslate", + Self::PolishedDeepslateSlab => "polished_deepslate_slab", + Self::PolishedDeepslateStairs => "polished_deepslate_stairs", + Self::PolishedDeepslateWall => "polished_deepslate_wall", + Self::PolishedDiorite => "polished_diorite", + Self::PolishedDioriteSlab => "polished_diorite_slab", + Self::PolishedDioriteStairs => "polished_diorite_stairs", + Self::PolishedGranite => "polished_granite", + Self::PolishedGraniteSlab => "polished_granite_slab", + Self::PolishedGraniteStairs => "polished_granite_stairs", + Self::PolishedSulfur => "polished_sulfur", + Self::PolishedSulfurSlab => "polished_sulfur_slab", + Self::PolishedSulfurStairs => "polished_sulfur_stairs", + Self::PolishedSulfurWall => "polished_sulfur_wall", + Self::PolishedTuff => "polished_tuff", + Self::PolishedTuffSlab => "polished_tuff_slab", + Self::PolishedTuffStairs => "polished_tuff_stairs", + Self::PolishedTuffWall => "polished_tuff_wall", + Self::PoppedChorusFruit => "popped_chorus_fruit", + Self::Poppy => "poppy", + Self::Porkchop => "porkchop", + Self::Potato => "potato", + Self::PotentSulfur => "potent_sulfur", + Self::Potion => "potion", + Self::PowderSnowBucket => "powder_snow_bucket", + Self::PoweredRail => "powered_rail", + Self::Prismarine => "prismarine", + Self::PrismarineBrickSlab => "prismarine_brick_slab", + Self::PrismarineBrickStairs => "prismarine_brick_stairs", + Self::PrismarineBricks => "prismarine_bricks", + Self::PrismarineCrystals => "prismarine_crystals", + Self::PrismarineShard => "prismarine_shard", + Self::PrismarineSlab => "prismarine_slab", + Self::PrismarineStairs => "prismarine_stairs", + Self::PrismarineWall => "prismarine_wall", + Self::PrizePotterySherd => "prize_pottery_sherd", + Self::Pufferfish => "pufferfish", + Self::PufferfishBucket => "pufferfish_bucket", + Self::PufferfishSpawnEgg => "pufferfish_spawn_egg", + Self::Pumpkin => "pumpkin", + Self::PumpkinPie => "pumpkin_pie", + Self::PumpkinSeeds => "pumpkin_seeds", + Self::PurpleBanner => "purple_banner", + Self::PurpleBed => "purple_bed", + Self::PurpleBundle => "purple_bundle", + Self::PurpleCandle => "purple_candle", + Self::PurpleCarpet => "purple_carpet", + Self::PurpleConcrete => "purple_concrete", + Self::PurpleConcretePowder => "purple_concrete_powder", + Self::PurpleDye => "purple_dye", + Self::PurpleGlazedTerracotta => "purple_glazed_terracotta", + Self::PurpleHarness => "purple_harness", + Self::PurpleShulkerBox => "purple_shulker_box", + Self::PurpleStainedGlass => "purple_stained_glass", + Self::PurpleStainedGlassPane => "purple_stained_glass_pane", + Self::PurpleTerracotta => "purple_terracotta", + Self::PurpleWool => "purple_wool", + Self::PurpurBlock => "purpur_block", + Self::PurpurPillar => "purpur_pillar", + Self::PurpurSlab => "purpur_slab", + Self::PurpurStairs => "purpur_stairs", + Self::Quartz => "quartz", + Self::QuartzBlock => "quartz_block", + Self::QuartzBricks => "quartz_bricks", + Self::QuartzPillar => "quartz_pillar", + Self::QuartzSlab => "quartz_slab", + Self::QuartzStairs => "quartz_stairs", + Self::Rabbit => "rabbit", + Self::RabbitFoot => "rabbit_foot", + Self::RabbitHide => "rabbit_hide", + Self::RabbitSpawnEgg => "rabbit_spawn_egg", + Self::RabbitStew => "rabbit_stew", + Self::Rail => "rail", + Self::RaiserArmorTrimSmithingTemplate => "raiser_armor_trim_smithing_template", + Self::RavagerSpawnEgg => "ravager_spawn_egg", + Self::RawCopper => "raw_copper", + Self::RawCopperBlock => "raw_copper_block", + Self::RawGold => "raw_gold", + Self::RawGoldBlock => "raw_gold_block", + Self::RawIron => "raw_iron", + Self::RawIronBlock => "raw_iron_block", + Self::RecoveryCompass => "recovery_compass", + Self::RedBanner => "red_banner", + Self::RedBed => "red_bed", + Self::RedBundle => "red_bundle", + Self::RedCandle => "red_candle", + Self::RedCarpet => "red_carpet", + Self::RedConcrete => "red_concrete", + Self::RedConcretePowder => "red_concrete_powder", + Self::RedDye => "red_dye", + Self::RedGlazedTerracotta => "red_glazed_terracotta", + Self::RedHarness => "red_harness", + Self::RedMushroom => "red_mushroom", + Self::RedMushroomBlock => "red_mushroom_block", + Self::RedNetherBrickSlab => "red_nether_brick_slab", + Self::RedNetherBrickStairs => "red_nether_brick_stairs", + Self::RedNetherBrickWall => "red_nether_brick_wall", + Self::RedNetherBricks => "red_nether_bricks", + Self::RedSand => "red_sand", + Self::RedSandstone => "red_sandstone", + Self::RedSandstoneSlab => "red_sandstone_slab", + Self::RedSandstoneStairs => "red_sandstone_stairs", + Self::RedSandstoneWall => "red_sandstone_wall", + Self::RedShulkerBox => "red_shulker_box", + Self::RedStainedGlass => "red_stained_glass", + Self::RedStainedGlassPane => "red_stained_glass_pane", + Self::RedTerracotta => "red_terracotta", + Self::RedTulip => "red_tulip", + Self::RedWool => "red_wool", + Self::Redstone => "redstone", + Self::RedstoneBlock => "redstone_block", + Self::RedstoneLamp => "redstone_lamp", + Self::RedstoneOre => "redstone_ore", + Self::RedstoneTorch => "redstone_torch", + Self::ReinforcedDeepslate => "reinforced_deepslate", + Self::Repeater => "repeater", + Self::RepeatingCommandBlock => "repeating_command_block", + Self::ResinBlock => "resin_block", + Self::ResinBrick => "resin_brick", + Self::ResinBrickSlab => "resin_brick_slab", + Self::ResinBrickStairs => "resin_brick_stairs", + Self::ResinBrickWall => "resin_brick_wall", + Self::ResinBricks => "resin_bricks", + Self::ResinClump => "resin_clump", + Self::RespawnAnchor => "respawn_anchor", + Self::RibArmorTrimSmithingTemplate => "rib_armor_trim_smithing_template", + Self::RootedDirt => "rooted_dirt", + Self::RoseBush => "rose_bush", + Self::RottenFlesh => "rotten_flesh", + Self::Saddle => "saddle", + Self::Salmon => "salmon", + Self::SalmonBucket => "salmon_bucket", + Self::SalmonSpawnEgg => "salmon_spawn_egg", + Self::Sand => "sand", + Self::Sandstone => "sandstone", + Self::SandstoneSlab => "sandstone_slab", + Self::SandstoneStairs => "sandstone_stairs", + Self::SandstoneWall => "sandstone_wall", + Self::Scaffolding => "scaffolding", + Self::ScrapePotterySherd => "scrape_pottery_sherd", + Self::Sculk => "sculk", + Self::SculkCatalyst => "sculk_catalyst", + Self::SculkSensor => "sculk_sensor", + Self::SculkShrieker => "sculk_shrieker", + Self::SculkVein => "sculk_vein", + Self::SeaLantern => "sea_lantern", + Self::SeaPickle => "sea_pickle", + Self::Seagrass => "seagrass", + Self::SentryArmorTrimSmithingTemplate => "sentry_armor_trim_smithing_template", + Self::ShaperArmorTrimSmithingTemplate => "shaper_armor_trim_smithing_template", + Self::SheafPotterySherd => "sheaf_pottery_sherd", + Self::Shears => "shears", + Self::SheepSpawnEgg => "sheep_spawn_egg", + Self::ShelterPotterySherd => "shelter_pottery_sherd", + Self::Shield => "shield", + Self::ShortDryGrass => "short_dry_grass", + Self::ShortGrass => "short_grass", + Self::Shroomlight => "shroomlight", + Self::ShulkerBox => "shulker_box", + Self::ShulkerShell => "shulker_shell", + Self::ShulkerSpawnEgg => "shulker_spawn_egg", + Self::SilenceArmorTrimSmithingTemplate => "silence_armor_trim_smithing_template", + Self::SilverfishSpawnEgg => "silverfish_spawn_egg", + Self::SkeletonHorseSpawnEgg => "skeleton_horse_spawn_egg", + Self::SkeletonSkull => "skeleton_skull", + Self::SkeletonSpawnEgg => "skeleton_spawn_egg", + Self::SkullBannerPattern => "skull_banner_pattern", + Self::SkullPotterySherd => "skull_pottery_sherd", + Self::SlimeBall => "slime_ball", + Self::SlimeBlock => "slime_block", + Self::SlimeSpawnEgg => "slime_spawn_egg", + Self::SmallAmethystBud => "small_amethyst_bud", + Self::SmallDripleaf => "small_dripleaf", + Self::SmithingTable => "smithing_table", + Self::Smoker => "smoker", + Self::SmoothBasalt => "smooth_basalt", + Self::SmoothQuartz => "smooth_quartz", + Self::SmoothQuartzSlab => "smooth_quartz_slab", + Self::SmoothQuartzStairs => "smooth_quartz_stairs", + Self::SmoothRedSandstone => "smooth_red_sandstone", + Self::SmoothRedSandstoneSlab => "smooth_red_sandstone_slab", + Self::SmoothRedSandstoneStairs => "smooth_red_sandstone_stairs", + Self::SmoothSandstone => "smooth_sandstone", + Self::SmoothSandstoneSlab => "smooth_sandstone_slab", + Self::SmoothSandstoneStairs => "smooth_sandstone_stairs", + Self::SmoothStone => "smooth_stone", + Self::SmoothStoneSlab => "smooth_stone_slab", + Self::SnifferEgg => "sniffer_egg", + Self::SnifferSpawnEgg => "sniffer_spawn_egg", + Self::SnortPotterySherd => "snort_pottery_sherd", + Self::SnoutArmorTrimSmithingTemplate => "snout_armor_trim_smithing_template", + Self::Snow => "snow", + Self::SnowBlock => "snow_block", + Self::SnowGolemSpawnEgg => "snow_golem_spawn_egg", + Self::Snowball => "snowball", + Self::SoulCampfire => "soul_campfire", + Self::SoulLantern => "soul_lantern", + Self::SoulSand => "soul_sand", + Self::SoulSoil => "soul_soil", + Self::SoulTorch => "soul_torch", + Self::Spawner => "spawner", + Self::SpectralArrow => "spectral_arrow", + Self::SpiderEye => "spider_eye", + Self::SpiderSpawnEgg => "spider_spawn_egg", + Self::SpireArmorTrimSmithingTemplate => "spire_armor_trim_smithing_template", + Self::SplashPotion => "splash_potion", + Self::Sponge => "sponge", + Self::SporeBlossom => "spore_blossom", + Self::SpruceBoat => "spruce_boat", + Self::SpruceButton => "spruce_button", + Self::SpruceChestBoat => "spruce_chest_boat", + Self::SpruceDoor => "spruce_door", + Self::SpruceFence => "spruce_fence", + Self::SpruceFenceGate => "spruce_fence_gate", + Self::SpruceHangingSign => "spruce_hanging_sign", + Self::SpruceLeaves => "spruce_leaves", + Self::SpruceLog => "spruce_log", + Self::SprucePlanks => "spruce_planks", + Self::SprucePressurePlate => "spruce_pressure_plate", + Self::SpruceSapling => "spruce_sapling", + Self::SpruceShelf => "spruce_shelf", + Self::SpruceSign => "spruce_sign", + Self::SpruceSlab => "spruce_slab", + Self::SpruceStairs => "spruce_stairs", + Self::SpruceTrapdoor => "spruce_trapdoor", + Self::SpruceWood => "spruce_wood", + Self::Spyglass => "spyglass", + Self::SquidSpawnEgg => "squid_spawn_egg", + Self::Stick => "stick", + Self::StickyPiston => "sticky_piston", + Self::Stone => "stone", + Self::StoneAxe => "stone_axe", + Self::StoneBrickSlab => "stone_brick_slab", + Self::StoneBrickStairs => "stone_brick_stairs", + Self::StoneBrickWall => "stone_brick_wall", + Self::StoneBricks => "stone_bricks", + Self::StoneButton => "stone_button", + Self::StoneHoe => "stone_hoe", + Self::StonePickaxe => "stone_pickaxe", + Self::StonePressurePlate => "stone_pressure_plate", + Self::StoneShovel => "stone_shovel", + Self::StoneSlab => "stone_slab", + Self::StoneSpear => "stone_spear", + Self::StoneStairs => "stone_stairs", + Self::StoneSword => "stone_sword", + Self::Stonecutter => "stonecutter", + Self::StraySpawnEgg => "stray_spawn_egg", + Self::StriderSpawnEgg => "strider_spawn_egg", + Self::String => "string", + Self::StrippedAcaciaLog => "stripped_acacia_log", + Self::StrippedAcaciaWood => "stripped_acacia_wood", + Self::StrippedBambooBlock => "stripped_bamboo_block", + Self::StrippedBirchLog => "stripped_birch_log", + Self::StrippedBirchWood => "stripped_birch_wood", + Self::StrippedCherryLog => "stripped_cherry_log", + Self::StrippedCherryWood => "stripped_cherry_wood", + Self::StrippedCrimsonHyphae => "stripped_crimson_hyphae", + Self::StrippedCrimsonStem => "stripped_crimson_stem", + Self::StrippedDarkOakLog => "stripped_dark_oak_log", + Self::StrippedDarkOakWood => "stripped_dark_oak_wood", + Self::StrippedJungleLog => "stripped_jungle_log", + Self::StrippedJungleWood => "stripped_jungle_wood", + Self::StrippedMangroveLog => "stripped_mangrove_log", + Self::StrippedMangroveWood => "stripped_mangrove_wood", + Self::StrippedOakLog => "stripped_oak_log", + Self::StrippedOakWood => "stripped_oak_wood", + Self::StrippedPaleOakLog => "stripped_pale_oak_log", + Self::StrippedPaleOakWood => "stripped_pale_oak_wood", + Self::StrippedSpruceLog => "stripped_spruce_log", + Self::StrippedSpruceWood => "stripped_spruce_wood", + Self::StrippedWarpedHyphae => "stripped_warped_hyphae", + Self::StrippedWarpedStem => "stripped_warped_stem", + Self::StructureBlock => "structure_block", + Self::StructureVoid => "structure_void", + Self::Sugar => "sugar", + Self::SugarCane => "sugar_cane", + Self::Sulfur => "sulfur", + Self::SulfurBrickSlab => "sulfur_brick_slab", + Self::SulfurBrickStairs => "sulfur_brick_stairs", + Self::SulfurBrickWall => "sulfur_brick_wall", + Self::SulfurBricks => "sulfur_bricks", + Self::SulfurCubeBucket => "sulfur_cube_bucket", + Self::SulfurCubeSpawnEgg => "sulfur_cube_spawn_egg", + Self::SulfurSlab => "sulfur_slab", + Self::SulfurSpike => "sulfur_spike", + Self::SulfurStairs => "sulfur_stairs", + Self::SulfurWall => "sulfur_wall", + Self::Sunflower => "sunflower", + Self::SuspiciousGravel => "suspicious_gravel", + Self::SuspiciousSand => "suspicious_sand", + Self::SuspiciousStew => "suspicious_stew", + Self::SweetBerries => "sweet_berries", + Self::TadpoleBucket => "tadpole_bucket", + Self::TadpoleSpawnEgg => "tadpole_spawn_egg", + Self::TallDryGrass => "tall_dry_grass", + Self::TallGrass => "tall_grass", + Self::Target => "target", + Self::Terracotta => "terracotta", + Self::TestBlock => "test_block", + Self::TestInstanceBlock => "test_instance_block", + Self::TideArmorTrimSmithingTemplate => "tide_armor_trim_smithing_template", + Self::TintedGlass => "tinted_glass", + Self::TippedArrow => "tipped_arrow", + Self::Tnt => "tnt", + Self::TntMinecart => "tnt_minecart", + Self::Torch => "torch", + Self::Torchflower => "torchflower", + Self::TorchflowerSeeds => "torchflower_seeds", + Self::TotemOfUndying => "totem_of_undying", + Self::TraderLlamaSpawnEgg => "trader_llama_spawn_egg", + Self::TrappedChest => "trapped_chest", + Self::TrialKey => "trial_key", + Self::TrialSpawner => "trial_spawner", + Self::Trident => "trident", + Self::TripwireHook => "tripwire_hook", + Self::TropicalFish => "tropical_fish", + Self::TropicalFishBucket => "tropical_fish_bucket", + Self::TropicalFishSpawnEgg => "tropical_fish_spawn_egg", + Self::TubeCoral => "tube_coral", + Self::TubeCoralBlock => "tube_coral_block", + Self::TubeCoralFan => "tube_coral_fan", + Self::Tuff => "tuff", + Self::TuffBrickSlab => "tuff_brick_slab", + Self::TuffBrickStairs => "tuff_brick_stairs", + Self::TuffBrickWall => "tuff_brick_wall", + Self::TuffBricks => "tuff_bricks", + Self::TuffSlab => "tuff_slab", + Self::TuffStairs => "tuff_stairs", + Self::TuffWall => "tuff_wall", + Self::TurtleEgg => "turtle_egg", + Self::TurtleHelmet => "turtle_helmet", + Self::TurtleScute => "turtle_scute", + Self::TurtleSpawnEgg => "turtle_spawn_egg", + Self::TwistingVines => "twisting_vines", + Self::Vault => "vault", + Self::VerdantFroglight => "verdant_froglight", + Self::VexArmorTrimSmithingTemplate => "vex_armor_trim_smithing_template", + Self::VexSpawnEgg => "vex_spawn_egg", + Self::VillagerSpawnEgg => "villager_spawn_egg", + Self::VindicatorSpawnEgg => "vindicator_spawn_egg", + Self::Vine => "vine", + Self::WanderingTraderSpawnEgg => "wandering_trader_spawn_egg", + Self::WardArmorTrimSmithingTemplate => "ward_armor_trim_smithing_template", + Self::WardenSpawnEgg => "warden_spawn_egg", + Self::WarpedButton => "warped_button", + Self::WarpedDoor => "warped_door", + Self::WarpedFence => "warped_fence", + Self::WarpedFenceGate => "warped_fence_gate", + Self::WarpedFungus => "warped_fungus", + Self::WarpedFungusOnAStick => "warped_fungus_on_a_stick", + Self::WarpedHangingSign => "warped_hanging_sign", + Self::WarpedHyphae => "warped_hyphae", + Self::WarpedNylium => "warped_nylium", + Self::WarpedPlanks => "warped_planks", + Self::WarpedPressurePlate => "warped_pressure_plate", + Self::WarpedRoots => "warped_roots", + Self::WarpedShelf => "warped_shelf", + Self::WarpedSign => "warped_sign", + Self::WarpedSlab => "warped_slab", + Self::WarpedStairs => "warped_stairs", + Self::WarpedStem => "warped_stem", + Self::WarpedTrapdoor => "warped_trapdoor", + Self::WarpedWartBlock => "warped_wart_block", + Self::WaterBucket => "water_bucket", + Self::WaxedChiseledCopper => "waxed_chiseled_copper", + Self::WaxedCopperBars => "waxed_copper_bars", + Self::WaxedCopperBlock => "waxed_copper_block", + Self::WaxedCopperBulb => "waxed_copper_bulb", + Self::WaxedCopperChain => "waxed_copper_chain", + Self::WaxedCopperChest => "waxed_copper_chest", + Self::WaxedCopperDoor => "waxed_copper_door", + Self::WaxedCopperGolemStatue => "waxed_copper_golem_statue", + Self::WaxedCopperGrate => "waxed_copper_grate", + Self::WaxedCopperLantern => "waxed_copper_lantern", + Self::WaxedCopperTrapdoor => "waxed_copper_trapdoor", + Self::WaxedCutCopper => "waxed_cut_copper", + Self::WaxedCutCopperSlab => "waxed_cut_copper_slab", + Self::WaxedCutCopperStairs => "waxed_cut_copper_stairs", + Self::WaxedExposedChiseledCopper => "waxed_exposed_chiseled_copper", + Self::WaxedExposedCopper => "waxed_exposed_copper", + Self::WaxedExposedCopperBars => "waxed_exposed_copper_bars", + Self::WaxedExposedCopperBulb => "waxed_exposed_copper_bulb", + Self::WaxedExposedCopperChain => "waxed_exposed_copper_chain", + Self::WaxedExposedCopperChest => "waxed_exposed_copper_chest", + Self::WaxedExposedCopperDoor => "waxed_exposed_copper_door", + Self::WaxedExposedCopperGolemStatue => "waxed_exposed_copper_golem_statue", + Self::WaxedExposedCopperGrate => "waxed_exposed_copper_grate", + Self::WaxedExposedCopperLantern => "waxed_exposed_copper_lantern", + Self::WaxedExposedCopperTrapdoor => "waxed_exposed_copper_trapdoor", + Self::WaxedExposedCutCopper => "waxed_exposed_cut_copper", + Self::WaxedExposedCutCopperSlab => "waxed_exposed_cut_copper_slab", + Self::WaxedExposedCutCopperStairs => "waxed_exposed_cut_copper_stairs", + Self::WaxedExposedLightningRod => "waxed_exposed_lightning_rod", + Self::WaxedLightningRod => "waxed_lightning_rod", + Self::WaxedOxidizedChiseledCopper => "waxed_oxidized_chiseled_copper", + Self::WaxedOxidizedCopper => "waxed_oxidized_copper", + Self::WaxedOxidizedCopperBars => "waxed_oxidized_copper_bars", + Self::WaxedOxidizedCopperBulb => "waxed_oxidized_copper_bulb", + Self::WaxedOxidizedCopperChain => "waxed_oxidized_copper_chain", + Self::WaxedOxidizedCopperChest => "waxed_oxidized_copper_chest", + Self::WaxedOxidizedCopperDoor => "waxed_oxidized_copper_door", + Self::WaxedOxidizedCopperGolemStatue => "waxed_oxidized_copper_golem_statue", + Self::WaxedOxidizedCopperGrate => "waxed_oxidized_copper_grate", + Self::WaxedOxidizedCopperLantern => "waxed_oxidized_copper_lantern", + Self::WaxedOxidizedCopperTrapdoor => "waxed_oxidized_copper_trapdoor", + Self::WaxedOxidizedCutCopper => "waxed_oxidized_cut_copper", + Self::WaxedOxidizedCutCopperSlab => "waxed_oxidized_cut_copper_slab", + Self::WaxedOxidizedCutCopperStairs => "waxed_oxidized_cut_copper_stairs", + Self::WaxedOxidizedLightningRod => "waxed_oxidized_lightning_rod", + Self::WaxedWeatheredChiseledCopper => "waxed_weathered_chiseled_copper", + Self::WaxedWeatheredCopper => "waxed_weathered_copper", + Self::WaxedWeatheredCopperBars => "waxed_weathered_copper_bars", + Self::WaxedWeatheredCopperBulb => "waxed_weathered_copper_bulb", + Self::WaxedWeatheredCopperChain => "waxed_weathered_copper_chain", + Self::WaxedWeatheredCopperChest => "waxed_weathered_copper_chest", + Self::WaxedWeatheredCopperDoor => "waxed_weathered_copper_door", + Self::WaxedWeatheredCopperGolemStatue => "waxed_weathered_copper_golem_statue", + Self::WaxedWeatheredCopperGrate => "waxed_weathered_copper_grate", + Self::WaxedWeatheredCopperLantern => "waxed_weathered_copper_lantern", + Self::WaxedWeatheredCopperTrapdoor => "waxed_weathered_copper_trapdoor", + Self::WaxedWeatheredCutCopper => "waxed_weathered_cut_copper", + Self::WaxedWeatheredCutCopperSlab => "waxed_weathered_cut_copper_slab", + Self::WaxedWeatheredCutCopperStairs => "waxed_weathered_cut_copper_stairs", + Self::WaxedWeatheredLightningRod => "waxed_weathered_lightning_rod", + Self::WayfinderArmorTrimSmithingTemplate => "wayfinder_armor_trim_smithing_template", + Self::WeatheredChiseledCopper => "weathered_chiseled_copper", + Self::WeatheredCopper => "weathered_copper", + Self::WeatheredCopperBars => "weathered_copper_bars", + Self::WeatheredCopperBulb => "weathered_copper_bulb", + Self::WeatheredCopperChain => "weathered_copper_chain", + Self::WeatheredCopperChest => "weathered_copper_chest", + Self::WeatheredCopperDoor => "weathered_copper_door", + Self::WeatheredCopperGolemStatue => "weathered_copper_golem_statue", + Self::WeatheredCopperGrate => "weathered_copper_grate", + Self::WeatheredCopperLantern => "weathered_copper_lantern", + Self::WeatheredCopperTrapdoor => "weathered_copper_trapdoor", + Self::WeatheredCutCopper => "weathered_cut_copper", + Self::WeatheredCutCopperSlab => "weathered_cut_copper_slab", + Self::WeatheredCutCopperStairs => "weathered_cut_copper_stairs", + Self::WeatheredLightningRod => "weathered_lightning_rod", + Self::WeepingVines => "weeping_vines", + Self::WetSponge => "wet_sponge", + Self::Wheat => "wheat", + Self::WheatSeeds => "wheat_seeds", + Self::WhiteBanner => "white_banner", + Self::WhiteBed => "white_bed", + Self::WhiteBundle => "white_bundle", + Self::WhiteCandle => "white_candle", + Self::WhiteCarpet => "white_carpet", + Self::WhiteConcrete => "white_concrete", + Self::WhiteConcretePowder => "white_concrete_powder", + Self::WhiteDye => "white_dye", + Self::WhiteGlazedTerracotta => "white_glazed_terracotta", + Self::WhiteHarness => "white_harness", + Self::WhiteShulkerBox => "white_shulker_box", + Self::WhiteStainedGlass => "white_stained_glass", + Self::WhiteStainedGlassPane => "white_stained_glass_pane", + Self::WhiteTerracotta => "white_terracotta", + Self::WhiteTulip => "white_tulip", + Self::WhiteWool => "white_wool", + Self::WildArmorTrimSmithingTemplate => "wild_armor_trim_smithing_template", + Self::Wildflowers => "wildflowers", + Self::WindCharge => "wind_charge", + Self::WitchSpawnEgg => "witch_spawn_egg", + Self::WitherRose => "wither_rose", + Self::WitherSkeletonSkull => "wither_skeleton_skull", + Self::WitherSkeletonSpawnEgg => "wither_skeleton_spawn_egg", + Self::WitherSpawnEgg => "wither_spawn_egg", + Self::WolfArmor => "wolf_armor", + Self::WolfSpawnEgg => "wolf_spawn_egg", + Self::WoodenAxe => "wooden_axe", + Self::WoodenHoe => "wooden_hoe", + Self::WoodenPickaxe => "wooden_pickaxe", + Self::WoodenShovel => "wooden_shovel", + Self::WoodenSpear => "wooden_spear", + Self::WoodenSword => "wooden_sword", + Self::WritableBook => "writable_book", + Self::WrittenBook => "written_book", + Self::YellowBanner => "yellow_banner", + Self::YellowBed => "yellow_bed", + Self::YellowBundle => "yellow_bundle", + Self::YellowCandle => "yellow_candle", + Self::YellowCarpet => "yellow_carpet", + Self::YellowConcrete => "yellow_concrete", + Self::YellowConcretePowder => "yellow_concrete_powder", + Self::YellowDye => "yellow_dye", + Self::YellowGlazedTerracotta => "yellow_glazed_terracotta", + Self::YellowHarness => "yellow_harness", + Self::YellowShulkerBox => "yellow_shulker_box", + Self::YellowStainedGlass => "yellow_stained_glass", + Self::YellowStainedGlassPane => "yellow_stained_glass_pane", + Self::YellowTerracotta => "yellow_terracotta", + Self::YellowWool => "yellow_wool", + Self::ZoglinSpawnEgg => "zoglin_spawn_egg", + Self::ZombieHead => "zombie_head", + Self::ZombieHorseSpawnEgg => "zombie_horse_spawn_egg", + Self::ZombieNautilusSpawnEgg => "zombie_nautilus_spawn_egg", + Self::ZombieSpawnEgg => "zombie_spawn_egg", + Self::ZombieVillagerSpawnEgg => "zombie_villager_spawn_egg", + Self::ZombifiedPiglinSpawnEgg => "zombified_piglin_spawn_egg", + } + } + + /// Returns the namespaced resource location (e.g. `"minecraft:diamond"`). + #[must_use] + pub const fn resource_location(&self) -> &'static str { + match self { + Self::AcaciaBoat => "minecraft:acacia_boat", + Self::AcaciaButton => "minecraft:acacia_button", + Self::AcaciaChestBoat => "minecraft:acacia_chest_boat", + Self::AcaciaDoor => "minecraft:acacia_door", + Self::AcaciaFence => "minecraft:acacia_fence", + Self::AcaciaFenceGate => "minecraft:acacia_fence_gate", + Self::AcaciaHangingSign => "minecraft:acacia_hanging_sign", + Self::AcaciaLeaves => "minecraft:acacia_leaves", + Self::AcaciaLog => "minecraft:acacia_log", + Self::AcaciaPlanks => "minecraft:acacia_planks", + Self::AcaciaPressurePlate => "minecraft:acacia_pressure_plate", + Self::AcaciaSapling => "minecraft:acacia_sapling", + Self::AcaciaShelf => "minecraft:acacia_shelf", + Self::AcaciaSign => "minecraft:acacia_sign", + Self::AcaciaSlab => "minecraft:acacia_slab", + Self::AcaciaStairs => "minecraft:acacia_stairs", + Self::AcaciaTrapdoor => "minecraft:acacia_trapdoor", + Self::AcaciaWood => "minecraft:acacia_wood", + Self::ActivatorRail => "minecraft:activator_rail", + Self::Air => "minecraft:air", + Self::AllaySpawnEgg => "minecraft:allay_spawn_egg", + Self::Allium => "minecraft:allium", + Self::AmethystBlock => "minecraft:amethyst_block", + Self::AmethystCluster => "minecraft:amethyst_cluster", + Self::AmethystShard => "minecraft:amethyst_shard", + Self::AncientDebris => "minecraft:ancient_debris", + Self::Andesite => "minecraft:andesite", + Self::AndesiteSlab => "minecraft:andesite_slab", + Self::AndesiteStairs => "minecraft:andesite_stairs", + Self::AndesiteWall => "minecraft:andesite_wall", + Self::AnglerPotterySherd => "minecraft:angler_pottery_sherd", + Self::Anvil => "minecraft:anvil", + Self::Apple => "minecraft:apple", + Self::ArcherPotterySherd => "minecraft:archer_pottery_sherd", + Self::ArmadilloScute => "minecraft:armadillo_scute", + Self::ArmadilloSpawnEgg => "minecraft:armadillo_spawn_egg", + Self::ArmorStand => "minecraft:armor_stand", + Self::ArmsUpPotterySherd => "minecraft:arms_up_pottery_sherd", + Self::Arrow => "minecraft:arrow", + Self::AxolotlBucket => "minecraft:axolotl_bucket", + Self::AxolotlSpawnEgg => "minecraft:axolotl_spawn_egg", + Self::Azalea => "minecraft:azalea", + Self::AzaleaLeaves => "minecraft:azalea_leaves", + Self::AzureBluet => "minecraft:azure_bluet", + Self::BakedPotato => "minecraft:baked_potato", + Self::Bamboo => "minecraft:bamboo", + Self::BambooBlock => "minecraft:bamboo_block", + Self::BambooButton => "minecraft:bamboo_button", + Self::BambooChestRaft => "minecraft:bamboo_chest_raft", + Self::BambooDoor => "minecraft:bamboo_door", + Self::BambooFence => "minecraft:bamboo_fence", + Self::BambooFenceGate => "minecraft:bamboo_fence_gate", + Self::BambooHangingSign => "minecraft:bamboo_hanging_sign", + Self::BambooMosaic => "minecraft:bamboo_mosaic", + Self::BambooMosaicSlab => "minecraft:bamboo_mosaic_slab", + Self::BambooMosaicStairs => "minecraft:bamboo_mosaic_stairs", + Self::BambooPlanks => "minecraft:bamboo_planks", + Self::BambooPressurePlate => "minecraft:bamboo_pressure_plate", + Self::BambooRaft => "minecraft:bamboo_raft", + Self::BambooShelf => "minecraft:bamboo_shelf", + Self::BambooSign => "minecraft:bamboo_sign", + Self::BambooSlab => "minecraft:bamboo_slab", + Self::BambooStairs => "minecraft:bamboo_stairs", + Self::BambooTrapdoor => "minecraft:bamboo_trapdoor", + Self::Barrel => "minecraft:barrel", + Self::Barrier => "minecraft:barrier", + Self::Basalt => "minecraft:basalt", + Self::BatSpawnEgg => "minecraft:bat_spawn_egg", + Self::Beacon => "minecraft:beacon", + Self::Bedrock => "minecraft:bedrock", + Self::BeeNest => "minecraft:bee_nest", + Self::BeeSpawnEgg => "minecraft:bee_spawn_egg", + Self::Beef => "minecraft:beef", + Self::Beehive => "minecraft:beehive", + Self::Beetroot => "minecraft:beetroot", + Self::BeetrootSeeds => "minecraft:beetroot_seeds", + Self::BeetrootSoup => "minecraft:beetroot_soup", + Self::Bell => "minecraft:bell", + Self::BigDripleaf => "minecraft:big_dripleaf", + Self::BirchBoat => "minecraft:birch_boat", + Self::BirchButton => "minecraft:birch_button", + Self::BirchChestBoat => "minecraft:birch_chest_boat", + Self::BirchDoor => "minecraft:birch_door", + Self::BirchFence => "minecraft:birch_fence", + Self::BirchFenceGate => "minecraft:birch_fence_gate", + Self::BirchHangingSign => "minecraft:birch_hanging_sign", + Self::BirchLeaves => "minecraft:birch_leaves", + Self::BirchLog => "minecraft:birch_log", + Self::BirchPlanks => "minecraft:birch_planks", + Self::BirchPressurePlate => "minecraft:birch_pressure_plate", + Self::BirchSapling => "minecraft:birch_sapling", + Self::BirchShelf => "minecraft:birch_shelf", + Self::BirchSign => "minecraft:birch_sign", + Self::BirchSlab => "minecraft:birch_slab", + Self::BirchStairs => "minecraft:birch_stairs", + Self::BirchTrapdoor => "minecraft:birch_trapdoor", + Self::BirchWood => "minecraft:birch_wood", + Self::BlackBanner => "minecraft:black_banner", + Self::BlackBed => "minecraft:black_bed", + Self::BlackBundle => "minecraft:black_bundle", + Self::BlackCandle => "minecraft:black_candle", + Self::BlackCarpet => "minecraft:black_carpet", + Self::BlackConcrete => "minecraft:black_concrete", + Self::BlackConcretePowder => "minecraft:black_concrete_powder", + Self::BlackDye => "minecraft:black_dye", + Self::BlackGlazedTerracotta => "minecraft:black_glazed_terracotta", + Self::BlackHarness => "minecraft:black_harness", + Self::BlackShulkerBox => "minecraft:black_shulker_box", + Self::BlackStainedGlass => "minecraft:black_stained_glass", + Self::BlackStainedGlassPane => "minecraft:black_stained_glass_pane", + Self::BlackTerracotta => "minecraft:black_terracotta", + Self::BlackWool => "minecraft:black_wool", + Self::Blackstone => "minecraft:blackstone", + Self::BlackstoneSlab => "minecraft:blackstone_slab", + Self::BlackstoneStairs => "minecraft:blackstone_stairs", + Self::BlackstoneWall => "minecraft:blackstone_wall", + Self::BladePotterySherd => "minecraft:blade_pottery_sherd", + Self::BlastFurnace => "minecraft:blast_furnace", + Self::BlazePowder => "minecraft:blaze_powder", + Self::BlazeRod => "minecraft:blaze_rod", + Self::BlazeSpawnEgg => "minecraft:blaze_spawn_egg", + Self::BlueBanner => "minecraft:blue_banner", + Self::BlueBed => "minecraft:blue_bed", + Self::BlueBundle => "minecraft:blue_bundle", + Self::BlueCandle => "minecraft:blue_candle", + Self::BlueCarpet => "minecraft:blue_carpet", + Self::BlueConcrete => "minecraft:blue_concrete", + Self::BlueConcretePowder => "minecraft:blue_concrete_powder", + Self::BlueDye => "minecraft:blue_dye", + Self::BlueEgg => "minecraft:blue_egg", + Self::BlueGlazedTerracotta => "minecraft:blue_glazed_terracotta", + Self::BlueHarness => "minecraft:blue_harness", + Self::BlueIce => "minecraft:blue_ice", + Self::BlueOrchid => "minecraft:blue_orchid", + Self::BlueShulkerBox => "minecraft:blue_shulker_box", + Self::BlueStainedGlass => "minecraft:blue_stained_glass", + Self::BlueStainedGlassPane => "minecraft:blue_stained_glass_pane", + Self::BlueTerracotta => "minecraft:blue_terracotta", + Self::BlueWool => "minecraft:blue_wool", + Self::BoggedSpawnEgg => "minecraft:bogged_spawn_egg", + Self::BoltArmorTrimSmithingTemplate => "minecraft:bolt_armor_trim_smithing_template", + Self::Bone => "minecraft:bone", + Self::BoneBlock => "minecraft:bone_block", + Self::BoneMeal => "minecraft:bone_meal", + Self::Book => "minecraft:book", + Self::Bookshelf => "minecraft:bookshelf", + Self::BordureIndentedBannerPattern => "minecraft:bordure_indented_banner_pattern", + Self::Bow => "minecraft:bow", + Self::Bowl => "minecraft:bowl", + Self::BrainCoral => "minecraft:brain_coral", + Self::BrainCoralBlock => "minecraft:brain_coral_block", + Self::BrainCoralFan => "minecraft:brain_coral_fan", + Self::Bread => "minecraft:bread", + Self::BreezeRod => "minecraft:breeze_rod", + Self::BreezeSpawnEgg => "minecraft:breeze_spawn_egg", + Self::BrewerPotterySherd => "minecraft:brewer_pottery_sherd", + Self::BrewingStand => "minecraft:brewing_stand", + Self::Brick => "minecraft:brick", + Self::BrickSlab => "minecraft:brick_slab", + Self::BrickStairs => "minecraft:brick_stairs", + Self::BrickWall => "minecraft:brick_wall", + Self::Bricks => "minecraft:bricks", + Self::BrownBanner => "minecraft:brown_banner", + Self::BrownBed => "minecraft:brown_bed", + Self::BrownBundle => "minecraft:brown_bundle", + Self::BrownCandle => "minecraft:brown_candle", + Self::BrownCarpet => "minecraft:brown_carpet", + Self::BrownConcrete => "minecraft:brown_concrete", + Self::BrownConcretePowder => "minecraft:brown_concrete_powder", + Self::BrownDye => "minecraft:brown_dye", + Self::BrownEgg => "minecraft:brown_egg", + Self::BrownGlazedTerracotta => "minecraft:brown_glazed_terracotta", + Self::BrownHarness => "minecraft:brown_harness", + Self::BrownMushroom => "minecraft:brown_mushroom", + Self::BrownMushroomBlock => "minecraft:brown_mushroom_block", + Self::BrownShulkerBox => "minecraft:brown_shulker_box", + Self::BrownStainedGlass => "minecraft:brown_stained_glass", + Self::BrownStainedGlassPane => "minecraft:brown_stained_glass_pane", + Self::BrownTerracotta => "minecraft:brown_terracotta", + Self::BrownWool => "minecraft:brown_wool", + Self::Brush => "minecraft:brush", + Self::BubbleCoral => "minecraft:bubble_coral", + Self::BubbleCoralBlock => "minecraft:bubble_coral_block", + Self::BubbleCoralFan => "minecraft:bubble_coral_fan", + Self::Bucket => "minecraft:bucket", + Self::BuddingAmethyst => "minecraft:budding_amethyst", + Self::Bundle => "minecraft:bundle", + Self::BurnPotterySherd => "minecraft:burn_pottery_sherd", + Self::Bush => "minecraft:bush", + Self::Cactus => "minecraft:cactus", + Self::CactusFlower => "minecraft:cactus_flower", + Self::Cake => "minecraft:cake", + Self::Calcite => "minecraft:calcite", + Self::CalibratedSculkSensor => "minecraft:calibrated_sculk_sensor", + Self::CamelHuskSpawnEgg => "minecraft:camel_husk_spawn_egg", + Self::CamelSpawnEgg => "minecraft:camel_spawn_egg", + Self::Campfire => "minecraft:campfire", + Self::Candle => "minecraft:candle", + Self::Carrot => "minecraft:carrot", + Self::CarrotOnAStick => "minecraft:carrot_on_a_stick", + Self::CartographyTable => "minecraft:cartography_table", + Self::CarvedPumpkin => "minecraft:carved_pumpkin", + Self::CatSpawnEgg => "minecraft:cat_spawn_egg", + Self::Cauldron => "minecraft:cauldron", + Self::CaveSpiderSpawnEgg => "minecraft:cave_spider_spawn_egg", + Self::ChainCommandBlock => "minecraft:chain_command_block", + Self::ChainmailBoots => "minecraft:chainmail_boots", + Self::ChainmailChestplate => "minecraft:chainmail_chestplate", + Self::ChainmailHelmet => "minecraft:chainmail_helmet", + Self::ChainmailLeggings => "minecraft:chainmail_leggings", + Self::Charcoal => "minecraft:charcoal", + Self::CherryBoat => "minecraft:cherry_boat", + Self::CherryButton => "minecraft:cherry_button", + Self::CherryChestBoat => "minecraft:cherry_chest_boat", + Self::CherryDoor => "minecraft:cherry_door", + Self::CherryFence => "minecraft:cherry_fence", + Self::CherryFenceGate => "minecraft:cherry_fence_gate", + Self::CherryHangingSign => "minecraft:cherry_hanging_sign", + Self::CherryLeaves => "minecraft:cherry_leaves", + Self::CherryLog => "minecraft:cherry_log", + Self::CherryPlanks => "minecraft:cherry_planks", + Self::CherryPressurePlate => "minecraft:cherry_pressure_plate", + Self::CherrySapling => "minecraft:cherry_sapling", + Self::CherryShelf => "minecraft:cherry_shelf", + Self::CherrySign => "minecraft:cherry_sign", + Self::CherrySlab => "minecraft:cherry_slab", + Self::CherryStairs => "minecraft:cherry_stairs", + Self::CherryTrapdoor => "minecraft:cherry_trapdoor", + Self::CherryWood => "minecraft:cherry_wood", + Self::Chest => "minecraft:chest", + Self::ChestMinecart => "minecraft:chest_minecart", + Self::Chicken => "minecraft:chicken", + Self::ChickenSpawnEgg => "minecraft:chicken_spawn_egg", + Self::ChippedAnvil => "minecraft:chipped_anvil", + Self::ChiseledBookshelf => "minecraft:chiseled_bookshelf", + Self::ChiseledCinnabar => "minecraft:chiseled_cinnabar", + Self::ChiseledCopper => "minecraft:chiseled_copper", + Self::ChiseledDeepslate => "minecraft:chiseled_deepslate", + Self::ChiseledNetherBricks => "minecraft:chiseled_nether_bricks", + Self::ChiseledPolishedBlackstone => "minecraft:chiseled_polished_blackstone", + Self::ChiseledQuartzBlock => "minecraft:chiseled_quartz_block", + Self::ChiseledRedSandstone => "minecraft:chiseled_red_sandstone", + Self::ChiseledResinBricks => "minecraft:chiseled_resin_bricks", + Self::ChiseledSandstone => "minecraft:chiseled_sandstone", + Self::ChiseledStoneBricks => "minecraft:chiseled_stone_bricks", + Self::ChiseledSulfur => "minecraft:chiseled_sulfur", + Self::ChiseledTuff => "minecraft:chiseled_tuff", + Self::ChiseledTuffBricks => "minecraft:chiseled_tuff_bricks", + Self::ChorusFlower => "minecraft:chorus_flower", + Self::ChorusFruit => "minecraft:chorus_fruit", + Self::ChorusPlant => "minecraft:chorus_plant", + Self::Cinnabar => "minecraft:cinnabar", + Self::CinnabarBrickSlab => "minecraft:cinnabar_brick_slab", + Self::CinnabarBrickStairs => "minecraft:cinnabar_brick_stairs", + Self::CinnabarBrickWall => "minecraft:cinnabar_brick_wall", + Self::CinnabarBricks => "minecraft:cinnabar_bricks", + Self::CinnabarSlab => "minecraft:cinnabar_slab", + Self::CinnabarStairs => "minecraft:cinnabar_stairs", + Self::CinnabarWall => "minecraft:cinnabar_wall", + Self::Clay => "minecraft:clay", + Self::ClayBall => "minecraft:clay_ball", + Self::Clock => "minecraft:clock", + Self::ClosedEyeblossom => "minecraft:closed_eyeblossom", + Self::Coal => "minecraft:coal", + Self::CoalBlock => "minecraft:coal_block", + Self::CoalOre => "minecraft:coal_ore", + Self::CoarseDirt => "minecraft:coarse_dirt", + Self::CoastArmorTrimSmithingTemplate => "minecraft:coast_armor_trim_smithing_template", + Self::CobbledDeepslate => "minecraft:cobbled_deepslate", + Self::CobbledDeepslateSlab => "minecraft:cobbled_deepslate_slab", + Self::CobbledDeepslateStairs => "minecraft:cobbled_deepslate_stairs", + Self::CobbledDeepslateWall => "minecraft:cobbled_deepslate_wall", + Self::Cobblestone => "minecraft:cobblestone", + Self::CobblestoneSlab => "minecraft:cobblestone_slab", + Self::CobblestoneStairs => "minecraft:cobblestone_stairs", + Self::CobblestoneWall => "minecraft:cobblestone_wall", + Self::Cobweb => "minecraft:cobweb", + Self::CocoaBeans => "minecraft:cocoa_beans", + Self::Cod => "minecraft:cod", + Self::CodBucket => "minecraft:cod_bucket", + Self::CodSpawnEgg => "minecraft:cod_spawn_egg", + Self::CommandBlock => "minecraft:command_block", + Self::CommandBlockMinecart => "minecraft:command_block_minecart", + Self::Comparator => "minecraft:comparator", + Self::Compass => "minecraft:compass", + Self::Composter => "minecraft:composter", + Self::Conduit => "minecraft:conduit", + Self::CookedBeef => "minecraft:cooked_beef", + Self::CookedChicken => "minecraft:cooked_chicken", + Self::CookedCod => "minecraft:cooked_cod", + Self::CookedMutton => "minecraft:cooked_mutton", + Self::CookedPorkchop => "minecraft:cooked_porkchop", + Self::CookedRabbit => "minecraft:cooked_rabbit", + Self::CookedSalmon => "minecraft:cooked_salmon", + Self::Cookie => "minecraft:cookie", + Self::CopperAxe => "minecraft:copper_axe", + Self::CopperBars => "minecraft:copper_bars", + Self::CopperBlock => "minecraft:copper_block", + Self::CopperBoots => "minecraft:copper_boots", + Self::CopperBulb => "minecraft:copper_bulb", + Self::CopperChain => "minecraft:copper_chain", + Self::CopperChest => "minecraft:copper_chest", + Self::CopperChestplate => "minecraft:copper_chestplate", + Self::CopperDoor => "minecraft:copper_door", + Self::CopperGolemSpawnEgg => "minecraft:copper_golem_spawn_egg", + Self::CopperGolemStatue => "minecraft:copper_golem_statue", + Self::CopperGrate => "minecraft:copper_grate", + Self::CopperHelmet => "minecraft:copper_helmet", + Self::CopperHoe => "minecraft:copper_hoe", + Self::CopperHorseArmor => "minecraft:copper_horse_armor", + Self::CopperIngot => "minecraft:copper_ingot", + Self::CopperLantern => "minecraft:copper_lantern", + Self::CopperLeggings => "minecraft:copper_leggings", + Self::CopperNautilusArmor => "minecraft:copper_nautilus_armor", + Self::CopperNugget => "minecraft:copper_nugget", + Self::CopperOre => "minecraft:copper_ore", + Self::CopperPickaxe => "minecraft:copper_pickaxe", + Self::CopperShovel => "minecraft:copper_shovel", + Self::CopperSpear => "minecraft:copper_spear", + Self::CopperSword => "minecraft:copper_sword", + Self::CopperTorch => "minecraft:copper_torch", + Self::CopperTrapdoor => "minecraft:copper_trapdoor", + Self::Cornflower => "minecraft:cornflower", + Self::CowSpawnEgg => "minecraft:cow_spawn_egg", + Self::CrackedDeepslateBricks => "minecraft:cracked_deepslate_bricks", + Self::CrackedDeepslateTiles => "minecraft:cracked_deepslate_tiles", + Self::CrackedNetherBricks => "minecraft:cracked_nether_bricks", + Self::CrackedPolishedBlackstoneBricks => "minecraft:cracked_polished_blackstone_bricks", + Self::CrackedStoneBricks => "minecraft:cracked_stone_bricks", + Self::Crafter => "minecraft:crafter", + Self::CraftingTable => "minecraft:crafting_table", + Self::CreakingHeart => "minecraft:creaking_heart", + Self::CreakingSpawnEgg => "minecraft:creaking_spawn_egg", + Self::CreeperBannerPattern => "minecraft:creeper_banner_pattern", + Self::CreeperHead => "minecraft:creeper_head", + Self::CreeperSpawnEgg => "minecraft:creeper_spawn_egg", + Self::CrimsonButton => "minecraft:crimson_button", + Self::CrimsonDoor => "minecraft:crimson_door", + Self::CrimsonFence => "minecraft:crimson_fence", + Self::CrimsonFenceGate => "minecraft:crimson_fence_gate", + Self::CrimsonFungus => "minecraft:crimson_fungus", + Self::CrimsonHangingSign => "minecraft:crimson_hanging_sign", + Self::CrimsonHyphae => "minecraft:crimson_hyphae", + Self::CrimsonNylium => "minecraft:crimson_nylium", + Self::CrimsonPlanks => "minecraft:crimson_planks", + Self::CrimsonPressurePlate => "minecraft:crimson_pressure_plate", + Self::CrimsonRoots => "minecraft:crimson_roots", + Self::CrimsonShelf => "minecraft:crimson_shelf", + Self::CrimsonSign => "minecraft:crimson_sign", + Self::CrimsonSlab => "minecraft:crimson_slab", + Self::CrimsonStairs => "minecraft:crimson_stairs", + Self::CrimsonStem => "minecraft:crimson_stem", + Self::CrimsonTrapdoor => "minecraft:crimson_trapdoor", + Self::Crossbow => "minecraft:crossbow", + Self::CryingObsidian => "minecraft:crying_obsidian", + Self::CutCopper => "minecraft:cut_copper", + Self::CutCopperSlab => "minecraft:cut_copper_slab", + Self::CutCopperStairs => "minecraft:cut_copper_stairs", + Self::CutRedSandstone => "minecraft:cut_red_sandstone", + Self::CutRedSandstoneSlab => "minecraft:cut_red_sandstone_slab", + Self::CutSandstone => "minecraft:cut_sandstone", + Self::CutSandstoneSlab => "minecraft:cut_sandstone_slab", + Self::CyanBanner => "minecraft:cyan_banner", + Self::CyanBed => "minecraft:cyan_bed", + Self::CyanBundle => "minecraft:cyan_bundle", + Self::CyanCandle => "minecraft:cyan_candle", + Self::CyanCarpet => "minecraft:cyan_carpet", + Self::CyanConcrete => "minecraft:cyan_concrete", + Self::CyanConcretePowder => "minecraft:cyan_concrete_powder", + Self::CyanDye => "minecraft:cyan_dye", + Self::CyanGlazedTerracotta => "minecraft:cyan_glazed_terracotta", + Self::CyanHarness => "minecraft:cyan_harness", + Self::CyanShulkerBox => "minecraft:cyan_shulker_box", + Self::CyanStainedGlass => "minecraft:cyan_stained_glass", + Self::CyanStainedGlassPane => "minecraft:cyan_stained_glass_pane", + Self::CyanTerracotta => "minecraft:cyan_terracotta", + Self::CyanWool => "minecraft:cyan_wool", + Self::DamagedAnvil => "minecraft:damaged_anvil", + Self::Dandelion => "minecraft:dandelion", + Self::DangerPotterySherd => "minecraft:danger_pottery_sherd", + Self::DarkOakBoat => "minecraft:dark_oak_boat", + Self::DarkOakButton => "minecraft:dark_oak_button", + Self::DarkOakChestBoat => "minecraft:dark_oak_chest_boat", + Self::DarkOakDoor => "minecraft:dark_oak_door", + Self::DarkOakFence => "minecraft:dark_oak_fence", + Self::DarkOakFenceGate => "minecraft:dark_oak_fence_gate", + Self::DarkOakHangingSign => "minecraft:dark_oak_hanging_sign", + Self::DarkOakLeaves => "minecraft:dark_oak_leaves", + Self::DarkOakLog => "minecraft:dark_oak_log", + Self::DarkOakPlanks => "minecraft:dark_oak_planks", + Self::DarkOakPressurePlate => "minecraft:dark_oak_pressure_plate", + Self::DarkOakSapling => "minecraft:dark_oak_sapling", + Self::DarkOakShelf => "minecraft:dark_oak_shelf", + Self::DarkOakSign => "minecraft:dark_oak_sign", + Self::DarkOakSlab => "minecraft:dark_oak_slab", + Self::DarkOakStairs => "minecraft:dark_oak_stairs", + Self::DarkOakTrapdoor => "minecraft:dark_oak_trapdoor", + Self::DarkOakWood => "minecraft:dark_oak_wood", + Self::DarkPrismarine => "minecraft:dark_prismarine", + Self::DarkPrismarineSlab => "minecraft:dark_prismarine_slab", + Self::DarkPrismarineStairs => "minecraft:dark_prismarine_stairs", + Self::DaylightDetector => "minecraft:daylight_detector", + Self::DeadBrainCoral => "minecraft:dead_brain_coral", + Self::DeadBrainCoralBlock => "minecraft:dead_brain_coral_block", + Self::DeadBrainCoralFan => "minecraft:dead_brain_coral_fan", + Self::DeadBubbleCoral => "minecraft:dead_bubble_coral", + Self::DeadBubbleCoralBlock => "minecraft:dead_bubble_coral_block", + Self::DeadBubbleCoralFan => "minecraft:dead_bubble_coral_fan", + Self::DeadBush => "minecraft:dead_bush", + Self::DeadFireCoral => "minecraft:dead_fire_coral", + Self::DeadFireCoralBlock => "minecraft:dead_fire_coral_block", + Self::DeadFireCoralFan => "minecraft:dead_fire_coral_fan", + Self::DeadHornCoral => "minecraft:dead_horn_coral", + Self::DeadHornCoralBlock => "minecraft:dead_horn_coral_block", + Self::DeadHornCoralFan => "minecraft:dead_horn_coral_fan", + Self::DeadTubeCoral => "minecraft:dead_tube_coral", + Self::DeadTubeCoralBlock => "minecraft:dead_tube_coral_block", + Self::DeadTubeCoralFan => "minecraft:dead_tube_coral_fan", + Self::DebugStick => "minecraft:debug_stick", + Self::DecoratedPot => "minecraft:decorated_pot", + Self::Deepslate => "minecraft:deepslate", + Self::DeepslateBrickSlab => "minecraft:deepslate_brick_slab", + Self::DeepslateBrickStairs => "minecraft:deepslate_brick_stairs", + Self::DeepslateBrickWall => "minecraft:deepslate_brick_wall", + Self::DeepslateBricks => "minecraft:deepslate_bricks", + Self::DeepslateCoalOre => "minecraft:deepslate_coal_ore", + Self::DeepslateCopperOre => "minecraft:deepslate_copper_ore", + Self::DeepslateDiamondOre => "minecraft:deepslate_diamond_ore", + Self::DeepslateEmeraldOre => "minecraft:deepslate_emerald_ore", + Self::DeepslateGoldOre => "minecraft:deepslate_gold_ore", + Self::DeepslateIronOre => "minecraft:deepslate_iron_ore", + Self::DeepslateLapisOre => "minecraft:deepslate_lapis_ore", + Self::DeepslateRedstoneOre => "minecraft:deepslate_redstone_ore", + Self::DeepslateTileSlab => "minecraft:deepslate_tile_slab", + Self::DeepslateTileStairs => "minecraft:deepslate_tile_stairs", + Self::DeepslateTileWall => "minecraft:deepslate_tile_wall", + Self::DeepslateTiles => "minecraft:deepslate_tiles", + Self::DetectorRail => "minecraft:detector_rail", + Self::Diamond => "minecraft:diamond", + Self::DiamondAxe => "minecraft:diamond_axe", + Self::DiamondBlock => "minecraft:diamond_block", + Self::DiamondBoots => "minecraft:diamond_boots", + Self::DiamondChestplate => "minecraft:diamond_chestplate", + Self::DiamondHelmet => "minecraft:diamond_helmet", + Self::DiamondHoe => "minecraft:diamond_hoe", + Self::DiamondHorseArmor => "minecraft:diamond_horse_armor", + Self::DiamondLeggings => "minecraft:diamond_leggings", + Self::DiamondNautilusArmor => "minecraft:diamond_nautilus_armor", + Self::DiamondOre => "minecraft:diamond_ore", + Self::DiamondPickaxe => "minecraft:diamond_pickaxe", + Self::DiamondShovel => "minecraft:diamond_shovel", + Self::DiamondSpear => "minecraft:diamond_spear", + Self::DiamondSword => "minecraft:diamond_sword", + Self::Diorite => "minecraft:diorite", + Self::DioriteSlab => "minecraft:diorite_slab", + Self::DioriteStairs => "minecraft:diorite_stairs", + Self::DioriteWall => "minecraft:diorite_wall", + Self::Dirt => "minecraft:dirt", + Self::DirtPath => "minecraft:dirt_path", + Self::DiscFragment5 => "minecraft:disc_fragment_5", + Self::Dispenser => "minecraft:dispenser", + Self::DolphinSpawnEgg => "minecraft:dolphin_spawn_egg", + Self::DonkeySpawnEgg => "minecraft:donkey_spawn_egg", + Self::DragonBreath => "minecraft:dragon_breath", + Self::DragonEgg => "minecraft:dragon_egg", + Self::DragonHead => "minecraft:dragon_head", + Self::DriedGhast => "minecraft:dried_ghast", + Self::DriedKelp => "minecraft:dried_kelp", + Self::DriedKelpBlock => "minecraft:dried_kelp_block", + Self::DripstoneBlock => "minecraft:dripstone_block", + Self::Dropper => "minecraft:dropper", + Self::DrownedSpawnEgg => "minecraft:drowned_spawn_egg", + Self::DuneArmorTrimSmithingTemplate => "minecraft:dune_armor_trim_smithing_template", + Self::EchoShard => "minecraft:echo_shard", + Self::Egg => "minecraft:egg", + Self::ElderGuardianSpawnEgg => "minecraft:elder_guardian_spawn_egg", + Self::Elytra => "minecraft:elytra", + Self::Emerald => "minecraft:emerald", + Self::EmeraldBlock => "minecraft:emerald_block", + Self::EmeraldOre => "minecraft:emerald_ore", + Self::EnchantedBook => "minecraft:enchanted_book", + Self::EnchantedGoldenApple => "minecraft:enchanted_golden_apple", + Self::EnchantingTable => "minecraft:enchanting_table", + Self::EndCrystal => "minecraft:end_crystal", + Self::EndPortalFrame => "minecraft:end_portal_frame", + Self::EndRod => "minecraft:end_rod", + Self::EndStone => "minecraft:end_stone", + Self::EndStoneBrickSlab => "minecraft:end_stone_brick_slab", + Self::EndStoneBrickStairs => "minecraft:end_stone_brick_stairs", + Self::EndStoneBrickWall => "minecraft:end_stone_brick_wall", + Self::EndStoneBricks => "minecraft:end_stone_bricks", + Self::EnderChest => "minecraft:ender_chest", + Self::EnderDragonSpawnEgg => "minecraft:ender_dragon_spawn_egg", + Self::EnderEye => "minecraft:ender_eye", + Self::EnderPearl => "minecraft:ender_pearl", + Self::EndermanSpawnEgg => "minecraft:enderman_spawn_egg", + Self::EndermiteSpawnEgg => "minecraft:endermite_spawn_egg", + Self::EvokerSpawnEgg => "minecraft:evoker_spawn_egg", + Self::ExperienceBottle => "minecraft:experience_bottle", + Self::ExplorerPotterySherd => "minecraft:explorer_pottery_sherd", + Self::ExposedChiseledCopper => "minecraft:exposed_chiseled_copper", + Self::ExposedCopper => "minecraft:exposed_copper", + Self::ExposedCopperBars => "minecraft:exposed_copper_bars", + Self::ExposedCopperBulb => "minecraft:exposed_copper_bulb", + Self::ExposedCopperChain => "minecraft:exposed_copper_chain", + Self::ExposedCopperChest => "minecraft:exposed_copper_chest", + Self::ExposedCopperDoor => "minecraft:exposed_copper_door", + Self::ExposedCopperGolemStatue => "minecraft:exposed_copper_golem_statue", + Self::ExposedCopperGrate => "minecraft:exposed_copper_grate", + Self::ExposedCopperLantern => "minecraft:exposed_copper_lantern", + Self::ExposedCopperTrapdoor => "minecraft:exposed_copper_trapdoor", + Self::ExposedCutCopper => "minecraft:exposed_cut_copper", + Self::ExposedCutCopperSlab => "minecraft:exposed_cut_copper_slab", + Self::ExposedCutCopperStairs => "minecraft:exposed_cut_copper_stairs", + Self::ExposedLightningRod => "minecraft:exposed_lightning_rod", + Self::EyeArmorTrimSmithingTemplate => "minecraft:eye_armor_trim_smithing_template", + Self::Farmland => "minecraft:farmland", + Self::Feather => "minecraft:feather", + Self::FermentedSpiderEye => "minecraft:fermented_spider_eye", + Self::Fern => "minecraft:fern", + Self::FieldMasonedBannerPattern => "minecraft:field_masoned_banner_pattern", + Self::FilledMap => "minecraft:filled_map", + Self::FireCharge => "minecraft:fire_charge", + Self::FireCoral => "minecraft:fire_coral", + Self::FireCoralBlock => "minecraft:fire_coral_block", + Self::FireCoralFan => "minecraft:fire_coral_fan", + Self::FireflyBush => "minecraft:firefly_bush", + Self::FireworkRocket => "minecraft:firework_rocket", + Self::FireworkStar => "minecraft:firework_star", + Self::FishingRod => "minecraft:fishing_rod", + Self::FletchingTable => "minecraft:fletching_table", + Self::Flint => "minecraft:flint", + Self::FlintAndSteel => "minecraft:flint_and_steel", + Self::FlowArmorTrimSmithingTemplate => "minecraft:flow_armor_trim_smithing_template", + Self::FlowBannerPattern => "minecraft:flow_banner_pattern", + Self::FlowPotterySherd => "minecraft:flow_pottery_sherd", + Self::FlowerBannerPattern => "minecraft:flower_banner_pattern", + Self::FlowerPot => "minecraft:flower_pot", + Self::FloweringAzalea => "minecraft:flowering_azalea", + Self::FloweringAzaleaLeaves => "minecraft:flowering_azalea_leaves", + Self::FoxSpawnEgg => "minecraft:fox_spawn_egg", + Self::FriendPotterySherd => "minecraft:friend_pottery_sherd", + Self::FrogSpawnEgg => "minecraft:frog_spawn_egg", + Self::Frogspawn => "minecraft:frogspawn", + Self::Furnace => "minecraft:furnace", + Self::FurnaceMinecart => "minecraft:furnace_minecart", + Self::GhastSpawnEgg => "minecraft:ghast_spawn_egg", + Self::GhastTear => "minecraft:ghast_tear", + Self::GildedBlackstone => "minecraft:gilded_blackstone", + Self::Glass => "minecraft:glass", + Self::GlassBottle => "minecraft:glass_bottle", + Self::GlassPane => "minecraft:glass_pane", + Self::GlisteringMelonSlice => "minecraft:glistering_melon_slice", + Self::GlobeBannerPattern => "minecraft:globe_banner_pattern", + Self::GlowBerries => "minecraft:glow_berries", + Self::GlowInkSac => "minecraft:glow_ink_sac", + Self::GlowItemFrame => "minecraft:glow_item_frame", + Self::GlowLichen => "minecraft:glow_lichen", + Self::GlowSquidSpawnEgg => "minecraft:glow_squid_spawn_egg", + Self::Glowstone => "minecraft:glowstone", + Self::GlowstoneDust => "minecraft:glowstone_dust", + Self::GoatHorn => "minecraft:goat_horn", + Self::GoatSpawnEgg => "minecraft:goat_spawn_egg", + Self::GoldBlock => "minecraft:gold_block", + Self::GoldIngot => "minecraft:gold_ingot", + Self::GoldNugget => "minecraft:gold_nugget", + Self::GoldOre => "minecraft:gold_ore", + Self::GoldenApple => "minecraft:golden_apple", + Self::GoldenAxe => "minecraft:golden_axe", + Self::GoldenBoots => "minecraft:golden_boots", + Self::GoldenCarrot => "minecraft:golden_carrot", + Self::GoldenChestplate => "minecraft:golden_chestplate", + Self::GoldenDandelion => "minecraft:golden_dandelion", + Self::GoldenHelmet => "minecraft:golden_helmet", + Self::GoldenHoe => "minecraft:golden_hoe", + Self::GoldenHorseArmor => "minecraft:golden_horse_armor", + Self::GoldenLeggings => "minecraft:golden_leggings", + Self::GoldenNautilusArmor => "minecraft:golden_nautilus_armor", + Self::GoldenPickaxe => "minecraft:golden_pickaxe", + Self::GoldenShovel => "minecraft:golden_shovel", + Self::GoldenSpear => "minecraft:golden_spear", + Self::GoldenSword => "minecraft:golden_sword", + Self::Granite => "minecraft:granite", + Self::GraniteSlab => "minecraft:granite_slab", + Self::GraniteStairs => "minecraft:granite_stairs", + Self::GraniteWall => "minecraft:granite_wall", + Self::GrassBlock => "minecraft:grass_block", + Self::Gravel => "minecraft:gravel", + Self::GrayBanner => "minecraft:gray_banner", + Self::GrayBed => "minecraft:gray_bed", + Self::GrayBundle => "minecraft:gray_bundle", + Self::GrayCandle => "minecraft:gray_candle", + Self::GrayCarpet => "minecraft:gray_carpet", + Self::GrayConcrete => "minecraft:gray_concrete", + Self::GrayConcretePowder => "minecraft:gray_concrete_powder", + Self::GrayDye => "minecraft:gray_dye", + Self::GrayGlazedTerracotta => "minecraft:gray_glazed_terracotta", + Self::GrayHarness => "minecraft:gray_harness", + Self::GrayShulkerBox => "minecraft:gray_shulker_box", + Self::GrayStainedGlass => "minecraft:gray_stained_glass", + Self::GrayStainedGlassPane => "minecraft:gray_stained_glass_pane", + Self::GrayTerracotta => "minecraft:gray_terracotta", + Self::GrayWool => "minecraft:gray_wool", + Self::GreenBanner => "minecraft:green_banner", + Self::GreenBed => "minecraft:green_bed", + Self::GreenBundle => "minecraft:green_bundle", + Self::GreenCandle => "minecraft:green_candle", + Self::GreenCarpet => "minecraft:green_carpet", + Self::GreenConcrete => "minecraft:green_concrete", + Self::GreenConcretePowder => "minecraft:green_concrete_powder", + Self::GreenDye => "minecraft:green_dye", + Self::GreenGlazedTerracotta => "minecraft:green_glazed_terracotta", + Self::GreenHarness => "minecraft:green_harness", + Self::GreenShulkerBox => "minecraft:green_shulker_box", + Self::GreenStainedGlass => "minecraft:green_stained_glass", + Self::GreenStainedGlassPane => "minecraft:green_stained_glass_pane", + Self::GreenTerracotta => "minecraft:green_terracotta", + Self::GreenWool => "minecraft:green_wool", + Self::Grindstone => "minecraft:grindstone", + Self::GuardianSpawnEgg => "minecraft:guardian_spawn_egg", + Self::Gunpowder => "minecraft:gunpowder", + Self::GusterBannerPattern => "minecraft:guster_banner_pattern", + Self::GusterPotterySherd => "minecraft:guster_pottery_sherd", + Self::HangingRoots => "minecraft:hanging_roots", + Self::HappyGhastSpawnEgg => "minecraft:happy_ghast_spawn_egg", + Self::HayBlock => "minecraft:hay_block", + Self::HeartOfTheSea => "minecraft:heart_of_the_sea", + Self::HeartPotterySherd => "minecraft:heart_pottery_sherd", + Self::HeartbreakPotterySherd => "minecraft:heartbreak_pottery_sherd", + Self::HeavyCore => "minecraft:heavy_core", + Self::HeavyWeightedPressurePlate => "minecraft:heavy_weighted_pressure_plate", + Self::HoglinSpawnEgg => "minecraft:hoglin_spawn_egg", + Self::HoneyBlock => "minecraft:honey_block", + Self::HoneyBottle => "minecraft:honey_bottle", + Self::Honeycomb => "minecraft:honeycomb", + Self::HoneycombBlock => "minecraft:honeycomb_block", + Self::Hopper => "minecraft:hopper", + Self::HopperMinecart => "minecraft:hopper_minecart", + Self::HornCoral => "minecraft:horn_coral", + Self::HornCoralBlock => "minecraft:horn_coral_block", + Self::HornCoralFan => "minecraft:horn_coral_fan", + Self::HorseSpawnEgg => "minecraft:horse_spawn_egg", + Self::HostArmorTrimSmithingTemplate => "minecraft:host_armor_trim_smithing_template", + Self::HowlPotterySherd => "minecraft:howl_pottery_sherd", + Self::HuskSpawnEgg => "minecraft:husk_spawn_egg", + Self::Ice => "minecraft:ice", + Self::InfestedChiseledStoneBricks => "minecraft:infested_chiseled_stone_bricks", + Self::InfestedCobblestone => "minecraft:infested_cobblestone", + Self::InfestedCrackedStoneBricks => "minecraft:infested_cracked_stone_bricks", + Self::InfestedDeepslate => "minecraft:infested_deepslate", + Self::InfestedMossyStoneBricks => "minecraft:infested_mossy_stone_bricks", + Self::InfestedStone => "minecraft:infested_stone", + Self::InfestedStoneBricks => "minecraft:infested_stone_bricks", + Self::InkSac => "minecraft:ink_sac", + Self::IronAxe => "minecraft:iron_axe", + Self::IronBars => "minecraft:iron_bars", + Self::IronBlock => "minecraft:iron_block", + Self::IronBoots => "minecraft:iron_boots", + Self::IronChain => "minecraft:iron_chain", + Self::IronChestplate => "minecraft:iron_chestplate", + Self::IronDoor => "minecraft:iron_door", + Self::IronGolemSpawnEgg => "minecraft:iron_golem_spawn_egg", + Self::IronHelmet => "minecraft:iron_helmet", + Self::IronHoe => "minecraft:iron_hoe", + Self::IronHorseArmor => "minecraft:iron_horse_armor", + Self::IronIngot => "minecraft:iron_ingot", + Self::IronLeggings => "minecraft:iron_leggings", + Self::IronNautilusArmor => "minecraft:iron_nautilus_armor", + Self::IronNugget => "minecraft:iron_nugget", + Self::IronOre => "minecraft:iron_ore", + Self::IronPickaxe => "minecraft:iron_pickaxe", + Self::IronShovel => "minecraft:iron_shovel", + Self::IronSpear => "minecraft:iron_spear", + Self::IronSword => "minecraft:iron_sword", + Self::IronTrapdoor => "minecraft:iron_trapdoor", + Self::ItemFrame => "minecraft:item_frame", + Self::JackOLantern => "minecraft:jack_o_lantern", + Self::Jigsaw => "minecraft:jigsaw", + Self::Jukebox => "minecraft:jukebox", + Self::JungleBoat => "minecraft:jungle_boat", + Self::JungleButton => "minecraft:jungle_button", + Self::JungleChestBoat => "minecraft:jungle_chest_boat", + Self::JungleDoor => "minecraft:jungle_door", + Self::JungleFence => "minecraft:jungle_fence", + Self::JungleFenceGate => "minecraft:jungle_fence_gate", + Self::JungleHangingSign => "minecraft:jungle_hanging_sign", + Self::JungleLeaves => "minecraft:jungle_leaves", + Self::JungleLog => "minecraft:jungle_log", + Self::JunglePlanks => "minecraft:jungle_planks", + Self::JunglePressurePlate => "minecraft:jungle_pressure_plate", + Self::JungleSapling => "minecraft:jungle_sapling", + Self::JungleShelf => "minecraft:jungle_shelf", + Self::JungleSign => "minecraft:jungle_sign", + Self::JungleSlab => "minecraft:jungle_slab", + Self::JungleStairs => "minecraft:jungle_stairs", + Self::JungleTrapdoor => "minecraft:jungle_trapdoor", + Self::JungleWood => "minecraft:jungle_wood", + Self::Kelp => "minecraft:kelp", + Self::KnowledgeBook => "minecraft:knowledge_book", + Self::Ladder => "minecraft:ladder", + Self::Lantern => "minecraft:lantern", + Self::LapisBlock => "minecraft:lapis_block", + Self::LapisLazuli => "minecraft:lapis_lazuli", + Self::LapisOre => "minecraft:lapis_ore", + Self::LargeAmethystBud => "minecraft:large_amethyst_bud", + Self::LargeFern => "minecraft:large_fern", + Self::LavaBucket => "minecraft:lava_bucket", + Self::Lead => "minecraft:lead", + Self::LeafLitter => "minecraft:leaf_litter", + Self::Leather => "minecraft:leather", + Self::LeatherBoots => "minecraft:leather_boots", + Self::LeatherChestplate => "minecraft:leather_chestplate", + Self::LeatherHelmet => "minecraft:leather_helmet", + Self::LeatherHorseArmor => "minecraft:leather_horse_armor", + Self::LeatherLeggings => "minecraft:leather_leggings", + Self::Lectern => "minecraft:lectern", + Self::Lever => "minecraft:lever", + Self::Light => "minecraft:light", + Self::LightBlueBanner => "minecraft:light_blue_banner", + Self::LightBlueBed => "minecraft:light_blue_bed", + Self::LightBlueBundle => "minecraft:light_blue_bundle", + Self::LightBlueCandle => "minecraft:light_blue_candle", + Self::LightBlueCarpet => "minecraft:light_blue_carpet", + Self::LightBlueConcrete => "minecraft:light_blue_concrete", + Self::LightBlueConcretePowder => "minecraft:light_blue_concrete_powder", + Self::LightBlueDye => "minecraft:light_blue_dye", + Self::LightBlueGlazedTerracotta => "minecraft:light_blue_glazed_terracotta", + Self::LightBlueHarness => "minecraft:light_blue_harness", + Self::LightBlueShulkerBox => "minecraft:light_blue_shulker_box", + Self::LightBlueStainedGlass => "minecraft:light_blue_stained_glass", + Self::LightBlueStainedGlassPane => "minecraft:light_blue_stained_glass_pane", + Self::LightBlueTerracotta => "minecraft:light_blue_terracotta", + Self::LightBlueWool => "minecraft:light_blue_wool", + Self::LightGrayBanner => "minecraft:light_gray_banner", + Self::LightGrayBed => "minecraft:light_gray_bed", + Self::LightGrayBundle => "minecraft:light_gray_bundle", + Self::LightGrayCandle => "minecraft:light_gray_candle", + Self::LightGrayCarpet => "minecraft:light_gray_carpet", + Self::LightGrayConcrete => "minecraft:light_gray_concrete", + Self::LightGrayConcretePowder => "minecraft:light_gray_concrete_powder", + Self::LightGrayDye => "minecraft:light_gray_dye", + Self::LightGrayGlazedTerracotta => "minecraft:light_gray_glazed_terracotta", + Self::LightGrayHarness => "minecraft:light_gray_harness", + Self::LightGrayShulkerBox => "minecraft:light_gray_shulker_box", + Self::LightGrayStainedGlass => "minecraft:light_gray_stained_glass", + Self::LightGrayStainedGlassPane => "minecraft:light_gray_stained_glass_pane", + Self::LightGrayTerracotta => "minecraft:light_gray_terracotta", + Self::LightGrayWool => "minecraft:light_gray_wool", + Self::LightWeightedPressurePlate => "minecraft:light_weighted_pressure_plate", + Self::LightningRod => "minecraft:lightning_rod", + Self::Lilac => "minecraft:lilac", + Self::LilyOfTheValley => "minecraft:lily_of_the_valley", + Self::LilyPad => "minecraft:lily_pad", + Self::LimeBanner => "minecraft:lime_banner", + Self::LimeBed => "minecraft:lime_bed", + Self::LimeBundle => "minecraft:lime_bundle", + Self::LimeCandle => "minecraft:lime_candle", + Self::LimeCarpet => "minecraft:lime_carpet", + Self::LimeConcrete => "minecraft:lime_concrete", + Self::LimeConcretePowder => "minecraft:lime_concrete_powder", + Self::LimeDye => "minecraft:lime_dye", + Self::LimeGlazedTerracotta => "minecraft:lime_glazed_terracotta", + Self::LimeHarness => "minecraft:lime_harness", + Self::LimeShulkerBox => "minecraft:lime_shulker_box", + Self::LimeStainedGlass => "minecraft:lime_stained_glass", + Self::LimeStainedGlassPane => "minecraft:lime_stained_glass_pane", + Self::LimeTerracotta => "minecraft:lime_terracotta", + Self::LimeWool => "minecraft:lime_wool", + Self::LingeringPotion => "minecraft:lingering_potion", + Self::LlamaSpawnEgg => "minecraft:llama_spawn_egg", + Self::Lodestone => "minecraft:lodestone", + Self::Loom => "minecraft:loom", + Self::Mace => "minecraft:mace", + Self::MagentaBanner => "minecraft:magenta_banner", + Self::MagentaBed => "minecraft:magenta_bed", + Self::MagentaBundle => "minecraft:magenta_bundle", + Self::MagentaCandle => "minecraft:magenta_candle", + Self::MagentaCarpet => "minecraft:magenta_carpet", + Self::MagentaConcrete => "minecraft:magenta_concrete", + Self::MagentaConcretePowder => "minecraft:magenta_concrete_powder", + Self::MagentaDye => "minecraft:magenta_dye", + Self::MagentaGlazedTerracotta => "minecraft:magenta_glazed_terracotta", + Self::MagentaHarness => "minecraft:magenta_harness", + Self::MagentaShulkerBox => "minecraft:magenta_shulker_box", + Self::MagentaStainedGlass => "minecraft:magenta_stained_glass", + Self::MagentaStainedGlassPane => "minecraft:magenta_stained_glass_pane", + Self::MagentaTerracotta => "minecraft:magenta_terracotta", + Self::MagentaWool => "minecraft:magenta_wool", + Self::MagmaBlock => "minecraft:magma_block", + Self::MagmaCream => "minecraft:magma_cream", + Self::MagmaCubeSpawnEgg => "minecraft:magma_cube_spawn_egg", + Self::MangroveBoat => "minecraft:mangrove_boat", + Self::MangroveButton => "minecraft:mangrove_button", + Self::MangroveChestBoat => "minecraft:mangrove_chest_boat", + Self::MangroveDoor => "minecraft:mangrove_door", + Self::MangroveFence => "minecraft:mangrove_fence", + Self::MangroveFenceGate => "minecraft:mangrove_fence_gate", + Self::MangroveHangingSign => "minecraft:mangrove_hanging_sign", + Self::MangroveLeaves => "minecraft:mangrove_leaves", + Self::MangroveLog => "minecraft:mangrove_log", + Self::MangrovePlanks => "minecraft:mangrove_planks", + Self::MangrovePressurePlate => "minecraft:mangrove_pressure_plate", + Self::MangrovePropagule => "minecraft:mangrove_propagule", + Self::MangroveRoots => "minecraft:mangrove_roots", + Self::MangroveShelf => "minecraft:mangrove_shelf", + Self::MangroveSign => "minecraft:mangrove_sign", + Self::MangroveSlab => "minecraft:mangrove_slab", + Self::MangroveStairs => "minecraft:mangrove_stairs", + Self::MangroveTrapdoor => "minecraft:mangrove_trapdoor", + Self::MangroveWood => "minecraft:mangrove_wood", + Self::Map => "minecraft:map", + Self::MediumAmethystBud => "minecraft:medium_amethyst_bud", + Self::Melon => "minecraft:melon", + Self::MelonSeeds => "minecraft:melon_seeds", + Self::MelonSlice => "minecraft:melon_slice", + Self::MilkBucket => "minecraft:milk_bucket", + Self::Minecart => "minecraft:minecart", + Self::MinerPotterySherd => "minecraft:miner_pottery_sherd", + Self::MojangBannerPattern => "minecraft:mojang_banner_pattern", + Self::MooshroomSpawnEgg => "minecraft:mooshroom_spawn_egg", + Self::MossBlock => "minecraft:moss_block", + Self::MossCarpet => "minecraft:moss_carpet", + Self::MossyCobblestone => "minecraft:mossy_cobblestone", + Self::MossyCobblestoneSlab => "minecraft:mossy_cobblestone_slab", + Self::MossyCobblestoneStairs => "minecraft:mossy_cobblestone_stairs", + Self::MossyCobblestoneWall => "minecraft:mossy_cobblestone_wall", + Self::MossyStoneBrickSlab => "minecraft:mossy_stone_brick_slab", + Self::MossyStoneBrickStairs => "minecraft:mossy_stone_brick_stairs", + Self::MossyStoneBrickWall => "minecraft:mossy_stone_brick_wall", + Self::MossyStoneBricks => "minecraft:mossy_stone_bricks", + Self::MournerPotterySherd => "minecraft:mourner_pottery_sherd", + Self::Mud => "minecraft:mud", + Self::MudBrickSlab => "minecraft:mud_brick_slab", + Self::MudBrickStairs => "minecraft:mud_brick_stairs", + Self::MudBrickWall => "minecraft:mud_brick_wall", + Self::MudBricks => "minecraft:mud_bricks", + Self::MuddyMangroveRoots => "minecraft:muddy_mangrove_roots", + Self::MuleSpawnEgg => "minecraft:mule_spawn_egg", + Self::MushroomStem => "minecraft:mushroom_stem", + Self::MushroomStew => "minecraft:mushroom_stew", + Self::MusicDisc11 => "minecraft:music_disc_11", + Self::MusicDisc13 => "minecraft:music_disc_13", + Self::MusicDisc5 => "minecraft:music_disc_5", + Self::MusicDiscBlocks => "minecraft:music_disc_blocks", + Self::MusicDiscBounce => "minecraft:music_disc_bounce", + Self::MusicDiscCat => "minecraft:music_disc_cat", + Self::MusicDiscChirp => "minecraft:music_disc_chirp", + Self::MusicDiscCreator => "minecraft:music_disc_creator", + Self::MusicDiscCreatorMusicBox => "minecraft:music_disc_creator_music_box", + Self::MusicDiscFar => "minecraft:music_disc_far", + Self::MusicDiscLavaChicken => "minecraft:music_disc_lava_chicken", + Self::MusicDiscMall => "minecraft:music_disc_mall", + Self::MusicDiscMellohi => "minecraft:music_disc_mellohi", + Self::MusicDiscOtherside => "minecraft:music_disc_otherside", + Self::MusicDiscPigstep => "minecraft:music_disc_pigstep", + Self::MusicDiscPrecipice => "minecraft:music_disc_precipice", + Self::MusicDiscRelic => "minecraft:music_disc_relic", + Self::MusicDiscStal => "minecraft:music_disc_stal", + Self::MusicDiscStrad => "minecraft:music_disc_strad", + Self::MusicDiscTears => "minecraft:music_disc_tears", + Self::MusicDiscWait => "minecraft:music_disc_wait", + Self::MusicDiscWard => "minecraft:music_disc_ward", + Self::Mutton => "minecraft:mutton", + Self::Mycelium => "minecraft:mycelium", + Self::NameTag => "minecraft:name_tag", + Self::NautilusShell => "minecraft:nautilus_shell", + Self::NautilusSpawnEgg => "minecraft:nautilus_spawn_egg", + Self::NetherBrick => "minecraft:nether_brick", + Self::NetherBrickFence => "minecraft:nether_brick_fence", + Self::NetherBrickSlab => "minecraft:nether_brick_slab", + Self::NetherBrickStairs => "minecraft:nether_brick_stairs", + Self::NetherBrickWall => "minecraft:nether_brick_wall", + Self::NetherBricks => "minecraft:nether_bricks", + Self::NetherGoldOre => "minecraft:nether_gold_ore", + Self::NetherQuartzOre => "minecraft:nether_quartz_ore", + Self::NetherSprouts => "minecraft:nether_sprouts", + Self::NetherStar => "minecraft:nether_star", + Self::NetherWart => "minecraft:nether_wart", + Self::NetherWartBlock => "minecraft:nether_wart_block", + Self::NetheriteAxe => "minecraft:netherite_axe", + Self::NetheriteBlock => "minecraft:netherite_block", + Self::NetheriteBoots => "minecraft:netherite_boots", + Self::NetheriteChestplate => "minecraft:netherite_chestplate", + Self::NetheriteHelmet => "minecraft:netherite_helmet", + Self::NetheriteHoe => "minecraft:netherite_hoe", + Self::NetheriteHorseArmor => "minecraft:netherite_horse_armor", + Self::NetheriteIngot => "minecraft:netherite_ingot", + Self::NetheriteLeggings => "minecraft:netherite_leggings", + Self::NetheriteNautilusArmor => "minecraft:netherite_nautilus_armor", + Self::NetheritePickaxe => "minecraft:netherite_pickaxe", + Self::NetheriteScrap => "minecraft:netherite_scrap", + Self::NetheriteShovel => "minecraft:netherite_shovel", + Self::NetheriteSpear => "minecraft:netherite_spear", + Self::NetheriteSword => "minecraft:netherite_sword", + Self::NetheriteUpgradeSmithingTemplate => { + "minecraft:netherite_upgrade_smithing_template" + } + Self::Netherrack => "minecraft:netherrack", + Self::NoteBlock => "minecraft:note_block", + Self::OakBoat => "minecraft:oak_boat", + Self::OakButton => "minecraft:oak_button", + Self::OakChestBoat => "minecraft:oak_chest_boat", + Self::OakDoor => "minecraft:oak_door", + Self::OakFence => "minecraft:oak_fence", + Self::OakFenceGate => "minecraft:oak_fence_gate", + Self::OakHangingSign => "minecraft:oak_hanging_sign", + Self::OakLeaves => "minecraft:oak_leaves", + Self::OakLog => "minecraft:oak_log", + Self::OakPlanks => "minecraft:oak_planks", + Self::OakPressurePlate => "minecraft:oak_pressure_plate", + Self::OakSapling => "minecraft:oak_sapling", + Self::OakShelf => "minecraft:oak_shelf", + Self::OakSign => "minecraft:oak_sign", + Self::OakSlab => "minecraft:oak_slab", + Self::OakStairs => "minecraft:oak_stairs", + Self::OakTrapdoor => "minecraft:oak_trapdoor", + Self::OakWood => "minecraft:oak_wood", + Self::Observer => "minecraft:observer", + Self::Obsidian => "minecraft:obsidian", + Self::OcelotSpawnEgg => "minecraft:ocelot_spawn_egg", + Self::OchreFroglight => "minecraft:ochre_froglight", + Self::OminousBottle => "minecraft:ominous_bottle", + Self::OminousTrialKey => "minecraft:ominous_trial_key", + Self::OpenEyeblossom => "minecraft:open_eyeblossom", + Self::OrangeBanner => "minecraft:orange_banner", + Self::OrangeBed => "minecraft:orange_bed", + Self::OrangeBundle => "minecraft:orange_bundle", + Self::OrangeCandle => "minecraft:orange_candle", + Self::OrangeCarpet => "minecraft:orange_carpet", + Self::OrangeConcrete => "minecraft:orange_concrete", + Self::OrangeConcretePowder => "minecraft:orange_concrete_powder", + Self::OrangeDye => "minecraft:orange_dye", + Self::OrangeGlazedTerracotta => "minecraft:orange_glazed_terracotta", + Self::OrangeHarness => "minecraft:orange_harness", + Self::OrangeShulkerBox => "minecraft:orange_shulker_box", + Self::OrangeStainedGlass => "minecraft:orange_stained_glass", + Self::OrangeStainedGlassPane => "minecraft:orange_stained_glass_pane", + Self::OrangeTerracotta => "minecraft:orange_terracotta", + Self::OrangeTulip => "minecraft:orange_tulip", + Self::OrangeWool => "minecraft:orange_wool", + Self::OxeyeDaisy => "minecraft:oxeye_daisy", + Self::OxidizedChiseledCopper => "minecraft:oxidized_chiseled_copper", + Self::OxidizedCopper => "minecraft:oxidized_copper", + Self::OxidizedCopperBars => "minecraft:oxidized_copper_bars", + Self::OxidizedCopperBulb => "minecraft:oxidized_copper_bulb", + Self::OxidizedCopperChain => "minecraft:oxidized_copper_chain", + Self::OxidizedCopperChest => "minecraft:oxidized_copper_chest", + Self::OxidizedCopperDoor => "minecraft:oxidized_copper_door", + Self::OxidizedCopperGolemStatue => "minecraft:oxidized_copper_golem_statue", + Self::OxidizedCopperGrate => "minecraft:oxidized_copper_grate", + Self::OxidizedCopperLantern => "minecraft:oxidized_copper_lantern", + Self::OxidizedCopperTrapdoor => "minecraft:oxidized_copper_trapdoor", + Self::OxidizedCutCopper => "minecraft:oxidized_cut_copper", + Self::OxidizedCutCopperSlab => "minecraft:oxidized_cut_copper_slab", + Self::OxidizedCutCopperStairs => "minecraft:oxidized_cut_copper_stairs", + Self::OxidizedLightningRod => "minecraft:oxidized_lightning_rod", + Self::PackedIce => "minecraft:packed_ice", + Self::PackedMud => "minecraft:packed_mud", + Self::Painting => "minecraft:painting", + Self::PaleHangingMoss => "minecraft:pale_hanging_moss", + Self::PaleMossBlock => "minecraft:pale_moss_block", + Self::PaleMossCarpet => "minecraft:pale_moss_carpet", + Self::PaleOakBoat => "minecraft:pale_oak_boat", + Self::PaleOakButton => "minecraft:pale_oak_button", + Self::PaleOakChestBoat => "minecraft:pale_oak_chest_boat", + Self::PaleOakDoor => "minecraft:pale_oak_door", + Self::PaleOakFence => "minecraft:pale_oak_fence", + Self::PaleOakFenceGate => "minecraft:pale_oak_fence_gate", + Self::PaleOakHangingSign => "minecraft:pale_oak_hanging_sign", + Self::PaleOakLeaves => "minecraft:pale_oak_leaves", + Self::PaleOakLog => "minecraft:pale_oak_log", + Self::PaleOakPlanks => "minecraft:pale_oak_planks", + Self::PaleOakPressurePlate => "minecraft:pale_oak_pressure_plate", + Self::PaleOakSapling => "minecraft:pale_oak_sapling", + Self::PaleOakShelf => "minecraft:pale_oak_shelf", + Self::PaleOakSign => "minecraft:pale_oak_sign", + Self::PaleOakSlab => "minecraft:pale_oak_slab", + Self::PaleOakStairs => "minecraft:pale_oak_stairs", + Self::PaleOakTrapdoor => "minecraft:pale_oak_trapdoor", + Self::PaleOakWood => "minecraft:pale_oak_wood", + Self::PandaSpawnEgg => "minecraft:panda_spawn_egg", + Self::Paper => "minecraft:paper", + Self::ParchedSpawnEgg => "minecraft:parched_spawn_egg", + Self::ParrotSpawnEgg => "minecraft:parrot_spawn_egg", + Self::PearlescentFroglight => "minecraft:pearlescent_froglight", + Self::Peony => "minecraft:peony", + Self::PetrifiedOakSlab => "minecraft:petrified_oak_slab", + Self::PhantomMembrane => "minecraft:phantom_membrane", + Self::PhantomSpawnEgg => "minecraft:phantom_spawn_egg", + Self::PigSpawnEgg => "minecraft:pig_spawn_egg", + Self::PiglinBannerPattern => "minecraft:piglin_banner_pattern", + Self::PiglinBruteSpawnEgg => "minecraft:piglin_brute_spawn_egg", + Self::PiglinHead => "minecraft:piglin_head", + Self::PiglinSpawnEgg => "minecraft:piglin_spawn_egg", + Self::PillagerSpawnEgg => "minecraft:pillager_spawn_egg", + Self::PinkBanner => "minecraft:pink_banner", + Self::PinkBed => "minecraft:pink_bed", + Self::PinkBundle => "minecraft:pink_bundle", + Self::PinkCandle => "minecraft:pink_candle", + Self::PinkCarpet => "minecraft:pink_carpet", + Self::PinkConcrete => "minecraft:pink_concrete", + Self::PinkConcretePowder => "minecraft:pink_concrete_powder", + Self::PinkDye => "minecraft:pink_dye", + Self::PinkGlazedTerracotta => "minecraft:pink_glazed_terracotta", + Self::PinkHarness => "minecraft:pink_harness", + Self::PinkPetals => "minecraft:pink_petals", + Self::PinkShulkerBox => "minecraft:pink_shulker_box", + Self::PinkStainedGlass => "minecraft:pink_stained_glass", + Self::PinkStainedGlassPane => "minecraft:pink_stained_glass_pane", + Self::PinkTerracotta => "minecraft:pink_terracotta", + Self::PinkTulip => "minecraft:pink_tulip", + Self::PinkWool => "minecraft:pink_wool", + Self::Piston => "minecraft:piston", + Self::PitcherPlant => "minecraft:pitcher_plant", + Self::PitcherPod => "minecraft:pitcher_pod", + Self::PlayerHead => "minecraft:player_head", + Self::PlentyPotterySherd => "minecraft:plenty_pottery_sherd", + Self::Podzol => "minecraft:podzol", + Self::PointedDripstone => "minecraft:pointed_dripstone", + Self::PoisonousPotato => "minecraft:poisonous_potato", + Self::PolarBearSpawnEgg => "minecraft:polar_bear_spawn_egg", + Self::PolishedAndesite => "minecraft:polished_andesite", + Self::PolishedAndesiteSlab => "minecraft:polished_andesite_slab", + Self::PolishedAndesiteStairs => "minecraft:polished_andesite_stairs", + Self::PolishedBasalt => "minecraft:polished_basalt", + Self::PolishedBlackstone => "minecraft:polished_blackstone", + Self::PolishedBlackstoneBrickSlab => "minecraft:polished_blackstone_brick_slab", + Self::PolishedBlackstoneBrickStairs => "minecraft:polished_blackstone_brick_stairs", + Self::PolishedBlackstoneBrickWall => "minecraft:polished_blackstone_brick_wall", + Self::PolishedBlackstoneBricks => "minecraft:polished_blackstone_bricks", + Self::PolishedBlackstoneButton => "minecraft:polished_blackstone_button", + Self::PolishedBlackstonePressurePlate => "minecraft:polished_blackstone_pressure_plate", + Self::PolishedBlackstoneSlab => "minecraft:polished_blackstone_slab", + Self::PolishedBlackstoneStairs => "minecraft:polished_blackstone_stairs", + Self::PolishedBlackstoneWall => "minecraft:polished_blackstone_wall", + Self::PolishedCinnabar => "minecraft:polished_cinnabar", + Self::PolishedCinnabarSlab => "minecraft:polished_cinnabar_slab", + Self::PolishedCinnabarStairs => "minecraft:polished_cinnabar_stairs", + Self::PolishedCinnabarWall => "minecraft:polished_cinnabar_wall", + Self::PolishedDeepslate => "minecraft:polished_deepslate", + Self::PolishedDeepslateSlab => "minecraft:polished_deepslate_slab", + Self::PolishedDeepslateStairs => "minecraft:polished_deepslate_stairs", + Self::PolishedDeepslateWall => "minecraft:polished_deepslate_wall", + Self::PolishedDiorite => "minecraft:polished_diorite", + Self::PolishedDioriteSlab => "minecraft:polished_diorite_slab", + Self::PolishedDioriteStairs => "minecraft:polished_diorite_stairs", + Self::PolishedGranite => "minecraft:polished_granite", + Self::PolishedGraniteSlab => "minecraft:polished_granite_slab", + Self::PolishedGraniteStairs => "minecraft:polished_granite_stairs", + Self::PolishedSulfur => "minecraft:polished_sulfur", + Self::PolishedSulfurSlab => "minecraft:polished_sulfur_slab", + Self::PolishedSulfurStairs => "minecraft:polished_sulfur_stairs", + Self::PolishedSulfurWall => "minecraft:polished_sulfur_wall", + Self::PolishedTuff => "minecraft:polished_tuff", + Self::PolishedTuffSlab => "minecraft:polished_tuff_slab", + Self::PolishedTuffStairs => "minecraft:polished_tuff_stairs", + Self::PolishedTuffWall => "minecraft:polished_tuff_wall", + Self::PoppedChorusFruit => "minecraft:popped_chorus_fruit", + Self::Poppy => "minecraft:poppy", + Self::Porkchop => "minecraft:porkchop", + Self::Potato => "minecraft:potato", + Self::PotentSulfur => "minecraft:potent_sulfur", + Self::Potion => "minecraft:potion", + Self::PowderSnowBucket => "minecraft:powder_snow_bucket", + Self::PoweredRail => "minecraft:powered_rail", + Self::Prismarine => "minecraft:prismarine", + Self::PrismarineBrickSlab => "minecraft:prismarine_brick_slab", + Self::PrismarineBrickStairs => "minecraft:prismarine_brick_stairs", + Self::PrismarineBricks => "minecraft:prismarine_bricks", + Self::PrismarineCrystals => "minecraft:prismarine_crystals", + Self::PrismarineShard => "minecraft:prismarine_shard", + Self::PrismarineSlab => "minecraft:prismarine_slab", + Self::PrismarineStairs => "minecraft:prismarine_stairs", + Self::PrismarineWall => "minecraft:prismarine_wall", + Self::PrizePotterySherd => "minecraft:prize_pottery_sherd", + Self::Pufferfish => "minecraft:pufferfish", + Self::PufferfishBucket => "minecraft:pufferfish_bucket", + Self::PufferfishSpawnEgg => "minecraft:pufferfish_spawn_egg", + Self::Pumpkin => "minecraft:pumpkin", + Self::PumpkinPie => "minecraft:pumpkin_pie", + Self::PumpkinSeeds => "minecraft:pumpkin_seeds", + Self::PurpleBanner => "minecraft:purple_banner", + Self::PurpleBed => "minecraft:purple_bed", + Self::PurpleBundle => "minecraft:purple_bundle", + Self::PurpleCandle => "minecraft:purple_candle", + Self::PurpleCarpet => "minecraft:purple_carpet", + Self::PurpleConcrete => "minecraft:purple_concrete", + Self::PurpleConcretePowder => "minecraft:purple_concrete_powder", + Self::PurpleDye => "minecraft:purple_dye", + Self::PurpleGlazedTerracotta => "minecraft:purple_glazed_terracotta", + Self::PurpleHarness => "minecraft:purple_harness", + Self::PurpleShulkerBox => "minecraft:purple_shulker_box", + Self::PurpleStainedGlass => "minecraft:purple_stained_glass", + Self::PurpleStainedGlassPane => "minecraft:purple_stained_glass_pane", + Self::PurpleTerracotta => "minecraft:purple_terracotta", + Self::PurpleWool => "minecraft:purple_wool", + Self::PurpurBlock => "minecraft:purpur_block", + Self::PurpurPillar => "minecraft:purpur_pillar", + Self::PurpurSlab => "minecraft:purpur_slab", + Self::PurpurStairs => "minecraft:purpur_stairs", + Self::Quartz => "minecraft:quartz", + Self::QuartzBlock => "minecraft:quartz_block", + Self::QuartzBricks => "minecraft:quartz_bricks", + Self::QuartzPillar => "minecraft:quartz_pillar", + Self::QuartzSlab => "minecraft:quartz_slab", + Self::QuartzStairs => "minecraft:quartz_stairs", + Self::Rabbit => "minecraft:rabbit", + Self::RabbitFoot => "minecraft:rabbit_foot", + Self::RabbitHide => "minecraft:rabbit_hide", + Self::RabbitSpawnEgg => "minecraft:rabbit_spawn_egg", + Self::RabbitStew => "minecraft:rabbit_stew", + Self::Rail => "minecraft:rail", + Self::RaiserArmorTrimSmithingTemplate => { + "minecraft:raiser_armor_trim_smithing_template" + } + Self::RavagerSpawnEgg => "minecraft:ravager_spawn_egg", + Self::RawCopper => "minecraft:raw_copper", + Self::RawCopperBlock => "minecraft:raw_copper_block", + Self::RawGold => "minecraft:raw_gold", + Self::RawGoldBlock => "minecraft:raw_gold_block", + Self::RawIron => "minecraft:raw_iron", + Self::RawIronBlock => "minecraft:raw_iron_block", + Self::RecoveryCompass => "minecraft:recovery_compass", + Self::RedBanner => "minecraft:red_banner", + Self::RedBed => "minecraft:red_bed", + Self::RedBundle => "minecraft:red_bundle", + Self::RedCandle => "minecraft:red_candle", + Self::RedCarpet => "minecraft:red_carpet", + Self::RedConcrete => "minecraft:red_concrete", + Self::RedConcretePowder => "minecraft:red_concrete_powder", + Self::RedDye => "minecraft:red_dye", + Self::RedGlazedTerracotta => "minecraft:red_glazed_terracotta", + Self::RedHarness => "minecraft:red_harness", + Self::RedMushroom => "minecraft:red_mushroom", + Self::RedMushroomBlock => "minecraft:red_mushroom_block", + Self::RedNetherBrickSlab => "minecraft:red_nether_brick_slab", + Self::RedNetherBrickStairs => "minecraft:red_nether_brick_stairs", + Self::RedNetherBrickWall => "minecraft:red_nether_brick_wall", + Self::RedNetherBricks => "minecraft:red_nether_bricks", + Self::RedSand => "minecraft:red_sand", + Self::RedSandstone => "minecraft:red_sandstone", + Self::RedSandstoneSlab => "minecraft:red_sandstone_slab", + Self::RedSandstoneStairs => "minecraft:red_sandstone_stairs", + Self::RedSandstoneWall => "minecraft:red_sandstone_wall", + Self::RedShulkerBox => "minecraft:red_shulker_box", + Self::RedStainedGlass => "minecraft:red_stained_glass", + Self::RedStainedGlassPane => "minecraft:red_stained_glass_pane", + Self::RedTerracotta => "minecraft:red_terracotta", + Self::RedTulip => "minecraft:red_tulip", + Self::RedWool => "minecraft:red_wool", + Self::Redstone => "minecraft:redstone", + Self::RedstoneBlock => "minecraft:redstone_block", + Self::RedstoneLamp => "minecraft:redstone_lamp", + Self::RedstoneOre => "minecraft:redstone_ore", + Self::RedstoneTorch => "minecraft:redstone_torch", + Self::ReinforcedDeepslate => "minecraft:reinforced_deepslate", + Self::Repeater => "minecraft:repeater", + Self::RepeatingCommandBlock => "minecraft:repeating_command_block", + Self::ResinBlock => "minecraft:resin_block", + Self::ResinBrick => "minecraft:resin_brick", + Self::ResinBrickSlab => "minecraft:resin_brick_slab", + Self::ResinBrickStairs => "minecraft:resin_brick_stairs", + Self::ResinBrickWall => "minecraft:resin_brick_wall", + Self::ResinBricks => "minecraft:resin_bricks", + Self::ResinClump => "minecraft:resin_clump", + Self::RespawnAnchor => "minecraft:respawn_anchor", + Self::RibArmorTrimSmithingTemplate => "minecraft:rib_armor_trim_smithing_template", + Self::RootedDirt => "minecraft:rooted_dirt", + Self::RoseBush => "minecraft:rose_bush", + Self::RottenFlesh => "minecraft:rotten_flesh", + Self::Saddle => "minecraft:saddle", + Self::Salmon => "minecraft:salmon", + Self::SalmonBucket => "minecraft:salmon_bucket", + Self::SalmonSpawnEgg => "minecraft:salmon_spawn_egg", + Self::Sand => "minecraft:sand", + Self::Sandstone => "minecraft:sandstone", + Self::SandstoneSlab => "minecraft:sandstone_slab", + Self::SandstoneStairs => "minecraft:sandstone_stairs", + Self::SandstoneWall => "minecraft:sandstone_wall", + Self::Scaffolding => "minecraft:scaffolding", + Self::ScrapePotterySherd => "minecraft:scrape_pottery_sherd", + Self::Sculk => "minecraft:sculk", + Self::SculkCatalyst => "minecraft:sculk_catalyst", + Self::SculkSensor => "minecraft:sculk_sensor", + Self::SculkShrieker => "minecraft:sculk_shrieker", + Self::SculkVein => "minecraft:sculk_vein", + Self::SeaLantern => "minecraft:sea_lantern", + Self::SeaPickle => "minecraft:sea_pickle", + Self::Seagrass => "minecraft:seagrass", + Self::SentryArmorTrimSmithingTemplate => { + "minecraft:sentry_armor_trim_smithing_template" + } + Self::ShaperArmorTrimSmithingTemplate => { + "minecraft:shaper_armor_trim_smithing_template" + } + Self::SheafPotterySherd => "minecraft:sheaf_pottery_sherd", + Self::Shears => "minecraft:shears", + Self::SheepSpawnEgg => "minecraft:sheep_spawn_egg", + Self::ShelterPotterySherd => "minecraft:shelter_pottery_sherd", + Self::Shield => "minecraft:shield", + Self::ShortDryGrass => "minecraft:short_dry_grass", + Self::ShortGrass => "minecraft:short_grass", + Self::Shroomlight => "minecraft:shroomlight", + Self::ShulkerBox => "minecraft:shulker_box", + Self::ShulkerShell => "minecraft:shulker_shell", + Self::ShulkerSpawnEgg => "minecraft:shulker_spawn_egg", + Self::SilenceArmorTrimSmithingTemplate => { + "minecraft:silence_armor_trim_smithing_template" + } + Self::SilverfishSpawnEgg => "minecraft:silverfish_spawn_egg", + Self::SkeletonHorseSpawnEgg => "minecraft:skeleton_horse_spawn_egg", + Self::SkeletonSkull => "minecraft:skeleton_skull", + Self::SkeletonSpawnEgg => "minecraft:skeleton_spawn_egg", + Self::SkullBannerPattern => "minecraft:skull_banner_pattern", + Self::SkullPotterySherd => "minecraft:skull_pottery_sherd", + Self::SlimeBall => "minecraft:slime_ball", + Self::SlimeBlock => "minecraft:slime_block", + Self::SlimeSpawnEgg => "minecraft:slime_spawn_egg", + Self::SmallAmethystBud => "minecraft:small_amethyst_bud", + Self::SmallDripleaf => "minecraft:small_dripleaf", + Self::SmithingTable => "minecraft:smithing_table", + Self::Smoker => "minecraft:smoker", + Self::SmoothBasalt => "minecraft:smooth_basalt", + Self::SmoothQuartz => "minecraft:smooth_quartz", + Self::SmoothQuartzSlab => "minecraft:smooth_quartz_slab", + Self::SmoothQuartzStairs => "minecraft:smooth_quartz_stairs", + Self::SmoothRedSandstone => "minecraft:smooth_red_sandstone", + Self::SmoothRedSandstoneSlab => "minecraft:smooth_red_sandstone_slab", + Self::SmoothRedSandstoneStairs => "minecraft:smooth_red_sandstone_stairs", + Self::SmoothSandstone => "minecraft:smooth_sandstone", + Self::SmoothSandstoneSlab => "minecraft:smooth_sandstone_slab", + Self::SmoothSandstoneStairs => "minecraft:smooth_sandstone_stairs", + Self::SmoothStone => "minecraft:smooth_stone", + Self::SmoothStoneSlab => "minecraft:smooth_stone_slab", + Self::SnifferEgg => "minecraft:sniffer_egg", + Self::SnifferSpawnEgg => "minecraft:sniffer_spawn_egg", + Self::SnortPotterySherd => "minecraft:snort_pottery_sherd", + Self::SnoutArmorTrimSmithingTemplate => "minecraft:snout_armor_trim_smithing_template", + Self::Snow => "minecraft:snow", + Self::SnowBlock => "minecraft:snow_block", + Self::SnowGolemSpawnEgg => "minecraft:snow_golem_spawn_egg", + Self::Snowball => "minecraft:snowball", + Self::SoulCampfire => "minecraft:soul_campfire", + Self::SoulLantern => "minecraft:soul_lantern", + Self::SoulSand => "minecraft:soul_sand", + Self::SoulSoil => "minecraft:soul_soil", + Self::SoulTorch => "minecraft:soul_torch", + Self::Spawner => "minecraft:spawner", + Self::SpectralArrow => "minecraft:spectral_arrow", + Self::SpiderEye => "minecraft:spider_eye", + Self::SpiderSpawnEgg => "minecraft:spider_spawn_egg", + Self::SpireArmorTrimSmithingTemplate => "minecraft:spire_armor_trim_smithing_template", + Self::SplashPotion => "minecraft:splash_potion", + Self::Sponge => "minecraft:sponge", + Self::SporeBlossom => "minecraft:spore_blossom", + Self::SpruceBoat => "minecraft:spruce_boat", + Self::SpruceButton => "minecraft:spruce_button", + Self::SpruceChestBoat => "minecraft:spruce_chest_boat", + Self::SpruceDoor => "minecraft:spruce_door", + Self::SpruceFence => "minecraft:spruce_fence", + Self::SpruceFenceGate => "minecraft:spruce_fence_gate", + Self::SpruceHangingSign => "minecraft:spruce_hanging_sign", + Self::SpruceLeaves => "minecraft:spruce_leaves", + Self::SpruceLog => "minecraft:spruce_log", + Self::SprucePlanks => "minecraft:spruce_planks", + Self::SprucePressurePlate => "minecraft:spruce_pressure_plate", + Self::SpruceSapling => "minecraft:spruce_sapling", + Self::SpruceShelf => "minecraft:spruce_shelf", + Self::SpruceSign => "minecraft:spruce_sign", + Self::SpruceSlab => "minecraft:spruce_slab", + Self::SpruceStairs => "minecraft:spruce_stairs", + Self::SpruceTrapdoor => "minecraft:spruce_trapdoor", + Self::SpruceWood => "minecraft:spruce_wood", + Self::Spyglass => "minecraft:spyglass", + Self::SquidSpawnEgg => "minecraft:squid_spawn_egg", + Self::Stick => "minecraft:stick", + Self::StickyPiston => "minecraft:sticky_piston", + Self::Stone => "minecraft:stone", + Self::StoneAxe => "minecraft:stone_axe", + Self::StoneBrickSlab => "minecraft:stone_brick_slab", + Self::StoneBrickStairs => "minecraft:stone_brick_stairs", + Self::StoneBrickWall => "minecraft:stone_brick_wall", + Self::StoneBricks => "minecraft:stone_bricks", + Self::StoneButton => "minecraft:stone_button", + Self::StoneHoe => "minecraft:stone_hoe", + Self::StonePickaxe => "minecraft:stone_pickaxe", + Self::StonePressurePlate => "minecraft:stone_pressure_plate", + Self::StoneShovel => "minecraft:stone_shovel", + Self::StoneSlab => "minecraft:stone_slab", + Self::StoneSpear => "minecraft:stone_spear", + Self::StoneStairs => "minecraft:stone_stairs", + Self::StoneSword => "minecraft:stone_sword", + Self::Stonecutter => "minecraft:stonecutter", + Self::StraySpawnEgg => "minecraft:stray_spawn_egg", + Self::StriderSpawnEgg => "minecraft:strider_spawn_egg", + Self::String => "minecraft:string", + Self::StrippedAcaciaLog => "minecraft:stripped_acacia_log", + Self::StrippedAcaciaWood => "minecraft:stripped_acacia_wood", + Self::StrippedBambooBlock => "minecraft:stripped_bamboo_block", + Self::StrippedBirchLog => "minecraft:stripped_birch_log", + Self::StrippedBirchWood => "minecraft:stripped_birch_wood", + Self::StrippedCherryLog => "minecraft:stripped_cherry_log", + Self::StrippedCherryWood => "minecraft:stripped_cherry_wood", + Self::StrippedCrimsonHyphae => "minecraft:stripped_crimson_hyphae", + Self::StrippedCrimsonStem => "minecraft:stripped_crimson_stem", + Self::StrippedDarkOakLog => "minecraft:stripped_dark_oak_log", + Self::StrippedDarkOakWood => "minecraft:stripped_dark_oak_wood", + Self::StrippedJungleLog => "minecraft:stripped_jungle_log", + Self::StrippedJungleWood => "minecraft:stripped_jungle_wood", + Self::StrippedMangroveLog => "minecraft:stripped_mangrove_log", + Self::StrippedMangroveWood => "minecraft:stripped_mangrove_wood", + Self::StrippedOakLog => "minecraft:stripped_oak_log", + Self::StrippedOakWood => "minecraft:stripped_oak_wood", + Self::StrippedPaleOakLog => "minecraft:stripped_pale_oak_log", + Self::StrippedPaleOakWood => "minecraft:stripped_pale_oak_wood", + Self::StrippedSpruceLog => "minecraft:stripped_spruce_log", + Self::StrippedSpruceWood => "minecraft:stripped_spruce_wood", + Self::StrippedWarpedHyphae => "minecraft:stripped_warped_hyphae", + Self::StrippedWarpedStem => "minecraft:stripped_warped_stem", + Self::StructureBlock => "minecraft:structure_block", + Self::StructureVoid => "minecraft:structure_void", + Self::Sugar => "minecraft:sugar", + Self::SugarCane => "minecraft:sugar_cane", + Self::Sulfur => "minecraft:sulfur", + Self::SulfurBrickSlab => "minecraft:sulfur_brick_slab", + Self::SulfurBrickStairs => "minecraft:sulfur_brick_stairs", + Self::SulfurBrickWall => "minecraft:sulfur_brick_wall", + Self::SulfurBricks => "minecraft:sulfur_bricks", + Self::SulfurCubeBucket => "minecraft:sulfur_cube_bucket", + Self::SulfurCubeSpawnEgg => "minecraft:sulfur_cube_spawn_egg", + Self::SulfurSlab => "minecraft:sulfur_slab", + Self::SulfurSpike => "minecraft:sulfur_spike", + Self::SulfurStairs => "minecraft:sulfur_stairs", + Self::SulfurWall => "minecraft:sulfur_wall", + Self::Sunflower => "minecraft:sunflower", + Self::SuspiciousGravel => "minecraft:suspicious_gravel", + Self::SuspiciousSand => "minecraft:suspicious_sand", + Self::SuspiciousStew => "minecraft:suspicious_stew", + Self::SweetBerries => "minecraft:sweet_berries", + Self::TadpoleBucket => "minecraft:tadpole_bucket", + Self::TadpoleSpawnEgg => "minecraft:tadpole_spawn_egg", + Self::TallDryGrass => "minecraft:tall_dry_grass", + Self::TallGrass => "minecraft:tall_grass", + Self::Target => "minecraft:target", + Self::Terracotta => "minecraft:terracotta", + Self::TestBlock => "minecraft:test_block", + Self::TestInstanceBlock => "minecraft:test_instance_block", + Self::TideArmorTrimSmithingTemplate => "minecraft:tide_armor_trim_smithing_template", + Self::TintedGlass => "minecraft:tinted_glass", + Self::TippedArrow => "minecraft:tipped_arrow", + Self::Tnt => "minecraft:tnt", + Self::TntMinecart => "minecraft:tnt_minecart", + Self::Torch => "minecraft:torch", + Self::Torchflower => "minecraft:torchflower", + Self::TorchflowerSeeds => "minecraft:torchflower_seeds", + Self::TotemOfUndying => "minecraft:totem_of_undying", + Self::TraderLlamaSpawnEgg => "minecraft:trader_llama_spawn_egg", + Self::TrappedChest => "minecraft:trapped_chest", + Self::TrialKey => "minecraft:trial_key", + Self::TrialSpawner => "minecraft:trial_spawner", + Self::Trident => "minecraft:trident", + Self::TripwireHook => "minecraft:tripwire_hook", + Self::TropicalFish => "minecraft:tropical_fish", + Self::TropicalFishBucket => "minecraft:tropical_fish_bucket", + Self::TropicalFishSpawnEgg => "minecraft:tropical_fish_spawn_egg", + Self::TubeCoral => "minecraft:tube_coral", + Self::TubeCoralBlock => "minecraft:tube_coral_block", + Self::TubeCoralFan => "minecraft:tube_coral_fan", + Self::Tuff => "minecraft:tuff", + Self::TuffBrickSlab => "minecraft:tuff_brick_slab", + Self::TuffBrickStairs => "minecraft:tuff_brick_stairs", + Self::TuffBrickWall => "minecraft:tuff_brick_wall", + Self::TuffBricks => "minecraft:tuff_bricks", + Self::TuffSlab => "minecraft:tuff_slab", + Self::TuffStairs => "minecraft:tuff_stairs", + Self::TuffWall => "minecraft:tuff_wall", + Self::TurtleEgg => "minecraft:turtle_egg", + Self::TurtleHelmet => "minecraft:turtle_helmet", + Self::TurtleScute => "minecraft:turtle_scute", + Self::TurtleSpawnEgg => "minecraft:turtle_spawn_egg", + Self::TwistingVines => "minecraft:twisting_vines", + Self::Vault => "minecraft:vault", + Self::VerdantFroglight => "minecraft:verdant_froglight", + Self::VexArmorTrimSmithingTemplate => "minecraft:vex_armor_trim_smithing_template", + Self::VexSpawnEgg => "minecraft:vex_spawn_egg", + Self::VillagerSpawnEgg => "minecraft:villager_spawn_egg", + Self::VindicatorSpawnEgg => "minecraft:vindicator_spawn_egg", + Self::Vine => "minecraft:vine", + Self::WanderingTraderSpawnEgg => "minecraft:wandering_trader_spawn_egg", + Self::WardArmorTrimSmithingTemplate => "minecraft:ward_armor_trim_smithing_template", + Self::WardenSpawnEgg => "minecraft:warden_spawn_egg", + Self::WarpedButton => "minecraft:warped_button", + Self::WarpedDoor => "minecraft:warped_door", + Self::WarpedFence => "minecraft:warped_fence", + Self::WarpedFenceGate => "minecraft:warped_fence_gate", + Self::WarpedFungus => "minecraft:warped_fungus", + Self::WarpedFungusOnAStick => "minecraft:warped_fungus_on_a_stick", + Self::WarpedHangingSign => "minecraft:warped_hanging_sign", + Self::WarpedHyphae => "minecraft:warped_hyphae", + Self::WarpedNylium => "minecraft:warped_nylium", + Self::WarpedPlanks => "minecraft:warped_planks", + Self::WarpedPressurePlate => "minecraft:warped_pressure_plate", + Self::WarpedRoots => "minecraft:warped_roots", + Self::WarpedShelf => "minecraft:warped_shelf", + Self::WarpedSign => "minecraft:warped_sign", + Self::WarpedSlab => "minecraft:warped_slab", + Self::WarpedStairs => "minecraft:warped_stairs", + Self::WarpedStem => "minecraft:warped_stem", + Self::WarpedTrapdoor => "minecraft:warped_trapdoor", + Self::WarpedWartBlock => "minecraft:warped_wart_block", + Self::WaterBucket => "minecraft:water_bucket", + Self::WaxedChiseledCopper => "minecraft:waxed_chiseled_copper", + Self::WaxedCopperBars => "minecraft:waxed_copper_bars", + Self::WaxedCopperBlock => "minecraft:waxed_copper_block", + Self::WaxedCopperBulb => "minecraft:waxed_copper_bulb", + Self::WaxedCopperChain => "minecraft:waxed_copper_chain", + Self::WaxedCopperChest => "minecraft:waxed_copper_chest", + Self::WaxedCopperDoor => "minecraft:waxed_copper_door", + Self::WaxedCopperGolemStatue => "minecraft:waxed_copper_golem_statue", + Self::WaxedCopperGrate => "minecraft:waxed_copper_grate", + Self::WaxedCopperLantern => "minecraft:waxed_copper_lantern", + Self::WaxedCopperTrapdoor => "minecraft:waxed_copper_trapdoor", + Self::WaxedCutCopper => "minecraft:waxed_cut_copper", + Self::WaxedCutCopperSlab => "minecraft:waxed_cut_copper_slab", + Self::WaxedCutCopperStairs => "minecraft:waxed_cut_copper_stairs", + Self::WaxedExposedChiseledCopper => "minecraft:waxed_exposed_chiseled_copper", + Self::WaxedExposedCopper => "minecraft:waxed_exposed_copper", + Self::WaxedExposedCopperBars => "minecraft:waxed_exposed_copper_bars", + Self::WaxedExposedCopperBulb => "minecraft:waxed_exposed_copper_bulb", + Self::WaxedExposedCopperChain => "minecraft:waxed_exposed_copper_chain", + Self::WaxedExposedCopperChest => "minecraft:waxed_exposed_copper_chest", + Self::WaxedExposedCopperDoor => "minecraft:waxed_exposed_copper_door", + Self::WaxedExposedCopperGolemStatue => "minecraft:waxed_exposed_copper_golem_statue", + Self::WaxedExposedCopperGrate => "minecraft:waxed_exposed_copper_grate", + Self::WaxedExposedCopperLantern => "minecraft:waxed_exposed_copper_lantern", + Self::WaxedExposedCopperTrapdoor => "minecraft:waxed_exposed_copper_trapdoor", + Self::WaxedExposedCutCopper => "minecraft:waxed_exposed_cut_copper", + Self::WaxedExposedCutCopperSlab => "minecraft:waxed_exposed_cut_copper_slab", + Self::WaxedExposedCutCopperStairs => "minecraft:waxed_exposed_cut_copper_stairs", + Self::WaxedExposedLightningRod => "minecraft:waxed_exposed_lightning_rod", + Self::WaxedLightningRod => "minecraft:waxed_lightning_rod", + Self::WaxedOxidizedChiseledCopper => "minecraft:waxed_oxidized_chiseled_copper", + Self::WaxedOxidizedCopper => "minecraft:waxed_oxidized_copper", + Self::WaxedOxidizedCopperBars => "minecraft:waxed_oxidized_copper_bars", + Self::WaxedOxidizedCopperBulb => "minecraft:waxed_oxidized_copper_bulb", + Self::WaxedOxidizedCopperChain => "minecraft:waxed_oxidized_copper_chain", + Self::WaxedOxidizedCopperChest => "minecraft:waxed_oxidized_copper_chest", + Self::WaxedOxidizedCopperDoor => "minecraft:waxed_oxidized_copper_door", + Self::WaxedOxidizedCopperGolemStatue => "minecraft:waxed_oxidized_copper_golem_statue", + Self::WaxedOxidizedCopperGrate => "minecraft:waxed_oxidized_copper_grate", + Self::WaxedOxidizedCopperLantern => "minecraft:waxed_oxidized_copper_lantern", + Self::WaxedOxidizedCopperTrapdoor => "minecraft:waxed_oxidized_copper_trapdoor", + Self::WaxedOxidizedCutCopper => "minecraft:waxed_oxidized_cut_copper", + Self::WaxedOxidizedCutCopperSlab => "minecraft:waxed_oxidized_cut_copper_slab", + Self::WaxedOxidizedCutCopperStairs => "minecraft:waxed_oxidized_cut_copper_stairs", + Self::WaxedOxidizedLightningRod => "minecraft:waxed_oxidized_lightning_rod", + Self::WaxedWeatheredChiseledCopper => "minecraft:waxed_weathered_chiseled_copper", + Self::WaxedWeatheredCopper => "minecraft:waxed_weathered_copper", + Self::WaxedWeatheredCopperBars => "minecraft:waxed_weathered_copper_bars", + Self::WaxedWeatheredCopperBulb => "minecraft:waxed_weathered_copper_bulb", + Self::WaxedWeatheredCopperChain => "minecraft:waxed_weathered_copper_chain", + Self::WaxedWeatheredCopperChest => "minecraft:waxed_weathered_copper_chest", + Self::WaxedWeatheredCopperDoor => "minecraft:waxed_weathered_copper_door", + Self::WaxedWeatheredCopperGolemStatue => { + "minecraft:waxed_weathered_copper_golem_statue" + } + Self::WaxedWeatheredCopperGrate => "minecraft:waxed_weathered_copper_grate", + Self::WaxedWeatheredCopperLantern => "minecraft:waxed_weathered_copper_lantern", + Self::WaxedWeatheredCopperTrapdoor => "minecraft:waxed_weathered_copper_trapdoor", + Self::WaxedWeatheredCutCopper => "minecraft:waxed_weathered_cut_copper", + Self::WaxedWeatheredCutCopperSlab => "minecraft:waxed_weathered_cut_copper_slab", + Self::WaxedWeatheredCutCopperStairs => "minecraft:waxed_weathered_cut_copper_stairs", + Self::WaxedWeatheredLightningRod => "minecraft:waxed_weathered_lightning_rod", + Self::WayfinderArmorTrimSmithingTemplate => { + "minecraft:wayfinder_armor_trim_smithing_template" + } + Self::WeatheredChiseledCopper => "minecraft:weathered_chiseled_copper", + Self::WeatheredCopper => "minecraft:weathered_copper", + Self::WeatheredCopperBars => "minecraft:weathered_copper_bars", + Self::WeatheredCopperBulb => "minecraft:weathered_copper_bulb", + Self::WeatheredCopperChain => "minecraft:weathered_copper_chain", + Self::WeatheredCopperChest => "minecraft:weathered_copper_chest", + Self::WeatheredCopperDoor => "minecraft:weathered_copper_door", + Self::WeatheredCopperGolemStatue => "minecraft:weathered_copper_golem_statue", + Self::WeatheredCopperGrate => "minecraft:weathered_copper_grate", + Self::WeatheredCopperLantern => "minecraft:weathered_copper_lantern", + Self::WeatheredCopperTrapdoor => "minecraft:weathered_copper_trapdoor", + Self::WeatheredCutCopper => "minecraft:weathered_cut_copper", + Self::WeatheredCutCopperSlab => "minecraft:weathered_cut_copper_slab", + Self::WeatheredCutCopperStairs => "minecraft:weathered_cut_copper_stairs", + Self::WeatheredLightningRod => "minecraft:weathered_lightning_rod", + Self::WeepingVines => "minecraft:weeping_vines", + Self::WetSponge => "minecraft:wet_sponge", + Self::Wheat => "minecraft:wheat", + Self::WheatSeeds => "minecraft:wheat_seeds", + Self::WhiteBanner => "minecraft:white_banner", + Self::WhiteBed => "minecraft:white_bed", + Self::WhiteBundle => "minecraft:white_bundle", + Self::WhiteCandle => "minecraft:white_candle", + Self::WhiteCarpet => "minecraft:white_carpet", + Self::WhiteConcrete => "minecraft:white_concrete", + Self::WhiteConcretePowder => "minecraft:white_concrete_powder", + Self::WhiteDye => "minecraft:white_dye", + Self::WhiteGlazedTerracotta => "minecraft:white_glazed_terracotta", + Self::WhiteHarness => "minecraft:white_harness", + Self::WhiteShulkerBox => "minecraft:white_shulker_box", + Self::WhiteStainedGlass => "minecraft:white_stained_glass", + Self::WhiteStainedGlassPane => "minecraft:white_stained_glass_pane", + Self::WhiteTerracotta => "minecraft:white_terracotta", + Self::WhiteTulip => "minecraft:white_tulip", + Self::WhiteWool => "minecraft:white_wool", + Self::WildArmorTrimSmithingTemplate => "minecraft:wild_armor_trim_smithing_template", + Self::Wildflowers => "minecraft:wildflowers", + Self::WindCharge => "minecraft:wind_charge", + Self::WitchSpawnEgg => "minecraft:witch_spawn_egg", + Self::WitherRose => "minecraft:wither_rose", + Self::WitherSkeletonSkull => "minecraft:wither_skeleton_skull", + Self::WitherSkeletonSpawnEgg => "minecraft:wither_skeleton_spawn_egg", + Self::WitherSpawnEgg => "minecraft:wither_spawn_egg", + Self::WolfArmor => "minecraft:wolf_armor", + Self::WolfSpawnEgg => "minecraft:wolf_spawn_egg", + Self::WoodenAxe => "minecraft:wooden_axe", + Self::WoodenHoe => "minecraft:wooden_hoe", + Self::WoodenPickaxe => "minecraft:wooden_pickaxe", + Self::WoodenShovel => "minecraft:wooden_shovel", + Self::WoodenSpear => "minecraft:wooden_spear", + Self::WoodenSword => "minecraft:wooden_sword", + Self::WritableBook => "minecraft:writable_book", + Self::WrittenBook => "minecraft:written_book", + Self::YellowBanner => "minecraft:yellow_banner", + Self::YellowBed => "minecraft:yellow_bed", + Self::YellowBundle => "minecraft:yellow_bundle", + Self::YellowCandle => "minecraft:yellow_candle", + Self::YellowCarpet => "minecraft:yellow_carpet", + Self::YellowConcrete => "minecraft:yellow_concrete", + Self::YellowConcretePowder => "minecraft:yellow_concrete_powder", + Self::YellowDye => "minecraft:yellow_dye", + Self::YellowGlazedTerracotta => "minecraft:yellow_glazed_terracotta", + Self::YellowHarness => "minecraft:yellow_harness", + Self::YellowShulkerBox => "minecraft:yellow_shulker_box", + Self::YellowStainedGlass => "minecraft:yellow_stained_glass", + Self::YellowStainedGlassPane => "minecraft:yellow_stained_glass_pane", + Self::YellowTerracotta => "minecraft:yellow_terracotta", + Self::YellowWool => "minecraft:yellow_wool", + Self::ZoglinSpawnEgg => "minecraft:zoglin_spawn_egg", + Self::ZombieHead => "minecraft:zombie_head", + Self::ZombieHorseSpawnEgg => "minecraft:zombie_horse_spawn_egg", + Self::ZombieNautilusSpawnEgg => "minecraft:zombie_nautilus_spawn_egg", + Self::ZombieSpawnEgg => "minecraft:zombie_spawn_egg", + Self::ZombieVillagerSpawnEgg => "minecraft:zombie_villager_spawn_egg", + Self::ZombifiedPiglinSpawnEgg => "minecraft:zombified_piglin_spawn_egg", + } + } + + /// Resolves a typed `Item` from a name or namespaced identifier. + #[must_use] + pub fn from_name(name: &str) -> Option { + let clean = name.strip_prefix("minecraft:").unwrap_or(name); + match clean { + "acacia_boat" => Some(Self::AcaciaBoat), + "acacia_button" => Some(Self::AcaciaButton), + "acacia_chest_boat" => Some(Self::AcaciaChestBoat), + "acacia_door" => Some(Self::AcaciaDoor), + "acacia_fence" => Some(Self::AcaciaFence), + "acacia_fence_gate" => Some(Self::AcaciaFenceGate), + "acacia_hanging_sign" => Some(Self::AcaciaHangingSign), + "acacia_leaves" => Some(Self::AcaciaLeaves), + "acacia_log" => Some(Self::AcaciaLog), + "acacia_planks" => Some(Self::AcaciaPlanks), + "acacia_pressure_plate" => Some(Self::AcaciaPressurePlate), + "acacia_sapling" => Some(Self::AcaciaSapling), + "acacia_shelf" => Some(Self::AcaciaShelf), + "acacia_sign" => Some(Self::AcaciaSign), + "acacia_slab" => Some(Self::AcaciaSlab), + "acacia_stairs" => Some(Self::AcaciaStairs), + "acacia_trapdoor" => Some(Self::AcaciaTrapdoor), + "acacia_wood" => Some(Self::AcaciaWood), + "activator_rail" => Some(Self::ActivatorRail), + "air" => Some(Self::Air), + "allay_spawn_egg" => Some(Self::AllaySpawnEgg), + "allium" => Some(Self::Allium), + "amethyst_block" => Some(Self::AmethystBlock), + "amethyst_cluster" => Some(Self::AmethystCluster), + "amethyst_shard" => Some(Self::AmethystShard), + "ancient_debris" => Some(Self::AncientDebris), + "andesite" => Some(Self::Andesite), + "andesite_slab" => Some(Self::AndesiteSlab), + "andesite_stairs" => Some(Self::AndesiteStairs), + "andesite_wall" => Some(Self::AndesiteWall), + "angler_pottery_sherd" => Some(Self::AnglerPotterySherd), + "anvil" => Some(Self::Anvil), + "apple" => Some(Self::Apple), + "archer_pottery_sherd" => Some(Self::ArcherPotterySherd), + "armadillo_scute" => Some(Self::ArmadilloScute), + "armadillo_spawn_egg" => Some(Self::ArmadilloSpawnEgg), + "armor_stand" => Some(Self::ArmorStand), + "arms_up_pottery_sherd" => Some(Self::ArmsUpPotterySherd), + "arrow" => Some(Self::Arrow), + "axolotl_bucket" => Some(Self::AxolotlBucket), + "axolotl_spawn_egg" => Some(Self::AxolotlSpawnEgg), + "azalea" => Some(Self::Azalea), + "azalea_leaves" => Some(Self::AzaleaLeaves), + "azure_bluet" => Some(Self::AzureBluet), + "baked_potato" => Some(Self::BakedPotato), + "bamboo" => Some(Self::Bamboo), + "bamboo_block" => Some(Self::BambooBlock), + "bamboo_button" => Some(Self::BambooButton), + "bamboo_chest_raft" => Some(Self::BambooChestRaft), + "bamboo_door" => Some(Self::BambooDoor), + "bamboo_fence" => Some(Self::BambooFence), + "bamboo_fence_gate" => Some(Self::BambooFenceGate), + "bamboo_hanging_sign" => Some(Self::BambooHangingSign), + "bamboo_mosaic" => Some(Self::BambooMosaic), + "bamboo_mosaic_slab" => Some(Self::BambooMosaicSlab), + "bamboo_mosaic_stairs" => Some(Self::BambooMosaicStairs), + "bamboo_planks" => Some(Self::BambooPlanks), + "bamboo_pressure_plate" => Some(Self::BambooPressurePlate), + "bamboo_raft" => Some(Self::BambooRaft), + "bamboo_shelf" => Some(Self::BambooShelf), + "bamboo_sign" => Some(Self::BambooSign), + "bamboo_slab" => Some(Self::BambooSlab), + "bamboo_stairs" => Some(Self::BambooStairs), + "bamboo_trapdoor" => Some(Self::BambooTrapdoor), + "barrel" => Some(Self::Barrel), + "barrier" => Some(Self::Barrier), + "basalt" => Some(Self::Basalt), + "bat_spawn_egg" => Some(Self::BatSpawnEgg), + "beacon" => Some(Self::Beacon), + "bedrock" => Some(Self::Bedrock), + "bee_nest" => Some(Self::BeeNest), + "bee_spawn_egg" => Some(Self::BeeSpawnEgg), + "beef" => Some(Self::Beef), + "beehive" => Some(Self::Beehive), + "beetroot" => Some(Self::Beetroot), + "beetroot_seeds" => Some(Self::BeetrootSeeds), + "beetroot_soup" => Some(Self::BeetrootSoup), + "bell" => Some(Self::Bell), + "big_dripleaf" => Some(Self::BigDripleaf), + "birch_boat" => Some(Self::BirchBoat), + "birch_button" => Some(Self::BirchButton), + "birch_chest_boat" => Some(Self::BirchChestBoat), + "birch_door" => Some(Self::BirchDoor), + "birch_fence" => Some(Self::BirchFence), + "birch_fence_gate" => Some(Self::BirchFenceGate), + "birch_hanging_sign" => Some(Self::BirchHangingSign), + "birch_leaves" => Some(Self::BirchLeaves), + "birch_log" => Some(Self::BirchLog), + "birch_planks" => Some(Self::BirchPlanks), + "birch_pressure_plate" => Some(Self::BirchPressurePlate), + "birch_sapling" => Some(Self::BirchSapling), + "birch_shelf" => Some(Self::BirchShelf), + "birch_sign" => Some(Self::BirchSign), + "birch_slab" => Some(Self::BirchSlab), + "birch_stairs" => Some(Self::BirchStairs), + "birch_trapdoor" => Some(Self::BirchTrapdoor), + "birch_wood" => Some(Self::BirchWood), + "black_banner" => Some(Self::BlackBanner), + "black_bed" => Some(Self::BlackBed), + "black_bundle" => Some(Self::BlackBundle), + "black_candle" => Some(Self::BlackCandle), + "black_carpet" => Some(Self::BlackCarpet), + "black_concrete" => Some(Self::BlackConcrete), + "black_concrete_powder" => Some(Self::BlackConcretePowder), + "black_dye" => Some(Self::BlackDye), + "black_glazed_terracotta" => Some(Self::BlackGlazedTerracotta), + "black_harness" => Some(Self::BlackHarness), + "black_shulker_box" => Some(Self::BlackShulkerBox), + "black_stained_glass" => Some(Self::BlackStainedGlass), + "black_stained_glass_pane" => Some(Self::BlackStainedGlassPane), + "black_terracotta" => Some(Self::BlackTerracotta), + "black_wool" => Some(Self::BlackWool), + "blackstone" => Some(Self::Blackstone), + "blackstone_slab" => Some(Self::BlackstoneSlab), + "blackstone_stairs" => Some(Self::BlackstoneStairs), + "blackstone_wall" => Some(Self::BlackstoneWall), + "blade_pottery_sherd" => Some(Self::BladePotterySherd), + "blast_furnace" => Some(Self::BlastFurnace), + "blaze_powder" => Some(Self::BlazePowder), + "blaze_rod" => Some(Self::BlazeRod), + "blaze_spawn_egg" => Some(Self::BlazeSpawnEgg), + "blue_banner" => Some(Self::BlueBanner), + "blue_bed" => Some(Self::BlueBed), + "blue_bundle" => Some(Self::BlueBundle), + "blue_candle" => Some(Self::BlueCandle), + "blue_carpet" => Some(Self::BlueCarpet), + "blue_concrete" => Some(Self::BlueConcrete), + "blue_concrete_powder" => Some(Self::BlueConcretePowder), + "blue_dye" => Some(Self::BlueDye), + "blue_egg" => Some(Self::BlueEgg), + "blue_glazed_terracotta" => Some(Self::BlueGlazedTerracotta), + "blue_harness" => Some(Self::BlueHarness), + "blue_ice" => Some(Self::BlueIce), + "blue_orchid" => Some(Self::BlueOrchid), + "blue_shulker_box" => Some(Self::BlueShulkerBox), + "blue_stained_glass" => Some(Self::BlueStainedGlass), + "blue_stained_glass_pane" => Some(Self::BlueStainedGlassPane), + "blue_terracotta" => Some(Self::BlueTerracotta), + "blue_wool" => Some(Self::BlueWool), + "bogged_spawn_egg" => Some(Self::BoggedSpawnEgg), + "bolt_armor_trim_smithing_template" => Some(Self::BoltArmorTrimSmithingTemplate), + "bone" => Some(Self::Bone), + "bone_block" => Some(Self::BoneBlock), + "bone_meal" => Some(Self::BoneMeal), + "book" => Some(Self::Book), + "bookshelf" => Some(Self::Bookshelf), + "bordure_indented_banner_pattern" => Some(Self::BordureIndentedBannerPattern), + "bow" => Some(Self::Bow), + "bowl" => Some(Self::Bowl), + "brain_coral" => Some(Self::BrainCoral), + "brain_coral_block" => Some(Self::BrainCoralBlock), + "brain_coral_fan" => Some(Self::BrainCoralFan), + "bread" => Some(Self::Bread), + "breeze_rod" => Some(Self::BreezeRod), + "breeze_spawn_egg" => Some(Self::BreezeSpawnEgg), + "brewer_pottery_sherd" => Some(Self::BrewerPotterySherd), + "brewing_stand" => Some(Self::BrewingStand), + "brick" => Some(Self::Brick), + "brick_slab" => Some(Self::BrickSlab), + "brick_stairs" => Some(Self::BrickStairs), + "brick_wall" => Some(Self::BrickWall), + "bricks" => Some(Self::Bricks), + "brown_banner" => Some(Self::BrownBanner), + "brown_bed" => Some(Self::BrownBed), + "brown_bundle" => Some(Self::BrownBundle), + "brown_candle" => Some(Self::BrownCandle), + "brown_carpet" => Some(Self::BrownCarpet), + "brown_concrete" => Some(Self::BrownConcrete), + "brown_concrete_powder" => Some(Self::BrownConcretePowder), + "brown_dye" => Some(Self::BrownDye), + "brown_egg" => Some(Self::BrownEgg), + "brown_glazed_terracotta" => Some(Self::BrownGlazedTerracotta), + "brown_harness" => Some(Self::BrownHarness), + "brown_mushroom" => Some(Self::BrownMushroom), + "brown_mushroom_block" => Some(Self::BrownMushroomBlock), + "brown_shulker_box" => Some(Self::BrownShulkerBox), + "brown_stained_glass" => Some(Self::BrownStainedGlass), + "brown_stained_glass_pane" => Some(Self::BrownStainedGlassPane), + "brown_terracotta" => Some(Self::BrownTerracotta), + "brown_wool" => Some(Self::BrownWool), + "brush" => Some(Self::Brush), + "bubble_coral" => Some(Self::BubbleCoral), + "bubble_coral_block" => Some(Self::BubbleCoralBlock), + "bubble_coral_fan" => Some(Self::BubbleCoralFan), + "bucket" => Some(Self::Bucket), + "budding_amethyst" => Some(Self::BuddingAmethyst), + "bundle" => Some(Self::Bundle), + "burn_pottery_sherd" => Some(Self::BurnPotterySherd), + "bush" => Some(Self::Bush), + "cactus" => Some(Self::Cactus), + "cactus_flower" => Some(Self::CactusFlower), + "cake" => Some(Self::Cake), + "calcite" => Some(Self::Calcite), + "calibrated_sculk_sensor" => Some(Self::CalibratedSculkSensor), + "camel_husk_spawn_egg" => Some(Self::CamelHuskSpawnEgg), + "camel_spawn_egg" => Some(Self::CamelSpawnEgg), + "campfire" => Some(Self::Campfire), + "candle" => Some(Self::Candle), + "carrot" => Some(Self::Carrot), + "carrot_on_a_stick" => Some(Self::CarrotOnAStick), + "cartography_table" => Some(Self::CartographyTable), + "carved_pumpkin" => Some(Self::CarvedPumpkin), + "cat_spawn_egg" => Some(Self::CatSpawnEgg), + "cauldron" => Some(Self::Cauldron), + "cave_spider_spawn_egg" => Some(Self::CaveSpiderSpawnEgg), + "chain_command_block" => Some(Self::ChainCommandBlock), + "chainmail_boots" => Some(Self::ChainmailBoots), + "chainmail_chestplate" => Some(Self::ChainmailChestplate), + "chainmail_helmet" => Some(Self::ChainmailHelmet), + "chainmail_leggings" => Some(Self::ChainmailLeggings), + "charcoal" => Some(Self::Charcoal), + "cherry_boat" => Some(Self::CherryBoat), + "cherry_button" => Some(Self::CherryButton), + "cherry_chest_boat" => Some(Self::CherryChestBoat), + "cherry_door" => Some(Self::CherryDoor), + "cherry_fence" => Some(Self::CherryFence), + "cherry_fence_gate" => Some(Self::CherryFenceGate), + "cherry_hanging_sign" => Some(Self::CherryHangingSign), + "cherry_leaves" => Some(Self::CherryLeaves), + "cherry_log" => Some(Self::CherryLog), + "cherry_planks" => Some(Self::CherryPlanks), + "cherry_pressure_plate" => Some(Self::CherryPressurePlate), + "cherry_sapling" => Some(Self::CherrySapling), + "cherry_shelf" => Some(Self::CherryShelf), + "cherry_sign" => Some(Self::CherrySign), + "cherry_slab" => Some(Self::CherrySlab), + "cherry_stairs" => Some(Self::CherryStairs), + "cherry_trapdoor" => Some(Self::CherryTrapdoor), + "cherry_wood" => Some(Self::CherryWood), + "chest" => Some(Self::Chest), + "chest_minecart" => Some(Self::ChestMinecart), + "chicken" => Some(Self::Chicken), + "chicken_spawn_egg" => Some(Self::ChickenSpawnEgg), + "chipped_anvil" => Some(Self::ChippedAnvil), + "chiseled_bookshelf" => Some(Self::ChiseledBookshelf), + "chiseled_cinnabar" => Some(Self::ChiseledCinnabar), + "chiseled_copper" => Some(Self::ChiseledCopper), + "chiseled_deepslate" => Some(Self::ChiseledDeepslate), + "chiseled_nether_bricks" => Some(Self::ChiseledNetherBricks), + "chiseled_polished_blackstone" => Some(Self::ChiseledPolishedBlackstone), + "chiseled_quartz_block" => Some(Self::ChiseledQuartzBlock), + "chiseled_red_sandstone" => Some(Self::ChiseledRedSandstone), + "chiseled_resin_bricks" => Some(Self::ChiseledResinBricks), + "chiseled_sandstone" => Some(Self::ChiseledSandstone), + "chiseled_stone_bricks" => Some(Self::ChiseledStoneBricks), + "chiseled_sulfur" => Some(Self::ChiseledSulfur), + "chiseled_tuff" => Some(Self::ChiseledTuff), + "chiseled_tuff_bricks" => Some(Self::ChiseledTuffBricks), + "chorus_flower" => Some(Self::ChorusFlower), + "chorus_fruit" => Some(Self::ChorusFruit), + "chorus_plant" => Some(Self::ChorusPlant), + "cinnabar" => Some(Self::Cinnabar), + "cinnabar_brick_slab" => Some(Self::CinnabarBrickSlab), + "cinnabar_brick_stairs" => Some(Self::CinnabarBrickStairs), + "cinnabar_brick_wall" => Some(Self::CinnabarBrickWall), + "cinnabar_bricks" => Some(Self::CinnabarBricks), + "cinnabar_slab" => Some(Self::CinnabarSlab), + "cinnabar_stairs" => Some(Self::CinnabarStairs), + "cinnabar_wall" => Some(Self::CinnabarWall), + "clay" => Some(Self::Clay), + "clay_ball" => Some(Self::ClayBall), + "clock" => Some(Self::Clock), + "closed_eyeblossom" => Some(Self::ClosedEyeblossom), + "coal" => Some(Self::Coal), + "coal_block" => Some(Self::CoalBlock), + "coal_ore" => Some(Self::CoalOre), + "coarse_dirt" => Some(Self::CoarseDirt), + "coast_armor_trim_smithing_template" => Some(Self::CoastArmorTrimSmithingTemplate), + "cobbled_deepslate" => Some(Self::CobbledDeepslate), + "cobbled_deepslate_slab" => Some(Self::CobbledDeepslateSlab), + "cobbled_deepslate_stairs" => Some(Self::CobbledDeepslateStairs), + "cobbled_deepslate_wall" => Some(Self::CobbledDeepslateWall), + "cobblestone" => Some(Self::Cobblestone), + "cobblestone_slab" => Some(Self::CobblestoneSlab), + "cobblestone_stairs" => Some(Self::CobblestoneStairs), + "cobblestone_wall" => Some(Self::CobblestoneWall), + "cobweb" => Some(Self::Cobweb), + "cocoa_beans" => Some(Self::CocoaBeans), + "cod" => Some(Self::Cod), + "cod_bucket" => Some(Self::CodBucket), + "cod_spawn_egg" => Some(Self::CodSpawnEgg), + "command_block" => Some(Self::CommandBlock), + "command_block_minecart" => Some(Self::CommandBlockMinecart), + "comparator" => Some(Self::Comparator), + "compass" => Some(Self::Compass), + "composter" => Some(Self::Composter), + "conduit" => Some(Self::Conduit), + "cooked_beef" => Some(Self::CookedBeef), + "cooked_chicken" => Some(Self::CookedChicken), + "cooked_cod" => Some(Self::CookedCod), + "cooked_mutton" => Some(Self::CookedMutton), + "cooked_porkchop" => Some(Self::CookedPorkchop), + "cooked_rabbit" => Some(Self::CookedRabbit), + "cooked_salmon" => Some(Self::CookedSalmon), + "cookie" => Some(Self::Cookie), + "copper_axe" => Some(Self::CopperAxe), + "copper_bars" => Some(Self::CopperBars), + "copper_block" => Some(Self::CopperBlock), + "copper_boots" => Some(Self::CopperBoots), + "copper_bulb" => Some(Self::CopperBulb), + "copper_chain" => Some(Self::CopperChain), + "copper_chest" => Some(Self::CopperChest), + "copper_chestplate" => Some(Self::CopperChestplate), + "copper_door" => Some(Self::CopperDoor), + "copper_golem_spawn_egg" => Some(Self::CopperGolemSpawnEgg), + "copper_golem_statue" => Some(Self::CopperGolemStatue), + "copper_grate" => Some(Self::CopperGrate), + "copper_helmet" => Some(Self::CopperHelmet), + "copper_hoe" => Some(Self::CopperHoe), + "copper_horse_armor" => Some(Self::CopperHorseArmor), + "copper_ingot" => Some(Self::CopperIngot), + "copper_lantern" => Some(Self::CopperLantern), + "copper_leggings" => Some(Self::CopperLeggings), + "copper_nautilus_armor" => Some(Self::CopperNautilusArmor), + "copper_nugget" => Some(Self::CopperNugget), + "copper_ore" => Some(Self::CopperOre), + "copper_pickaxe" => Some(Self::CopperPickaxe), + "copper_shovel" => Some(Self::CopperShovel), + "copper_spear" => Some(Self::CopperSpear), + "copper_sword" => Some(Self::CopperSword), + "copper_torch" => Some(Self::CopperTorch), + "copper_trapdoor" => Some(Self::CopperTrapdoor), + "cornflower" => Some(Self::Cornflower), + "cow_spawn_egg" => Some(Self::CowSpawnEgg), + "cracked_deepslate_bricks" => Some(Self::CrackedDeepslateBricks), + "cracked_deepslate_tiles" => Some(Self::CrackedDeepslateTiles), + "cracked_nether_bricks" => Some(Self::CrackedNetherBricks), + "cracked_polished_blackstone_bricks" => Some(Self::CrackedPolishedBlackstoneBricks), + "cracked_stone_bricks" => Some(Self::CrackedStoneBricks), + "crafter" => Some(Self::Crafter), + "crafting_table" => Some(Self::CraftingTable), + "creaking_heart" => Some(Self::CreakingHeart), + "creaking_spawn_egg" => Some(Self::CreakingSpawnEgg), + "creeper_banner_pattern" => Some(Self::CreeperBannerPattern), + "creeper_head" => Some(Self::CreeperHead), + "creeper_spawn_egg" => Some(Self::CreeperSpawnEgg), + "crimson_button" => Some(Self::CrimsonButton), + "crimson_door" => Some(Self::CrimsonDoor), + "crimson_fence" => Some(Self::CrimsonFence), + "crimson_fence_gate" => Some(Self::CrimsonFenceGate), + "crimson_fungus" => Some(Self::CrimsonFungus), + "crimson_hanging_sign" => Some(Self::CrimsonHangingSign), + "crimson_hyphae" => Some(Self::CrimsonHyphae), + "crimson_nylium" => Some(Self::CrimsonNylium), + "crimson_planks" => Some(Self::CrimsonPlanks), + "crimson_pressure_plate" => Some(Self::CrimsonPressurePlate), + "crimson_roots" => Some(Self::CrimsonRoots), + "crimson_shelf" => Some(Self::CrimsonShelf), + "crimson_sign" => Some(Self::CrimsonSign), + "crimson_slab" => Some(Self::CrimsonSlab), + "crimson_stairs" => Some(Self::CrimsonStairs), + "crimson_stem" => Some(Self::CrimsonStem), + "crimson_trapdoor" => Some(Self::CrimsonTrapdoor), + "crossbow" => Some(Self::Crossbow), + "crying_obsidian" => Some(Self::CryingObsidian), + "cut_copper" => Some(Self::CutCopper), + "cut_copper_slab" => Some(Self::CutCopperSlab), + "cut_copper_stairs" => Some(Self::CutCopperStairs), + "cut_red_sandstone" => Some(Self::CutRedSandstone), + "cut_red_sandstone_slab" => Some(Self::CutRedSandstoneSlab), + "cut_sandstone" => Some(Self::CutSandstone), + "cut_sandstone_slab" => Some(Self::CutSandstoneSlab), + "cyan_banner" => Some(Self::CyanBanner), + "cyan_bed" => Some(Self::CyanBed), + "cyan_bundle" => Some(Self::CyanBundle), + "cyan_candle" => Some(Self::CyanCandle), + "cyan_carpet" => Some(Self::CyanCarpet), + "cyan_concrete" => Some(Self::CyanConcrete), + "cyan_concrete_powder" => Some(Self::CyanConcretePowder), + "cyan_dye" => Some(Self::CyanDye), + "cyan_glazed_terracotta" => Some(Self::CyanGlazedTerracotta), + "cyan_harness" => Some(Self::CyanHarness), + "cyan_shulker_box" => Some(Self::CyanShulkerBox), + "cyan_stained_glass" => Some(Self::CyanStainedGlass), + "cyan_stained_glass_pane" => Some(Self::CyanStainedGlassPane), + "cyan_terracotta" => Some(Self::CyanTerracotta), + "cyan_wool" => Some(Self::CyanWool), + "damaged_anvil" => Some(Self::DamagedAnvil), + "dandelion" => Some(Self::Dandelion), + "danger_pottery_sherd" => Some(Self::DangerPotterySherd), + "dark_oak_boat" => Some(Self::DarkOakBoat), + "dark_oak_button" => Some(Self::DarkOakButton), + "dark_oak_chest_boat" => Some(Self::DarkOakChestBoat), + "dark_oak_door" => Some(Self::DarkOakDoor), + "dark_oak_fence" => Some(Self::DarkOakFence), + "dark_oak_fence_gate" => Some(Self::DarkOakFenceGate), + "dark_oak_hanging_sign" => Some(Self::DarkOakHangingSign), + "dark_oak_leaves" => Some(Self::DarkOakLeaves), + "dark_oak_log" => Some(Self::DarkOakLog), + "dark_oak_planks" => Some(Self::DarkOakPlanks), + "dark_oak_pressure_plate" => Some(Self::DarkOakPressurePlate), + "dark_oak_sapling" => Some(Self::DarkOakSapling), + "dark_oak_shelf" => Some(Self::DarkOakShelf), + "dark_oak_sign" => Some(Self::DarkOakSign), + "dark_oak_slab" => Some(Self::DarkOakSlab), + "dark_oak_stairs" => Some(Self::DarkOakStairs), + "dark_oak_trapdoor" => Some(Self::DarkOakTrapdoor), + "dark_oak_wood" => Some(Self::DarkOakWood), + "dark_prismarine" => Some(Self::DarkPrismarine), + "dark_prismarine_slab" => Some(Self::DarkPrismarineSlab), + "dark_prismarine_stairs" => Some(Self::DarkPrismarineStairs), + "daylight_detector" => Some(Self::DaylightDetector), + "dead_brain_coral" => Some(Self::DeadBrainCoral), + "dead_brain_coral_block" => Some(Self::DeadBrainCoralBlock), + "dead_brain_coral_fan" => Some(Self::DeadBrainCoralFan), + "dead_bubble_coral" => Some(Self::DeadBubbleCoral), + "dead_bubble_coral_block" => Some(Self::DeadBubbleCoralBlock), + "dead_bubble_coral_fan" => Some(Self::DeadBubbleCoralFan), + "dead_bush" => Some(Self::DeadBush), + "dead_fire_coral" => Some(Self::DeadFireCoral), + "dead_fire_coral_block" => Some(Self::DeadFireCoralBlock), + "dead_fire_coral_fan" => Some(Self::DeadFireCoralFan), + "dead_horn_coral" => Some(Self::DeadHornCoral), + "dead_horn_coral_block" => Some(Self::DeadHornCoralBlock), + "dead_horn_coral_fan" => Some(Self::DeadHornCoralFan), + "dead_tube_coral" => Some(Self::DeadTubeCoral), + "dead_tube_coral_block" => Some(Self::DeadTubeCoralBlock), + "dead_tube_coral_fan" => Some(Self::DeadTubeCoralFan), + "debug_stick" => Some(Self::DebugStick), + "decorated_pot" => Some(Self::DecoratedPot), + "deepslate" => Some(Self::Deepslate), + "deepslate_brick_slab" => Some(Self::DeepslateBrickSlab), + "deepslate_brick_stairs" => Some(Self::DeepslateBrickStairs), + "deepslate_brick_wall" => Some(Self::DeepslateBrickWall), + "deepslate_bricks" => Some(Self::DeepslateBricks), + "deepslate_coal_ore" => Some(Self::DeepslateCoalOre), + "deepslate_copper_ore" => Some(Self::DeepslateCopperOre), + "deepslate_diamond_ore" => Some(Self::DeepslateDiamondOre), + "deepslate_emerald_ore" => Some(Self::DeepslateEmeraldOre), + "deepslate_gold_ore" => Some(Self::DeepslateGoldOre), + "deepslate_iron_ore" => Some(Self::DeepslateIronOre), + "deepslate_lapis_ore" => Some(Self::DeepslateLapisOre), + "deepslate_redstone_ore" => Some(Self::DeepslateRedstoneOre), + "deepslate_tile_slab" => Some(Self::DeepslateTileSlab), + "deepslate_tile_stairs" => Some(Self::DeepslateTileStairs), + "deepslate_tile_wall" => Some(Self::DeepslateTileWall), + "deepslate_tiles" => Some(Self::DeepslateTiles), + "detector_rail" => Some(Self::DetectorRail), + "diamond" => Some(Self::Diamond), + "diamond_axe" => Some(Self::DiamondAxe), + "diamond_block" => Some(Self::DiamondBlock), + "diamond_boots" => Some(Self::DiamondBoots), + "diamond_chestplate" => Some(Self::DiamondChestplate), + "diamond_helmet" => Some(Self::DiamondHelmet), + "diamond_hoe" => Some(Self::DiamondHoe), + "diamond_horse_armor" => Some(Self::DiamondHorseArmor), + "diamond_leggings" => Some(Self::DiamondLeggings), + "diamond_nautilus_armor" => Some(Self::DiamondNautilusArmor), + "diamond_ore" => Some(Self::DiamondOre), + "diamond_pickaxe" => Some(Self::DiamondPickaxe), + "diamond_shovel" => Some(Self::DiamondShovel), + "diamond_spear" => Some(Self::DiamondSpear), + "diamond_sword" => Some(Self::DiamondSword), + "diorite" => Some(Self::Diorite), + "diorite_slab" => Some(Self::DioriteSlab), + "diorite_stairs" => Some(Self::DioriteStairs), + "diorite_wall" => Some(Self::DioriteWall), + "dirt" => Some(Self::Dirt), + "dirt_path" => Some(Self::DirtPath), + "disc_fragment_5" => Some(Self::DiscFragment5), + "dispenser" => Some(Self::Dispenser), + "dolphin_spawn_egg" => Some(Self::DolphinSpawnEgg), + "donkey_spawn_egg" => Some(Self::DonkeySpawnEgg), + "dragon_breath" => Some(Self::DragonBreath), + "dragon_egg" => Some(Self::DragonEgg), + "dragon_head" => Some(Self::DragonHead), + "dried_ghast" => Some(Self::DriedGhast), + "dried_kelp" => Some(Self::DriedKelp), + "dried_kelp_block" => Some(Self::DriedKelpBlock), + "dripstone_block" => Some(Self::DripstoneBlock), + "dropper" => Some(Self::Dropper), + "drowned_spawn_egg" => Some(Self::DrownedSpawnEgg), + "dune_armor_trim_smithing_template" => Some(Self::DuneArmorTrimSmithingTemplate), + "echo_shard" => Some(Self::EchoShard), + "egg" => Some(Self::Egg), + "elder_guardian_spawn_egg" => Some(Self::ElderGuardianSpawnEgg), + "elytra" => Some(Self::Elytra), + "emerald" => Some(Self::Emerald), + "emerald_block" => Some(Self::EmeraldBlock), + "emerald_ore" => Some(Self::EmeraldOre), + "enchanted_book" => Some(Self::EnchantedBook), + "enchanted_golden_apple" => Some(Self::EnchantedGoldenApple), + "enchanting_table" => Some(Self::EnchantingTable), + "end_crystal" => Some(Self::EndCrystal), + "end_portal_frame" => Some(Self::EndPortalFrame), + "end_rod" => Some(Self::EndRod), + "end_stone" => Some(Self::EndStone), + "end_stone_brick_slab" => Some(Self::EndStoneBrickSlab), + "end_stone_brick_stairs" => Some(Self::EndStoneBrickStairs), + "end_stone_brick_wall" => Some(Self::EndStoneBrickWall), + "end_stone_bricks" => Some(Self::EndStoneBricks), + "ender_chest" => Some(Self::EnderChest), + "ender_dragon_spawn_egg" => Some(Self::EnderDragonSpawnEgg), + "ender_eye" => Some(Self::EnderEye), + "ender_pearl" => Some(Self::EnderPearl), + "enderman_spawn_egg" => Some(Self::EndermanSpawnEgg), + "endermite_spawn_egg" => Some(Self::EndermiteSpawnEgg), + "evoker_spawn_egg" => Some(Self::EvokerSpawnEgg), + "experience_bottle" => Some(Self::ExperienceBottle), + "explorer_pottery_sherd" => Some(Self::ExplorerPotterySherd), + "exposed_chiseled_copper" => Some(Self::ExposedChiseledCopper), + "exposed_copper" => Some(Self::ExposedCopper), + "exposed_copper_bars" => Some(Self::ExposedCopperBars), + "exposed_copper_bulb" => Some(Self::ExposedCopperBulb), + "exposed_copper_chain" => Some(Self::ExposedCopperChain), + "exposed_copper_chest" => Some(Self::ExposedCopperChest), + "exposed_copper_door" => Some(Self::ExposedCopperDoor), + "exposed_copper_golem_statue" => Some(Self::ExposedCopperGolemStatue), + "exposed_copper_grate" => Some(Self::ExposedCopperGrate), + "exposed_copper_lantern" => Some(Self::ExposedCopperLantern), + "exposed_copper_trapdoor" => Some(Self::ExposedCopperTrapdoor), + "exposed_cut_copper" => Some(Self::ExposedCutCopper), + "exposed_cut_copper_slab" => Some(Self::ExposedCutCopperSlab), + "exposed_cut_copper_stairs" => Some(Self::ExposedCutCopperStairs), + "exposed_lightning_rod" => Some(Self::ExposedLightningRod), + "eye_armor_trim_smithing_template" => Some(Self::EyeArmorTrimSmithingTemplate), + "farmland" => Some(Self::Farmland), + "feather" => Some(Self::Feather), + "fermented_spider_eye" => Some(Self::FermentedSpiderEye), + "fern" => Some(Self::Fern), + "field_masoned_banner_pattern" => Some(Self::FieldMasonedBannerPattern), + "filled_map" => Some(Self::FilledMap), + "fire_charge" => Some(Self::FireCharge), + "fire_coral" => Some(Self::FireCoral), + "fire_coral_block" => Some(Self::FireCoralBlock), + "fire_coral_fan" => Some(Self::FireCoralFan), + "firefly_bush" => Some(Self::FireflyBush), + "firework_rocket" => Some(Self::FireworkRocket), + "firework_star" => Some(Self::FireworkStar), + "fishing_rod" => Some(Self::FishingRod), + "fletching_table" => Some(Self::FletchingTable), + "flint" => Some(Self::Flint), + "flint_and_steel" => Some(Self::FlintAndSteel), + "flow_armor_trim_smithing_template" => Some(Self::FlowArmorTrimSmithingTemplate), + "flow_banner_pattern" => Some(Self::FlowBannerPattern), + "flow_pottery_sherd" => Some(Self::FlowPotterySherd), + "flower_banner_pattern" => Some(Self::FlowerBannerPattern), + "flower_pot" => Some(Self::FlowerPot), + "flowering_azalea" => Some(Self::FloweringAzalea), + "flowering_azalea_leaves" => Some(Self::FloweringAzaleaLeaves), + "fox_spawn_egg" => Some(Self::FoxSpawnEgg), + "friend_pottery_sherd" => Some(Self::FriendPotterySherd), + "frog_spawn_egg" => Some(Self::FrogSpawnEgg), + "frogspawn" => Some(Self::Frogspawn), + "furnace" => Some(Self::Furnace), + "furnace_minecart" => Some(Self::FurnaceMinecart), + "ghast_spawn_egg" => Some(Self::GhastSpawnEgg), + "ghast_tear" => Some(Self::GhastTear), + "gilded_blackstone" => Some(Self::GildedBlackstone), + "glass" => Some(Self::Glass), + "glass_bottle" => Some(Self::GlassBottle), + "glass_pane" => Some(Self::GlassPane), + "glistering_melon_slice" => Some(Self::GlisteringMelonSlice), + "globe_banner_pattern" => Some(Self::GlobeBannerPattern), + "glow_berries" => Some(Self::GlowBerries), + "glow_ink_sac" => Some(Self::GlowInkSac), + "glow_item_frame" => Some(Self::GlowItemFrame), + "glow_lichen" => Some(Self::GlowLichen), + "glow_squid_spawn_egg" => Some(Self::GlowSquidSpawnEgg), + "glowstone" => Some(Self::Glowstone), + "glowstone_dust" => Some(Self::GlowstoneDust), + "goat_horn" => Some(Self::GoatHorn), + "goat_spawn_egg" => Some(Self::GoatSpawnEgg), + "gold_block" => Some(Self::GoldBlock), + "gold_ingot" => Some(Self::GoldIngot), + "gold_nugget" => Some(Self::GoldNugget), + "gold_ore" => Some(Self::GoldOre), + "golden_apple" => Some(Self::GoldenApple), + "golden_axe" => Some(Self::GoldenAxe), + "golden_boots" => Some(Self::GoldenBoots), + "golden_carrot" => Some(Self::GoldenCarrot), + "golden_chestplate" => Some(Self::GoldenChestplate), + "golden_dandelion" => Some(Self::GoldenDandelion), + "golden_helmet" => Some(Self::GoldenHelmet), + "golden_hoe" => Some(Self::GoldenHoe), + "golden_horse_armor" => Some(Self::GoldenHorseArmor), + "golden_leggings" => Some(Self::GoldenLeggings), + "golden_nautilus_armor" => Some(Self::GoldenNautilusArmor), + "golden_pickaxe" => Some(Self::GoldenPickaxe), + "golden_shovel" => Some(Self::GoldenShovel), + "golden_spear" => Some(Self::GoldenSpear), + "golden_sword" => Some(Self::GoldenSword), + "granite" => Some(Self::Granite), + "granite_slab" => Some(Self::GraniteSlab), + "granite_stairs" => Some(Self::GraniteStairs), + "granite_wall" => Some(Self::GraniteWall), + "grass_block" => Some(Self::GrassBlock), + "gravel" => Some(Self::Gravel), + "gray_banner" => Some(Self::GrayBanner), + "gray_bed" => Some(Self::GrayBed), + "gray_bundle" => Some(Self::GrayBundle), + "gray_candle" => Some(Self::GrayCandle), + "gray_carpet" => Some(Self::GrayCarpet), + "gray_concrete" => Some(Self::GrayConcrete), + "gray_concrete_powder" => Some(Self::GrayConcretePowder), + "gray_dye" => Some(Self::GrayDye), + "gray_glazed_terracotta" => Some(Self::GrayGlazedTerracotta), + "gray_harness" => Some(Self::GrayHarness), + "gray_shulker_box" => Some(Self::GrayShulkerBox), + "gray_stained_glass" => Some(Self::GrayStainedGlass), + "gray_stained_glass_pane" => Some(Self::GrayStainedGlassPane), + "gray_terracotta" => Some(Self::GrayTerracotta), + "gray_wool" => Some(Self::GrayWool), + "green_banner" => Some(Self::GreenBanner), + "green_bed" => Some(Self::GreenBed), + "green_bundle" => Some(Self::GreenBundle), + "green_candle" => Some(Self::GreenCandle), + "green_carpet" => Some(Self::GreenCarpet), + "green_concrete" => Some(Self::GreenConcrete), + "green_concrete_powder" => Some(Self::GreenConcretePowder), + "green_dye" => Some(Self::GreenDye), + "green_glazed_terracotta" => Some(Self::GreenGlazedTerracotta), + "green_harness" => Some(Self::GreenHarness), + "green_shulker_box" => Some(Self::GreenShulkerBox), + "green_stained_glass" => Some(Self::GreenStainedGlass), + "green_stained_glass_pane" => Some(Self::GreenStainedGlassPane), + "green_terracotta" => Some(Self::GreenTerracotta), + "green_wool" => Some(Self::GreenWool), + "grindstone" => Some(Self::Grindstone), + "guardian_spawn_egg" => Some(Self::GuardianSpawnEgg), + "gunpowder" => Some(Self::Gunpowder), + "guster_banner_pattern" => Some(Self::GusterBannerPattern), + "guster_pottery_sherd" => Some(Self::GusterPotterySherd), + "hanging_roots" => Some(Self::HangingRoots), + "happy_ghast_spawn_egg" => Some(Self::HappyGhastSpawnEgg), + "hay_block" => Some(Self::HayBlock), + "heart_of_the_sea" => Some(Self::HeartOfTheSea), + "heart_pottery_sherd" => Some(Self::HeartPotterySherd), + "heartbreak_pottery_sherd" => Some(Self::HeartbreakPotterySherd), + "heavy_core" => Some(Self::HeavyCore), + "heavy_weighted_pressure_plate" => Some(Self::HeavyWeightedPressurePlate), + "hoglin_spawn_egg" => Some(Self::HoglinSpawnEgg), + "honey_block" => Some(Self::HoneyBlock), + "honey_bottle" => Some(Self::HoneyBottle), + "honeycomb" => Some(Self::Honeycomb), + "honeycomb_block" => Some(Self::HoneycombBlock), + "hopper" => Some(Self::Hopper), + "hopper_minecart" => Some(Self::HopperMinecart), + "horn_coral" => Some(Self::HornCoral), + "horn_coral_block" => Some(Self::HornCoralBlock), + "horn_coral_fan" => Some(Self::HornCoralFan), + "horse_spawn_egg" => Some(Self::HorseSpawnEgg), + "host_armor_trim_smithing_template" => Some(Self::HostArmorTrimSmithingTemplate), + "howl_pottery_sherd" => Some(Self::HowlPotterySherd), + "husk_spawn_egg" => Some(Self::HuskSpawnEgg), + "ice" => Some(Self::Ice), + "infested_chiseled_stone_bricks" => Some(Self::InfestedChiseledStoneBricks), + "infested_cobblestone" => Some(Self::InfestedCobblestone), + "infested_cracked_stone_bricks" => Some(Self::InfestedCrackedStoneBricks), + "infested_deepslate" => Some(Self::InfestedDeepslate), + "infested_mossy_stone_bricks" => Some(Self::InfestedMossyStoneBricks), + "infested_stone" => Some(Self::InfestedStone), + "infested_stone_bricks" => Some(Self::InfestedStoneBricks), + "ink_sac" => Some(Self::InkSac), + "iron_axe" => Some(Self::IronAxe), + "iron_bars" => Some(Self::IronBars), + "iron_block" => Some(Self::IronBlock), + "iron_boots" => Some(Self::IronBoots), + "iron_chain" => Some(Self::IronChain), + "iron_chestplate" => Some(Self::IronChestplate), + "iron_door" => Some(Self::IronDoor), + "iron_golem_spawn_egg" => Some(Self::IronGolemSpawnEgg), + "iron_helmet" => Some(Self::IronHelmet), + "iron_hoe" => Some(Self::IronHoe), + "iron_horse_armor" => Some(Self::IronHorseArmor), + "iron_ingot" => Some(Self::IronIngot), + "iron_leggings" => Some(Self::IronLeggings), + "iron_nautilus_armor" => Some(Self::IronNautilusArmor), + "iron_nugget" => Some(Self::IronNugget), + "iron_ore" => Some(Self::IronOre), + "iron_pickaxe" => Some(Self::IronPickaxe), + "iron_shovel" => Some(Self::IronShovel), + "iron_spear" => Some(Self::IronSpear), + "iron_sword" => Some(Self::IronSword), + "iron_trapdoor" => Some(Self::IronTrapdoor), + "item_frame" => Some(Self::ItemFrame), + "jack_o_lantern" => Some(Self::JackOLantern), + "jigsaw" => Some(Self::Jigsaw), + "jukebox" => Some(Self::Jukebox), + "jungle_boat" => Some(Self::JungleBoat), + "jungle_button" => Some(Self::JungleButton), + "jungle_chest_boat" => Some(Self::JungleChestBoat), + "jungle_door" => Some(Self::JungleDoor), + "jungle_fence" => Some(Self::JungleFence), + "jungle_fence_gate" => Some(Self::JungleFenceGate), + "jungle_hanging_sign" => Some(Self::JungleHangingSign), + "jungle_leaves" => Some(Self::JungleLeaves), + "jungle_log" => Some(Self::JungleLog), + "jungle_planks" => Some(Self::JunglePlanks), + "jungle_pressure_plate" => Some(Self::JunglePressurePlate), + "jungle_sapling" => Some(Self::JungleSapling), + "jungle_shelf" => Some(Self::JungleShelf), + "jungle_sign" => Some(Self::JungleSign), + "jungle_slab" => Some(Self::JungleSlab), + "jungle_stairs" => Some(Self::JungleStairs), + "jungle_trapdoor" => Some(Self::JungleTrapdoor), + "jungle_wood" => Some(Self::JungleWood), + "kelp" => Some(Self::Kelp), + "knowledge_book" => Some(Self::KnowledgeBook), + "ladder" => Some(Self::Ladder), + "lantern" => Some(Self::Lantern), + "lapis_block" => Some(Self::LapisBlock), + "lapis_lazuli" => Some(Self::LapisLazuli), + "lapis_ore" => Some(Self::LapisOre), + "large_amethyst_bud" => Some(Self::LargeAmethystBud), + "large_fern" => Some(Self::LargeFern), + "lava_bucket" => Some(Self::LavaBucket), + "lead" => Some(Self::Lead), + "leaf_litter" => Some(Self::LeafLitter), + "leather" => Some(Self::Leather), + "leather_boots" => Some(Self::LeatherBoots), + "leather_chestplate" => Some(Self::LeatherChestplate), + "leather_helmet" => Some(Self::LeatherHelmet), + "leather_horse_armor" => Some(Self::LeatherHorseArmor), + "leather_leggings" => Some(Self::LeatherLeggings), + "lectern" => Some(Self::Lectern), + "lever" => Some(Self::Lever), + "light" => Some(Self::Light), + "light_blue_banner" => Some(Self::LightBlueBanner), + "light_blue_bed" => Some(Self::LightBlueBed), + "light_blue_bundle" => Some(Self::LightBlueBundle), + "light_blue_candle" => Some(Self::LightBlueCandle), + "light_blue_carpet" => Some(Self::LightBlueCarpet), + "light_blue_concrete" => Some(Self::LightBlueConcrete), + "light_blue_concrete_powder" => Some(Self::LightBlueConcretePowder), + "light_blue_dye" => Some(Self::LightBlueDye), + "light_blue_glazed_terracotta" => Some(Self::LightBlueGlazedTerracotta), + "light_blue_harness" => Some(Self::LightBlueHarness), + "light_blue_shulker_box" => Some(Self::LightBlueShulkerBox), + "light_blue_stained_glass" => Some(Self::LightBlueStainedGlass), + "light_blue_stained_glass_pane" => Some(Self::LightBlueStainedGlassPane), + "light_blue_terracotta" => Some(Self::LightBlueTerracotta), + "light_blue_wool" => Some(Self::LightBlueWool), + "light_gray_banner" => Some(Self::LightGrayBanner), + "light_gray_bed" => Some(Self::LightGrayBed), + "light_gray_bundle" => Some(Self::LightGrayBundle), + "light_gray_candle" => Some(Self::LightGrayCandle), + "light_gray_carpet" => Some(Self::LightGrayCarpet), + "light_gray_concrete" => Some(Self::LightGrayConcrete), + "light_gray_concrete_powder" => Some(Self::LightGrayConcretePowder), + "light_gray_dye" => Some(Self::LightGrayDye), + "light_gray_glazed_terracotta" => Some(Self::LightGrayGlazedTerracotta), + "light_gray_harness" => Some(Self::LightGrayHarness), + "light_gray_shulker_box" => Some(Self::LightGrayShulkerBox), + "light_gray_stained_glass" => Some(Self::LightGrayStainedGlass), + "light_gray_stained_glass_pane" => Some(Self::LightGrayStainedGlassPane), + "light_gray_terracotta" => Some(Self::LightGrayTerracotta), + "light_gray_wool" => Some(Self::LightGrayWool), + "light_weighted_pressure_plate" => Some(Self::LightWeightedPressurePlate), + "lightning_rod" => Some(Self::LightningRod), + "lilac" => Some(Self::Lilac), + "lily_of_the_valley" => Some(Self::LilyOfTheValley), + "lily_pad" => Some(Self::LilyPad), + "lime_banner" => Some(Self::LimeBanner), + "lime_bed" => Some(Self::LimeBed), + "lime_bundle" => Some(Self::LimeBundle), + "lime_candle" => Some(Self::LimeCandle), + "lime_carpet" => Some(Self::LimeCarpet), + "lime_concrete" => Some(Self::LimeConcrete), + "lime_concrete_powder" => Some(Self::LimeConcretePowder), + "lime_dye" => Some(Self::LimeDye), + "lime_glazed_terracotta" => Some(Self::LimeGlazedTerracotta), + "lime_harness" => Some(Self::LimeHarness), + "lime_shulker_box" => Some(Self::LimeShulkerBox), + "lime_stained_glass" => Some(Self::LimeStainedGlass), + "lime_stained_glass_pane" => Some(Self::LimeStainedGlassPane), + "lime_terracotta" => Some(Self::LimeTerracotta), + "lime_wool" => Some(Self::LimeWool), + "lingering_potion" => Some(Self::LingeringPotion), + "llama_spawn_egg" => Some(Self::LlamaSpawnEgg), + "lodestone" => Some(Self::Lodestone), + "loom" => Some(Self::Loom), + "mace" => Some(Self::Mace), + "magenta_banner" => Some(Self::MagentaBanner), + "magenta_bed" => Some(Self::MagentaBed), + "magenta_bundle" => Some(Self::MagentaBundle), + "magenta_candle" => Some(Self::MagentaCandle), + "magenta_carpet" => Some(Self::MagentaCarpet), + "magenta_concrete" => Some(Self::MagentaConcrete), + "magenta_concrete_powder" => Some(Self::MagentaConcretePowder), + "magenta_dye" => Some(Self::MagentaDye), + "magenta_glazed_terracotta" => Some(Self::MagentaGlazedTerracotta), + "magenta_harness" => Some(Self::MagentaHarness), + "magenta_shulker_box" => Some(Self::MagentaShulkerBox), + "magenta_stained_glass" => Some(Self::MagentaStainedGlass), + "magenta_stained_glass_pane" => Some(Self::MagentaStainedGlassPane), + "magenta_terracotta" => Some(Self::MagentaTerracotta), + "magenta_wool" => Some(Self::MagentaWool), + "magma_block" => Some(Self::MagmaBlock), + "magma_cream" => Some(Self::MagmaCream), + "magma_cube_spawn_egg" => Some(Self::MagmaCubeSpawnEgg), + "mangrove_boat" => Some(Self::MangroveBoat), + "mangrove_button" => Some(Self::MangroveButton), + "mangrove_chest_boat" => Some(Self::MangroveChestBoat), + "mangrove_door" => Some(Self::MangroveDoor), + "mangrove_fence" => Some(Self::MangroveFence), + "mangrove_fence_gate" => Some(Self::MangroveFenceGate), + "mangrove_hanging_sign" => Some(Self::MangroveHangingSign), + "mangrove_leaves" => Some(Self::MangroveLeaves), + "mangrove_log" => Some(Self::MangroveLog), + "mangrove_planks" => Some(Self::MangrovePlanks), + "mangrove_pressure_plate" => Some(Self::MangrovePressurePlate), + "mangrove_propagule" => Some(Self::MangrovePropagule), + "mangrove_roots" => Some(Self::MangroveRoots), + "mangrove_shelf" => Some(Self::MangroveShelf), + "mangrove_sign" => Some(Self::MangroveSign), + "mangrove_slab" => Some(Self::MangroveSlab), + "mangrove_stairs" => Some(Self::MangroveStairs), + "mangrove_trapdoor" => Some(Self::MangroveTrapdoor), + "mangrove_wood" => Some(Self::MangroveWood), + "map" => Some(Self::Map), + "medium_amethyst_bud" => Some(Self::MediumAmethystBud), + "melon" => Some(Self::Melon), + "melon_seeds" => Some(Self::MelonSeeds), + "melon_slice" => Some(Self::MelonSlice), + "milk_bucket" => Some(Self::MilkBucket), + "minecart" => Some(Self::Minecart), + "miner_pottery_sherd" => Some(Self::MinerPotterySherd), + "mojang_banner_pattern" => Some(Self::MojangBannerPattern), + "mooshroom_spawn_egg" => Some(Self::MooshroomSpawnEgg), + "moss_block" => Some(Self::MossBlock), + "moss_carpet" => Some(Self::MossCarpet), + "mossy_cobblestone" => Some(Self::MossyCobblestone), + "mossy_cobblestone_slab" => Some(Self::MossyCobblestoneSlab), + "mossy_cobblestone_stairs" => Some(Self::MossyCobblestoneStairs), + "mossy_cobblestone_wall" => Some(Self::MossyCobblestoneWall), + "mossy_stone_brick_slab" => Some(Self::MossyStoneBrickSlab), + "mossy_stone_brick_stairs" => Some(Self::MossyStoneBrickStairs), + "mossy_stone_brick_wall" => Some(Self::MossyStoneBrickWall), + "mossy_stone_bricks" => Some(Self::MossyStoneBricks), + "mourner_pottery_sherd" => Some(Self::MournerPotterySherd), + "mud" => Some(Self::Mud), + "mud_brick_slab" => Some(Self::MudBrickSlab), + "mud_brick_stairs" => Some(Self::MudBrickStairs), + "mud_brick_wall" => Some(Self::MudBrickWall), + "mud_bricks" => Some(Self::MudBricks), + "muddy_mangrove_roots" => Some(Self::MuddyMangroveRoots), + "mule_spawn_egg" => Some(Self::MuleSpawnEgg), + "mushroom_stem" => Some(Self::MushroomStem), + "mushroom_stew" => Some(Self::MushroomStew), + "music_disc_11" => Some(Self::MusicDisc11), + "music_disc_13" => Some(Self::MusicDisc13), + "music_disc_5" => Some(Self::MusicDisc5), + "music_disc_blocks" => Some(Self::MusicDiscBlocks), + "music_disc_bounce" => Some(Self::MusicDiscBounce), + "music_disc_cat" => Some(Self::MusicDiscCat), + "music_disc_chirp" => Some(Self::MusicDiscChirp), + "music_disc_creator" => Some(Self::MusicDiscCreator), + "music_disc_creator_music_box" => Some(Self::MusicDiscCreatorMusicBox), + "music_disc_far" => Some(Self::MusicDiscFar), + "music_disc_lava_chicken" => Some(Self::MusicDiscLavaChicken), + "music_disc_mall" => Some(Self::MusicDiscMall), + "music_disc_mellohi" => Some(Self::MusicDiscMellohi), + "music_disc_otherside" => Some(Self::MusicDiscOtherside), + "music_disc_pigstep" => Some(Self::MusicDiscPigstep), + "music_disc_precipice" => Some(Self::MusicDiscPrecipice), + "music_disc_relic" => Some(Self::MusicDiscRelic), + "music_disc_stal" => Some(Self::MusicDiscStal), + "music_disc_strad" => Some(Self::MusicDiscStrad), + "music_disc_tears" => Some(Self::MusicDiscTears), + "music_disc_wait" => Some(Self::MusicDiscWait), + "music_disc_ward" => Some(Self::MusicDiscWard), + "mutton" => Some(Self::Mutton), + "mycelium" => Some(Self::Mycelium), + "name_tag" => Some(Self::NameTag), + "nautilus_shell" => Some(Self::NautilusShell), + "nautilus_spawn_egg" => Some(Self::NautilusSpawnEgg), + "nether_brick" => Some(Self::NetherBrick), + "nether_brick_fence" => Some(Self::NetherBrickFence), + "nether_brick_slab" => Some(Self::NetherBrickSlab), + "nether_brick_stairs" => Some(Self::NetherBrickStairs), + "nether_brick_wall" => Some(Self::NetherBrickWall), + "nether_bricks" => Some(Self::NetherBricks), + "nether_gold_ore" => Some(Self::NetherGoldOre), + "nether_quartz_ore" => Some(Self::NetherQuartzOre), + "nether_sprouts" => Some(Self::NetherSprouts), + "nether_star" => Some(Self::NetherStar), + "nether_wart" => Some(Self::NetherWart), + "nether_wart_block" => Some(Self::NetherWartBlock), + "netherite_axe" => Some(Self::NetheriteAxe), + "netherite_block" => Some(Self::NetheriteBlock), + "netherite_boots" => Some(Self::NetheriteBoots), + "netherite_chestplate" => Some(Self::NetheriteChestplate), + "netherite_helmet" => Some(Self::NetheriteHelmet), + "netherite_hoe" => Some(Self::NetheriteHoe), + "netherite_horse_armor" => Some(Self::NetheriteHorseArmor), + "netherite_ingot" => Some(Self::NetheriteIngot), + "netherite_leggings" => Some(Self::NetheriteLeggings), + "netherite_nautilus_armor" => Some(Self::NetheriteNautilusArmor), + "netherite_pickaxe" => Some(Self::NetheritePickaxe), + "netherite_scrap" => Some(Self::NetheriteScrap), + "netherite_shovel" => Some(Self::NetheriteShovel), + "netherite_spear" => Some(Self::NetheriteSpear), + "netherite_sword" => Some(Self::NetheriteSword), + "netherite_upgrade_smithing_template" => Some(Self::NetheriteUpgradeSmithingTemplate), + "netherrack" => Some(Self::Netherrack), + "note_block" => Some(Self::NoteBlock), + "oak_boat" => Some(Self::OakBoat), + "oak_button" => Some(Self::OakButton), + "oak_chest_boat" => Some(Self::OakChestBoat), + "oak_door" => Some(Self::OakDoor), + "oak_fence" => Some(Self::OakFence), + "oak_fence_gate" => Some(Self::OakFenceGate), + "oak_hanging_sign" => Some(Self::OakHangingSign), + "oak_leaves" => Some(Self::OakLeaves), + "oak_log" => Some(Self::OakLog), + "oak_planks" => Some(Self::OakPlanks), + "oak_pressure_plate" => Some(Self::OakPressurePlate), + "oak_sapling" => Some(Self::OakSapling), + "oak_shelf" => Some(Self::OakShelf), + "oak_sign" => Some(Self::OakSign), + "oak_slab" => Some(Self::OakSlab), + "oak_stairs" => Some(Self::OakStairs), + "oak_trapdoor" => Some(Self::OakTrapdoor), + "oak_wood" => Some(Self::OakWood), + "observer" => Some(Self::Observer), + "obsidian" => Some(Self::Obsidian), + "ocelot_spawn_egg" => Some(Self::OcelotSpawnEgg), + "ochre_froglight" => Some(Self::OchreFroglight), + "ominous_bottle" => Some(Self::OminousBottle), + "ominous_trial_key" => Some(Self::OminousTrialKey), + "open_eyeblossom" => Some(Self::OpenEyeblossom), + "orange_banner" => Some(Self::OrangeBanner), + "orange_bed" => Some(Self::OrangeBed), + "orange_bundle" => Some(Self::OrangeBundle), + "orange_candle" => Some(Self::OrangeCandle), + "orange_carpet" => Some(Self::OrangeCarpet), + "orange_concrete" => Some(Self::OrangeConcrete), + "orange_concrete_powder" => Some(Self::OrangeConcretePowder), + "orange_dye" => Some(Self::OrangeDye), + "orange_glazed_terracotta" => Some(Self::OrangeGlazedTerracotta), + "orange_harness" => Some(Self::OrangeHarness), + "orange_shulker_box" => Some(Self::OrangeShulkerBox), + "orange_stained_glass" => Some(Self::OrangeStainedGlass), + "orange_stained_glass_pane" => Some(Self::OrangeStainedGlassPane), + "orange_terracotta" => Some(Self::OrangeTerracotta), + "orange_tulip" => Some(Self::OrangeTulip), + "orange_wool" => Some(Self::OrangeWool), + "oxeye_daisy" => Some(Self::OxeyeDaisy), + "oxidized_chiseled_copper" => Some(Self::OxidizedChiseledCopper), + "oxidized_copper" => Some(Self::OxidizedCopper), + "oxidized_copper_bars" => Some(Self::OxidizedCopperBars), + "oxidized_copper_bulb" => Some(Self::OxidizedCopperBulb), + "oxidized_copper_chain" => Some(Self::OxidizedCopperChain), + "oxidized_copper_chest" => Some(Self::OxidizedCopperChest), + "oxidized_copper_door" => Some(Self::OxidizedCopperDoor), + "oxidized_copper_golem_statue" => Some(Self::OxidizedCopperGolemStatue), + "oxidized_copper_grate" => Some(Self::OxidizedCopperGrate), + "oxidized_copper_lantern" => Some(Self::OxidizedCopperLantern), + "oxidized_copper_trapdoor" => Some(Self::OxidizedCopperTrapdoor), + "oxidized_cut_copper" => Some(Self::OxidizedCutCopper), + "oxidized_cut_copper_slab" => Some(Self::OxidizedCutCopperSlab), + "oxidized_cut_copper_stairs" => Some(Self::OxidizedCutCopperStairs), + "oxidized_lightning_rod" => Some(Self::OxidizedLightningRod), + "packed_ice" => Some(Self::PackedIce), + "packed_mud" => Some(Self::PackedMud), + "painting" => Some(Self::Painting), + "pale_hanging_moss" => Some(Self::PaleHangingMoss), + "pale_moss_block" => Some(Self::PaleMossBlock), + "pale_moss_carpet" => Some(Self::PaleMossCarpet), + "pale_oak_boat" => Some(Self::PaleOakBoat), + "pale_oak_button" => Some(Self::PaleOakButton), + "pale_oak_chest_boat" => Some(Self::PaleOakChestBoat), + "pale_oak_door" => Some(Self::PaleOakDoor), + "pale_oak_fence" => Some(Self::PaleOakFence), + "pale_oak_fence_gate" => Some(Self::PaleOakFenceGate), + "pale_oak_hanging_sign" => Some(Self::PaleOakHangingSign), + "pale_oak_leaves" => Some(Self::PaleOakLeaves), + "pale_oak_log" => Some(Self::PaleOakLog), + "pale_oak_planks" => Some(Self::PaleOakPlanks), + "pale_oak_pressure_plate" => Some(Self::PaleOakPressurePlate), + "pale_oak_sapling" => Some(Self::PaleOakSapling), + "pale_oak_shelf" => Some(Self::PaleOakShelf), + "pale_oak_sign" => Some(Self::PaleOakSign), + "pale_oak_slab" => Some(Self::PaleOakSlab), + "pale_oak_stairs" => Some(Self::PaleOakStairs), + "pale_oak_trapdoor" => Some(Self::PaleOakTrapdoor), + "pale_oak_wood" => Some(Self::PaleOakWood), + "panda_spawn_egg" => Some(Self::PandaSpawnEgg), + "paper" => Some(Self::Paper), + "parched_spawn_egg" => Some(Self::ParchedSpawnEgg), + "parrot_spawn_egg" => Some(Self::ParrotSpawnEgg), + "pearlescent_froglight" => Some(Self::PearlescentFroglight), + "peony" => Some(Self::Peony), + "petrified_oak_slab" => Some(Self::PetrifiedOakSlab), + "phantom_membrane" => Some(Self::PhantomMembrane), + "phantom_spawn_egg" => Some(Self::PhantomSpawnEgg), + "pig_spawn_egg" => Some(Self::PigSpawnEgg), + "piglin_banner_pattern" => Some(Self::PiglinBannerPattern), + "piglin_brute_spawn_egg" => Some(Self::PiglinBruteSpawnEgg), + "piglin_head" => Some(Self::PiglinHead), + "piglin_spawn_egg" => Some(Self::PiglinSpawnEgg), + "pillager_spawn_egg" => Some(Self::PillagerSpawnEgg), + "pink_banner" => Some(Self::PinkBanner), + "pink_bed" => Some(Self::PinkBed), + "pink_bundle" => Some(Self::PinkBundle), + "pink_candle" => Some(Self::PinkCandle), + "pink_carpet" => Some(Self::PinkCarpet), + "pink_concrete" => Some(Self::PinkConcrete), + "pink_concrete_powder" => Some(Self::PinkConcretePowder), + "pink_dye" => Some(Self::PinkDye), + "pink_glazed_terracotta" => Some(Self::PinkGlazedTerracotta), + "pink_harness" => Some(Self::PinkHarness), + "pink_petals" => Some(Self::PinkPetals), + "pink_shulker_box" => Some(Self::PinkShulkerBox), + "pink_stained_glass" => Some(Self::PinkStainedGlass), + "pink_stained_glass_pane" => Some(Self::PinkStainedGlassPane), + "pink_terracotta" => Some(Self::PinkTerracotta), + "pink_tulip" => Some(Self::PinkTulip), + "pink_wool" => Some(Self::PinkWool), + "piston" => Some(Self::Piston), + "pitcher_plant" => Some(Self::PitcherPlant), + "pitcher_pod" => Some(Self::PitcherPod), + "player_head" => Some(Self::PlayerHead), + "plenty_pottery_sherd" => Some(Self::PlentyPotterySherd), + "podzol" => Some(Self::Podzol), + "pointed_dripstone" => Some(Self::PointedDripstone), + "poisonous_potato" => Some(Self::PoisonousPotato), + "polar_bear_spawn_egg" => Some(Self::PolarBearSpawnEgg), + "polished_andesite" => Some(Self::PolishedAndesite), + "polished_andesite_slab" => Some(Self::PolishedAndesiteSlab), + "polished_andesite_stairs" => Some(Self::PolishedAndesiteStairs), + "polished_basalt" => Some(Self::PolishedBasalt), + "polished_blackstone" => Some(Self::PolishedBlackstone), + "polished_blackstone_brick_slab" => Some(Self::PolishedBlackstoneBrickSlab), + "polished_blackstone_brick_stairs" => Some(Self::PolishedBlackstoneBrickStairs), + "polished_blackstone_brick_wall" => Some(Self::PolishedBlackstoneBrickWall), + "polished_blackstone_bricks" => Some(Self::PolishedBlackstoneBricks), + "polished_blackstone_button" => Some(Self::PolishedBlackstoneButton), + "polished_blackstone_pressure_plate" => Some(Self::PolishedBlackstonePressurePlate), + "polished_blackstone_slab" => Some(Self::PolishedBlackstoneSlab), + "polished_blackstone_stairs" => Some(Self::PolishedBlackstoneStairs), + "polished_blackstone_wall" => Some(Self::PolishedBlackstoneWall), + "polished_cinnabar" => Some(Self::PolishedCinnabar), + "polished_cinnabar_slab" => Some(Self::PolishedCinnabarSlab), + "polished_cinnabar_stairs" => Some(Self::PolishedCinnabarStairs), + "polished_cinnabar_wall" => Some(Self::PolishedCinnabarWall), + "polished_deepslate" => Some(Self::PolishedDeepslate), + "polished_deepslate_slab" => Some(Self::PolishedDeepslateSlab), + "polished_deepslate_stairs" => Some(Self::PolishedDeepslateStairs), + "polished_deepslate_wall" => Some(Self::PolishedDeepslateWall), + "polished_diorite" => Some(Self::PolishedDiorite), + "polished_diorite_slab" => Some(Self::PolishedDioriteSlab), + "polished_diorite_stairs" => Some(Self::PolishedDioriteStairs), + "polished_granite" => Some(Self::PolishedGranite), + "polished_granite_slab" => Some(Self::PolishedGraniteSlab), + "polished_granite_stairs" => Some(Self::PolishedGraniteStairs), + "polished_sulfur" => Some(Self::PolishedSulfur), + "polished_sulfur_slab" => Some(Self::PolishedSulfurSlab), + "polished_sulfur_stairs" => Some(Self::PolishedSulfurStairs), + "polished_sulfur_wall" => Some(Self::PolishedSulfurWall), + "polished_tuff" => Some(Self::PolishedTuff), + "polished_tuff_slab" => Some(Self::PolishedTuffSlab), + "polished_tuff_stairs" => Some(Self::PolishedTuffStairs), + "polished_tuff_wall" => Some(Self::PolishedTuffWall), + "popped_chorus_fruit" => Some(Self::PoppedChorusFruit), + "poppy" => Some(Self::Poppy), + "porkchop" => Some(Self::Porkchop), + "potato" => Some(Self::Potato), + "potent_sulfur" => Some(Self::PotentSulfur), + "potion" => Some(Self::Potion), + "powder_snow_bucket" => Some(Self::PowderSnowBucket), + "powered_rail" => Some(Self::PoweredRail), + "prismarine" => Some(Self::Prismarine), + "prismarine_brick_slab" => Some(Self::PrismarineBrickSlab), + "prismarine_brick_stairs" => Some(Self::PrismarineBrickStairs), + "prismarine_bricks" => Some(Self::PrismarineBricks), + "prismarine_crystals" => Some(Self::PrismarineCrystals), + "prismarine_shard" => Some(Self::PrismarineShard), + "prismarine_slab" => Some(Self::PrismarineSlab), + "prismarine_stairs" => Some(Self::PrismarineStairs), + "prismarine_wall" => Some(Self::PrismarineWall), + "prize_pottery_sherd" => Some(Self::PrizePotterySherd), + "pufferfish" => Some(Self::Pufferfish), + "pufferfish_bucket" => Some(Self::PufferfishBucket), + "pufferfish_spawn_egg" => Some(Self::PufferfishSpawnEgg), + "pumpkin" => Some(Self::Pumpkin), + "pumpkin_pie" => Some(Self::PumpkinPie), + "pumpkin_seeds" => Some(Self::PumpkinSeeds), + "purple_banner" => Some(Self::PurpleBanner), + "purple_bed" => Some(Self::PurpleBed), + "purple_bundle" => Some(Self::PurpleBundle), + "purple_candle" => Some(Self::PurpleCandle), + "purple_carpet" => Some(Self::PurpleCarpet), + "purple_concrete" => Some(Self::PurpleConcrete), + "purple_concrete_powder" => Some(Self::PurpleConcretePowder), + "purple_dye" => Some(Self::PurpleDye), + "purple_glazed_terracotta" => Some(Self::PurpleGlazedTerracotta), + "purple_harness" => Some(Self::PurpleHarness), + "purple_shulker_box" => Some(Self::PurpleShulkerBox), + "purple_stained_glass" => Some(Self::PurpleStainedGlass), + "purple_stained_glass_pane" => Some(Self::PurpleStainedGlassPane), + "purple_terracotta" => Some(Self::PurpleTerracotta), + "purple_wool" => Some(Self::PurpleWool), + "purpur_block" => Some(Self::PurpurBlock), + "purpur_pillar" => Some(Self::PurpurPillar), + "purpur_slab" => Some(Self::PurpurSlab), + "purpur_stairs" => Some(Self::PurpurStairs), + "quartz" => Some(Self::Quartz), + "quartz_block" => Some(Self::QuartzBlock), + "quartz_bricks" => Some(Self::QuartzBricks), + "quartz_pillar" => Some(Self::QuartzPillar), + "quartz_slab" => Some(Self::QuartzSlab), + "quartz_stairs" => Some(Self::QuartzStairs), + "rabbit" => Some(Self::Rabbit), + "rabbit_foot" => Some(Self::RabbitFoot), + "rabbit_hide" => Some(Self::RabbitHide), + "rabbit_spawn_egg" => Some(Self::RabbitSpawnEgg), + "rabbit_stew" => Some(Self::RabbitStew), + "rail" => Some(Self::Rail), + "raiser_armor_trim_smithing_template" => Some(Self::RaiserArmorTrimSmithingTemplate), + "ravager_spawn_egg" => Some(Self::RavagerSpawnEgg), + "raw_copper" => Some(Self::RawCopper), + "raw_copper_block" => Some(Self::RawCopperBlock), + "raw_gold" => Some(Self::RawGold), + "raw_gold_block" => Some(Self::RawGoldBlock), + "raw_iron" => Some(Self::RawIron), + "raw_iron_block" => Some(Self::RawIronBlock), + "recovery_compass" => Some(Self::RecoveryCompass), + "red_banner" => Some(Self::RedBanner), + "red_bed" => Some(Self::RedBed), + "red_bundle" => Some(Self::RedBundle), + "red_candle" => Some(Self::RedCandle), + "red_carpet" => Some(Self::RedCarpet), + "red_concrete" => Some(Self::RedConcrete), + "red_concrete_powder" => Some(Self::RedConcretePowder), + "red_dye" => Some(Self::RedDye), + "red_glazed_terracotta" => Some(Self::RedGlazedTerracotta), + "red_harness" => Some(Self::RedHarness), + "red_mushroom" => Some(Self::RedMushroom), + "red_mushroom_block" => Some(Self::RedMushroomBlock), + "red_nether_brick_slab" => Some(Self::RedNetherBrickSlab), + "red_nether_brick_stairs" => Some(Self::RedNetherBrickStairs), + "red_nether_brick_wall" => Some(Self::RedNetherBrickWall), + "red_nether_bricks" => Some(Self::RedNetherBricks), + "red_sand" => Some(Self::RedSand), + "red_sandstone" => Some(Self::RedSandstone), + "red_sandstone_slab" => Some(Self::RedSandstoneSlab), + "red_sandstone_stairs" => Some(Self::RedSandstoneStairs), + "red_sandstone_wall" => Some(Self::RedSandstoneWall), + "red_shulker_box" => Some(Self::RedShulkerBox), + "red_stained_glass" => Some(Self::RedStainedGlass), + "red_stained_glass_pane" => Some(Self::RedStainedGlassPane), + "red_terracotta" => Some(Self::RedTerracotta), + "red_tulip" => Some(Self::RedTulip), + "red_wool" => Some(Self::RedWool), + "redstone" => Some(Self::Redstone), + "redstone_block" => Some(Self::RedstoneBlock), + "redstone_lamp" => Some(Self::RedstoneLamp), + "redstone_ore" => Some(Self::RedstoneOre), + "redstone_torch" => Some(Self::RedstoneTorch), + "reinforced_deepslate" => Some(Self::ReinforcedDeepslate), + "repeater" => Some(Self::Repeater), + "repeating_command_block" => Some(Self::RepeatingCommandBlock), + "resin_block" => Some(Self::ResinBlock), + "resin_brick" => Some(Self::ResinBrick), + "resin_brick_slab" => Some(Self::ResinBrickSlab), + "resin_brick_stairs" => Some(Self::ResinBrickStairs), + "resin_brick_wall" => Some(Self::ResinBrickWall), + "resin_bricks" => Some(Self::ResinBricks), + "resin_clump" => Some(Self::ResinClump), + "respawn_anchor" => Some(Self::RespawnAnchor), + "rib_armor_trim_smithing_template" => Some(Self::RibArmorTrimSmithingTemplate), + "rooted_dirt" => Some(Self::RootedDirt), + "rose_bush" => Some(Self::RoseBush), + "rotten_flesh" => Some(Self::RottenFlesh), + "saddle" => Some(Self::Saddle), + "salmon" => Some(Self::Salmon), + "salmon_bucket" => Some(Self::SalmonBucket), + "salmon_spawn_egg" => Some(Self::SalmonSpawnEgg), + "sand" => Some(Self::Sand), + "sandstone" => Some(Self::Sandstone), + "sandstone_slab" => Some(Self::SandstoneSlab), + "sandstone_stairs" => Some(Self::SandstoneStairs), + "sandstone_wall" => Some(Self::SandstoneWall), + "scaffolding" => Some(Self::Scaffolding), + "scrape_pottery_sherd" => Some(Self::ScrapePotterySherd), + "sculk" => Some(Self::Sculk), + "sculk_catalyst" => Some(Self::SculkCatalyst), + "sculk_sensor" => Some(Self::SculkSensor), + "sculk_shrieker" => Some(Self::SculkShrieker), + "sculk_vein" => Some(Self::SculkVein), + "sea_lantern" => Some(Self::SeaLantern), + "sea_pickle" => Some(Self::SeaPickle), + "seagrass" => Some(Self::Seagrass), + "sentry_armor_trim_smithing_template" => Some(Self::SentryArmorTrimSmithingTemplate), + "shaper_armor_trim_smithing_template" => Some(Self::ShaperArmorTrimSmithingTemplate), + "sheaf_pottery_sherd" => Some(Self::SheafPotterySherd), + "shears" => Some(Self::Shears), + "sheep_spawn_egg" => Some(Self::SheepSpawnEgg), + "shelter_pottery_sherd" => Some(Self::ShelterPotterySherd), + "shield" => Some(Self::Shield), + "short_dry_grass" => Some(Self::ShortDryGrass), + "short_grass" => Some(Self::ShortGrass), + "shroomlight" => Some(Self::Shroomlight), + "shulker_box" => Some(Self::ShulkerBox), + "shulker_shell" => Some(Self::ShulkerShell), + "shulker_spawn_egg" => Some(Self::ShulkerSpawnEgg), + "silence_armor_trim_smithing_template" => Some(Self::SilenceArmorTrimSmithingTemplate), + "silverfish_spawn_egg" => Some(Self::SilverfishSpawnEgg), + "skeleton_horse_spawn_egg" => Some(Self::SkeletonHorseSpawnEgg), + "skeleton_skull" => Some(Self::SkeletonSkull), + "skeleton_spawn_egg" => Some(Self::SkeletonSpawnEgg), + "skull_banner_pattern" => Some(Self::SkullBannerPattern), + "skull_pottery_sherd" => Some(Self::SkullPotterySherd), + "slime_ball" => Some(Self::SlimeBall), + "slime_block" => Some(Self::SlimeBlock), + "slime_spawn_egg" => Some(Self::SlimeSpawnEgg), + "small_amethyst_bud" => Some(Self::SmallAmethystBud), + "small_dripleaf" => Some(Self::SmallDripleaf), + "smithing_table" => Some(Self::SmithingTable), + "smoker" => Some(Self::Smoker), + "smooth_basalt" => Some(Self::SmoothBasalt), + "smooth_quartz" => Some(Self::SmoothQuartz), + "smooth_quartz_slab" => Some(Self::SmoothQuartzSlab), + "smooth_quartz_stairs" => Some(Self::SmoothQuartzStairs), + "smooth_red_sandstone" => Some(Self::SmoothRedSandstone), + "smooth_red_sandstone_slab" => Some(Self::SmoothRedSandstoneSlab), + "smooth_red_sandstone_stairs" => Some(Self::SmoothRedSandstoneStairs), + "smooth_sandstone" => Some(Self::SmoothSandstone), + "smooth_sandstone_slab" => Some(Self::SmoothSandstoneSlab), + "smooth_sandstone_stairs" => Some(Self::SmoothSandstoneStairs), + "smooth_stone" => Some(Self::SmoothStone), + "smooth_stone_slab" => Some(Self::SmoothStoneSlab), + "sniffer_egg" => Some(Self::SnifferEgg), + "sniffer_spawn_egg" => Some(Self::SnifferSpawnEgg), + "snort_pottery_sherd" => Some(Self::SnortPotterySherd), + "snout_armor_trim_smithing_template" => Some(Self::SnoutArmorTrimSmithingTemplate), + "snow" => Some(Self::Snow), + "snow_block" => Some(Self::SnowBlock), + "snow_golem_spawn_egg" => Some(Self::SnowGolemSpawnEgg), + "snowball" => Some(Self::Snowball), + "soul_campfire" => Some(Self::SoulCampfire), + "soul_lantern" => Some(Self::SoulLantern), + "soul_sand" => Some(Self::SoulSand), + "soul_soil" => Some(Self::SoulSoil), + "soul_torch" => Some(Self::SoulTorch), + "spawner" => Some(Self::Spawner), + "spectral_arrow" => Some(Self::SpectralArrow), + "spider_eye" => Some(Self::SpiderEye), + "spider_spawn_egg" => Some(Self::SpiderSpawnEgg), + "spire_armor_trim_smithing_template" => Some(Self::SpireArmorTrimSmithingTemplate), + "splash_potion" => Some(Self::SplashPotion), + "sponge" => Some(Self::Sponge), + "spore_blossom" => Some(Self::SporeBlossom), + "spruce_boat" => Some(Self::SpruceBoat), + "spruce_button" => Some(Self::SpruceButton), + "spruce_chest_boat" => Some(Self::SpruceChestBoat), + "spruce_door" => Some(Self::SpruceDoor), + "spruce_fence" => Some(Self::SpruceFence), + "spruce_fence_gate" => Some(Self::SpruceFenceGate), + "spruce_hanging_sign" => Some(Self::SpruceHangingSign), + "spruce_leaves" => Some(Self::SpruceLeaves), + "spruce_log" => Some(Self::SpruceLog), + "spruce_planks" => Some(Self::SprucePlanks), + "spruce_pressure_plate" => Some(Self::SprucePressurePlate), + "spruce_sapling" => Some(Self::SpruceSapling), + "spruce_shelf" => Some(Self::SpruceShelf), + "spruce_sign" => Some(Self::SpruceSign), + "spruce_slab" => Some(Self::SpruceSlab), + "spruce_stairs" => Some(Self::SpruceStairs), + "spruce_trapdoor" => Some(Self::SpruceTrapdoor), + "spruce_wood" => Some(Self::SpruceWood), + "spyglass" => Some(Self::Spyglass), + "squid_spawn_egg" => Some(Self::SquidSpawnEgg), + "stick" => Some(Self::Stick), + "sticky_piston" => Some(Self::StickyPiston), + "stone" => Some(Self::Stone), + "stone_axe" => Some(Self::StoneAxe), + "stone_brick_slab" => Some(Self::StoneBrickSlab), + "stone_brick_stairs" => Some(Self::StoneBrickStairs), + "stone_brick_wall" => Some(Self::StoneBrickWall), + "stone_bricks" => Some(Self::StoneBricks), + "stone_button" => Some(Self::StoneButton), + "stone_hoe" => Some(Self::StoneHoe), + "stone_pickaxe" => Some(Self::StonePickaxe), + "stone_pressure_plate" => Some(Self::StonePressurePlate), + "stone_shovel" => Some(Self::StoneShovel), + "stone_slab" => Some(Self::StoneSlab), + "stone_spear" => Some(Self::StoneSpear), + "stone_stairs" => Some(Self::StoneStairs), + "stone_sword" => Some(Self::StoneSword), + "stonecutter" => Some(Self::Stonecutter), + "stray_spawn_egg" => Some(Self::StraySpawnEgg), + "strider_spawn_egg" => Some(Self::StriderSpawnEgg), + "string" => Some(Self::String), + "stripped_acacia_log" => Some(Self::StrippedAcaciaLog), + "stripped_acacia_wood" => Some(Self::StrippedAcaciaWood), + "stripped_bamboo_block" => Some(Self::StrippedBambooBlock), + "stripped_birch_log" => Some(Self::StrippedBirchLog), + "stripped_birch_wood" => Some(Self::StrippedBirchWood), + "stripped_cherry_log" => Some(Self::StrippedCherryLog), + "stripped_cherry_wood" => Some(Self::StrippedCherryWood), + "stripped_crimson_hyphae" => Some(Self::StrippedCrimsonHyphae), + "stripped_crimson_stem" => Some(Self::StrippedCrimsonStem), + "stripped_dark_oak_log" => Some(Self::StrippedDarkOakLog), + "stripped_dark_oak_wood" => Some(Self::StrippedDarkOakWood), + "stripped_jungle_log" => Some(Self::StrippedJungleLog), + "stripped_jungle_wood" => Some(Self::StrippedJungleWood), + "stripped_mangrove_log" => Some(Self::StrippedMangroveLog), + "stripped_mangrove_wood" => Some(Self::StrippedMangroveWood), + "stripped_oak_log" => Some(Self::StrippedOakLog), + "stripped_oak_wood" => Some(Self::StrippedOakWood), + "stripped_pale_oak_log" => Some(Self::StrippedPaleOakLog), + "stripped_pale_oak_wood" => Some(Self::StrippedPaleOakWood), + "stripped_spruce_log" => Some(Self::StrippedSpruceLog), + "stripped_spruce_wood" => Some(Self::StrippedSpruceWood), + "stripped_warped_hyphae" => Some(Self::StrippedWarpedHyphae), + "stripped_warped_stem" => Some(Self::StrippedWarpedStem), + "structure_block" => Some(Self::StructureBlock), + "structure_void" => Some(Self::StructureVoid), + "sugar" => Some(Self::Sugar), + "sugar_cane" => Some(Self::SugarCane), + "sulfur" => Some(Self::Sulfur), + "sulfur_brick_slab" => Some(Self::SulfurBrickSlab), + "sulfur_brick_stairs" => Some(Self::SulfurBrickStairs), + "sulfur_brick_wall" => Some(Self::SulfurBrickWall), + "sulfur_bricks" => Some(Self::SulfurBricks), + "sulfur_cube_bucket" => Some(Self::SulfurCubeBucket), + "sulfur_cube_spawn_egg" => Some(Self::SulfurCubeSpawnEgg), + "sulfur_slab" => Some(Self::SulfurSlab), + "sulfur_spike" => Some(Self::SulfurSpike), + "sulfur_stairs" => Some(Self::SulfurStairs), + "sulfur_wall" => Some(Self::SulfurWall), + "sunflower" => Some(Self::Sunflower), + "suspicious_gravel" => Some(Self::SuspiciousGravel), + "suspicious_sand" => Some(Self::SuspiciousSand), + "suspicious_stew" => Some(Self::SuspiciousStew), + "sweet_berries" => Some(Self::SweetBerries), + "tadpole_bucket" => Some(Self::TadpoleBucket), + "tadpole_spawn_egg" => Some(Self::TadpoleSpawnEgg), + "tall_dry_grass" => Some(Self::TallDryGrass), + "tall_grass" => Some(Self::TallGrass), + "target" => Some(Self::Target), + "terracotta" => Some(Self::Terracotta), + "test_block" => Some(Self::TestBlock), + "test_instance_block" => Some(Self::TestInstanceBlock), + "tide_armor_trim_smithing_template" => Some(Self::TideArmorTrimSmithingTemplate), + "tinted_glass" => Some(Self::TintedGlass), + "tipped_arrow" => Some(Self::TippedArrow), + "tnt" => Some(Self::Tnt), + "tnt_minecart" => Some(Self::TntMinecart), + "torch" => Some(Self::Torch), + "torchflower" => Some(Self::Torchflower), + "torchflower_seeds" => Some(Self::TorchflowerSeeds), + "totem_of_undying" => Some(Self::TotemOfUndying), + "trader_llama_spawn_egg" => Some(Self::TraderLlamaSpawnEgg), + "trapped_chest" => Some(Self::TrappedChest), + "trial_key" => Some(Self::TrialKey), + "trial_spawner" => Some(Self::TrialSpawner), + "trident" => Some(Self::Trident), + "tripwire_hook" => Some(Self::TripwireHook), + "tropical_fish" => Some(Self::TropicalFish), + "tropical_fish_bucket" => Some(Self::TropicalFishBucket), + "tropical_fish_spawn_egg" => Some(Self::TropicalFishSpawnEgg), + "tube_coral" => Some(Self::TubeCoral), + "tube_coral_block" => Some(Self::TubeCoralBlock), + "tube_coral_fan" => Some(Self::TubeCoralFan), + "tuff" => Some(Self::Tuff), + "tuff_brick_slab" => Some(Self::TuffBrickSlab), + "tuff_brick_stairs" => Some(Self::TuffBrickStairs), + "tuff_brick_wall" => Some(Self::TuffBrickWall), + "tuff_bricks" => Some(Self::TuffBricks), + "tuff_slab" => Some(Self::TuffSlab), + "tuff_stairs" => Some(Self::TuffStairs), + "tuff_wall" => Some(Self::TuffWall), + "turtle_egg" => Some(Self::TurtleEgg), + "turtle_helmet" => Some(Self::TurtleHelmet), + "turtle_scute" => Some(Self::TurtleScute), + "turtle_spawn_egg" => Some(Self::TurtleSpawnEgg), + "twisting_vines" => Some(Self::TwistingVines), + "vault" => Some(Self::Vault), + "verdant_froglight" => Some(Self::VerdantFroglight), + "vex_armor_trim_smithing_template" => Some(Self::VexArmorTrimSmithingTemplate), + "vex_spawn_egg" => Some(Self::VexSpawnEgg), + "villager_spawn_egg" => Some(Self::VillagerSpawnEgg), + "vindicator_spawn_egg" => Some(Self::VindicatorSpawnEgg), + "vine" => Some(Self::Vine), + "wandering_trader_spawn_egg" => Some(Self::WanderingTraderSpawnEgg), + "ward_armor_trim_smithing_template" => Some(Self::WardArmorTrimSmithingTemplate), + "warden_spawn_egg" => Some(Self::WardenSpawnEgg), + "warped_button" => Some(Self::WarpedButton), + "warped_door" => Some(Self::WarpedDoor), + "warped_fence" => Some(Self::WarpedFence), + "warped_fence_gate" => Some(Self::WarpedFenceGate), + "warped_fungus" => Some(Self::WarpedFungus), + "warped_fungus_on_a_stick" => Some(Self::WarpedFungusOnAStick), + "warped_hanging_sign" => Some(Self::WarpedHangingSign), + "warped_hyphae" => Some(Self::WarpedHyphae), + "warped_nylium" => Some(Self::WarpedNylium), + "warped_planks" => Some(Self::WarpedPlanks), + "warped_pressure_plate" => Some(Self::WarpedPressurePlate), + "warped_roots" => Some(Self::WarpedRoots), + "warped_shelf" => Some(Self::WarpedShelf), + "warped_sign" => Some(Self::WarpedSign), + "warped_slab" => Some(Self::WarpedSlab), + "warped_stairs" => Some(Self::WarpedStairs), + "warped_stem" => Some(Self::WarpedStem), + "warped_trapdoor" => Some(Self::WarpedTrapdoor), + "warped_wart_block" => Some(Self::WarpedWartBlock), + "water_bucket" => Some(Self::WaterBucket), + "waxed_chiseled_copper" => Some(Self::WaxedChiseledCopper), + "waxed_copper_bars" => Some(Self::WaxedCopperBars), + "waxed_copper_block" => Some(Self::WaxedCopperBlock), + "waxed_copper_bulb" => Some(Self::WaxedCopperBulb), + "waxed_copper_chain" => Some(Self::WaxedCopperChain), + "waxed_copper_chest" => Some(Self::WaxedCopperChest), + "waxed_copper_door" => Some(Self::WaxedCopperDoor), + "waxed_copper_golem_statue" => Some(Self::WaxedCopperGolemStatue), + "waxed_copper_grate" => Some(Self::WaxedCopperGrate), + "waxed_copper_lantern" => Some(Self::WaxedCopperLantern), + "waxed_copper_trapdoor" => Some(Self::WaxedCopperTrapdoor), + "waxed_cut_copper" => Some(Self::WaxedCutCopper), + "waxed_cut_copper_slab" => Some(Self::WaxedCutCopperSlab), + "waxed_cut_copper_stairs" => Some(Self::WaxedCutCopperStairs), + "waxed_exposed_chiseled_copper" => Some(Self::WaxedExposedChiseledCopper), + "waxed_exposed_copper" => Some(Self::WaxedExposedCopper), + "waxed_exposed_copper_bars" => Some(Self::WaxedExposedCopperBars), + "waxed_exposed_copper_bulb" => Some(Self::WaxedExposedCopperBulb), + "waxed_exposed_copper_chain" => Some(Self::WaxedExposedCopperChain), + "waxed_exposed_copper_chest" => Some(Self::WaxedExposedCopperChest), + "waxed_exposed_copper_door" => Some(Self::WaxedExposedCopperDoor), + "waxed_exposed_copper_golem_statue" => Some(Self::WaxedExposedCopperGolemStatue), + "waxed_exposed_copper_grate" => Some(Self::WaxedExposedCopperGrate), + "waxed_exposed_copper_lantern" => Some(Self::WaxedExposedCopperLantern), + "waxed_exposed_copper_trapdoor" => Some(Self::WaxedExposedCopperTrapdoor), + "waxed_exposed_cut_copper" => Some(Self::WaxedExposedCutCopper), + "waxed_exposed_cut_copper_slab" => Some(Self::WaxedExposedCutCopperSlab), + "waxed_exposed_cut_copper_stairs" => Some(Self::WaxedExposedCutCopperStairs), + "waxed_exposed_lightning_rod" => Some(Self::WaxedExposedLightningRod), + "waxed_lightning_rod" => Some(Self::WaxedLightningRod), + "waxed_oxidized_chiseled_copper" => Some(Self::WaxedOxidizedChiseledCopper), + "waxed_oxidized_copper" => Some(Self::WaxedOxidizedCopper), + "waxed_oxidized_copper_bars" => Some(Self::WaxedOxidizedCopperBars), + "waxed_oxidized_copper_bulb" => Some(Self::WaxedOxidizedCopperBulb), + "waxed_oxidized_copper_chain" => Some(Self::WaxedOxidizedCopperChain), + "waxed_oxidized_copper_chest" => Some(Self::WaxedOxidizedCopperChest), + "waxed_oxidized_copper_door" => Some(Self::WaxedOxidizedCopperDoor), + "waxed_oxidized_copper_golem_statue" => Some(Self::WaxedOxidizedCopperGolemStatue), + "waxed_oxidized_copper_grate" => Some(Self::WaxedOxidizedCopperGrate), + "waxed_oxidized_copper_lantern" => Some(Self::WaxedOxidizedCopperLantern), + "waxed_oxidized_copper_trapdoor" => Some(Self::WaxedOxidizedCopperTrapdoor), + "waxed_oxidized_cut_copper" => Some(Self::WaxedOxidizedCutCopper), + "waxed_oxidized_cut_copper_slab" => Some(Self::WaxedOxidizedCutCopperSlab), + "waxed_oxidized_cut_copper_stairs" => Some(Self::WaxedOxidizedCutCopperStairs), + "waxed_oxidized_lightning_rod" => Some(Self::WaxedOxidizedLightningRod), + "waxed_weathered_chiseled_copper" => Some(Self::WaxedWeatheredChiseledCopper), + "waxed_weathered_copper" => Some(Self::WaxedWeatheredCopper), + "waxed_weathered_copper_bars" => Some(Self::WaxedWeatheredCopperBars), + "waxed_weathered_copper_bulb" => Some(Self::WaxedWeatheredCopperBulb), + "waxed_weathered_copper_chain" => Some(Self::WaxedWeatheredCopperChain), + "waxed_weathered_copper_chest" => Some(Self::WaxedWeatheredCopperChest), + "waxed_weathered_copper_door" => Some(Self::WaxedWeatheredCopperDoor), + "waxed_weathered_copper_golem_statue" => Some(Self::WaxedWeatheredCopperGolemStatue), + "waxed_weathered_copper_grate" => Some(Self::WaxedWeatheredCopperGrate), + "waxed_weathered_copper_lantern" => Some(Self::WaxedWeatheredCopperLantern), + "waxed_weathered_copper_trapdoor" => Some(Self::WaxedWeatheredCopperTrapdoor), + "waxed_weathered_cut_copper" => Some(Self::WaxedWeatheredCutCopper), + "waxed_weathered_cut_copper_slab" => Some(Self::WaxedWeatheredCutCopperSlab), + "waxed_weathered_cut_copper_stairs" => Some(Self::WaxedWeatheredCutCopperStairs), + "waxed_weathered_lightning_rod" => Some(Self::WaxedWeatheredLightningRod), + "wayfinder_armor_trim_smithing_template" => { + Some(Self::WayfinderArmorTrimSmithingTemplate) + } + "weathered_chiseled_copper" => Some(Self::WeatheredChiseledCopper), + "weathered_copper" => Some(Self::WeatheredCopper), + "weathered_copper_bars" => Some(Self::WeatheredCopperBars), + "weathered_copper_bulb" => Some(Self::WeatheredCopperBulb), + "weathered_copper_chain" => Some(Self::WeatheredCopperChain), + "weathered_copper_chest" => Some(Self::WeatheredCopperChest), + "weathered_copper_door" => Some(Self::WeatheredCopperDoor), + "weathered_copper_golem_statue" => Some(Self::WeatheredCopperGolemStatue), + "weathered_copper_grate" => Some(Self::WeatheredCopperGrate), + "weathered_copper_lantern" => Some(Self::WeatheredCopperLantern), + "weathered_copper_trapdoor" => Some(Self::WeatheredCopperTrapdoor), + "weathered_cut_copper" => Some(Self::WeatheredCutCopper), + "weathered_cut_copper_slab" => Some(Self::WeatheredCutCopperSlab), + "weathered_cut_copper_stairs" => Some(Self::WeatheredCutCopperStairs), + "weathered_lightning_rod" => Some(Self::WeatheredLightningRod), + "weeping_vines" => Some(Self::WeepingVines), + "wet_sponge" => Some(Self::WetSponge), + "wheat" => Some(Self::Wheat), + "wheat_seeds" => Some(Self::WheatSeeds), + "white_banner" => Some(Self::WhiteBanner), + "white_bed" => Some(Self::WhiteBed), + "white_bundle" => Some(Self::WhiteBundle), + "white_candle" => Some(Self::WhiteCandle), + "white_carpet" => Some(Self::WhiteCarpet), + "white_concrete" => Some(Self::WhiteConcrete), + "white_concrete_powder" => Some(Self::WhiteConcretePowder), + "white_dye" => Some(Self::WhiteDye), + "white_glazed_terracotta" => Some(Self::WhiteGlazedTerracotta), + "white_harness" => Some(Self::WhiteHarness), + "white_shulker_box" => Some(Self::WhiteShulkerBox), + "white_stained_glass" => Some(Self::WhiteStainedGlass), + "white_stained_glass_pane" => Some(Self::WhiteStainedGlassPane), + "white_terracotta" => Some(Self::WhiteTerracotta), + "white_tulip" => Some(Self::WhiteTulip), + "white_wool" => Some(Self::WhiteWool), + "wild_armor_trim_smithing_template" => Some(Self::WildArmorTrimSmithingTemplate), + "wildflowers" => Some(Self::Wildflowers), + "wind_charge" => Some(Self::WindCharge), + "witch_spawn_egg" => Some(Self::WitchSpawnEgg), + "wither_rose" => Some(Self::WitherRose), + "wither_skeleton_skull" => Some(Self::WitherSkeletonSkull), + "wither_skeleton_spawn_egg" => Some(Self::WitherSkeletonSpawnEgg), + "wither_spawn_egg" => Some(Self::WitherSpawnEgg), + "wolf_armor" => Some(Self::WolfArmor), + "wolf_spawn_egg" => Some(Self::WolfSpawnEgg), + "wooden_axe" => Some(Self::WoodenAxe), + "wooden_hoe" => Some(Self::WoodenHoe), + "wooden_pickaxe" => Some(Self::WoodenPickaxe), + "wooden_shovel" => Some(Self::WoodenShovel), + "wooden_spear" => Some(Self::WoodenSpear), + "wooden_sword" => Some(Self::WoodenSword), + "writable_book" => Some(Self::WritableBook), + "written_book" => Some(Self::WrittenBook), + "yellow_banner" => Some(Self::YellowBanner), + "yellow_bed" => Some(Self::YellowBed), + "yellow_bundle" => Some(Self::YellowBundle), + "yellow_candle" => Some(Self::YellowCandle), + "yellow_carpet" => Some(Self::YellowCarpet), + "yellow_concrete" => Some(Self::YellowConcrete), + "yellow_concrete_powder" => Some(Self::YellowConcretePowder), + "yellow_dye" => Some(Self::YellowDye), + "yellow_glazed_terracotta" => Some(Self::YellowGlazedTerracotta), + "yellow_harness" => Some(Self::YellowHarness), + "yellow_shulker_box" => Some(Self::YellowShulkerBox), + "yellow_stained_glass" => Some(Self::YellowStainedGlass), + "yellow_stained_glass_pane" => Some(Self::YellowStainedGlassPane), + "yellow_terracotta" => Some(Self::YellowTerracotta), + "yellow_wool" => Some(Self::YellowWool), + "zoglin_spawn_egg" => Some(Self::ZoglinSpawnEgg), + "zombie_head" => Some(Self::ZombieHead), + "zombie_horse_spawn_egg" => Some(Self::ZombieHorseSpawnEgg), + "zombie_nautilus_spawn_egg" => Some(Self::ZombieNautilusSpawnEgg), + "zombie_spawn_egg" => Some(Self::ZombieSpawnEgg), + "zombie_villager_spawn_egg" => Some(Self::ZombieVillagerSpawnEgg), + "zombified_piglin_spawn_egg" => Some(Self::ZombifiedPiglinSpawnEgg), + _ => None, + } + } + + /// Resolves a typed `Item` from a registry key. + #[must_use] + pub fn from_registry_key(key: &str) -> Option { + Self::from_name(key) + } +} + +impl std::fmt::Display for Item { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.resource_location()) + } +} + +impl AsRef for Item { + fn as_ref(&self) -> &str { + self.as_str() + } +} diff --git a/crates/pumpkin-plugin-api/src/generated/mod.rs b/crates/pumpkin-plugin-api/src/generated/mod.rs new file mode 100644 index 000000000..6cb0e77d5 --- /dev/null +++ b/crates/pumpkin-plugin-api/src/generated/mod.rs @@ -0,0 +1,4 @@ +#![allow(missing_docs)] + +pub mod block; +pub mod item; diff --git a/crates/pumpkin-plugin-api/src/item.rs b/crates/pumpkin-plugin-api/src/item.rs new file mode 100644 index 000000000..dc64f9abc --- /dev/null +++ b/crates/pumpkin-plugin-api/src/item.rs @@ -0,0 +1,126 @@ +pub use crate::generated::item::Item; +use crate::wit::pumpkin::plugin::item_stack::ItemStack; + +/// Trait for converting types into a valid Minecraft item registry key (e.g. `"minecraft:diamond"`). +pub trait IntoItemKey { + /// Returns the namespaced item registry key. + fn into_item_key(self) -> String; +} + +impl IntoItemKey for Item { + fn into_item_key(self) -> String { + self.resource_location().to_string() + } +} + +impl IntoItemKey for &Item { + fn into_item_key(self) -> String { + self.resource_location().to_string() + } +} + +impl IntoItemKey for &str { + fn into_item_key(self) -> String { + if self.contains(':') { + self.to_string() + } else { + format!("minecraft:{self}") + } + } +} + +impl IntoItemKey for String { + fn into_item_key(self) -> String { + if self.contains(':') { + self + } else { + format!("minecraft:{self}") + } + } +} + +impl IntoItemKey for &String { + fn into_item_key(self) -> String { + self.as_str().into_item_key() + } +} + +/// Extension trait providing typed helper constructors and utilities on `ItemStack`. +pub trait ItemStackExt { + /// Creates a new `ItemStack` from any valid item key (e.g. `Item::Diamond`, `"minecraft:diamond"`, or `"custom:item"`). + #[must_use] + fn of(item: impl IntoItemKey, count: u8) -> Self; + + /// Returns the typed `Item` enum if this item stack corresponds to a known vanilla item, + /// or `None` if it is a custom, modded, or newer unknown item. + #[must_use] + fn get_item(&self) -> Option; + + /// Returns whether this item matches the specified typed `Item` enum. + #[must_use] + fn is_item(&self, item: Item) -> bool; + + /// Checks if this item stack matches a given item (either `Item` enum or string identifier). + #[must_use] + fn matches_item(&self, item: impl IntoItemKey) -> bool; +} + +impl ItemStackExt for ItemStack { + fn of(item: impl IntoItemKey, count: u8) -> Self { + Self::new(&item.into_item_key(), count) + } + + fn get_item(&self) -> Option { + Item::from_registry_key(&self.get_registry_key()) + } + + fn is_item(&self, item: Item) -> bool { + self.get_item() == Some(item) + } + + fn matches_item(&self, item: impl IntoItemKey) -> bool { + let expected = item.into_item_key(); + let actual = self.get_registry_key(); + let expected_clean = expected.strip_prefix("minecraft:").unwrap_or(&expected); + let actual_clean = actual.strip_prefix("minecraft:").unwrap_or(&actual); + expected_clean == actual_clean + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn item_to_resource_location() { + assert_eq!(Item::Diamond.into_item_key(), "minecraft:diamond"); + assert_eq!( + Item::NetheriteSword.into_item_key(), + "minecraft:netherite_sword" + ); + assert_eq!(Item::AcaciaBoat.into_item_key(), "minecraft:acacia_boat"); + assert_eq!( + Item::AllaySpawnEgg.into_item_key(), + "minecraft:allay_spawn_egg" + ); + assert_eq!(Item::Tnt.into_item_key(), "minecraft:tnt"); + } + + #[test] + fn string_to_resource_location() { + assert_eq!("diamond".into_item_key(), "minecraft:diamond"); + assert_eq!("minecraft:diamond".into_item_key(), "minecraft:diamond"); + assert_eq!("custom:laser_gun".into_item_key(), "custom:laser_gun"); + } + + #[test] + fn item_parsing() { + assert_eq!(Item::from_name("diamond"), Some(Item::Diamond)); + assert_eq!(Item::from_name("minecraft:diamond"), Some(Item::Diamond)); + assert_eq!( + Item::from_name("netherite_sword"), + Some(Item::NetheriteSword) + ); + assert_eq!(Item::from_name("custom:magic_wand"), None); + } +} diff --git a/crates/pumpkin-plugin-api/src/lib.rs b/crates/pumpkin-plugin-api/src/lib.rs index 947b69166..ed503fe97 100644 --- a/crates/pumpkin-plugin-api/src/lib.rs +++ b/crates/pumpkin-plugin-api/src/lib.rs @@ -74,6 +74,8 @@ use crate::{ text::TextComponent, }; +/// Block definitions and block type helpers. +pub mod block; /// Plugin command registration and handling utilities. pub mod commands; /// Datapack management and query utilities. @@ -87,8 +89,11 @@ pub mod events; mod ext; /// Bedrock UI form builders. pub mod forms; +pub(crate) mod generated; /// Unified inventory and container management utilities. pub mod inventory; +/// Typed item definitions and `ItemStack` construction helpers. +pub mod item; /// Specialized mob entity wrappers and helpers. pub mod mobs; /// Constants for plugin permissions. @@ -118,15 +123,18 @@ pub use wit::pumpkin::plugin::{ context::{self, Context, MarketplaceMetadata, Server}, damage_types as damage_types_wit, data_components, datapack as datapack_wit, display as display_wit, enchantments as enchantments_wit, entity, + entity_statuses as entity_statuses_wit, entity_types::EntityType, event::{self as events_wit, EventType}, - gui, i18n, inventory as inventory_wit, ipc, item_stack, java_dialogs, java_packets, particles, - permission, player, recipe as recipe_wit, scoreboard, screens as screens_wit, server, - statistics as statistics_wit, text, uuid, world, + game_events as game_events_wit, gui, i18n, inventory as inventory_wit, ipc, item_stack, + java_dialogs, java_packets, particles, permission, player, potions as potions_wit, + recipe as recipe_wit, scoreboard, screens as screens_wit, server, statistics as statistics_wit, + text, uuid, world, }; // Convenience re-exports of commonly-used plugin types so plugin authors can // name them directly (e.g. build an `ItemStack` for a GUI or `/give`). +pub use block::{BlockStateTypeExt, BlockType, BlockTypeExt, IntoBlockKey}; pub use damage_types_wit::DamageType; pub use datapack::{DatapackInfo, DatapackManager, EnablePosition}; pub use display::{ @@ -139,15 +147,19 @@ pub use enchantment::{ AttributeModifierSlot, CustomEnchantment, CustomEnchantmentValue, Enchantment, EnchantmentBuilder, EnchantmentError, EnchantmentManager, RegistrableEnchantment, }; +pub use entity_statuses_wit::EntityStatus; pub use events::{EventHandler, FromIntoEvent}; -pub use ext::player::PlayerEnderChestExt; +pub use ext::player::{PlayerCooldownExt, PlayerEnderChestExt}; +pub use game_events_wit::GameEvent; pub use inventory::{Inventory, PlayerInventory}; +pub use item::{IntoItemKey, Item, ItemStackExt}; pub use mobs::{ Ageable, AgeableData, Cat, CatData, Creeper, CreeperData, DyeColor, Enderman, EndermanData, EntityCastExt, Fox, FoxData, IronGolem, IronGolemData, MobCast, MobData, Sheep, SheepData, Shulker, ShulkerData, Slime, SlimeData, Villager, VillagerData, VillagerProfession, Wolf, WolfData, Zombie, ZombieData, }; +pub use potions_wit::PotionType; pub use recipe::{ CookingRecipeBuilder, Ingredient, RecipeCategory, RecipeError, RecipeManager, RegistrableRecipe, ShapedRecipeBuilder, ShapelessRecipeBuilder, @@ -155,7 +167,8 @@ pub use recipe::{ pub use screens_wit::Screen; pub use statistics_wit::{CustomStatistic, StatisticCategory}; pub use team::{PlayerTeamExt, ScoreboardTeamExt, Team, TeamSettingsBuilder}; -pub use wit::pumpkin::plugin::item_stack::ItemStack; +pub use wit::pumpkin::plugin::attributes::{Attribute, AttributeModifier, ModifierOperation}; +pub use wit::pumpkin::plugin::item_stack::{ItemAttributeModifier, ItemStack}; pub use wit::pumpkin::plugin::player::Player; pub use wit::pumpkin::plugin::scoreboard::{CollisionRule, NametagVisibility, TeamSettings}; pub use wit::pumpkin::plugin::server::Dimension; diff --git a/crates/pumpkin-protocol/src/java/client/play/delete_chat.rs b/crates/pumpkin-protocol/src/java/client/play/delete_chat.rs index 93e585bcc..bb8debc50 100644 --- a/crates/pumpkin-protocol/src/java/client/play/delete_chat.rs +++ b/crates/pumpkin-protocol/src/java/client/play/delete_chat.rs @@ -11,6 +11,7 @@ pub struct CDeleteChat<'a> { } impl<'a> CDeleteChat<'a> { + /// Creates a new `CDeleteChat` packet using a raw signature ID `VarInt`. #[must_use] pub const fn from_id(signature_id: VarInt) -> Self { Self { @@ -19,6 +20,21 @@ impl<'a> CDeleteChat<'a> { } } + /// Creates a new `CDeleteChat` packet using a 0-indexed signature cache ID. + /// + /// In Minecraft's `MessageSignature.Packed`, cached signatures are written as `cache_id + 1`. + #[must_use] + pub const fn from_cache_id(cache_id: i32) -> Self { + Self { + signature_id: VarInt(cache_id + 1), + signature: None, + } + } + + /// Creates a new `CDeleteChat` packet using a full 256-byte message signature. + /// + /// In Minecraft's `MessageSignature.Packed`, a full signature is written as `VarInt(0)` + /// followed by the 256 raw signature bytes. #[must_use] pub const fn from_signature(signature: &'a [u8]) -> Self { Self { diff --git a/crates/pumpkin-protocol/src/java/client/play/server_links.rs b/crates/pumpkin-protocol/src/java/client/play/server_links.rs index 30298cc13..9668b6c5c 100644 --- a/crates/pumpkin-protocol/src/java/client/play/server_links.rs +++ b/crates/pumpkin-protocol/src/java/client/play/server_links.rs @@ -1,6 +1,9 @@ +use crate::ClientPacket; use crate::Link; +use crate::ser::NetworkWriteExt; use pumpkin_data::packet::clientbound::play::SERVER_LINKS; use pumpkin_macros::java_packet; +use pumpkin_util::version::JavaMinecraftVersion; #[java_packet(SERVER_LINKS)] pub struct CPlayServerLinks<'a> { @@ -13,3 +16,17 @@ impl<'a> CPlayServerLinks<'a> { Self { links } } } + +impl ClientPacket for CPlayServerLinks<'_> { + fn write_packet_data( + &self, + mut write: impl std::io::Write, + _version: &JavaMinecraftVersion, + ) -> Result<(), crate::ser::WritingError> { + write.write_var_int(&crate::VarInt(self.links.len() as i32))?; + for link in self.links { + link.write(&mut write)?; + } + Ok(()) + } +} diff --git a/crates/pumpkin/src/entity/mob/mod.rs b/crates/pumpkin/src/entity/mob/mod.rs index e97d8c693..0ac84c598 100644 --- a/crates/pumpkin/src/entity/mob/mod.rs +++ b/crates/pumpkin/src/entity/mob/mod.rs @@ -25,7 +25,6 @@ use pumpkin_util::random::xoroshiro128::Xoroshiro; use pumpkin_util::random::{RandomGenerator, get_seed}; use pumpkin_util::version::JavaMinecraftVersion; use rand::RngExt; -use std::pin::Pin; use std::sync::Arc; use std::sync::atomic::Ordering::Relaxed; use std::sync::atomic::{AtomicI32, AtomicU8, Ordering}; @@ -1305,15 +1304,13 @@ pub trait PathAwareEntity: Mob + Send + Sync { ) >= 0.0 } - fn is_navigation<'a>(&'a self) -> Pin + Send + 'a>> { - Box::pin(async { - let navigator = self - .get_mob_entity() - .navigator - .lock() - .unwrap_or_else(std::sync::PoisonError::into_inner); - !navigator.is_idle() - }) + fn is_navigation(&self) -> bool { + let navigator = self + .get_mob_entity() + .navigator + .lock() + .unwrap_or_else(std::sync::PoisonError::into_inner); + !navigator.is_idle() } // TODO: implement diff --git a/crates/pumpkin/src/entity/mod.rs b/crates/pumpkin/src/entity/mod.rs index 02e89d6d7..22d447b89 100644 --- a/crates/pumpkin/src/entity/mod.rs +++ b/crates/pumpkin/src/entity/mod.rs @@ -2619,6 +2619,29 @@ impl Entity { } } + /// Sets the number of ticks the entity has been frozen. + pub fn set_frozen_ticks(&self, ticks: i32) { + let new_frozen_ticks = ticks.clamp(0, Self::MAX_FROZEN_TICKS); + self.frozen_ticks.store(new_frozen_ticks, Ordering::Relaxed); + let mut bedrock_meta = SyncedActorDataList::new(); + bedrock_meta.set( + entity_data_key::FREEZING_EFFECT_STRENGTH, + MetadataValue::Float(new_frozen_ticks as f32), + ); + self.send_meta_data( + &[Metadata::new( + tracked_data::entity::DATA_TICKS_FROZEN, + VarInt(new_frozen_ticks), + )], + Some(&bedrock_meta), + ); + } + + /// Returns the number of ticks the entity has been frozen. + pub fn get_frozen_ticks(&self) -> i32 { + self.frozen_ticks.load(Ordering::Relaxed) + } + /// Sets the `Entity` yaw & pitch rotation pub fn set_rotation(&self, yaw: f32, pitch: f32) { // TODO diff --git a/crates/pumpkin/src/entity/player.rs b/crates/pumpkin/src/entity/player.rs index eb8085a12..1d347190f 100644 --- a/crates/pumpkin/src/entity/player.rs +++ b/crates/pumpkin/src/entity/player.rs @@ -260,15 +260,16 @@ use pumpkin_protocol::codec::var_int::VarInt; use pumpkin_protocol::codec::var_long::VarLong; use pumpkin_protocol::codec::var_ulong::VarULong; use pumpkin_protocol::java::client::play::{ - Animation, CAcknowledgeBlockChange, CActionBar, CAwardStats, CChangeDifficulty, + Animation, CAcknowledgeBlockChange, CActionBar, CAwardStats, CBlockUpdate, CChangeDifficulty, CCloseContainer, CCombatDeath, CCustomPayload, CDisguisedChatMessage, CEntityAnimation, - CEntityPositionSync, CGameEvent, CItemCooldown, CMapItemData, COpenScreen, CParticle, - CPlayerAbilities, CPlayerInfoUpdate, CPlayerPosition, CPlayerSpawnPosition, CRespawn, - CSetCamera, CSetContainerContent, CSetContainerProperty, CSetContainerSlot, CSetCursorItem, - CSetExperience, CSetHealth, CSetPlayerInventory, CSetSelectedSlot, CSoundEffect, CStopSound, - CSubtitle, CSystemChatMessage, CTabList, CTitleAnimation, CTitleText, CUnloadChunk, - CUpdateMobEffect, CUpdateTime, GameEvent, MapIcon, MapPatch, Metadata, PlayerAction, - PlayerInfoFlags, PlayerSpawnData, PreviousMessage, Statistic, + CEntityPositionSync, CEntityVelocity, CGameEvent, CHurtAnimation, CItemCooldown, CMapItemData, + COpenBook, COpenScreen, COpenSignEditor, CParticle, CPlayServerLinks, CPlayerAbilities, + CPlayerInfoUpdate, CPlayerPosition, CPlayerSpawnPosition, CRespawn, CSetCamera, + CSetContainerContent, CSetContainerProperty, CSetContainerSlot, CSetCursorItem, CSetExperience, + CSetHealth, CSetPlayerInventory, CSetSelectedSlot, CSoundEffect, CStopSound, CSubtitle, + CSystemChatMessage, CTabList, CTitleAnimation, CTitleText, CUnloadChunk, CUpdateMobEffect, + CUpdateTime, GameEvent, MapIcon, MapPatch, Metadata, PlayerAction, PlayerInfoFlags, + PlayerSpawnData, PreviousMessage, Statistic, }; use pumpkin_protocol::java::server::play::{ SClickSlot, SContainerButtonClick, SRenameItem, SlotActionType, @@ -462,6 +463,8 @@ pub struct Player { /// Whether the client has reported that it has loaded. pub client_loaded: AtomicBool, pub bedrock_spawned: AtomicBool, + /// Whether the player is frozen in place (movement locked for dialogues/cutscenes). + pub is_movement_locked: AtomicBool, /// The amount of time (in ticks) the client has to report having finished loading before being timed out. pub client_loaded_timeout: AtomicU32, /// Counter for tracking chat and command spam. Decays each server tick. @@ -733,6 +736,7 @@ impl Player { gamemode: AtomicCell::new(gamemode), previous_gamemode: AtomicCell::new(None), camera_target_id: AtomicCell::new(None), + is_movement_locked: AtomicBool::new(false), // TODO: Send the CPlayerSpawnPosition packet when the client connects with proper values respawn_point: std::sync::Mutex::new(None), sleeping_since: AtomicCell::new(None), @@ -2188,6 +2192,126 @@ impl Player { self.try_send_client_packet(&packet); } + /// Plays a custom sound event by identifier for the player. + pub fn play_custom_sound( + &self, + sound_name: &str, + category: SoundCategory, + position: &Vector3, + volume: f32, + pitch: f32, + ) { + self.play_sound_event( + pumpkin_protocol::SoundEvent { + sound_name: sound_name.into(), + range: None, + }, + category, + position, + volume, + pitch, + rand::random::(), + ); + } + + pub fn spawn_particles( + &self, + particle: Particle, + pos: Vector3, + count: u32, + offset: Vector3, + max_speed: f32, + ) { + let packet = CParticle::new( + false, + false, + pos, + offset, + max_speed, + count as i32, + (particle.to_id() as i32).into(), + &[], + ); + self.try_send_client_packet(&packet); + } + + pub fn send_block_change(&self, location: BlockPos, state_id: u16) { + let packet = CBlockUpdate::new(location, (state_id as i32).into()); + self.try_send_client_packet(&packet); + } + + pub fn reset_block_change(&self, location: BlockPos) { + let state_id = self.world().get_block_state_id(&location); + let packet = CBlockUpdate::new(location, (state_id.as_u16() as i32).into()); + self.try_send_client_packet(&packet); + } + + pub fn send_hurt_animation(&self, yaw: f32) { + let packet = CHurtAnimation::new(self.entity_id().into(), yaw); + self.try_send_client_packet(&packet); + } + + pub fn open_book(&self, hand: Hand) { + let hand_val = match hand { + Hand::Right => 0, + Hand::Left => 1, + }; + let packet = COpenBook::new(hand_val.into()); + self.try_send_client_packet(&packet); + } + + pub fn open_sign_editor(&self, location: BlockPos, is_front_text: bool) { + let packet = COpenSignEditor::new(location, is_front_text); + self.try_send_client_packet(&packet); + } + + pub fn set_velocity(&self, velocity: Vector3) { + self.living_entity.entity.set_velocity(velocity); + self.try_send_client_packet(&CEntityVelocity::new(self.entity_id().into(), velocity)); + } + + pub fn apply_knockback(&self, strength: f64, x: f64, z: f64) { + let current_vel = self.living_entity.entity.velocity.load(); + let norm = x.hypot(z); + if norm > 0.0 { + let vx = current_vel.x / 2.0 - (x / norm) * strength; + let vz = current_vel.z / 2.0 - (z / norm) * strength; + let vy = (current_vel.y / 2.0 + strength).min(0.4); + self.set_velocity(Vector3::new(vx, vy, vz)); + } + } + + pub fn set_movement_locked(&self, locked: bool) { + self.is_movement_locked.store(locked, Ordering::Relaxed); + } + + pub fn is_movement_locked(&self) -> bool { + self.is_movement_locked.load(Ordering::Relaxed) + } + + pub fn set_freeze_ticks(&self, ticks: i32) { + self.living_entity.entity.set_frozen_ticks(ticks); + } + + pub fn get_freeze_ticks(&self) -> i32 { + self.living_entity.entity.get_frozen_ticks() + } + + pub fn send_game_event( + &self, + event: pumpkin_protocol::java::client::play::GameEvent, + value: f32, + ) { + let packet = CGameEvent::new(event, value); + self.try_send_client_packet(&packet); + } + + /// Sends custom server links to the player (displayed in the client Esc pause menu). + pub fn set_server_links(&self, links: &[pumpkin_protocol::Link<'_>]) { + let packet = CPlayServerLinks::new(links); + self.try_send_client_packet(&packet); + } + pub fn process_inbound_packets(&self) { const MAX_PACKETS_PER_TICK: usize = 64; @@ -2662,6 +2786,32 @@ impl Player { self.living_entity.entity.entity_id } + /// Sets the player's camera target entity ID. + /// If `target_id` matches the player's own entity ID, resets the camera back to the player. + pub fn set_camera_entity_id(&self, target_id: i32) { + if target_id == self.entity_id() { + self.camera_target_id.store(None); + self.try_send_client_packet(&CSetCamera::new(self.entity_id().into())); + } else { + self.camera_target_id.store(Some(target_id)); + self.try_send_client_packet(&CSetCamera::new(target_id.into())); + } + } + + /// Resets the player's camera back to their own perspective. + pub fn reset_camera(&self) { + self.camera_target_id.store(None); + self.try_send_client_packet(&CSetCamera::new(self.entity_id().into())); + } + + /// Gets the entity ID of the entity that the player's camera is currently attached to, + /// or the player's own entity ID if not overridden. + pub fn get_camera_entity_id(&self) -> i32 { + self.camera_target_id + .load() + .unwrap_or_else(|| self.entity_id()) + } + pub fn world(&self) -> Arc { self.living_entity.entity.world.load_full() } diff --git a/crates/pumpkin/src/net/bedrock/play/chat_message.rs b/crates/pumpkin/src/net/bedrock/play/chat_message.rs index 272d1ce3f..6def4968d 100644 --- a/crates/pumpkin/src/net/bedrock/play/chat_message.rs +++ b/crates/pumpkin/src/net/bedrock/play/chat_message.rs @@ -16,7 +16,7 @@ impl BedrockClient { send_cancellable! {{ server; - PlayerChatEvent::new(player.clone(), packet.message.into_owned(), vec![]); + PlayerChatEvent::new(player.clone(), packet.message.into_owned(), vec![], None); 'after: { info!(" {}: {}", gameprofile.name, event.message); diff --git a/crates/pumpkin/src/net/java/play/chat_message.rs b/crates/pumpkin/src/net/java/play/chat_message.rs index c2b6c103b..f9562898f 100644 --- a/crates/pumpkin/src/net/java/play/chat_message.rs +++ b/crates/pumpkin/src/net/java/play/chat_message.rs @@ -41,7 +41,12 @@ impl JavaClient { send_cancellable! {{ server; - PlayerChatEvent::new(player.clone(), chat_message.message.to_string(), vec![]); + PlayerChatEvent::new( + player.clone(), + chat_message.message.to_string(), + vec![], + chat_message.signature.map(<[u8]>::to_vec), + ); 'after: { info!(" {}: {}", gameprofile.name, event.message); diff --git a/crates/pumpkin/src/net/java/play/player_position.rs b/crates/pumpkin/src/net/java/play/player_position.rs index da0919e2f..b3a8b9169 100644 --- a/crates/pumpkin/src/net/java/play/player_position.rs +++ b/crates/pumpkin/src/net/java/play/player_position.rs @@ -64,6 +64,10 @@ impl JavaClient { { return; } + if player.is_movement_locked.load(Ordering::Relaxed) { + self.force_tp(player, player.get_entity().pos.load()); + return; + } // y = feet Y let position = packet.position; if position.x.is_nan() || position.y.is_nan() || position.z.is_nan() { @@ -197,6 +201,12 @@ impl JavaClient { { return; } + if player.is_movement_locked.load(Ordering::Relaxed) { + let entity = player.get_entity(); + entity.set_rotation(packet.yaw, packet.pitch); + self.force_tp(player, entity.pos.load()); + return; + } // y = feet Y let position = packet.position; if !position.x.is_finite() diff --git a/crates/pumpkin/src/plugin/api/events/player/player_chat.rs b/crates/pumpkin/src/plugin/api/events/player/player_chat.rs index 66930a2a0..58c62ef67 100644 --- a/crates/pumpkin/src/plugin/api/events/player/player_chat.rs +++ b/crates/pumpkin/src/plugin/api/events/player/player_chat.rs @@ -19,6 +19,9 @@ pub struct PlayerChatEvent { /// The recipients of the message. If empty, the message is broadcasted to all players. pub recipients: Vec>, + + /// The optional 256-byte cryptographic signature of the message. + pub signature: Option>, } impl PlayerChatEvent { @@ -28,14 +31,21 @@ impl PlayerChatEvent { /// - `player`: A reference to the player sending the message. /// - `message`: The message being sent. /// - `recipients`: The recipients of the message. If empty, the message is broadcasted to all players. + /// - `signature`: The optional cryptographic signature of the message. /// /// # Returns /// A new instance of `PlayerChatEvent`. - pub const fn new(player: Arc, message: String, recipients: Vec>) -> Self { + pub const fn new( + player: Arc, + message: String, + recipients: Vec>, + signature: Option>, + ) -> Self { Self { player, message, recipients, + signature, cancelled: false, } } diff --git a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/events/player.rs b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/events/player.rs index 749b0a823..a9b23ae2c 100644 --- a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/events/player.rs +++ b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/events/player.rs @@ -322,6 +322,7 @@ impl ToFromWasmEvent for PlayerChatEvent { player, message: self.message.clone(), recipients, + signature: self.signature.clone(), cancelled: self.cancelled, }) } @@ -336,6 +337,7 @@ impl ToFromWasmEvent for PlayerChatEvent { .into_iter() .map(|recipient| consume_player(state, &recipient)) .collect(), + signature: data.signature, cancelled: data.cancelled, }, _ => panic!("unexpected event type"), diff --git a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/item_stack.rs b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/item_stack.rs index ff3e93e05..a35ef7c06 100644 --- a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/item_stack.rs +++ b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/item_stack.rs @@ -1,10 +1,15 @@ use crate::plugin::loader::wasm::wasm_host::state::{ItemStackResource, PluginHostState}; +use crate::plugin::loader::wasm::wasm_host::wit::v0_1::pumpkin::plugin::attributes::{ + Attribute as WitAttribute, AttributeModifier as WitAttributeModifier, + ModifierOperation as WitModifierOperation, +}; use crate::plugin::loader::wasm::wasm_host::wit::v0_1::pumpkin::plugin::data_components::DataComponent as WitDataComponent; use crate::plugin::loader::wasm::wasm_host::wit::v0_1::pumpkin::plugin::enchantments::Enchantment as WitEnchantment; use crate::plugin::loader::wasm::wasm_host::wit::v0_1::pumpkin::plugin::item_stack::{ CustomEnchantmentValue as WitCustomEnchantmentValue, DataComponentValue as WitDataComponentValue, EnchantmentValue as WitEnchantmentValue, - Host as ItemStackInterfaceHost, HostItemStack, ItemStack as ItemStackHandle, + Host as ItemStackInterfaceHost, HostItemStack, + ItemAttributeModifier as WitItemAttributeModifier, ItemStack as ItemStackHandle, }; use crate::plugin::loader::wasm::wasm_host::wit::v0_1::pumpkin::plugin::text::TextComponent as WitTextComponent; use std::sync::Arc; @@ -14,8 +19,12 @@ use wasmtime::component::Resource; use super::common::{WitNbtTree, from_wit_nbt_tree, to_wit_nbt_tree}; use crate::plugin::loader::wasm::wasm_host::wit::v0_1::player::text_component_from_resource; use pumpkin_data::Enchantment; +use pumpkin_data::attributes::Attributes; use pumpkin_data::data_component::DataComponent; -use pumpkin_data::data_component_impl::{CustomNameImpl, EnchantmentsImpl, LoreImpl}; +use pumpkin_data::data_component_impl::combat::{Modifier, Operation}; +use pumpkin_data::data_component_impl::{ + AttributeModifiersImpl, CustomNameImpl, EnchantmentsImpl, LoreImpl, +}; use pumpkin_nbt::tag::NbtTag; use pumpkin_protocol::codec::data_component::{deserialize, serialize}; use std::borrow::Cow; @@ -40,6 +49,30 @@ pub(crate) fn from_wit_enchantment(id: WitEnchantment) -> &'static Enchantment { Enchantment::from_id(id as u8).expect("valid enchantment ID") } +#[must_use] +pub fn to_wit_attribute(attr: &Attributes) -> WitAttribute { + // SAFETY: WIT enum is generated in the same order as the internal ID + unsafe { std::mem::transmute(attr.id) } +} + +#[must_use] +pub const fn from_wit_item_operation(op: WitModifierOperation) -> Operation { + match op { + WitModifierOperation::Add => Operation::AddValue, + WitModifierOperation::MultiplyBase => Operation::AddMultipliedBase, + WitModifierOperation::MultiplyTotal => Operation::AddMultipliedTotal, + } +} + +#[must_use] +pub const fn to_wit_item_operation(op: Operation) -> WitModifierOperation { + match op { + Operation::AddValue => WitModifierOperation::Add, + Operation::AddMultipliedBase => WitModifierOperation::MultiplyBase, + Operation::AddMultipliedTotal => WitModifierOperation::MultiplyTotal, + } +} + impl PluginHostState { pub fn get_item_stack( &self, @@ -380,6 +413,101 @@ impl HostItemStack for PluginHostState { Ok(false) } + async fn get_attribute_modifiers( + &mut self, + res: Resource, + ) -> wasmtime::Result> { + let stack = self.get_item_stack(&res)?; + let stack = stack.lock().await; + let mut modifiers = Vec::new(); + if let Some(comp) = stack.get_data_component::() { + for m in comp.attribute_modifiers.iter() { + modifiers.push(WitItemAttributeModifier { + attribute: to_wit_attribute(m.r#type), + modifier: WitAttributeModifier { + id: m.id.to_string(), + amount: m.amount, + operation: to_wit_item_operation(m.operation), + }, + slot: super::enchantment::to_wit_slot(&m.slot), + }); + } + } + Ok(modifiers) + } + + async fn add_attribute_modifier( + &mut self, + res: Resource, + modifier: WitItemAttributeModifier, + ) -> wasmtime::Result<()> { + let stack = self.get_item_stack(&res)?; + let mut stack = stack.lock().await; + let attr = super::living_entity::from_wit_attribute(modifier.attribute); + let slot = super::enchantment::to_data_slot(modifier.slot); + let op = from_wit_item_operation(modifier.modifier.operation); + let leaked_id: &'static str = Box::leak(modifier.modifier.id.into_boxed_str()); + + let mut current_mods = stack + .get_data_component::() + .map_or_else(Vec::new, |comp| { + comp.attribute_modifiers.clone().into_owned() + }); + + current_mods.retain(|m| !(m.r#type == attr && m.id == leaked_id && m.slot == slot)); + current_mods.push(Modifier { + r#type: attr, + id: leaked_id, + amount: modifier.modifier.amount, + operation: op, + slot, + }); + + stack.set_data_component(AttributeModifiersImpl { + attribute_modifiers: Cow::Owned(current_mods), + }); + + Ok(()) + } + + async fn remove_attribute_modifiers( + &mut self, + res: Resource, + attribute: WitAttribute, + ) -> wasmtime::Result<()> { + let stack = self.get_item_stack(&res)?; + let mut stack = stack.lock().await; + let attr = super::living_entity::from_wit_attribute(attribute); + + if let Some(comp) = stack.get_data_component::() { + let mut current_mods = comp.attribute_modifiers.clone().into_owned(); + current_mods.retain(|m| m.r#type != attr); + if current_mods.is_empty() { + stack + .patch + .retain(|(id, _)| *id != DataComponent::AttributeModifiers); + } else { + stack.set_data_component(AttributeModifiersImpl { + attribute_modifiers: Cow::Owned(current_mods), + }); + } + } + + Ok(()) + } + + async fn clear_attribute_modifiers( + &mut self, + res: Resource, + ) -> wasmtime::Result<()> { + let stack = self.get_item_stack(&res)?; + let mut stack = stack.lock().await; + stack + .patch + .retain(|(id, _)| *id != DataComponent::AttributeModifiers); + Ok(()) + } + async fn get_lore( &mut self, res: Resource, diff --git a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/mob.rs b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/mob.rs index 1b292b377..f25dc7cb2 100644 --- a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/mob.rs +++ b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/mob.rs @@ -980,6 +980,21 @@ impl HostMob for PluginHostState { Ok(false) } + async fn set_freeze_ticks( + &mut self, + this: Resource, + ticks: i32, + ) -> wasmtime::Result<()> { + let entity = mob_from_resource(self, &this)?; + entity.get_entity().set_frozen_ticks(ticks); + Ok(()) + } + + async fn get_freeze_ticks(&mut self, this: Resource) -> wasmtime::Result { + let entity = mob_from_resource(self, &this)?; + Ok(entity.get_entity().get_frozen_ticks()) + } + async fn drop(&mut self, rep: Resource) -> wasmtime::Result<()> { let _ = self .resource_table diff --git a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/mod.rs b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/mod.rs index 927283348..ddcd0363a 100644 --- a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/mod.rs +++ b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/mod.rs @@ -84,6 +84,9 @@ impl pumpkin::plugin::damage_types::Host for PluginHostState {} impl pumpkin::plugin::screens::Host for PluginHostState {} impl pumpkin::plugin::statistics::Host for PluginHostState {} impl pumpkin::plugin::game_rules::Host for PluginHostState {} +impl pumpkin::plugin::game_events::Host for PluginHostState {} +impl pumpkin::plugin::potions::Host for PluginHostState {} +impl pumpkin::plugin::entity_statuses::Host for PluginHostState {} pub fn add_to_linker(linker: &mut Linker) -> wasmtime::Result<()> { Plugin::add_to_linker::<_, HasSelf<_>>(linker, |state: &mut PluginHostState| state)?; diff --git a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/player.rs b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/player.rs index 9e05bac37..7ef2bb9db 100644 --- a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/player.rs +++ b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/player.rs @@ -48,6 +48,62 @@ use pumpkin_protocol::bedrock::client::set_actor_data::{ use pumpkin_protocol::codec::var_ulong::VarULong; use pumpkin_util::version::{BedrockMinecraftVersion, JavaMinecraftVersion}; +const fn from_wit_client_game_event( + event: pumpkin::plugin::player::ClientGameEvent, +) -> pumpkin_protocol::java::client::play::GameEvent { + use pumpkin::plugin::player::ClientGameEvent as W; + use pumpkin_protocol::java::client::play::GameEvent as G; + match event { + W::NoRespawnBlockAvailable => G::NoRespawnBlockAvailable, + W::BeginRaining => G::BeginRaining, + W::EndRaining => G::EndRaining, + W::ChangeGameMode => G::ChangeGameMode, + W::WinGame => G::WinGame, + W::DemoEvent => G::DemoEvent, + W::ArrowHitPlayer => G::ArrowHitPlayer, + W::RainLevelChange => G::RainLevelChange, + W::ThunderLevelChange => G::ThunderLevelChange, + W::PlayPufferfishStringSound => G::PlayPufferfishStringSound, + W::PlayElderGuardianMobAppearance => G::PlayElderGuardianMobAppearance, + W::EnabledRespawnScreen => G::EnabledRespawnScreen, + W::LimitedCrafting => G::LimitedCrafting, + W::StartWaitingChunks => G::StartWaitingChunks, + } +} + +pub(crate) fn from_wit_server_link( + state: &PluginHostState, + link: pumpkin::plugin::player::ServerLink, +) -> wasmtime::Result<(pumpkin_protocol::Label, String)> { + use pumpkin::plugin::player::{KnownServerLink, ServerLinkLabel}; + let label = match link.label { + ServerLinkLabel::Known(known) => { + let link_type = match known { + KnownServerLink::BugReport => pumpkin_protocol::LinkType::BugReport, + KnownServerLink::CommunityGuidelines => { + pumpkin_protocol::LinkType::CommunityGuidelines + } + KnownServerLink::Support => pumpkin_protocol::LinkType::Support, + KnownServerLink::Status => pumpkin_protocol::LinkType::Status, + KnownServerLink::Feedback => pumpkin_protocol::LinkType::Feedback, + KnownServerLink::Community => pumpkin_protocol::LinkType::Community, + KnownServerLink::Website => pumpkin_protocol::LinkType::Website, + KnownServerLink::Forums => pumpkin_protocol::LinkType::Forums, + KnownServerLink::News => pumpkin_protocol::LinkType::News, + KnownServerLink::Announcements => pumpkin_protocol::LinkType::Announcements, + }; + pumpkin_protocol::Label::BuiltIn(link_type) + } + ServerLinkLabel::Custom(text) => { + let text_res = state + .resource_table + .get::(&Resource::new_own(text.rep()))?; + pumpkin_protocol::Label::TextComponent(Box::new(text_res.provider.clone())) + } + }; + Ok((label, link.url)) +} + const fn to_wasm_java_version( version: JavaMinecraftVersion, ) -> pumpkin::plugin::player::JavaMinecraftVersion { @@ -1512,6 +1568,363 @@ impl pumpkin::plugin::player::HostPlayer for PluginHostState { Ok(()) } + async fn delete_message_by_signature( + &mut self, + player: Resource, + signature: Vec, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + if let Some(client) = player.client.java() { + let packet = + pumpkin_protocol::java::client::play::CDeleteChat::from_signature(&signature); + client.send_packet(&packet).await; + } + Ok(()) + } + + async fn delete_message_by_id( + &mut self, + player: Resource, + signature_id: i32, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + if let Some(client) = player.client.java() { + let packet = + pumpkin_protocol::java::client::play::CDeleteChat::from_cache_id(signature_id); + client.send_packet(&packet).await; + } + Ok(()) + } + + async fn set_camera( + &mut self, + player: Resource, + entity: Option< + Resource< + crate::plugin::loader::wasm::wasm_host::wit::v0_1::pumpkin::plugin::world::Entity, + >, + >, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + if let Some(target_res) = entity { + let target = + crate::plugin::loader::wasm::wasm_host::wit::v0_1::entity::entity_from_resource( + self, + &target_res, + )?; + player.set_camera_entity_id(target.get_entity().entity_id); + } else { + player.reset_camera(); + } + Ok(()) + } + + async fn set_camera_entity_id( + &mut self, + player: Resource, + entity_id: u32, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + player.set_camera_entity_id(entity_id as i32); + Ok(()) + } + + async fn get_camera_entity_id(&mut self, player: Resource) -> wasmtime::Result { + let player = player_from_resource(self, &player)?; + Ok(player.get_camera_entity_id() as u32) + } + + async fn reset_camera(&mut self, player: Resource) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + player.reset_camera(); + Ok(()) + } + + async fn play_sound( + &mut self, + player: Resource, + sound: pumpkin::plugin::sounds::Sound, + category: pumpkin::plugin::sounds::SoundCategory, + volume: f32, + pitch: f32, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + let sound_name = format!("{sound:?}").to_lowercase().replace('_', "."); + let sound_data = pumpkin_data::sound::Sound::from_name(&sound_name) + .ok_or_else(|| wasmtime::Error::msg(format!("Unknown sound: {sound_name}")))?; + let internal_category = super::world::from_wit_sound_category(category); + let pos = player.position(); + player.play_sound( + sound_data as u16, + internal_category, + &pos, + volume, + pitch, + rand::random::(), + ); + Ok(()) + } + + async fn play_sound_at( + &mut self, + player: Resource, + pos: pumpkin::plugin::common::Position, + sound: pumpkin::plugin::sounds::Sound, + category: pumpkin::plugin::sounds::SoundCategory, + volume: f32, + pitch: f32, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + let sound_name = format!("{sound:?}").to_lowercase().replace('_', "."); + let sound_data = pumpkin_data::sound::Sound::from_name(&sound_name) + .ok_or_else(|| wasmtime::Error::msg(format!("Unknown sound: {sound_name}")))?; + let internal_category = super::world::from_wit_sound_category(category); + player.play_sound( + sound_data as u16, + internal_category, + &pumpkin_util::math::vector3::Vector3::new(pos.0, pos.1, pos.2), + volume, + pitch, + rand::random::(), + ); + Ok(()) + } + + async fn stop_sound( + &mut self, + player: Resource, + sound: Option, + category: Option, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + let sound_rl = sound.and_then(|s| { + let sound_name = format!("{s:?}").to_lowercase().replace('_', "."); + pumpkin_data::sound::Sound::from_name(&sound_name).map(|s| s.to_name().into()) + }); + let cat = category.map(super::world::from_wit_sound_category); + player.stop_sound(sound_rl, cat); + Ok(()) + } + + async fn play_custom_sound( + &mut self, + player: Resource, + sound_name: String, + category: pumpkin::plugin::sounds::SoundCategory, + volume: f32, + pitch: f32, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + let internal_category = super::world::from_wit_sound_category(category); + let pos = player.position(); + player.play_custom_sound(&sound_name, internal_category, &pos, volume, pitch); + Ok(()) + } + + async fn play_custom_sound_at( + &mut self, + player: Resource, + pos: pumpkin::plugin::common::Position, + sound_name: String, + category: pumpkin::plugin::sounds::SoundCategory, + volume: f32, + pitch: f32, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + let internal_category = super::world::from_wit_sound_category(category); + player.play_custom_sound( + &sound_name, + internal_category, + &pumpkin_util::math::vector3::Vector3::new(pos.0, pos.1, pos.2), + volume, + pitch, + ); + Ok(()) + } + + async fn stop_custom_sound( + &mut self, + player: Resource, + sound_name: Option, + category: Option, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + let sound_rl = sound_name + .as_deref() + .map(pumpkin_util::resource_location::ResourceLocation::from); + let cat = category.map(super::world::from_wit_sound_category); + player.stop_sound(sound_rl, cat); + Ok(()) + } + + async fn spawn_particles( + &mut self, + player: Resource, + particle: pumpkin::plugin::particles::Particle, + pos: pumpkin::plugin::common::Position, + count: u32, + offset: pumpkin::plugin::common::Position, + max_speed: f32, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + let particle_data = + pumpkin_data::particle::Particle::from_id(particle as u16).ok_or_else(|| { + wasmtime::Error::msg(format!("Unknown particle ID: {}", particle as u16)) + })?; + player.spawn_particles( + particle_data, + pumpkin_util::math::vector3::Vector3::new(pos.0, pos.1, pos.2), + count, + pumpkin_util::math::vector3::Vector3::new( + offset.0 as f32, + offset.1 as f32, + offset.2 as f32, + ), + max_speed, + ); + Ok(()) + } + + async fn send_block_change( + &mut self, + player: Resource, + pos: pumpkin::plugin::common::BlockPos, + block_id: u16, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + player.send_block_change( + pumpkin_util::math::position::BlockPos(pumpkin_util::math::vector3::Vector3::new( + pos.x, pos.y, pos.z, + )), + block_id, + ); + Ok(()) + } + + async fn reset_block_change( + &mut self, + player: Resource, + pos: pumpkin::plugin::common::BlockPos, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + player.reset_block_change(pumpkin_util::math::position::BlockPos( + pumpkin_util::math::vector3::Vector3::new(pos.x, pos.y, pos.z), + )); + Ok(()) + } + + async fn send_hurt_animation( + &mut self, + player: Resource, + yaw: f32, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + player.send_hurt_animation(yaw); + Ok(()) + } + + async fn open_book( + &mut self, + player: Resource, + hand: pumpkin::plugin::common::Hand, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + let hand = match hand { + pumpkin::plugin::common::Hand::Right => pumpkin_util::Hand::Right, + pumpkin::plugin::common::Hand::Left => pumpkin_util::Hand::Left, + }; + player.open_book(hand); + Ok(()) + } + + async fn open_sign_editor( + &mut self, + player: Resource, + pos: pumpkin::plugin::common::BlockPos, + is_front_text: bool, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + player.open_sign_editor( + pumpkin_util::math::position::BlockPos(pumpkin_util::math::vector3::Vector3::new( + pos.x, pos.y, pos.z, + )), + is_front_text, + ); + Ok(()) + } + + async fn set_velocity( + &mut self, + player: Resource, + velocity: pumpkin::plugin::common::Position, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + player.set_velocity(pumpkin_util::math::vector3::Vector3::new( + velocity.0, velocity.1, velocity.2, + )); + Ok(()) + } + + async fn apply_knockback( + &mut self, + player: Resource, + strength: f64, + x: f64, + z: f64, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + player.apply_knockback(strength, x, z); + Ok(()) + } + + async fn set_movement_locked( + &mut self, + player: Resource, + locked: bool, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + player.set_movement_locked(locked); + Ok(()) + } + + async fn is_movement_locked(&mut self, player: Resource) -> wasmtime::Result { + let player = player_from_resource(self, &player)?; + Ok(player.is_movement_locked()) + } + + async fn set_freeze_ticks( + &mut self, + player: Resource, + ticks: i32, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + player.set_freeze_ticks(ticks); + Ok(()) + } + + async fn get_freeze_ticks(&mut self, player: Resource) -> wasmtime::Result { + let player = player_from_resource(self, &player)?; + Ok(player.get_freeze_ticks()) + } + + async fn set_server_links( + &mut self, + player: Resource, + links: Vec, + ) -> wasmtime::Result<()> { + let player = player_from_resource(self, &player)?; + let mut converted = Vec::new(); + for link in links { + converted.push(from_wit_server_link(self, link)?); + } + let protocol_links: Vec> = converted + .iter() + .map(|(label, url)| pumpkin_protocol::Link::new(label.clone(), url)) + .collect(); + player.set_server_links(&protocol_links); + Ok(()) + } + async fn add_effect( &mut self, player: Resource, @@ -3331,6 +3744,52 @@ impl pumpkin::plugin::player::HostJavaPlayer for PluginHostState { Ok(()) } + async fn send_game_event( + &mut self, + player: Resource, + event: pumpkin::plugin::player::ClientGameEvent, + value: f32, + ) -> wasmtime::Result<()> { + let player = self + .resource_table + .get::( + &Resource::new_own(player.rep()), + ) + .map_err(|_| wasmtime::Error::msg("invalid java-player resource handle"))? + .provider + .clone(); + + let internal_event = from_wit_client_game_event(event); + player.send_game_event(internal_event, value); + Ok(()) + } + + async fn send_entity_status( + &mut self, + player: Resource, + entity_id: i32, + status: pumpkin::plugin::entity_statuses::EntityStatus, + ) -> wasmtime::Result<()> { + let player = self + .resource_table + .get::( + &Resource::new_own(player.rep()), + ) + .map_err(|_| wasmtime::Error::msg("invalid java-player resource handle"))? + .provider + .clone(); + + // SAFETY: The WIT enum variants and discriminants are 1:1 generated from entity_statuses.json + let internal_status: pumpkin_data::entity_status::EntityStatus = + unsafe { std::mem::transmute(status as u8) }; + let packet = pumpkin_protocol::java::client::play::CEntityStatus::new( + entity_id, + internal_status as u8 as i8, + ); + player.try_send_client_packet(&packet); + Ok(()) + } + async fn drop( &mut self, rep: Resource, diff --git a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/server.rs b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/server.rs index a5e858fd7..2e1c606f4 100644 --- a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/server.rs +++ b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/server.rs @@ -304,6 +304,34 @@ impl pumpkin::plugin::server::HostServer for PluginHostState { Ok(()) } + async fn delete_message_by_signature( + &mut self, + _rep: Resource, + signature: Vec, + ) -> wasmtime::Result<()> { + let server = self + .server + .as_ref() + .ok_or_else(|| wasmtime::Error::msg("Server not available"))?; + let packet = pumpkin_protocol::java::client::play::CDeleteChat::from_signature(&signature); + server.broadcast_packet_all(&packet); + Ok(()) + } + + async fn delete_message_by_id( + &mut self, + _rep: Resource, + signature_id: i32, + ) -> wasmtime::Result<()> { + let server = self + .server + .as_ref() + .ok_or_else(|| wasmtime::Error::msg("Server not available"))?; + let packet = pumpkin_protocol::java::client::play::CDeleteChat::from_cache_id(signature_id); + server.broadcast_packet_all(&packet); + Ok(()) + } + async fn broadcast_tab_list_header_footer( &mut self, _rep: Resource, @@ -618,6 +646,27 @@ impl pumpkin::plugin::server::HostServer for PluginHostState { self.add_datapack_manager(server.clone()) } + async fn set_server_links( + &mut self, + _rep: Resource, + links: Vec, + ) -> wasmtime::Result<()> { + let server = self + .server + .clone() + .ok_or_else(|| wasmtime::Error::msg("Server not available"))?; + let mut converted = Vec::new(); + for link in links { + converted.push(super::player::from_wit_server_link(self, link)?); + } + let protocol_links: Vec> = converted + .iter() + .map(|(label, url)| pumpkin_protocol::Link::new(label.clone(), url)) + .collect(); + server.broadcast_server_links(&protocol_links); + Ok(()) + } + async fn drop(&mut self, rep: Resource) -> wasmtime::Result<()> { self.resource_table .delete::(Resource::new_own(rep.rep())) diff --git a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/world.rs b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/world.rs index 953cde1cc..3c2e49ca1 100644 --- a/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/world.rs +++ b/crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1/world.rs @@ -864,7 +864,7 @@ impl pumpkin::plugin::world::HostWorld for PluginHostState { &mut self, world: Resource, sound: pumpkin::plugin::sounds::Sound, - category: pumpkin::plugin::world::SoundCategory, + category: pumpkin::plugin::sounds::SoundCategory, pos: pumpkin::plugin::common::Position, volume: f32, pitch: f32, @@ -874,38 +874,7 @@ impl pumpkin::plugin::world::HostWorld for PluginHostState { let sound_data = pumpkin_data::sound::Sound::from_name(&sound_name) .ok_or_else(|| wasmtime::Error::msg(format!("Unknown sound: {sound_name}")))?; - let internal_category = match category { - pumpkin::plugin::world::SoundCategory::Master => { - pumpkin_data::sound::SoundCategory::Master - } - pumpkin::plugin::world::SoundCategory::Music => { - pumpkin_data::sound::SoundCategory::Music - } - pumpkin::plugin::world::SoundCategory::Records => { - pumpkin_data::sound::SoundCategory::Records - } - pumpkin::plugin::world::SoundCategory::Weather => { - pumpkin_data::sound::SoundCategory::Weather - } - pumpkin::plugin::world::SoundCategory::Blocks => { - pumpkin_data::sound::SoundCategory::Blocks - } - pumpkin::plugin::world::SoundCategory::Hostile => { - pumpkin_data::sound::SoundCategory::Hostile - } - pumpkin::plugin::world::SoundCategory::Neutral => { - pumpkin_data::sound::SoundCategory::Neutral - } - pumpkin::plugin::world::SoundCategory::Players => { - pumpkin_data::sound::SoundCategory::Players - } - pumpkin::plugin::world::SoundCategory::Ambient => { - pumpkin_data::sound::SoundCategory::Ambient - } - pumpkin::plugin::world::SoundCategory::Voice => { - pumpkin_data::sound::SoundCategory::Voice - } - }; + let internal_category = from_wit_sound_category(category); world_ref.provider.play_sound_raw( sound_data as u16, @@ -917,6 +886,27 @@ impl pumpkin::plugin::world::HostWorld for PluginHostState { Ok(()) } + async fn play_custom_sound( + &mut self, + world: Resource, + sound_name: String, + category: pumpkin::plugin::sounds::SoundCategory, + pos: pumpkin::plugin::common::Position, + volume: f32, + pitch: f32, + ) -> wasmtime::Result<()> { + let world_ref = self.get_world_res(&world)?; + let internal_category = from_wit_sound_category(category); + world_ref.provider.play_custom_sound( + &sound_name, + internal_category, + &pumpkin_util::math::vector3::Vector3::new(pos.0, pos.1, pos.2), + volume, + pitch, + ); + Ok(()) + } + async fn spawn_particle( &mut self, world: Resource, @@ -2307,6 +2297,41 @@ impl pumpkin_world::generation::generator::CustomChunkGenerator for WasmChunkGen } } +#[must_use] +pub const fn from_wit_sound_category( + category: pumpkin::plugin::sounds::SoundCategory, +) -> pumpkin_data::sound::SoundCategory { + match category { + pumpkin::plugin::sounds::SoundCategory::Master => { + pumpkin_data::sound::SoundCategory::Master + } + pumpkin::plugin::sounds::SoundCategory::Music => pumpkin_data::sound::SoundCategory::Music, + pumpkin::plugin::sounds::SoundCategory::Records => { + pumpkin_data::sound::SoundCategory::Records + } + pumpkin::plugin::sounds::SoundCategory::Weather => { + pumpkin_data::sound::SoundCategory::Weather + } + pumpkin::plugin::sounds::SoundCategory::Blocks => { + pumpkin_data::sound::SoundCategory::Blocks + } + pumpkin::plugin::sounds::SoundCategory::Hostile => { + pumpkin_data::sound::SoundCategory::Hostile + } + pumpkin::plugin::sounds::SoundCategory::Neutral => { + pumpkin_data::sound::SoundCategory::Neutral + } + pumpkin::plugin::sounds::SoundCategory::Players => { + pumpkin_data::sound::SoundCategory::Players + } + pumpkin::plugin::sounds::SoundCategory::Ambient => { + pumpkin_data::sound::SoundCategory::Ambient + } + pumpkin::plugin::sounds::SoundCategory::Voice => pumpkin_data::sound::SoundCategory::Voice, + pumpkin::plugin::sounds::SoundCategory::Ui => pumpkin_data::sound::SoundCategory::Ui, + } +} + #[cfg(test)] mod tests { use super::pumpkin; diff --git a/crates/pumpkin/src/server/mod.rs b/crates/pumpkin/src/server/mod.rs index 955aaff00..27ea05312 100644 --- a/crates/pumpkin/src/server/mod.rs +++ b/crates/pumpkin/src/server/mod.rs @@ -748,6 +748,12 @@ impl Server { } } + /// Broadcasts custom server links to all players on the server. + pub fn broadcast_server_links(&self, links: &[pumpkin_protocol::Link<'_>]) { + let packet = pumpkin_protocol::java::client::play::CPlayServerLinks::new(links); + self.broadcast_packet_all(&packet); + } + pub fn broadcast_tab_list_header_footer(&self, header: &TextComponent, footer: &TextComponent) { let packet = CTabList::new(header, footer); for world in self.worlds.load().iter() { diff --git a/crates/pumpkin/src/world/mod.rs b/crates/pumpkin/src/world/mod.rs index 1b9bbef52..f554efd5d 100644 --- a/crates/pumpkin/src/world/mod.rs +++ b/crates/pumpkin/src/world/mod.rs @@ -126,7 +126,9 @@ use pumpkin_protocol::{ }; use pumpkin_protocol::{ codec::item_stack_seralizer::ItemStackSerializer, - java::client::play::{CBlockEvent, CRemoveMobEffect, CSetEquipment, CUpdateMobEffect}, + java::client::play::{ + CBlockEvent, CParticle, CRemoveMobEffect, CSetEquipment, CUpdateMobEffect, + }, }; use pumpkin_util::resource_location::ResourceLocation; use pumpkin_util::text::{TextComponent, color::NamedColor}; @@ -1207,6 +1209,52 @@ impl World { self.play_sound_raw(sound as u16, category, position, volume, pitch); } + /// Plays a custom sound event by identifier for all players in range. + pub fn play_custom_sound( + &self, + sound_name: &str, + category: SoundCategory, + position: &Vector3, + volume: f32, + pitch: f32, + ) { + let seed = rand::random::(); + let packet = CSoundEffect::new( + pumpkin_protocol::IdOr::Value(pumpkin_protocol::SoundEvent { + sound_name: sound_name.into(), + range: None, + }), + category, + position, + volume, + pitch, + seed, + ); + self.broadcast_packet_all(&packet); + } + + /// Spawns a cluster of particles in the world for all players in range. + pub fn spawn_particles( + &self, + particle: pumpkin_data::particle::Particle, + pos: Vector3, + count: u32, + offset: Vector3, + max_speed: f32, + ) { + let packet = CParticle::new( + false, + false, + pos, + offset, + max_speed, + count as i32, + (particle.to_id() as i32).into(), + &[], + ); + self.broadcast_packet_all(&packet); + } + /// Plays a Bedrock level sound for players close enough to hear it. pub fn play_bedrock_level_sound( &self, diff --git a/tools/pumpkin-codegen/src/main.rs b/tools/pumpkin-codegen/src/main.rs index 289e810f6..6d345fb84 100644 --- a/tools/pumpkin-codegen/src/main.rs +++ b/tools/pumpkin-codegen/src/main.rs @@ -73,6 +73,7 @@ mod registry; mod remap; mod scoreboard_slot; mod screen; +mod sdk; mod sound; mod sound_category; mod spawn_egg; @@ -174,6 +175,7 @@ pub fn main() { let filters: Vec = std::env::args().skip(1).collect(); let build_functions: Vec<_> = if filters.is_empty() { wit::main(); + sdk::main(); build_functions } else { build_functions diff --git a/tools/pumpkin-codegen/src/sdk/block.rs b/tools/pumpkin-codegen/src/sdk/block.rs new file mode 100644 index 000000000..9019f5969 --- /dev/null +++ b/tools/pumpkin-codegen/src/sdk/block.rs @@ -0,0 +1,103 @@ +use heck::ToPascalCase; +use serde::Deserialize; +use std::collections::BTreeSet; +use std::fs; + +#[derive(Deserialize)] +struct BlocksAsset { + blocks: Vec, +} + +#[derive(Deserialize)] +struct BlockEntry { + name: String, +} + +pub fn build() -> String { + let json: BlocksAsset = + serde_json::from_str(&fs::read_to_string("../../assets/blocks.json").unwrap()) + .expect("Failed to parse blocks.json"); + + let mut names: BTreeSet = BTreeSet::new(); + for b in json.blocks { + names.insert(b.name); + } + + let mut code = String::new(); + code.push_str("// Generated by pumpkin-codegen. Do not edit.\n"); + code.push_str("#![allow(missing_docs, clippy::all)]\n\n"); + code.push_str("#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]\n"); + code.push_str("pub enum BlockType {\n"); + + for name in &names { + let pascal = name.to_pascal_case(); + code.push_str(&format!(" {pascal},\n")); + } + + code.push_str("}\n\n"); + + code.push_str("impl BlockType {\n"); + code.push_str( + " /// Returns the plain block name (e.g. `\"stone\"` or `\"diamond_block\"`).\n", + ); + code.push_str(" #[must_use]\n"); + code.push_str(" pub const fn as_str(&self) -> &'static str {\n"); + code.push_str(" match self {\n"); + for name in &names { + let pascal = name.to_pascal_case(); + code.push_str(&format!(" Self::{pascal} => \"{name}\",\n")); + } + code.push_str(" }\n"); + code.push_str(" }\n\n"); + + code.push_str( + " /// Returns the namespaced resource location (e.g. `\"minecraft:stone\"`).\n", + ); + code.push_str(" #[must_use]\n"); + code.push_str(" pub const fn resource_location(&self) -> &'static str {\n"); + code.push_str(" match self {\n"); + for name in &names { + let pascal = name.to_pascal_case(); + code.push_str(&format!( + " Self::{pascal} => \"minecraft:{name}\",\n" + )); + } + code.push_str(" }\n"); + code.push_str(" }\n\n"); + + code.push_str(" /// Resolves a typed `BlockType` from a name or namespaced identifier.\n"); + code.push_str(" #[must_use]\n"); + code.push_str(" pub fn from_name(name: &str) -> Option {\n"); + code.push_str(" let clean = name.strip_prefix(\"minecraft:\").unwrap_or(name);\n"); + code.push_str(" match clean {\n"); + for name in &names { + let pascal = name.to_pascal_case(); + code.push_str(&format!( + " \"{name}\" => Some(Self::{pascal}),\n" + )); + } + code.push_str(" _ => None,\n"); + code.push_str(" }\n"); + code.push_str(" }\n\n"); + + code.push_str(" /// Resolves a typed `BlockType` from a registry key.\n"); + code.push_str(" #[must_use]\n"); + code.push_str(" pub fn from_registry_key(key: &str) -> Option {\n"); + code.push_str(" Self::from_name(key)\n"); + code.push_str(" }\n"); + code.push_str("}\n\n"); + + code.push_str("impl std::fmt::Display for BlockType {\n"); + code.push_str(" fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n"); + code.push_str(" write!(f, \"{}\", self.resource_location())\n"); + code.push_str(" }\n"); + code.push_str("}\n\n"); + + code.push_str("impl AsRef for BlockType {\n"); + code.push_str(" fn as_ref(&self) -> &str {\n"); + code.push_str(" self.as_str()\n"); + code.push_str(" }\n"); + code.push_str("}\n"); + + code +} diff --git a/tools/pumpkin-codegen/src/sdk/item.rs b/tools/pumpkin-codegen/src/sdk/item.rs new file mode 100644 index 000000000..0769766e7 --- /dev/null +++ b/tools/pumpkin-codegen/src/sdk/item.rs @@ -0,0 +1,87 @@ +use heck::ToPascalCase; +use std::collections::BTreeMap; +use std::fs; + +pub fn build() -> String { + let json: BTreeMap = + serde_json::from_str(&fs::read_to_string("../../assets/items.json").unwrap()) + .expect("Failed to parse items.json"); + + let mut code = String::new(); + code.push_str("// Generated by pumpkin-codegen. Do not edit.\n"); + code.push_str("#![allow(missing_docs, clippy::all)]\n\n"); + code.push_str("#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]\n"); + code.push_str("pub enum Item {\n"); + + for name in json.keys() { + let pascal = name.to_pascal_case(); + code.push_str(&format!(" {pascal},\n")); + } + + code.push_str("}\n\n"); + + code.push_str("impl Item {\n"); + code.push_str( + " /// Returns the plain item name (e.g. `\"diamond\"` or `\"netherite_sword\"`).\n", + ); + code.push_str(" #[must_use]\n"); + code.push_str(" pub const fn as_str(&self) -> &'static str {\n"); + code.push_str(" match self {\n"); + for name in json.keys() { + let pascal = name.to_pascal_case(); + code.push_str(&format!(" Self::{pascal} => \"{name}\",\n")); + } + code.push_str(" }\n"); + code.push_str(" }\n\n"); + + code.push_str( + " /// Returns the namespaced resource location (e.g. `\"minecraft:diamond\"`).\n", + ); + code.push_str(" #[must_use]\n"); + code.push_str(" pub const fn resource_location(&self) -> &'static str {\n"); + code.push_str(" match self {\n"); + for name in json.keys() { + let pascal = name.to_pascal_case(); + code.push_str(&format!( + " Self::{pascal} => \"minecraft:{name}\",\n" + )); + } + code.push_str(" }\n"); + code.push_str(" }\n\n"); + + code.push_str(" /// Resolves a typed `Item` from a name or namespaced identifier.\n"); + code.push_str(" #[must_use]\n"); + code.push_str(" pub fn from_name(name: &str) -> Option {\n"); + code.push_str(" let clean = name.strip_prefix(\"minecraft:\").unwrap_or(name);\n"); + code.push_str(" match clean {\n"); + for name in json.keys() { + let pascal = name.to_pascal_case(); + code.push_str(&format!( + " \"{name}\" => Some(Self::{pascal}),\n" + )); + } + code.push_str(" _ => None,\n"); + code.push_str(" }\n"); + code.push_str(" }\n\n"); + + code.push_str(" /// Resolves a typed `Item` from a registry key.\n"); + code.push_str(" #[must_use]\n"); + code.push_str(" pub fn from_registry_key(key: &str) -> Option {\n"); + code.push_str(" Self::from_name(key)\n"); + code.push_str(" }\n"); + code.push_str("}\n\n"); + + code.push_str("impl std::fmt::Display for Item {\n"); + code.push_str(" fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n"); + code.push_str(" write!(f, \"{}\", self.resource_location())\n"); + code.push_str(" }\n"); + code.push_str("}\n\n"); + + code.push_str("impl AsRef for Item {\n"); + code.push_str(" fn as_ref(&self) -> &str {\n"); + code.push_str(" self.as_str()\n"); + code.push_str(" }\n"); + code.push_str("}\n"); + + code +} diff --git a/tools/pumpkin-codegen/src/sdk/mod.rs b/tools/pumpkin-codegen/src/sdk/mod.rs new file mode 100644 index 000000000..b5f030579 --- /dev/null +++ b/tools/pumpkin-codegen/src/sdk/mod.rs @@ -0,0 +1,21 @@ +pub mod block; +pub mod item; + +use std::fs; +use std::path::Path; + +pub const SDK_OUT_DIR: &str = "../../crates/pumpkin-plugin-api/src/generated"; + +pub fn main() { + fs::create_dir_all(SDK_OUT_DIR).expect("Failed to create SDK generated directory"); + + let targets: Vec<(fn() -> String, &str)> = + vec![(item::build, "item.rs"), (block::build, "block.rs")]; + + for (build_fn, file) in targets { + println!("Generating SDK for {}", file); + let code = build_fn(); + let path = Path::new(SDK_OUT_DIR).join(file); + fs::write(&path, code).unwrap_or_else(|_| panic!("Failed to write {file}")); + } +} diff --git a/tools/pumpkin-codegen/src/wit/bedrock_packet.rs b/tools/pumpkin-codegen/src/wit/bedrock_packet.rs index 115fdee23..8efc0cbe6 100644 --- a/tools/pumpkin-codegen/src/wit/bedrock_packet.rs +++ b/tools/pumpkin-codegen/src/wit/bedrock_packet.rs @@ -1,6 +1,7 @@ -use crate::wit::utils::map_type; +use crate::wit::utils::map_type_with_defined; use heck::ToKebabCase; use semver::Version; +use std::collections::HashSet; use std::{fs, path::Path}; use syn::{Fields, Item}; use wit_encoder::{ @@ -20,18 +21,39 @@ pub fn build() -> String { let mut serverbound_variant = Variant::empty(); let mut clientbound_variant = Variant::empty(); + let mut defined_cases = HashSet::new(); + + let dirs = [ + "../../crates/pumpkin-protocol/src/bedrock/server", + "../../crates/pumpkin-protocol/src/bedrock/client", + "../../crates/pumpkin-protocol/src/bedrock/network_item.rs", + ]; + + let defined_types = collect_defined_types(&dirs); // Process serverbound packets process_packets( "../../crates/pumpkin-protocol/src/bedrock/server", &mut interface, &mut serverbound_variant, + &mut defined_cases, + &defined_types, ); // Process clientbound packets process_packets( "../../crates/pumpkin-protocol/src/bedrock/client", &mut interface, &mut clientbound_variant, + &mut defined_cases, + &defined_types, + ); + // Process network_item helper types + process_packets( + "../../crates/pumpkin-protocol/src/bedrock/network_item.rs", + &mut interface, + &mut clientbound_variant, + &mut defined_cases, + &defined_types, ); // Add an 'unknown' fallback variant (no payload) — raw payload is carried on the event record @@ -51,7 +73,75 @@ pub fn build() -> String { package.to_string() } -fn process_packets(dir: &str, interface: &mut Interface, variant: &mut Variant) { +fn collect_defined_types(dirs: &[&str]) -> HashSet { + let mut defined = HashSet::new(); + for &dir in dirs { + collect_defined_types_in_path(Path::new(dir), &mut defined); + } + defined +} + +fn collect_defined_types_in_path(path: &Path, defined: &mut HashSet) { + if path.is_file() { + if path.extension().is_some_and(|ext| ext == "rs") + && path.file_name().is_some_and(|name| name != "mod.rs") + && let Ok(content) = fs::read_to_string(path) + && let Ok(file) = syn::parse_file(&content) + { + for item in file.items { + match item { + Item::Struct(s) + if has_static_packet_attr(&s.attrs) || is_valid_helper_struct(&s) => + { + defined.insert(s.ident.to_string().to_kebab_case()); + } + Item::Enum(e) + if has_static_packet_attr(&e.attrs) || is_valid_helper_enum(&e) => + { + defined.insert(e.ident.to_string().to_kebab_case()); + } + _ => {} + } + } + } + return; + } + + let Ok(paths) = fs::read_dir(path) else { + return; + }; + for entry in paths.flatten() { + let p = entry.path(); + collect_defined_types_in_path(&p, defined); + } +} + +fn is_valid_helper_struct(s: &syn::ItemStruct) -> bool { + matches!(s.vis, syn::Visibility::Public(_)) + && matches!(s.fields, Fields::Named(_)) + && s.generics.type_params().next().is_none() + && s.generics.const_params().next().is_none() +} + +fn is_valid_helper_enum(e: &syn::ItemEnum) -> bool { + matches!(e.vis, syn::Visibility::Public(_)) + && e.generics.type_params().next().is_none() + && e.generics.const_params().next().is_none() +} + +fn process_packets( + dir: &str, + interface: &mut Interface, + variant: &mut Variant, + defined_cases: &mut HashSet, + defined_types: &HashSet, +) { + let path = Path::new(dir); + if path.is_file() { + parse_packet_file(path, interface, variant, defined_cases, defined_types); + return; + } + let paths = fs::read_dir(dir).expect("Failed to read packet directory"); let mut sorted_paths: Vec<_> = paths .map(|e| e.expect("Failed to read entry").path()) @@ -60,13 +150,19 @@ fn process_packets(dir: &str, interface: &mut Interface, variant: &mut Variant) for path in sorted_paths { if path.is_dir() { - process_packets(path.to_str().unwrap(), interface, variant); + process_packets( + path.to_str().unwrap(), + interface, + variant, + defined_cases, + defined_types, + ); continue; } if path.extension().is_some_and(|ext| ext == "rs") && path.file_name().is_some_and(|name| name != "mod.rs") { - parse_packet_file(&path, interface, variant); + parse_packet_file(&path, interface, variant, defined_cases, defined_types); } } } @@ -104,39 +200,83 @@ fn has_static_packet_attr(attrs: &[syn::Attribute]) -> bool { fn collect_types( fields: syn::punctuated::Punctuated, + defined_types: &HashSet, ) -> Vec { fields .into_iter() - .map(|field| map_type(&field.ty)) + .map(|field| map_type_with_defined(&field.ty, Some(defined_types))) .collect() } fn collect_fields( named_fields: syn::punctuated::Punctuated, + defined_types: &HashSet, ) -> Vec { named_fields .into_iter() .map(|field| { let field_name = field.ident.as_ref().unwrap().to_string().to_kebab_case(); - let field_type = map_type(&field.ty); + let field_type = map_type_with_defined(&field.ty, Some(defined_types)); Field::new(field_name, field_type) }) .collect() } -fn process_struct(s: syn::ItemStruct, interface: &mut Interface, variant: &mut Variant) { +fn process_struct( + s: syn::ItemStruct, + interface: &mut Interface, + variant: &mut Variant, + defined_cases: &mut HashSet, + defined_types: &HashSet, +) { let wit_name = s.ident.to_string().to_kebab_case(); + if !defined_cases.insert(wit_name.clone()) { + return; + } let fields_list = match s.fields { - Fields::Named(fields) => collect_fields(fields.named), + Fields::Named(fields) => collect_fields(fields.named, defined_types), _ => Vec::new(), }; register_wit_type(wit_name, fields_list, interface, variant, None); } -fn process_enum(e: syn::ItemEnum, interface: &mut Interface, variant: &mut Variant) { +fn process_helper_struct( + s: syn::ItemStruct, + interface: &mut Interface, + defined_cases: &mut HashSet, + defined_types: &HashSet, +) { + let wit_name = s.ident.to_string().to_kebab_case(); + if !defined_cases.insert(wit_name.clone()) { + return; + } + + let fields_list = match s.fields { + Fields::Named(fields) => collect_fields(fields.named, defined_types), + _ => Vec::new(), + }; + + if !fields_list.is_empty() { + interface.type_def(TypeDef::new( + wit_name, + TypeDefKind::Record(Record::new(fields_list)), + )); + } +} + +fn process_enum( + e: syn::ItemEnum, + interface: &mut Interface, + variant: &mut Variant, + defined_cases: &mut HashSet, + defined_types: &HashSet, +) { let enum_wit_name = e.ident.to_string().to_kebab_case(); + if !defined_cases.insert(enum_wit_name.clone()) { + return; + } let mut cases = Vec::new(); for v in e.variants { @@ -144,18 +284,22 @@ fn process_enum(e: syn::ItemEnum, interface: &mut Interface, variant: &mut Varia match v.fields { Fields::Named(fields) => { - let fields_list = collect_fields(fields.named); - register_wit_type( + let sub_record_name = format!("{}-{}", enum_wit_name, variant_wit_name); + let fields_list = collect_fields(fields.named, defined_types); + if !fields_list.is_empty() && defined_cases.insert(sub_record_name.clone()) { + interface.type_def(TypeDef::new( + sub_record_name.clone(), + TypeDefKind::Record(Record::new(fields_list)), + )); + } + cases.push(VariantCase::value( variant_wit_name, - fields_list, - interface, - variant, - Some(enum_wit_name.clone()), - ); + WitType::named(sub_record_name), + )); } Fields::Unnamed(fields) => { - let types = collect_types(fields.unnamed); + let types = collect_types(fields.unnamed, defined_types); match types.len() { 0 => cases.push(VariantCase::empty(variant_wit_name)), 1 => cases.push(VariantCase::value( @@ -177,7 +321,7 @@ fn process_enum(e: syn::ItemEnum, interface: &mut Interface, variant: &mut Varia WitType::named(enum_wit_name.clone()), )); - // define weather to use Enum or Variant + // define whether to use Enum or Variant let all_empty = cases.iter().all(|c| c.type_().is_none()); if all_empty { interface.type_def(TypeDef::new( @@ -194,17 +338,94 @@ fn process_enum(e: syn::ItemEnum, interface: &mut Interface, variant: &mut Varia } } -fn parse_packet_file(path: &Path, interface: &mut Interface, variant: &mut Variant) { +fn process_helper_enum( + e: syn::ItemEnum, + interface: &mut Interface, + defined_cases: &mut HashSet, + defined_types: &HashSet, +) { + let enum_wit_name = e.ident.to_string().to_kebab_case(); + if !defined_cases.insert(enum_wit_name.clone()) { + return; + } + let mut cases = Vec::new(); + + for v in e.variants { + let variant_wit_name = v.ident.to_string().to_kebab_case(); + + match v.fields { + Fields::Named(fields) => { + let sub_record_name = format!("{}-{}", enum_wit_name, variant_wit_name); + let fields_list = collect_fields(fields.named, defined_types); + if !fields_list.is_empty() && defined_cases.insert(sub_record_name.clone()) { + interface.type_def(TypeDef::new( + sub_record_name.clone(), + TypeDefKind::Record(Record::new(fields_list)), + )); + } + cases.push(VariantCase::value( + variant_wit_name, + WitType::named(sub_record_name), + )); + } + + Fields::Unnamed(fields) => { + let types = collect_types(fields.unnamed, defined_types); + match types.len() { + 0 => cases.push(VariantCase::empty(variant_wit_name)), + 1 => cases.push(VariantCase::value( + variant_wit_name, + types.into_iter().next().unwrap(), + )), + _ => cases.push(VariantCase::value(variant_wit_name, WitType::tuple(types))), + } + } + + Fields::Unit => { + cases.push(VariantCase::empty(variant_wit_name)); + } + } + } + + let all_empty = cases.iter().all(|c| c.type_().is_none()); + if all_empty { + interface.type_def(TypeDef::new( + enum_wit_name, + TypeDefKind::Enum(Enum::from_iter( + cases.into_iter().map(|c| EnumCase::new(c.name().clone())), + )), + )); + } else { + interface.type_def(TypeDef::new( + enum_wit_name, + TypeDefKind::Variant(Variant::from(cases)), + )); + } +} + +fn parse_packet_file( + path: &Path, + interface: &mut Interface, + variant: &mut Variant, + defined_cases: &mut HashSet, + defined_types: &HashSet, +) { let content = fs::read_to_string(path).expect("Failed to read file"); let file = syn::parse_file(&content).expect("Failed to parse file"); for item in file.items { match item { Item::Struct(s) if has_static_packet_attr(&s.attrs) => { - process_struct(s, interface, variant); + process_struct(s, interface, variant, defined_cases, defined_types); } Item::Enum(e) if has_static_packet_attr(&e.attrs) => { - process_enum(e, interface, variant); + process_enum(e, interface, variant, defined_cases, defined_types); + } + Item::Struct(s) if is_valid_helper_struct(&s) => { + process_helper_struct(s, interface, defined_cases, defined_types); + } + Item::Enum(e) if is_valid_helper_enum(&e) => { + process_helper_enum(e, interface, defined_cases, defined_types); } _ => {} } diff --git a/tools/pumpkin-codegen/src/wit/entity_status.rs b/tools/pumpkin-codegen/src/wit/entity_status.rs new file mode 100644 index 000000000..d4d1a8f4a --- /dev/null +++ b/tools/pumpkin-codegen/src/wit/entity_status.rs @@ -0,0 +1,30 @@ +use heck::ToKebabCase; +use semver::Version; +use std::{collections::BTreeMap, fs}; +use wit_encoder::{Enum, Interface, Package, PackageName, TypeDef, TypeDefKind}; + +pub fn build() -> String { + let events: BTreeMap = + serde_json::from_str(&fs::read_to_string("../../assets/entity_statuses.json").unwrap()) + .expect("Failed to parse entity_statuses.json"); + + let mut package = Package::new(PackageName::new( + "pumpkin", + "plugin", + Some(Version::new(0, 1, 0)), + )); + let mut interface = Interface::new("entity-statuses"); + + let mut status_enum = Enum::empty(); + for (event_name, _) in events { + status_enum.case(event_name.to_kebab_case()); + } + + interface.type_def(TypeDef::new( + "entity-status", + TypeDefKind::Enum(status_enum), + )); + package.interface(interface); + + package.to_string() +} diff --git a/tools/pumpkin-codegen/src/wit/game_event.rs b/tools/pumpkin-codegen/src/wit/game_event.rs new file mode 100644 index 000000000..22cf2643d --- /dev/null +++ b/tools/pumpkin-codegen/src/wit/game_event.rs @@ -0,0 +1,33 @@ +use semver::Version; +use std::fs; +use wit_encoder::{Enum, Interface, Package, PackageName, TypeDef, TypeDefKind}; + +pub fn build() -> String { + let game_events: Vec = + serde_json::from_str(&fs::read_to_string("../../assets/game_event.json").unwrap()) + .expect("Failed to parse game_event.json"); + + let mut package = Package::new(PackageName::new( + "pumpkin", + "plugin", + Some(Version::new(0, 1, 0)), + )); + let mut interface = Interface::new("game-events"); + + let mut game_event_enum = Enum::empty(); + for game_event in game_events { + let name = game_event + .strip_prefix("minecraft:") + .unwrap_or(&game_event) + .replace('_', "-"); + game_event_enum.case(name); + } + + interface.type_def(TypeDef::new( + "game-event", + TypeDefKind::Enum(game_event_enum), + )); + package.interface(interface); + + package.to_string() +} diff --git a/tools/pumpkin-codegen/src/wit/java_packet.rs b/tools/pumpkin-codegen/src/wit/java_packet.rs index c639b6895..fc8ffe5ff 100644 --- a/tools/pumpkin-codegen/src/wit/java_packet.rs +++ b/tools/pumpkin-codegen/src/wit/java_packet.rs @@ -1,4 +1,4 @@ -use crate::wit::utils::map_type; +use crate::wit::utils::map_type_with_defined; use heck::ToKebabCase; use semver::Version; use std::collections::HashSet; @@ -22,29 +22,47 @@ pub fn build() -> String { let mut serverbound_variant = Variant::empty(); let mut clientbound_variant = Variant::empty(); - let mut serverbound_cases = HashSet::new(); - let mut clientbound_cases = HashSet::new(); + let mut defined_cases = HashSet::new(); + + let server_states = &["config", "handshake", "login", "play", "status"]; + let client_states = &["config", "login", "play", "status"]; + + let mut dirs = Vec::new(); + for state in server_states { + dirs.push(( + format!("../../crates/pumpkin-protocol/src/java/server/{}", state), + *state, + )); + } + for state in client_states { + dirs.push(( + format!("../../crates/pumpkin-protocol/src/java/client/{}", state), + *state, + )); + } + + let defined_types = collect_defined_types(&dirs); // Process serverbound packets - let server_states = &["config", "handshake", "login", "play", "status"]; for state in server_states { process_packets( &format!("../../crates/pumpkin-protocol/src/java/server/{}", state), state, &mut interface, &mut serverbound_variant, - &mut serverbound_cases, + &mut defined_cases, + &defined_types, ); } // Process clientbound packets - let client_states = &["config", "login", "play", "status"]; for state in client_states { process_packets( &format!("../../crates/pumpkin-protocol/src/java/client/{}", state), state, &mut interface, &mut clientbound_variant, - &mut clientbound_cases, + &mut defined_cases, + &defined_types, ); } @@ -65,12 +83,64 @@ pub fn build() -> String { package.to_string() } +fn collect_defined_types(dirs: &[(String, &str)]) -> HashSet { + let mut defined = HashSet::new(); + for (dir, state) in dirs { + let Ok(paths) = fs::read_dir(dir) else { + continue; + }; + for entry in paths.flatten() { + let path = entry.path(); + if path.extension().is_some_and(|ext| ext == "rs") + && path.file_name().is_some_and(|name| name != "mod.rs") + { + if let Ok(content) = fs::read_to_string(&path) + && let Ok(file) = syn::parse_file(&content) + { + for item in file.items { + match item { + Item::Struct(s) if has_java_packet_attr(&s.attrs) => { + defined.insert(wit_name(s.ident.to_string(), state)); + } + Item::Enum(e) if has_java_packet_attr(&e.attrs) => { + defined.insert(wit_name(e.ident.to_string(), state)); + } + Item::Struct(s) if is_valid_helper_struct(&s) => { + defined.insert(s.ident.to_string().to_kebab_case()); + } + Item::Enum(e) if is_valid_helper_enum(&e) => { + defined.insert(e.ident.to_string().to_kebab_case()); + } + _ => {} + } + } + } + } + } + } + defined +} + +fn is_valid_helper_struct(s: &syn::ItemStruct) -> bool { + matches!(s.vis, syn::Visibility::Public(_)) + && matches!(s.fields, Fields::Named(_)) + && s.generics.type_params().next().is_none() + && s.generics.const_params().next().is_none() +} + +fn is_valid_helper_enum(e: &syn::ItemEnum) -> bool { + matches!(e.vis, syn::Visibility::Public(_)) + && e.generics.type_params().next().is_none() + && e.generics.const_params().next().is_none() +} + fn process_packets( dir: &str, state: &str, interface: &mut Interface, variant: &mut Variant, defined_cases: &mut HashSet, + defined_types: &HashSet, ) { let paths = fs::read_dir(dir).expect("Failed to read packet directory"); let mut sorted_paths: Vec<_> = paths @@ -79,10 +149,28 @@ fn process_packets( sorted_paths.sort(); for path in sorted_paths { + if path.is_dir() { + process_packets( + path.to_str().unwrap(), + state, + interface, + variant, + defined_cases, + defined_types, + ); + continue; + } if path.extension().is_some_and(|ext| ext == "rs") && path.file_name().is_some_and(|name| name != "mod.rs") { - parse_packet_file(&path, state, interface, variant, defined_cases); + parse_packet_file( + &path, + state, + interface, + variant, + defined_cases, + defined_types, + ); } } } @@ -93,6 +181,7 @@ fn parse_packet_file( interface: &mut Interface, variant: &mut Variant, defined_cases: &mut HashSet, + defined_types: &HashSet, ) { let content = fs::read_to_string(path).expect("Failed to read file"); let file = syn::parse_file(&content).expect("Failed to parse file"); @@ -100,10 +189,16 @@ fn parse_packet_file( for item in file.items { match item { Item::Struct(s) if has_java_packet_attr(&s.attrs) => { - process_struct(s, state, interface, variant, defined_cases); + process_struct(s, state, interface, variant, defined_cases, defined_types); } Item::Enum(e) if has_java_packet_attr(&e.attrs) => { - process_enum(e, state, interface, variant, defined_cases); + process_enum(e, state, interface, variant, defined_cases, defined_types); + } + Item::Struct(s) if is_valid_helper_struct(&s) => { + process_helper_struct(s, interface, defined_cases, defined_types); + } + Item::Enum(e) if is_valid_helper_enum(&e) => { + process_helper_enum(e, interface, defined_cases, defined_types); } _ => {} } @@ -143,23 +238,25 @@ fn register_wit_type( fn collect_types( fields: syn::punctuated::Punctuated, + defined_types: &HashSet, ) -> Vec { fields .into_iter() .filter(|field| extract_type_name(&field.ty) != "DynamicRecipe") - .map(|field| map_type(&field.ty)) + .map(|field| map_type_with_defined(&field.ty, Some(defined_types))) .collect() } fn collect_fields( named_fields: syn::punctuated::Punctuated, + defined_types: &HashSet, ) -> Vec { named_fields .into_iter() .filter(|field| extract_type_name(&field.ty) != "DynamicRecipe") .map(|field| { let field_name = field.ident.as_ref().unwrap().to_string().to_kebab_case(); - let field_type = map_type(&field.ty); + let field_type = map_type_with_defined(&field.ty, Some(defined_types)); Field::new(field_name, field_type) }) .collect() @@ -179,25 +276,50 @@ fn process_struct( interface: &mut Interface, variant: &mut Variant, defined_cases: &mut HashSet, + defined_types: &HashSet, ) { let wit_name = wit_name(s.ident.to_string(), state); if !defined_cases.insert(wit_name.clone()) { return; } let fields_list = match s.fields { - Fields::Named(fields) => collect_fields(fields.named), + Fields::Named(fields) => collect_fields(fields.named, defined_types), _ => Vec::new(), }; register_wit_type(wit_name, fields_list, interface, variant, None); } +fn process_helper_struct( + s: syn::ItemStruct, + interface: &mut Interface, + defined_cases: &mut HashSet, + defined_types: &HashSet, +) { + let wit_name = s.ident.to_string().to_kebab_case(); + if !defined_cases.insert(wit_name.clone()) { + return; + } + let fields_list = match s.fields { + Fields::Named(fields) => collect_fields(fields.named, defined_types), + _ => Vec::new(), + }; + + if !fields_list.is_empty() { + interface.type_def(TypeDef::new( + wit_name, + TypeDefKind::Record(Record::new(fields_list)), + )); + } +} + fn process_enum( e: syn::ItemEnum, state: &str, interface: &mut Interface, variant: &mut Variant, defined_cases: &mut HashSet, + defined_types: &HashSet, ) { let enum_wit_name = wit_name(e.ident.to_string(), state); if !defined_cases.insert(enum_wit_name.clone()) { @@ -210,18 +332,22 @@ fn process_enum( match v.fields { Fields::Named(fields) => { - let fields_list = collect_fields(fields.named); - register_wit_type( + let sub_record_name = format!("{}-{}", enum_wit_name, variant_wit_name); + let fields_list = collect_fields(fields.named, defined_types); + if !fields_list.is_empty() && defined_cases.insert(sub_record_name.clone()) { + interface.type_def(TypeDef::new( + sub_record_name.clone(), + TypeDefKind::Record(Record::new(fields_list)), + )); + } + cases.push(VariantCase::value( variant_wit_name, - fields_list, - interface, - variant, - Some(enum_wit_name.clone()), - ); + WitType::named(sub_record_name), + )); } Fields::Unnamed(fields) => { - let types = collect_types(fields.unnamed); + let types = collect_types(fields.unnamed, defined_types); match types.len() { 0 => cases.push(VariantCase::empty(variant_wit_name)), 1 => cases.push(VariantCase::value( @@ -243,7 +369,72 @@ fn process_enum( WitType::named(enum_wit_name.clone()), )); - // define weather to use Enum or Variant + // define whether to use Enum or Variant + let all_empty = cases.iter().all(|c| c.type_().is_none()); + if all_empty { + interface.type_def(TypeDef::new( + enum_wit_name, + TypeDefKind::Enum(Enum::from_iter( + cases.into_iter().map(|c| EnumCase::new(c.name().clone())), + )), + )); + } else { + interface.type_def(TypeDef::new( + enum_wit_name, + TypeDefKind::Variant(Variant::from(cases)), + )); + } +} + +fn process_helper_enum( + e: syn::ItemEnum, + interface: &mut Interface, + defined_cases: &mut HashSet, + defined_types: &HashSet, +) { + let enum_wit_name = e.ident.to_string().to_kebab_case(); + if !defined_cases.insert(enum_wit_name.clone()) { + return; + } + let mut cases = Vec::new(); + + for v in e.variants { + let variant_wit_name = v.ident.to_string().to_kebab_case(); + + match v.fields { + Fields::Named(fields) => { + let sub_record_name = format!("{}-{}", enum_wit_name, variant_wit_name); + let fields_list = collect_fields(fields.named, defined_types); + if !fields_list.is_empty() && defined_cases.insert(sub_record_name.clone()) { + interface.type_def(TypeDef::new( + sub_record_name.clone(), + TypeDefKind::Record(Record::new(fields_list)), + )); + } + cases.push(VariantCase::value( + variant_wit_name, + WitType::named(sub_record_name), + )); + } + + Fields::Unnamed(fields) => { + let types = collect_types(fields.unnamed, defined_types); + match types.len() { + 0 => cases.push(VariantCase::empty(variant_wit_name)), + 1 => cases.push(VariantCase::value( + variant_wit_name, + types.into_iter().next().unwrap(), + )), + _ => cases.push(VariantCase::value(variant_wit_name, WitType::tuple(types))), + } + } + + Fields::Unit => { + cases.push(VariantCase::empty(variant_wit_name)); + } + } + } + let all_empty = cases.iter().all(|c| c.type_().is_none()); if all_empty { interface.type_def(TypeDef::new( diff --git a/tools/pumpkin-codegen/src/wit/mod.rs b/tools/pumpkin-codegen/src/wit/mod.rs index c243399f0..a79686c63 100644 --- a/tools/pumpkin-codegen/src/wit/mod.rs +++ b/tools/pumpkin-codegen/src/wit/mod.rs @@ -4,11 +4,14 @@ pub mod biome; pub mod damage_type; pub mod data_component; pub mod enchantment; +pub mod entity_status; pub mod entity_type; +pub mod game_event; pub mod game_rules; pub mod java_packet; pub mod packet_mapping; pub mod particle; +pub mod potion; pub mod screen; pub mod sound; pub mod statistic; @@ -42,6 +45,9 @@ pub fn main() { (screen::build, "screens.wit"), (statistic::build, "statistics.wit"), (game_rules::build, "game-rules.wit"), + (game_event::build, "game-events.wit"), + (potion::build, "potions.wit"), + (entity_status::build, "entity-statuses.wit"), ]; for (build_fn, file) in build_functions { diff --git a/tools/pumpkin-codegen/src/wit/potion.rs b/tools/pumpkin-codegen/src/wit/potion.rs new file mode 100644 index 000000000..bd1db112b --- /dev/null +++ b/tools/pumpkin-codegen/src/wit/potion.rs @@ -0,0 +1,36 @@ +use semver::Version; +use serde::Deserialize; +use std::collections::BTreeMap; +use std::fs; +use wit_encoder::{Enum, Interface, Package, PackageName, TypeDef, TypeDefKind}; + +#[derive(Deserialize)] +struct PotionRaw { + id: u8, +} + +pub fn build() -> String { + let raw_map: BTreeMap = + serde_json::from_str(&fs::read_to_string("../../assets/potion.json").unwrap()) + .expect("Failed to parse potion.json"); + + let mut potions: Vec<(String, PotionRaw)> = raw_map.into_iter().collect(); + potions.sort_by_key(|(_, raw)| raw.id); + + let mut package = Package::new(PackageName::new( + "pumpkin", + "plugin", + Some(Version::new(0, 1, 0)), + )); + let mut interface = Interface::new("potions"); + let mut potion_enum = Enum::empty(); + + for (name, _) in potions { + potion_enum.case(name.replace('_', "-")); + } + + interface.type_def(TypeDef::new("potion-type", TypeDefKind::Enum(potion_enum))); + package.interface(interface); + + package.to_string() +} diff --git a/tools/pumpkin-codegen/src/wit/sound.rs b/tools/pumpkin-codegen/src/wit/sound.rs index f0338cf49..f4f3e90a0 100644 --- a/tools/pumpkin-codegen/src/wit/sound.rs +++ b/tools/pumpkin-codegen/src/wit/sound.rs @@ -14,6 +14,24 @@ pub fn build() -> String { )); let mut interface = Interface::new("sounds"); + let mut category_enum = Enum::empty(); + category_enum.case("master"); + category_enum.case("music"); + category_enum.case("records"); + category_enum.case("weather"); + category_enum.case("blocks"); + category_enum.case("hostile"); + category_enum.case("neutral"); + category_enum.case("players"); + category_enum.case("ambient"); + category_enum.case("voice"); + category_enum.case("ui"); + + interface.type_def(TypeDef::new( + "sound-category", + TypeDefKind::Enum(category_enum), + )); + let mut sound_enum = Enum::empty(); for sound in sounds { sound_enum.case(sound.replace(['_', '.'], "-")); diff --git a/tools/pumpkin-codegen/src/wit/utils.rs b/tools/pumpkin-codegen/src/wit/utils.rs index 4cbc7c646..150bd039a 100644 --- a/tools/pumpkin-codegen/src/wit/utils.rs +++ b/tools/pumpkin-codegen/src/wit/utils.rs @@ -1,48 +1,112 @@ -use syn::{Type, TypePath}; +use heck::ToKebabCase; +use std::collections::HashSet; +use syn::{GenericArgument, PathArguments, Type, TypePath}; use wit_encoder::Type as WitType; pub fn map_type(ty: &Type) -> WitType { + map_type_with_defined(ty, None) +} + +pub fn map_type_with_defined(ty: &Type, defined_types: Option<&HashSet>) -> WitType { match ty { Type::Path(TypePath { path, .. }) => { let last_segment = path.segments.last().unwrap(); let ident_str = last_segment.ident.to_string(); match ident_str.as_str() { - "String" | "TextComponent" => WitType::String, + "String" | "TextComponent" | "str" | "Identifier" | "ResourceLocation" + | "LpVector3d" => WitType::String, "Uuid" => WitType::Named("uuid".into()), - "i32" | "VarInt" | "u32" | "VarUInt" | "usize" => WitType::S32, + "i32" | "VarInt" | "u32" | "VarUInt" | "usize" | "u24" => WitType::S32, "i64" | "u64" | "VarLong" | "VarULong" => WitType::S64, "bool" => WitType::Bool, "f32" => WitType::F32, "f64" => WitType::F64, "u8" | "i8" => WitType::U8, "u16" | "i16" => WitType::S32, + "Bytes" | "BoxedU8Slice" | "ChunkData" => WitType::list(WitType::U8), + "BitSet" | "Bitset" => WitType::list(WitType::S64), + "NbtCompound" | "Nbt" | "DynamicRecipe" => WitType::String, "Option" => { - if let syn::PathArguments::AngleBracketed(args) = &last_segment.arguments - && let Some(syn::GenericArgument::Type(inner_ty)) = args.args.first() + if let PathArguments::AngleBracketed(args) = &last_segment.arguments + && let Some(GenericArgument::Type(inner_ty)) = args.args.first() { - return WitType::option(map_type(inner_ty)); + return WitType::option(map_type_with_defined(inner_ty, defined_types)); } WitType::String } "Box" => { - if let syn::PathArguments::AngleBracketed(args) = &last_segment.arguments - && let Some(syn::GenericArgument::Type(inner_ty)) = args.args.first() + if let PathArguments::AngleBracketed(args) = &last_segment.arguments + && let Some(GenericArgument::Type(inner_ty)) = args.args.first() { - return map_type(inner_ty); + if let Type::Slice(ts) = inner_ty { + if let Type::Path(tp) = &*ts.elem + && tp.path.segments.last().unwrap().ident == "u8" + { + return WitType::list(WitType::U8); + } + return WitType::list(map_type_with_defined(&ts.elem, defined_types)); + } + if let Type::Path(tp) = inner_ty + && tp.path.segments.last().unwrap().ident == "str" + { + return WitType::String; + } + return map_type_with_defined(inner_ty, defined_types); } WitType::String } "Vec" => { - if let syn::PathArguments::AngleBracketed(args) = &last_segment.arguments - && let Some(syn::GenericArgument::Type(inner_ty)) = args.args.first() + if let PathArguments::AngleBracketed(args) = &last_segment.arguments + && let Some(GenericArgument::Type(inner_ty)) = args.args.first() { - // Check if the inner type is u8 if let Type::Path(tp) = inner_ty && tp.path.segments.last().unwrap().ident == "u8" { return WitType::list(WitType::U8); } - return WitType::list(map_type(inner_ty)); + return WitType::list(map_type_with_defined(inner_ty, defined_types)); + } + WitType::String + } + "Cow" => { + if let PathArguments::AngleBracketed(args) = &last_segment.arguments { + for arg in &args.args { + if let GenericArgument::Type(inner_ty) = arg { + if let Type::Path(tp) = inner_ty + && tp.path.segments.last().unwrap().ident == "str" + { + return WitType::String; + } + return map_type_with_defined(inner_ty, defined_types); + } + } + } + WitType::String + } + "NonZero" | "EnumAsStr" | "IdOr" => { + if let PathArguments::AngleBracketed(args) = &last_segment.arguments + && let Some(GenericArgument::Type(inner_ty)) = args.args.first() + { + return map_type_with_defined(inner_ty, defined_types); + } + WitType::String + } + "HashMap" => { + if let PathArguments::AngleBracketed(args) = &last_segment.arguments { + let type_args: Vec<_> = args + .args + .iter() + .filter_map(|a| match a { + GenericArgument::Type(t) => Some(t), + _ => None, + }) + .collect(); + if type_args.len() == 2 { + return WitType::list(WitType::tuple(vec![ + map_type_with_defined(type_args[0], defined_types), + map_type_with_defined(type_args[1], defined_types), + ])); + } } WitType::String } @@ -53,19 +117,54 @@ pub fn map_type(ty: &Type) -> WitType { WitType::tuple(vec![WitType::S32, WitType::S32, WitType::S32]) } } - _ => WitType::String, + "Vector2" => WitType::tuple(vec![WitType::F64, WitType::F64]), + _ => { + let kebab = ident_str.to_kebab_case(); + if let Some(defined) = defined_types { + if defined.contains(&kebab) { + WitType::named(kebab) + } else { + WitType::String + } + } else { + WitType::named(kebab) + } + } } } - Type::Reference(tr) => map_type(&tr.elem), + Type::Reference(tr) => map_type_with_defined(&tr.elem, defined_types), Type::Slice(ts) => { if let Type::Path(tp) = &*ts.elem && tp.path.segments.last().unwrap().ident == "u8" { WitType::list(WitType::U8) } else { - WitType::list(map_type(&ts.elem)) + WitType::list(map_type_with_defined(&ts.elem, defined_types)) } } + Type::Array(ta) => { + if let Type::Path(tp) = &*ta.elem + && tp.path.segments.last().unwrap().ident == "u8" + { + WitType::list(WitType::U8) + } else { + WitType::list(map_type_with_defined(&ta.elem, defined_types)) + } + } + Type::Tuple(tt) => { + if tt.elems.is_empty() { + WitType::String + } else { + WitType::tuple( + tt.elems + .iter() + .map(|e| map_type_with_defined(e, defined_types)) + .collect::>(), + ) + } + } + Type::Paren(tp) => map_type_with_defined(&tp.elem, defined_types), + Type::Group(tg) => map_type_with_defined(&tg.elem, defined_types), _ => WitType::String, } }