From f9528a9f9a9e73b1d657af7c78d743067307d843 Mon Sep 17 00:00:00 2001 From: mat Date: Tue, 26 Apr 2022 15:13:47 +0000 Subject: work on adding more stuff for recipes --- azalea-protocol/src/mc_buf/read.rs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'azalea-protocol/src/mc_buf') diff --git a/azalea-protocol/src/mc_buf/read.rs b/azalea-protocol/src/mc_buf/read.rs index 3d50e5aa..1e7db1dd 100755 --- a/azalea-protocol/src/mc_buf/read.rs +++ b/azalea-protocol/src/mc_buf/read.rs @@ -1,11 +1,12 @@ +use crate::mc_buf::ByteArray; use async_trait::async_trait; use azalea_chat::component::Component; use azalea_core::{ - difficulty::Difficulty, game_type::GameType, resource_location::ResourceLocation, + difficulty::Difficulty, game_type::GameType, resource_location::ResourceLocation, Slot, + SlotData, }; use serde::Deserialize; use tokio::io::{AsyncRead, AsyncReadExt}; -use crate::mc_buf::ByteArray; use super::MAX_STRING_LENGTH; @@ -252,7 +253,6 @@ impl McBufReadable for Vec { } } - #[async_trait] impl McBufReadable for ByteArray { async fn read_into(buf: &mut R) -> Result @@ -469,3 +469,21 @@ impl McBufReadable for Component { Ok(component) } } + +// Slot +#[async_trait] +impl McBufReadable for Slot { + async fn read_into(buf: &mut R) -> Result + where + R: AsyncRead + std::marker::Unpin + std::marker::Send, + { + let present = buf.read_boolean().await?; + if !present { + return Ok(Slot::Empty); + } + let id = buf.read_varint().await?; + let count = buf.read_byte().await?; + let nbt = buf.read_nbt().await?; + Ok(Slot::Present(SlotData { id, count, nbt })) + } +} -- cgit v1.2.3