From 732de94d7b9f1bf2bc9239c8138a37c53242b470 Mon Sep 17 00:00:00 2001 From: mat Date: Wed, 15 Dec 2021 13:43:57 -0600 Subject: oh yeah it compiles --- minecraft-protocol/src/write.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 minecraft-protocol/src/write.rs (limited to 'minecraft-protocol/src/write.rs') diff --git a/minecraft-protocol/src/write.rs b/minecraft-protocol/src/write.rs new file mode 100644 index 00000000..529bb210 --- /dev/null +++ b/minecraft-protocol/src/write.rs @@ -0,0 +1,27 @@ +use tokio::{io::AsyncWriteExt, net::TcpStream}; + +use crate::{mc_buf, packets::ProtocolPacket}; + +pub async fn write_packet(packet: impl ProtocolPacket, stream: &mut TcpStream) { + // TODO: implement compression + + // packet structure: + // length (varint) + id (varint) + data + + // write the packet id + let mut id_and_data_buf = vec![]; + mc_buf::write_varint(&mut id_and_data_buf, packet.id() as i32); + packet.write(&mut id_and_data_buf); + + // write the packet data + + // make a new buffer that has the length at the beginning + // and id+data at the end + let mut complete_buf: Vec = Vec::new(); + mc_buf::write_varint(&mut complete_buf, id_and_data_buf.len() as i32); + complete_buf.append(&mut id_and_data_buf); + + // finally, write and flush to the stream + stream.write_all(&complete_buf).await.unwrap(); + stream.flush().await.unwrap(); +} -- cgit v1.2.3