azalea_protocol/common/
recipe.rs1use azalea_buf::AzBuf;
2use azalea_core::resource_location::ResourceLocation;
3use azalea_inventory::ItemStack;
4use azalea_registry::HolderSet;
5
6#[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#[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}