From 6553d9510ddc52469dd7557aa9675982cb5187ab Mon Sep 17 00:00:00 2001 From: Luis Date: Sat, 27 Apr 2024 07:03:20 +0100 Subject: Use ClientIntention over ConnectionProtocol for ClientIntentionPacket (#143) * fix!: use ClientIntention over ConnectionProtocol for ClientIntentionPacket * chore: remove McBufRead/Writable from ConnectionProtocol * chore: use From over Into for ClientIntention to ConnectionProtocol conversion * chore: organise imports in existing style --- azalea-protocol/src/connect.rs | 4 +-- .../packets/handshaking/client_intention_packet.rs | 4 +-- azalea-protocol/src/packets/mod.rs | 37 +++++++++++++++++++--- 3 files changed, 37 insertions(+), 8 deletions(-) (limited to 'azalea-protocol/src') diff --git a/azalea-protocol/src/connect.rs b/azalea-protocol/src/connect.rs index cf98e419..691d25c0 100755 --- a/azalea-protocol/src/connect.rs +++ b/azalea-protocol/src/connect.rs @@ -61,7 +61,7 @@ pub struct WriteConnection { /// resolver, /// connect::Connection, /// packets::{ -/// ConnectionProtocol, PROTOCOL_VERSION, +/// ClientIntention, PROTOCOL_VERSION, /// login::{ /// ClientboundLoginPacket, /// serverbound_hello_packet::ServerboundHelloPacket, @@ -82,7 +82,7 @@ pub struct WriteConnection { /// protocol_version: PROTOCOL_VERSION, /// hostname: resolved_address.ip().to_string(), /// port: resolved_address.port(), -/// intention: ConnectionProtocol::Login, +/// intention: ClientIntention::Login, /// } /// .get(), /// ) diff --git a/azalea-protocol/src/packets/handshaking/client_intention_packet.rs b/azalea-protocol/src/packets/handshaking/client_intention_packet.rs index cac64a01..82be621a 100755 --- a/azalea-protocol/src/packets/handshaking/client_intention_packet.rs +++ b/azalea-protocol/src/packets/handshaking/client_intention_packet.rs @@ -1,4 +1,4 @@ -use crate::packets::ConnectionProtocol; +use crate::packets::ClientIntention; use azalea_buf::McBuf; use azalea_protocol_macros::ServerboundHandshakePacket; use std::hash::Hash; @@ -9,5 +9,5 @@ pub struct ClientIntentionPacket { pub protocol_version: i32, pub hostname: String, pub port: u16, - pub intention: ConnectionProtocol, + pub intention: ClientIntention, } diff --git a/azalea-protocol/src/packets/mod.rs b/azalea-protocol/src/packets/mod.rs index 63a0c1c9..044bb56c 100755 --- a/azalea-protocol/src/packets/mod.rs +++ b/azalea-protocol/src/packets/mod.rs @@ -50,15 +50,44 @@ where fn write(&self, buf: &mut impl Write) -> Result<(), std::io::Error>; } -impl azalea_buf::McBufReadable for ConnectionProtocol { +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub enum ClientIntention { + Status = 1, + Login = 2, + Transfer = 3 +} + +impl TryFrom for ClientIntention { + type Error = (); + + fn try_from(value: i32) -> Result { + match value { + 1 => Ok(ClientIntention::Status), + 2 => Ok(ClientIntention::Login), + 3 => Ok(ClientIntention::Transfer), + _ => Err(()), + } + } +} + +impl From for ConnectionProtocol { + fn from(intention: ClientIntention) -> Self { + match intention { + ClientIntention::Status => ConnectionProtocol::Status, + ClientIntention::Login | ClientIntention::Transfer => ConnectionProtocol::Login, + } + } +} + +impl azalea_buf::McBufReadable for ClientIntention { fn read_from(buf: &mut Cursor<&[u8]>) -> Result { let id = i32::var_read_from(buf)?; - ConnectionProtocol::from_i32(id).ok_or(BufReadError::UnexpectedEnumVariant { id }) + id.try_into().map_err(|_| BufReadError::UnexpectedEnumVariant { id }) } } -impl McBufWritable for ConnectionProtocol { +impl McBufWritable for ClientIntention { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { (*self as i32).var_write_into(buf) } -} +} \ No newline at end of file -- cgit v1.2.3