aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol/src/packets
diff options
context:
space:
mode:
authorLuis <luis@lu15.dev>2024-04-27 07:03:20 +0100
committerGitHub <noreply@github.com>2024-04-27 01:03:20 -0500
commit6553d9510ddc52469dd7557aa9675982cb5187ab (patch)
treee2d0cc0e36be8b2d4be5857c2790cb79eb84dece /azalea-protocol/src/packets
parent84f66a55a5e5b1618111e522c25704ac96d45806 (diff)
downloadazalea-drasl-6553d9510ddc52469dd7557aa9675982cb5187ab.tar.xz
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
Diffstat (limited to 'azalea-protocol/src/packets')
-rwxr-xr-xazalea-protocol/src/packets/handshaking/client_intention_packet.rs4
-rwxr-xr-xazalea-protocol/src/packets/mod.rs37
2 files changed, 35 insertions, 6 deletions
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<i32> for ClientIntention {
+ type Error = ();
+
+ fn try_from(value: i32) -> Result<Self, Self::Error> {
+ match value {
+ 1 => Ok(ClientIntention::Status),
+ 2 => Ok(ClientIntention::Login),
+ 3 => Ok(ClientIntention::Transfer),
+ _ => Err(()),
+ }
+ }
+}
+
+impl From<ClientIntention> 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<Self, BufReadError> {
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