diff options
| author | mat <github@matdoes.dev> | 2022-09-09 23:46:46 -0500 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-09-09 23:46:46 -0500 |
| commit | dee991a7fc54b3e7e75f051b83901c282f18ae37 (patch) | |
| tree | 4cba3c7708f5b3b122776b19687d148974aa0157 /azalea-protocol/src | |
| parent | 3389f19e601cf52d7920796effaca55f2f0fcf4a (diff) | |
| download | azalea-drasl-dee991a7fc54b3e7e75f051b83901c282f18ae37.tar.xz | |
fix errors in enums inconsistent w/ vanilla
Diffstat (limited to 'azalea-protocol/src')
| -rw-r--r-- | azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs | 40 | ||||
| -rwxr-xr-x | azalea-protocol/src/read.rs | 36 |
2 files changed, 43 insertions, 33 deletions
diff --git a/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs b/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs index 5d3bdd23..1db3cba6 100644 --- a/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs +++ b/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs @@ -1,11 +1,8 @@ -use azalea_buf::{ - BufReadError, McBuf, McBufReadable, McBufVarReadable, McBufVarWritable, McBufWritable, -}; +use azalea_buf::McBuf; use azalea_chat::component::Component; use azalea_core::BitSet; use azalea_crypto::{MessageSignature, SignedMessageHeader}; use azalea_protocol_macros::ClientboundGamePacket; -use std::io::{Read, Write}; use uuid::Uuid; #[derive(Clone, Debug, McBuf, ClientboundGamePacket)] @@ -82,48 +79,25 @@ pub struct ChatMessageContent { pub decorated: Option<Component>, } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, McBuf)] pub enum FilterMask { PassThrough, FullyFiltered, PartiallyFiltered(BitSet), } -impl McBufReadable for FilterMask { - fn read_from(buf: &mut impl Read) -> Result<Self, BufReadError> { - let filter_mask = u32::var_read_from(buf)?; - match filter_mask { - 0 => Ok(FilterMask::PassThrough), - 1 => Ok(FilterMask::FullyFiltered), - 2 => Ok(FilterMask::PartiallyFiltered(BitSet::read_from(buf)?)), - _ => Err(BufReadError::UnexpectedEnumVariant { - id: filter_mask as i32, - }), - } - } -} -impl McBufWritable for FilterMask { - fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { - match self { - FilterMask::PassThrough => 0u32.var_write_into(buf)?, - FilterMask::FullyFiltered => 1u32.var_write_into(buf)?, - FilterMask::PartiallyFiltered(bits) => { - 2u32.var_write_into(buf)?; - bits.write_into(buf)?; - } - } - Ok(()) - } -} - #[cfg(test)] mod tests { use super::*; + use azalea_buf::McBufReadable; #[test] fn test_chat_type() { let chat_type_enum = ChatType::read_from(&mut &[0x06][..]).unwrap(); assert_eq!(chat_type_enum, ChatType::EmoteCommand); - assert!(ChatType::read_from(&mut &[0x07][..]).is_err()); + assert_eq!( + ChatType::read_from(&mut &[0x07][..]).unwrap(), + ChatType::Chat + ); } } diff --git a/azalea-protocol/src/read.rs b/azalea-protocol/src/read.rs index 2c749a61..3ff24f72 100755 --- a/azalea-protocol/src/read.rs +++ b/azalea-protocol/src/read.rs @@ -217,3 +217,39 @@ where Ok(packet) } + +#[cfg(test)] +mod tests { + use super::*; + use crate::packets::game::{clientbound_player_chat_packet::ChatType, ClientboundGamePacket}; + use std::io::Cursor; + + #[tokio::test] + async fn test_read_packet() { + let mut buf = Cursor::new(vec![ + 51, 0, 12, 177, 250, 155, 132, 106, 60, 218, 161, 217, 90, 157, 105, 57, 206, 20, 0, 5, + 104, 101, 108, 108, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 116, + 123, 34, 101, 120, 116, 114, 97, 34, 58, 91, 123, 34, 99, 111, 108, 111, 114, 34, 58, + 34, 103, 114, 97, 121, 34, 44, 34, 116, 101, 120, 116, 34, 58, 34, 91, 77, 69, 77, 66, + 69, 82, 93, 32, 112, 108, 97, 121, 101, 114, 49, 34, 125, 44, 123, 34, 116, 101, 120, + 116, 34, 58, 34, 32, 34, 125, 44, 123, 34, 99, 111, 108, 111, 114, 34, 58, 34, 103, + 114, 97, 121, 34, 44, 34, 116, 101, 120, 116, 34, 58, 34, 92, 117, 48, 48, 51, 101, 32, + 104, 101, 108, 108, 111, 34, 125, 93, 44, 34, 116, 101, 120, 116, 34, 58, 34, 34, 125, + 0, 7, 64, 123, 34, 101, 120, 116, 114, 97, 34, 58, 91, 123, 34, 99, 111, 108, 111, 114, + 34, 58, 34, 103, 114, 97, 121, 34, 44, 34, 116, 101, 120, 116, 34, 58, 34, 91, 77, 69, + 77, 66, 69, 82, 93, 32, 112, 108, 97, 121, 101, 114, 49, 34, 125, 93, 44, 34, 116, 101, + 120, 116, 34, 58, 34, 34, 125, 0, + ]); + let packet = packet_decoder::<ClientboundGamePacket>(&mut buf).unwrap(); + match &packet { + ClientboundGamePacket::PlayerChat(m) => { + assert_eq!( + m.chat_type.chat_type, + ChatType::Chat, + "Enums should default if they're invalid" + ); + } + _ => panic!("Wrong packet type"), + } + } +} |
