From e268c4929177e540baa9d2bb29bc171f49cc7a25 Mon Sep 17 00:00:00 2001 From: mat Date: Thu, 19 Dec 2024 02:31:08 +0000 Subject: fix incorrect packets --- azalea-protocol/src/common/recipe.rs | 101 +++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 azalea-protocol/src/common/recipe.rs (limited to 'azalea-protocol/src/common/recipe.rs') diff --git a/azalea-protocol/src/common/recipe.rs b/azalea-protocol/src/common/recipe.rs new file mode 100644 index 00000000..15d40cca --- /dev/null +++ b/azalea-protocol/src/common/recipe.rs @@ -0,0 +1,101 @@ +use azalea_buf::AzBuf; +use azalea_core::resource_location::ResourceLocation; +use azalea_inventory::ItemStack; +use azalea_registry::HolderSet; + +/// [`azalea_registry::RecipeDisplay`] +#[derive(Clone, Debug, AzBuf)] +pub enum RecipeDisplayData { + Shapeless(ShapelessCraftingRecipeDisplay), + Shaped(ShapedCraftingRecipeDisplay), + Furnace(FurnaceRecipeDisplay), + Stonecutter(StonecutterRecipeDisplay), + Smithing(SmithingRecipeDisplay), +} + +#[derive(Clone, Debug, AzBuf)] +pub struct ShapelessCraftingRecipeDisplay { + pub ingredients: Vec, + pub result: SlotDisplayData, + pub crafting_station: SlotDisplayData, +} +#[derive(Clone, Debug, AzBuf)] +pub struct ShapedCraftingRecipeDisplay { + #[var] + pub width: u32, + #[var] + pub height: u32, + pub ingredients: Vec, + pub result: SlotDisplayData, + pub crafting_station: SlotDisplayData, +} +#[derive(Clone, Debug, AzBuf)] +pub struct FurnaceRecipeDisplay { + pub ingredient: SlotDisplayData, + pub fuel: SlotDisplayData, + pub result: SlotDisplayData, + pub crafting_station: SlotDisplayData, + #[var] + pub duration: u32, + pub experience: f32, +} +#[derive(Clone, Debug, AzBuf)] +pub struct StonecutterRecipeDisplay { + pub input: SlotDisplayData, + pub result: SlotDisplayData, + pub crafting_station: SlotDisplayData, +} +#[derive(Clone, Debug, AzBuf)] +pub struct SmithingRecipeDisplay { + pub template: SlotDisplayData, + pub base: SlotDisplayData, + pub addition: SlotDisplayData, + pub result: SlotDisplayData, + pub crafting_station: SlotDisplayData, +} + +#[derive(Clone, Debug, PartialEq, AzBuf)] +pub struct Ingredient { + pub allowed: HolderSet, +} + +/// [`azalea_registry::SlotDisplay`] +#[derive(Clone, Debug, PartialEq, AzBuf)] +pub enum SlotDisplayData { + Empty, + AnyFuel, + Item(ItemStackDisplay), + ItemStack(ItemStackSlotDisplay), + Tag(ResourceLocation), + SmithingTrim(Box), + WithRemainder(Box), + Composite(CompositeSlotDisplay), +} + +#[derive(Clone, Debug, PartialEq, AzBuf)] +pub struct ItemStackDisplay { + pub item: azalea_registry::Item, +} +#[derive(Clone, Debug, PartialEq, AzBuf)] +pub struct ItemStackSlotDisplay { + pub stack: ItemStack, +} +#[derive(Clone, Debug, PartialEq, AzBuf)] +pub struct TagSlotDisplay { + pub tag: azalea_registry::Item, +} +#[derive(Clone, Debug, PartialEq, AzBuf)] +pub struct SmithingTrimDemoSlotDisplay { + pub base: SlotDisplayData, + pub material: SlotDisplayData, + pub pattern: SlotDisplayData, +} +#[derive(Clone, Debug, PartialEq, AzBuf)] +pub struct WithRemainderSlotDisplay { + pub input: SlotDisplayData, + pub remainder: SlotDisplayData, +} +#[derive(Clone, Debug, PartialEq, AzBuf)] +pub struct CompositeSlotDisplay { + pub contents: Vec, +} -- cgit v1.2.3