diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2023-12-05 10:59:05 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-05 10:59:05 -0600 |
| commit | 7857a014b92e64361ee237ceae7ef1acc185ac46 (patch) | |
| tree | 5d70ea6b41943493873810e6a03c3483ff90a235 /azalea-protocol/src/packets/login | |
| parent | ea3e8600126a58f5666d50fbf70dff8209d8979f (diff) | |
| download | azalea-drasl-7857a014b92e64361ee237ceae7ef1acc185ac46.tar.xz | |
1.20.3 (#110)
* 23w40a
* 23w41a
* 23w42a
* 23w43a
* 23w44a
* serialize FormattedText as nbt in network
* use azalea-nbt/serde in azalea-chat
* 23w45a
* fix 23w45a to compile
* handle Object in codegen
* 1.20.3-pre2
* remove unused clientbound_resource_pack_packet.rs
* merge main and make azalea-chat use simdnbt
* 1.20.3-rc1
* fix tests
* use simdnbt 0.3
* fix ServerboundSetJigsawBlockPacket
* 1.20.3
Diffstat (limited to 'azalea-protocol/src/packets/login')
| -rwxr-xr-x | azalea-protocol/src/packets/login/clientbound_login_disconnect_packet.rs | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/azalea-protocol/src/packets/login/clientbound_login_disconnect_packet.rs b/azalea-protocol/src/packets/login/clientbound_login_disconnect_packet.rs index 31cd370d..416ec63b 100755 --- a/azalea-protocol/src/packets/login/clientbound_login_disconnect_packet.rs +++ b/azalea-protocol/src/packets/login/clientbound_login_disconnect_packet.rs @@ -1,8 +1,34 @@ -use azalea_buf::McBuf; +use std::io::{Cursor, Write}; + +use azalea_buf::{BufReadError, McBufReadable, McBufWritable}; use azalea_chat::FormattedText; use azalea_protocol_macros::ClientboundLoginPacket; +use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, McBuf, ClientboundLoginPacket)] +#[derive(Clone, Debug, ClientboundLoginPacket)] pub struct ClientboundLoginDisconnectPacket { pub reason: FormattedText, } + +impl McBufReadable for ClientboundLoginDisconnectPacket { + fn read_from( + buf: &mut Cursor<&[u8]>, + ) -> Result<ClientboundLoginDisconnectPacket, BufReadError> { + let disconnect_string = String::read_from(buf)?; + let disconnect_json: serde_json::Value = serde_json::from_str(disconnect_string.as_str())?; + + Ok(ClientboundLoginDisconnectPacket { + reason: FormattedText::deserialize(disconnect_json)?, + }) + } +} + +impl McBufWritable for ClientboundLoginDisconnectPacket { + fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { + let status_string = FormattedText::serialize(&self.reason, serde_json::value::Serializer) + .unwrap() + .to_string(); + status_string.write_into(buf)?; + Ok(()) + } +} |
