aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol/src/packets/login
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2023-12-05 10:59:05 -0600
committerGitHub <noreply@github.com>2023-12-05 10:59:05 -0600
commit7857a014b92e64361ee237ceae7ef1acc185ac46 (patch)
tree5d70ea6b41943493873810e6a03c3483ff90a235 /azalea-protocol/src/packets/login
parentea3e8600126a58f5666d50fbf70dff8209d8979f (diff)
downloadazalea-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-xazalea-protocol/src/packets/login/clientbound_login_disconnect_packet.rs30
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(())
+ }
+}