From c96ae8fce4e53ea9fad111ac7f479f2fa33ef859 Mon Sep 17 00:00:00 2001 From: mat Date: Mon, 13 Dec 2021 00:07:21 -0600 Subject: start implementing joining servers --- minecraft-protocol/src/mc_buf.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'minecraft-protocol/src/mc_buf.rs') diff --git a/minecraft-protocol/src/mc_buf.rs b/minecraft-protocol/src/mc_buf.rs index 6c812058..3490a66f 100644 --- a/minecraft-protocol/src/mc_buf.rs +++ b/minecraft-protocol/src/mc_buf.rs @@ -23,6 +23,17 @@ pub fn write_byte(buf: &mut Vec, n: u8) { WriteBytesExt::write_u8(buf, n).unwrap(); } +pub async fn read_bytes( + buf: &mut BufReader, + n: usize, +) -> Result, String> { + let mut bytes = vec![0; n]; + match AsyncReadExt::read_exact(buf, &mut bytes).await { + Ok(_) => Ok(bytes), + Err(_) => Err("Error reading bytes".to_string()), + } +} + pub fn write_bytes(buf: &mut Vec, bytes: &[u8]) { buf.extend_from_slice(bytes); } @@ -159,3 +170,15 @@ pub fn write_utf(buf: &mut Vec, string: &str) { pub fn write_short(buf: &mut Vec, n: u16) { WriteBytesExt::write_u16::(buf, n).unwrap(); } + +pub async fn read_byte_array( + buf: &mut BufReader, +) -> Result, String> { + let length = read_varint(buf).await?.0 as usize; + Ok(read_bytes(buf, length).await?) +} + +pub fn write_byte_array(buf: &mut Vec, bytes: &[u8]) { + write_varint(buf, bytes.len() as i32); + write_bytes(buf, bytes); +} -- cgit v1.2.3