diff options
Diffstat (limited to 'azalea-protocol/src/packets/mod.rs')
| -rw-r--r--[-rwxr-xr-x] | azalea-protocol/src/packets/mod.rs | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/azalea-protocol/src/packets/mod.rs b/azalea-protocol/src/packets/mod.rs index a8915290..499b0062 100755..100644 --- a/azalea-protocol/src/packets/mod.rs +++ b/azalea-protocol/src/packets/mod.rs @@ -3,18 +3,13 @@ pub mod handshake; pub mod login; pub mod status; +use crate::connect::PacketFlow; +use azalea_buf::{McBufWritable, Readable, Writable}; use std::io::{Read, Write}; -use crate::{ - connect::PacketFlow, - mc_buf::{McBufReadable, McBufWritable, Readable, Writable}, -}; -use num_derive::FromPrimitive; -use num_traits::FromPrimitive; - pub const PROTOCOL_VERSION: u32 = 1073741918; -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, FromPrimitive)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum ConnectionProtocol { Handshake = -1, Game = 0, @@ -22,6 +17,18 @@ pub enum ConnectionProtocol { Login = 2, } +impl ConnectionProtocol { + pub fn from_i32(i: i32) -> Option<Self> { + match i { + -1 => Some(ConnectionProtocol::Handshake), + 0 => Some(ConnectionProtocol::Game), + 1 => Some(ConnectionProtocol::Status), + 2 => Some(ConnectionProtocol::Login), + _ => None, + } + } +} + #[derive(Clone, Debug)] pub enum Packet { Game(game::GamePacket), @@ -43,8 +50,8 @@ where fn write(&self, buf: &mut impl Write) -> Result<(), std::io::Error>; } -impl crate::mc_buf::McBufReadable for ConnectionProtocol { - fn read_into(buf: &mut impl Read) -> Result<Self, String> { +impl azalea_buf::McBufReadable for ConnectionProtocol { + fn read_from(buf: &mut impl Read) -> Result<Self, String> { ConnectionProtocol::from_i32(buf.read_varint()?) .ok_or_else(|| "Invalid intention".to_string()) } |
