diff options
| author | mat <github@matdoes.dev> | 2021-12-10 18:03:28 +0000 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2021-12-10 18:03:28 +0000 |
| commit | 0dce5f56ce8c4ec0eb3ee4eb6c09b20956242dfa (patch) | |
| tree | 08c4d0de7f7a14238823f5666b8702329ac6cf52 /minecraft-protocol/src/packets | |
| parent | f9f7e3498e63d6553b67cefc3958c98f009b33a2 (diff) | |
| download | azalea-drasl-0dce5f56ce8c4ec0eb3ee4eb6c09b20956242dfa.tar.xz | |
add formatting to some motds
Diffstat (limited to 'minecraft-protocol/src/packets')
| -rw-r--r-- | minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs b/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs index b61562cf..5099952c 100644 --- a/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs +++ b/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs @@ -1,5 +1,6 @@ use async_trait::async_trait; -use std::hash::Hash; +use minecraft_chat::component::Component; +use serde_json::Value; use tokio::io::BufReader; use crate::{ @@ -7,9 +8,29 @@ use crate::{ packets::{Packet, PacketTrait}, }; -#[derive(Hash, Clone, Debug)] +#[derive(Clone, Debug)] +struct Version { + name: String, + protocol: u32, +} + +#[derive(Clone, Debug)] +struct SamplePlayer { + id: String, + name: String, +} + +#[derive(Clone, Debug)] +struct Players { + max: u32, + online: u32, + sample: Vec<SamplePlayer>, +} + +#[derive(Clone, Debug)] pub struct ClientboundStatusResponsePacket { - status: String, + // version: Version, + description: Component, } #[async_trait] @@ -23,8 +44,16 @@ impl PacketTrait for ClientboundStatusResponsePacket { async fn read<T: tokio::io::AsyncRead + std::marker::Unpin + std::marker::Send>( buf: &mut BufReader<T>, ) -> Result<Packet, String> { - let status = mc_buf::read_utf(buf).await?; + let status_string = mc_buf::read_utf(buf).await?; + let status_json: Value = + serde_json::from_str(status_string.as_str()).expect("Server status isn't valid JSON"); + let description_string: &Value = status_json.get("description").unwrap(); + // this.status = GsonHelper.fromJson(GSON, friendlyByteBuf.readUtf(32767), ServerStatus.class); - Ok(ClientboundStatusResponsePacket { status }.get()) + Ok(ClientboundStatusResponsePacket { + // version: status_json.get("version"), + description: Component::new(&description_string)?, + } + .get()) } } |
