aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--minecraft-protocol/src/connection.rs15
-rw-r--r--minecraft-protocol/src/mc_buf.rs2
-rw-r--r--minecraft-protocol/src/packets/handshake/client_intention_packet.rs2
-rw-r--r--minecraft-protocol/src/packets/mod.rs6
-rw-r--r--minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs2
-rw-r--r--minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs2
6 files changed, 15 insertions, 14 deletions
diff --git a/minecraft-protocol/src/connection.rs b/minecraft-protocol/src/connection.rs
index d5cee708..a8319fe1 100644
--- a/minecraft-protocol/src/connection.rs
+++ b/minecraft-protocol/src/connection.rs
@@ -36,7 +36,7 @@ impl Connection {
Ok(Connection {
state: ConnectionProtocol::Handshake,
- flow: PacketFlow::ClientToServer,
+ flow: PacketFlow::ServerToClient,
stream,
})
}
@@ -61,12 +61,15 @@ impl Connection {
// if we recognize the packet id, parse it
- // TODO
+ let packet = Packet::read(
+ packet_id.try_into().unwrap(),
+ &self.state,
+ &self.flow,
+ &mut buf,
+ )
+ .await?;
- // otherwise, read the rest of the packet and throw it away
- let mut packet_data = Vec::with_capacity((packet_size - packet_id_size as i32) as usize);
- buf.read_buf(&mut packet_data).await.unwrap();
- println!("packet {:?}", packet_data);
+ println!("packet: {:?}", packet);
Ok(())
}
diff --git a/minecraft-protocol/src/mc_buf.rs b/minecraft-protocol/src/mc_buf.rs
index b83a9599..68ce6de4 100644
--- a/minecraft-protocol/src/mc_buf.rs
+++ b/minecraft-protocol/src/mc_buf.rs
@@ -5,8 +5,6 @@ use std::io::{Cursor, Write};
use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt};
use tokio::io::{AsyncRead, AsyncReadExt, BufReader};
-// const MAX_VARINT_SIZE: u32 = 5;
-// const MAX_VARLONG_SIZE: u32 = 10;
// const DEFAULT_NBT_QUOTA: u32 = 2097152;
const MAX_STRING_LENGTH: u16 = 32767;
// const MAX_COMPONENT_STRING_LENGTH: u32 = 262144;
diff --git a/minecraft-protocol/src/packets/handshake/client_intention_packet.rs b/minecraft-protocol/src/packets/handshake/client_intention_packet.rs
index 0f14ed48..c6a940e3 100644
--- a/minecraft-protocol/src/packets/handshake/client_intention_packet.rs
+++ b/minecraft-protocol/src/packets/handshake/client_intention_packet.rs
@@ -8,7 +8,7 @@ use crate::{
packets::{ConnectionProtocol, Packet, PacketTrait},
};
-#[derive(Hash, Clone)]
+#[derive(Hash, Clone, Debug)]
pub struct ClientIntentionPacket {
pub protocol_version: u32,
pub hostname: String,
diff --git a/minecraft-protocol/src/packets/mod.rs b/minecraft-protocol/src/packets/mod.rs
index 0d8b6883..1fac2a3b 100644
--- a/minecraft-protocol/src/packets/mod.rs
+++ b/minecraft-protocol/src/packets/mod.rs
@@ -16,7 +16,7 @@ pub enum ConnectionProtocol {
Login = 2,
}
-#[derive(Clone)]
+#[derive(Clone, Debug)]
pub enum Packet {
// game
@@ -55,8 +55,8 @@ impl Packet {
/// Read a packet by its id, ConnectionProtocol, and flow
pub async fn read<T: tokio::io::AsyncRead + std::marker::Unpin + std::marker::Send>(
id: u32,
- protocol: ConnectionProtocol,
- flow: PacketFlow,
+ protocol: &ConnectionProtocol,
+ flow: &PacketFlow,
buf: &mut BufReader<T>,
) -> Result<Packet, String> {
match protocol {
diff --git a/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs b/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs
index 28ac9b16..b61562cf 100644
--- a/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs
+++ b/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs
@@ -7,7 +7,7 @@ use crate::{
packets::{Packet, PacketTrait},
};
-#[derive(Hash, Clone)]
+#[derive(Hash, Clone, Debug)]
pub struct ClientboundStatusResponsePacket {
status: String,
}
diff --git a/minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs b/minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs
index 1a301a4d..a08ffdff 100644
--- a/minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs
+++ b/minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs
@@ -7,7 +7,7 @@ use crate::{
packets::{Packet, PacketTrait},
};
-#[derive(Hash, Clone)]
+#[derive(Hash, Clone, Debug)]
pub struct ServerboundStatusRequestPacket {}
#[async_trait]