aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2024-04-23 10:34:50 -0500
committerGitHub <noreply@github.com>2024-04-23 10:34:50 -0500
commit1d80f531b74bc3b31023753acb81b35efcdadd73 (patch)
tree675635c7c41fbb456e3e0dd7b9f09c7211d356f0 /azalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs
parent0ddad8bd9c7c0e8846aec8bc90c95416418c9a63 (diff)
downloadazalea-drasl-1d80f531b74bc3b31023753acb81b35efcdadd73.tar.xz
1.20.5 (#127)
* 23w51b * make recalculate_near_end_of_path public so other plugins can do .after(recalculate_near_end_of_path) * update to 24w03a i think * start implementing 24w13a * registries work (but a lot of packets are still broken) * fix recipes and commands packets * i love codecs :D i am not going insane :D mojang's java is very readable :D * item components are "implemented" meowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeow * update to 1.20.5-pre3 * fix all the broken packets and clippy (mojang please don't do an update like this again or i will murder someone) * 1.20.5-rc1 * fix failing tests * 1.20.5
Diffstat (limited to 'azalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs')
-rwxr-xr-xazalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs169
1 files changed, 13 insertions, 156 deletions
diff --git a/azalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs b/azalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs
index 291cb580..99f4ab05 100755
--- a/azalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs
@@ -4,19 +4,17 @@ use azalea_buf::{
use azalea_core::resource_location::ResourceLocation;
use azalea_inventory::ItemSlot;
use azalea_protocol_macros::ClientboundGamePacket;
-use azalea_registry::RecipeSerializer;
use std::io::{Cursor, Write};
-use std::str::FromStr;
#[derive(Clone, Debug, McBuf, PartialEq, ClientboundGamePacket)]
pub struct ClientboundUpdateRecipesPacket {
- pub recipes: Vec<Recipe>,
+ pub recipes: Vec<RecipeHolder>,
}
-#[derive(Clone, Debug, PartialEq)]
-pub struct Recipe {
- pub identifier: ResourceLocation,
+#[derive(Clone, Debug, PartialEq, McBuf)]
+pub struct RecipeHolder {
+ pub id: ResourceLocation,
pub data: RecipeData,
}
@@ -156,147 +154,6 @@ pub struct Ingredient {
pub allowed: Vec<ItemSlot>,
}
-impl McBufWritable for Recipe {
- fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
- let recipe_serializer = match &self.data {
- RecipeData::CraftingShapeless(_) => RecipeSerializer::CraftingShapeless,
- RecipeData::CraftingShaped(_) => RecipeSerializer::CraftingShaped,
- RecipeData::CraftingSpecialArmorDye(_) => RecipeSerializer::CraftingSpecialArmordye,
- RecipeData::CraftingSpecialBookCloning(_) => {
- RecipeSerializer::CraftingSpecialBookcloning
- }
- RecipeData::CraftingSpecialMapCloning(_) => RecipeSerializer::CraftingSpecialMapcloning,
- RecipeData::CraftingSpecialMapExtending(_) => {
- RecipeSerializer::CraftingSpecialMapextending
- }
- RecipeData::CraftingSpecialFireworkRocket(_) => {
- RecipeSerializer::CraftingSpecialFireworkRocket
- }
- RecipeData::CraftingSpecialFireworkStar(_) => {
- RecipeSerializer::CraftingSpecialFireworkStar
- }
-
- RecipeData::CraftingSpecialFireworkStarFade(_) => {
- RecipeSerializer::CraftingSpecialFireworkStarFade
- }
- RecipeData::CraftingSpecialRepairItem(_) => RecipeSerializer::CraftingSpecialRepairitem,
- RecipeData::CraftingSpecialTippedArrow(_) => {
- RecipeSerializer::CraftingSpecialTippedarrow
- }
- RecipeData::CraftingSpecialBannerDuplicate(_) => {
- RecipeSerializer::CraftingSpecialBannerduplicate
- }
- RecipeData::CraftingSpecialShieldDecoration(_) => {
- RecipeSerializer::CraftingSpecialShielddecoration
- }
- RecipeData::CraftingSpecialShulkerBoxColoring(_) => {
- RecipeSerializer::CraftingSpecialShulkerboxcoloring
- }
- RecipeData::CraftingSpecialSuspiciousStew(_) => {
- RecipeSerializer::CraftingSpecialSuspiciousstew
- }
- RecipeData::Smelting(_) => RecipeSerializer::Smelting,
- RecipeData::Blasting(_) => RecipeSerializer::Blasting,
- RecipeData::Smoking(_) => RecipeSerializer::Smoking,
- RecipeData::CampfireCooking(_) => RecipeSerializer::CampfireCooking,
- RecipeData::Stonecutting(_) => RecipeSerializer::Stonecutting,
- RecipeData::SmithingTransform(_) => RecipeSerializer::SmithingTransform,
- RecipeData::SmithingTrim(_) => RecipeSerializer::SmithingTrim,
- RecipeData::CraftingDecoratedPot(_) => RecipeSerializer::CraftingDecoratedPot,
- };
- let resource_location = ResourceLocation::new(&recipe_serializer.to_string());
- resource_location.write_into(buf)?;
- self.identifier.write_into(buf)?;
- self.data.write_without_id(buf)?;
- Ok(())
- }
-}
-
-impl McBufReadable for Recipe {
- fn read_from(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> {
- let recipe_serializer_name = ResourceLocation::read_from(buf)?;
- let Ok(recipe_serializer) = RecipeSerializer::from_str(&recipe_serializer_name.to_string())
- else {
- return Err(BufReadError::UnexpectedStringEnumVariant {
- id: recipe_serializer_name.to_string(),
- });
- };
- let identifier = ResourceLocation::read_from(buf)?;
-
- // rust doesn't let us match ResourceLocation so we have to do a big
- // if-else chain :(
- let data = match recipe_serializer {
- RecipeSerializer::CraftingShaped => {
- RecipeData::CraftingShaped(ShapedRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingShapeless => {
- RecipeData::CraftingShapeless(ShapelessRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialArmordye => {
- RecipeData::CraftingSpecialArmorDye(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialBookcloning => {
- RecipeData::CraftingSpecialBookCloning(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialMapcloning => {
- RecipeData::CraftingSpecialMapCloning(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialMapextending => {
- RecipeData::CraftingSpecialMapExtending(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialFireworkRocket => {
- RecipeData::CraftingSpecialFireworkRocket(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialFireworkStar => {
- RecipeData::CraftingSpecialFireworkStar(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialFireworkStarFade => {
- RecipeData::CraftingSpecialFireworkStarFade(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialRepairitem => {
- RecipeData::CraftingSpecialRepairItem(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialTippedarrow => {
- RecipeData::CraftingSpecialTippedArrow(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialBannerduplicate => {
- RecipeData::CraftingSpecialBannerDuplicate(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialShielddecoration => {
- RecipeData::CraftingSpecialShieldDecoration(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialShulkerboxcoloring => {
- RecipeData::CraftingSpecialShulkerBoxColoring(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingSpecialSuspiciousstew => {
- RecipeData::CraftingSpecialSuspiciousStew(SimpleRecipe::read_from(buf)?)
- }
- RecipeSerializer::Smelting => RecipeData::Smelting(CookingRecipe::read_from(buf)?),
- RecipeSerializer::Blasting => RecipeData::Blasting(CookingRecipe::read_from(buf)?),
- RecipeSerializer::Smoking => RecipeData::Smoking(CookingRecipe::read_from(buf)?),
- RecipeSerializer::CampfireCooking => {
- RecipeData::CampfireCooking(CookingRecipe::read_from(buf)?)
- }
- RecipeSerializer::Stonecutting => {
- RecipeData::Stonecutting(StoneCutterRecipe::read_from(buf)?)
- }
- RecipeSerializer::SmithingTransform => {
- RecipeData::SmithingTransform(SmithingTransformRecipe::read_from(buf)?)
- }
- RecipeSerializer::SmithingTrim => {
- RecipeData::SmithingTrim(SmithingTrimRecipe::read_from(buf)?)
- }
- RecipeSerializer::CraftingDecoratedPot => {
- RecipeData::CraftingDecoratedPot(SimpleRecipe::read_from(buf)?)
- }
- };
-
- let recipe = Recipe { identifier, data };
-
- Ok(recipe)
- }
-}
-
#[cfg(test)]
mod tests {
use super::*;
@@ -304,8 +161,8 @@ mod tests {
#[test]
fn test_crafting_shaped() {
let mut buf = Vec::new();
- let recipe = Recipe {
- identifier: ResourceLocation::new("minecraft:crafting_shaped"),
+ let recipe = RecipeHolder {
+ id: ResourceLocation::new("minecraft:crafting_shaped"),
data: RecipeData::CraftingShaped(ShapedRecipe {
group: String::new(),
category: CraftingBookCategory::Building,
@@ -332,15 +189,15 @@ mod tests {
}),
};
recipe.write_into(&mut buf).unwrap();
- let decoded_recipe = Recipe::read_from(&mut Cursor::new(&buf[..])).unwrap();
+ let decoded_recipe = RecipeHolder::read_from(&mut Cursor::new(&buf[..])).unwrap();
assert_eq!(recipe, decoded_recipe);
}
#[test]
fn test_crafting_shapeless() {
let mut buf = Vec::new();
- let recipe = Recipe {
- identifier: ResourceLocation::new("minecraft:crafting_shapeless"),
+ let recipe = RecipeHolder {
+ id: ResourceLocation::new("minecraft:crafting_shapeless"),
data: RecipeData::CraftingShapeless(ShapelessRecipe {
group: String::new(),
category: CraftingBookCategory::Building,
@@ -362,21 +219,21 @@ mod tests {
}),
};
recipe.write_into(&mut buf).unwrap();
- let decoded_recipe = Recipe::read_from(&mut Cursor::new(&buf[..])).unwrap();
+ let decoded_recipe = RecipeHolder::read_from(&mut Cursor::new(&buf[..])).unwrap();
assert_eq!(recipe, decoded_recipe);
}
#[test]
fn test_crafting_special_armordye() {
let mut buf = Vec::new();
- let recipe = Recipe {
- identifier: ResourceLocation::new("minecraft:crafting_special_armordye"),
+ let recipe = RecipeHolder {
+ id: ResourceLocation::new("minecraft:crafting_special_armordye"),
data: RecipeData::CraftingSpecialArmorDye(SimpleRecipe {
category: CraftingBookCategory::Building,
}),
};
recipe.write_into(&mut buf).unwrap();
- let decoded_recipe = Recipe::read_from(&mut Cursor::new(&buf[..])).unwrap();
+ let decoded_recipe = RecipeHolder::read_from(&mut Cursor::new(&buf[..])).unwrap();
assert_eq!(recipe, decoded_recipe);
}
}