aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol/src/common/recipe.rs
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2024-12-19 02:31:08 +0000
committermat <git@matdoes.dev>2024-12-19 02:52:41 +0000
commite268c4929177e540baa9d2bb29bc171f49cc7a25 (patch)
tree10146e529088ab823452a5971c0a37a8886b2a68 /azalea-protocol/src/common/recipe.rs
parent1f06a1540f46d8087907566d7c6c1ab397c517ec (diff)
downloadazalea-drasl-e268c4929177e540baa9d2bb29bc171f49cc7a25.tar.xz
fix incorrect packets
Diffstat (limited to 'azalea-protocol/src/common/recipe.rs')
-rw-r--r--azalea-protocol/src/common/recipe.rs101
1 files changed, 101 insertions, 0 deletions
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<SlotDisplayData>,
+ 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<SlotDisplayData>,
+ 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::Item, ResourceLocation>,
+}
+
+/// [`azalea_registry::SlotDisplay`]
+#[derive(Clone, Debug, PartialEq, AzBuf)]
+pub enum SlotDisplayData {
+ Empty,
+ AnyFuel,
+ Item(ItemStackDisplay),
+ ItemStack(ItemStackSlotDisplay),
+ Tag(ResourceLocation),
+ SmithingTrim(Box<SmithingTrimDemoSlotDisplay>),
+ WithRemainder(Box<WithRemainderSlotDisplay>),
+ 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<SlotDisplayData>,
+}