From 7857a014b92e64361ee237ceae7ef1acc185ac46 Mon Sep 17 00:00:00 2001 From: mat <27899617+mat-1@users.noreply.github.com> Date: Tue, 5 Dec 2023 10:59:05 -0600 Subject: 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 --- .../game/clientbound_set_objective_packet.rs | 89 ++++++++++++++-------- 1 file changed, 56 insertions(+), 33 deletions(-) (limited to 'azalea-protocol/src/packets/game/clientbound_set_objective_packet.rs') diff --git a/azalea-protocol/src/packets/game/clientbound_set_objective_packet.rs b/azalea-protocol/src/packets/game/clientbound_set_objective_packet.rs index 3809b5b6..a9481ad1 100755 --- a/azalea-protocol/src/packets/game/clientbound_set_objective_packet.rs +++ b/azalea-protocol/src/packets/game/clientbound_set_objective_packet.rs @@ -1,59 +1,82 @@ -use azalea_buf::{BufReadError, McBuf, McBufReadable, McBufWritable}; -use azalea_chat::FormattedText; -use azalea_protocol_macros::ClientboundGamePacket; use std::io::{Cursor, Write}; +use azalea_buf::{McBuf, McBufReadable, McBufWritable}; +use azalea_chat::{numbers::NumberFormat, FormattedText}; +use azalea_core::objectives::ObjectiveCriteria; +use azalea_protocol_macros::ClientboundGamePacket; + #[derive(Clone, Debug, McBuf, ClientboundGamePacket)] pub struct ClientboundSetObjectivePacket { pub objective_name: String, pub method: Method, } +#[derive(Clone, Copy, Debug, McBuf)] +pub enum MethodKind { + Add, + Remove, + Change, +} + #[derive(Clone, Debug)] pub enum Method { - Add(DisplayInfo), + Add { + display_name: FormattedText, + render_type: ObjectiveCriteria, + number_format: NumberFormat, + }, Remove, - Change(DisplayInfo), + Change { + display_name: FormattedText, + render_type: ObjectiveCriteria, + number_format: NumberFormat, + }, } impl McBufReadable for Method { - fn read_from(buf: &mut Cursor<&[u8]>) -> Result { - Ok(match u8::read_from(buf)? { - 0 => Method::Add(DisplayInfo::read_from(buf)?), - 1 => Method::Remove, - 2 => Method::Change(DisplayInfo::read_from(buf)?), - id => return Err(BufReadError::UnexpectedEnumVariant { id: i32::from(id) }), - }) + fn read_from(buf: &mut Cursor<&[u8]>) -> Result { + let kind = MethodKind::read_from(buf)?; + match kind { + MethodKind::Add => Ok(Method::Add { + display_name: FormattedText::read_from(buf)?, + render_type: ObjectiveCriteria::read_from(buf)?, + number_format: NumberFormat::read_from(buf)?, + }), + MethodKind::Remove => Ok(Method::Remove), + MethodKind::Change => Ok(Method::Change { + display_name: FormattedText::read_from(buf)?, + render_type: ObjectiveCriteria::read_from(buf)?, + number_format: NumberFormat::read_from(buf)?, + }), + } } } impl McBufWritable for Method { fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { match self { - Method::Add(info) => { - 0u8.write_into(buf)?; - info.write_into(buf)?; - } - Method::Remove => { - 1u8.write_into(buf)?; + Method::Add { + display_name, + render_type, + number_format, + } => { + MethodKind::Add.write_into(buf)?; + display_name.write_into(buf)?; + render_type.write_into(buf)?; + number_format.write_into(buf)?; } - Method::Change(info) => { - 2u8.write_into(buf)?; - info.write_into(buf)?; + Method::Remove => MethodKind::Remove.write_into(buf)?, + Method::Change { + display_name, + render_type, + number_format, + } => { + MethodKind::Change.write_into(buf)?; + display_name.write_into(buf)?; + render_type.write_into(buf)?; + number_format.write_into(buf)?; } } Ok(()) } } - -#[derive(McBuf, Clone, Debug)] -pub struct DisplayInfo { - pub display_name: FormattedText, - pub render_type: RenderType, -} - -#[derive(McBuf, Copy, Clone, Debug)] -pub enum RenderType { - Integer, - Hearts, -} -- cgit v1.2.3