azalea_protocol/common/
recipe.rs

1use azalea_buf::AzBuf;
2use azalea_core::resource_location::ResourceLocation;
3use azalea_inventory::ItemStack;
4use azalea_registry::HolderSet;
5
6/// [`azalea_registry::RecipeDisplay`]
7#[derive(Clone, Debug, AzBuf)]
8pub enum RecipeDisplayData {
9    Shapeless(ShapelessCraftingRecipeDisplay),
10    Shaped(ShapedCraftingRecipeDisplay),
11    Furnace(FurnaceRecipeDisplay),
12    Stonecutter(StonecutterRecipeDisplay),
13    Smithing(SmithingRecipeDisplay),
14}
15
16#[derive(Clone, Debug, AzBuf)]
17pub struct ShapelessCraftingRecipeDisplay {
18    pub ingredients: Vec<SlotDisplayData>,
19    pub result: SlotDisplayData,
20    pub crafting_station: SlotDisplayData,
21}
22#[derive(Clone, Debug, AzBuf)]
23pub struct ShapedCraftingRecipeDisplay {
24    #[var]
25    pub width: u32,
26    #[var]
27    pub height: u32,
28    pub ingredients: Vec<SlotDisplayData>,
29    pub result: SlotDisplayData,
30    pub crafting_station: SlotDisplayData,
31}
32#[derive(Clone, Debug, AzBuf)]
33pub struct FurnaceRecipeDisplay {
34    pub ingredient: SlotDisplayData,
35    pub fuel: SlotDisplayData,
36    pub result: SlotDisplayData,
37    pub crafting_station: SlotDisplayData,
38    #[var]
39    pub duration: u32,
40    pub experience: f32,
41}
42#[derive(Clone, Debug, AzBuf)]
43pub struct StonecutterRecipeDisplay {
44    pub input: SlotDisplayData,
45    pub result: SlotDisplayData,
46    pub crafting_station: SlotDisplayData,
47}
48#[derive(Clone, Debug, AzBuf)]
49pub struct SmithingRecipeDisplay {
50    pub template: SlotDisplayData,
51    pub base: SlotDisplayData,
52    pub addition: SlotDisplayData,
53    pub result: SlotDisplayData,
54    pub crafting_station: SlotDisplayData,
55}
56
57#[derive(Clone, Debug, PartialEq, AzBuf)]
58pub struct Ingredient {
59    pub allowed: HolderSet<azalea_registry::Item, ResourceLocation>,
60}
61
62/// [`azalea_registry::SlotDisplay`]
63#[derive(Clone, Debug, PartialEq, AzBuf)]
64pub enum SlotDisplayData {
65    Empty,
66    AnyFuel,
67    Item(ItemStackDisplay),
68    ItemStack(ItemStackSlotDisplay),
69    Tag(ResourceLocation),
70    SmithingTrim(Box<SmithingTrimDemoSlotDisplay>),
71    WithRemainder(Box<WithRemainderSlotDisplay>),
72    Composite(CompositeSlotDisplay),
73}
74
75#[derive(Clone, Debug, PartialEq, AzBuf)]
76pub struct ItemStackDisplay {
77    pub item: azalea_registry::Item,
78}
79#[derive(Clone, Debug, PartialEq, AzBuf)]
80pub struct ItemStackSlotDisplay {
81    pub stack: ItemStack,
82}
83#[derive(Clone, Debug, PartialEq, AzBuf)]
84pub struct TagSlotDisplay {
85    pub tag: azalea_registry::Item,
86}
87#[derive(Clone, Debug, PartialEq, AzBuf)]
88pub struct SmithingTrimDemoSlotDisplay {
89    pub base: SlotDisplayData,
90    pub material: SlotDisplayData,
91    pub pattern: SlotDisplayData,
92}
93#[derive(Clone, Debug, PartialEq, AzBuf)]
94pub struct WithRemainderSlotDisplay {
95    pub input: SlotDisplayData,
96    pub remainder: SlotDisplayData,
97}
98#[derive(Clone, Debug, PartialEq, AzBuf)]
99pub struct CompositeSlotDisplay {
100    pub contents: Vec<SlotDisplayData>,
101}