diff options
Diffstat (limited to 'azalea-protocol/src/packets/status')
| -rwxr-xr-x | azalea-protocol/src/packets/status/clientbound_status_response_packet.rs | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/azalea-protocol/src/packets/status/clientbound_status_response_packet.rs b/azalea-protocol/src/packets/status/clientbound_status_response_packet.rs index f7a349e2..f8b46b8d 100755 --- a/azalea-protocol/src/packets/status/clientbound_status_response_packet.rs +++ b/azalea-protocol/src/packets/status/clientbound_status_response_packet.rs @@ -1,14 +1,14 @@ -use super::ClientboundStatusPacket; -use azalea_buf::{BufReadError, McBufReadable}; +use azalea_buf::{BufReadError, McBufReadable, McBufWritable}; use azalea_chat::component::Component; +use azalea_protocol_macros::ClientboundStatusPacket; use serde::Deserialize; use serde_json::Value; -use std::io::{Read, Write}; +use std::io::{Cursor, Write}; #[derive(Clone, Debug, Deserialize)] pub struct Version { pub name: Component, - pub protocol: u32, + pub protocol: i32, } #[derive(Clone, Debug, Deserialize)] @@ -26,7 +26,7 @@ pub struct Players { } // the entire packet is just json, which is why it has deserialize -#[derive(Clone, Debug, Deserialize)] +#[derive(Clone, Debug, Deserialize, ClientboundStatusPacket)] pub struct ClientboundStatusResponsePacket { pub description: Component, pub favicon: Option<String>, @@ -34,21 +34,17 @@ pub struct ClientboundStatusResponsePacket { pub version: Version, } -impl ClientboundStatusResponsePacket { - pub fn get(self) -> ClientboundStatusPacket { - ClientboundStatusPacket::StatusResponse(self) - } - - pub fn write(&self, _buf: &mut impl Write) -> Result<(), std::io::Error> { - Ok(()) - } - - pub fn read(buf: &mut impl Read) -> Result<ClientboundStatusPacket, BufReadError> { +impl McBufReadable for ClientboundStatusResponsePacket { + fn read_from(buf: &mut Cursor<&[u8]>) -> Result<ClientboundStatusResponsePacket, BufReadError> { let status_string = String::read_from(buf)?; let status_json: Value = serde_json::from_str(status_string.as_str())?; - let packet = ClientboundStatusResponsePacket::deserialize(status_json)?.get(); + Ok(ClientboundStatusResponsePacket::deserialize(status_json)?) + } +} - Ok(packet) +impl McBufWritable for ClientboundStatusResponsePacket { + fn write_into(&self, _buf: &mut impl Write) -> Result<(), std::io::Error> { + todo!() } } |
