use azalea_buf::AzBuf; use azalea_inventory::ItemStack; use azalea_registry::{ HolderSet, builtin::{DataComponentKind, ItemKind}, data::TrimPattern, identifier::Identifier, }; /// [`azalea_registry::builtin::RecipeDisplay`] #[derive(AzBuf, Clone, Debug, PartialEq)] pub enum RecipeDisplayData { Shapeless(ShapelessCraftingRecipeDisplay), Shaped(ShapedCraftingRecipeDisplay), Furnace(FurnaceRecipeDisplay), Stonecutter(StonecutterRecipeDisplay), Smithing(SmithingRecipeDisplay), } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct ShapelessCraftingRecipeDisplay { pub ingredients: Vec, pub result: SlotDisplayData, pub crafting_station: SlotDisplayData, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct ShapedCraftingRecipeDisplay { #[var] pub width: u32, #[var] pub height: u32, pub ingredients: Vec, pub result: SlotDisplayData, pub crafting_station: SlotDisplayData, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct FurnaceRecipeDisplay { pub ingredient: SlotDisplayData, pub fuel: SlotDisplayData, pub result: SlotDisplayData, pub crafting_station: SlotDisplayData, #[var] pub duration: u32, pub experience: f32, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct StonecutterRecipeDisplay { pub input: SlotDisplayData, pub result: SlotDisplayData, pub crafting_station: SlotDisplayData, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct SmithingRecipeDisplay { pub template: SlotDisplayData, pub base: SlotDisplayData, pub addition: SlotDisplayData, pub result: SlotDisplayData, pub crafting_station: SlotDisplayData, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct Ingredient { pub allowed: HolderSet, } /// [`azalea_registry::builtin::SlotDisplay`] #[derive(AzBuf, Clone, Debug, PartialEq)] pub enum SlotDisplayData { Empty, AnyFuel, WithAnyPotion(Box), OnlyWithComponent(Box), Item(ItemSlotDisplay), ItemStack(ItemStackSlotDisplay), Tag(TagSlotDisplay), Dyed(Box), SmithingTrim(Box), WithRemainder(Box), Composite(CompositeSlotDisplay), } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct WithAnyPotionSlotDisplay { pub contents: SlotDisplayData, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct OnlyWithComponentSlotDisplay { pub contents: SlotDisplayData, pub component: DataComponentKind, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct ItemSlotDisplay { pub item: ItemKind, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct ItemStackSlotDisplay { pub stack: ItemStack, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct DyedSlotDemo { pub dye: SlotDisplayData, pub target: SlotDisplayData, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct TagSlotDisplay { pub tag: Identifier, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct SmithingTrimDemoSlotDisplay { pub base: SlotDisplayData, pub material: SlotDisplayData, pub pattern: TrimPattern, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct WithRemainderSlotDisplay { pub input: SlotDisplayData, pub remainder: SlotDisplayData, } #[derive(AzBuf, Clone, Debug, PartialEq)] pub struct CompositeSlotDisplay { pub contents: Vec, }