diff options
Diffstat (limited to 'azalea-protocol')
| -rwxr-xr-x | azalea-protocol/src/packets/status/clientbound_status_response_packet.rs | 32 |
1 files changed, 23 insertions, 9 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 64ea14f9..efa6080c 100755 --- a/azalea-protocol/src/packets/status/clientbound_status_response_packet.rs +++ b/azalea-protocol/src/packets/status/clientbound_status_response_packet.rs @@ -1,23 +1,23 @@ use azalea_buf::{BufReadError, McBufReadable, McBufWritable}; use azalea_chat::Component; use azalea_protocol_macros::ClientboundStatusPacket; -use serde::Deserialize; -use serde_json::Value; +use serde::{Deserialize, Serialize}; +use serde_json::{value::Serializer, Value}; use std::io::{Cursor, Write}; -#[derive(Clone, Debug, Deserialize)] +#[derive(Clone, Debug, Serialize, Deserialize)] pub struct Version { - pub name: Component, + pub name: String, pub protocol: i32, } -#[derive(Clone, Debug, Deserialize)] +#[derive(Clone, Debug, Serialize, Deserialize)] pub struct SamplePlayer { pub id: String, pub name: String, } -#[derive(Clone, Debug, Deserialize)] +#[derive(Clone, Debug, Serialize, Deserialize)] pub struct Players { pub max: i32, pub online: i32, @@ -26,12 +26,22 @@ pub struct Players { } // the entire packet is just json, which is why it has deserialize -#[derive(Clone, Debug, Deserialize, ClientboundStatusPacket)] +#[derive(Clone, Debug, Serialize, Deserialize, ClientboundStatusPacket)] pub struct ClientboundStatusResponsePacket { pub description: Component, + #[serde(default)] + #[serde(skip_serializing_if = "Option::is_none")] pub favicon: Option<String>, pub players: Players, pub version: Version, + #[serde(default)] + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(rename = "previewsChat")] + pub previews_chat: Option<bool>, + #[serde(default)] + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(rename = "enforcesSecureChat")] + pub enforces_secure_chat: Option<bool>, } impl McBufReadable for ClientboundStatusResponsePacket { @@ -44,7 +54,11 @@ impl McBufReadable for ClientboundStatusResponsePacket { } impl McBufWritable for ClientboundStatusResponsePacket { - fn write_into(&self, _buf: &mut impl Write) -> Result<(), std::io::Error> { - todo!() + fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { + let status_string = ClientboundStatusResponsePacket::serialize(self, Serializer) + .unwrap() + .to_string(); + status_string.write_into(buf)?; + Ok(()) } } |
