aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol/src/packets/game/clientbound_set_objective_packet.rs
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/game/clientbound_set_objective_packet.rs
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/game/clientbound_set_objective_packet.rs')
-rwxr-xr-xazalea-protocol/src/packets/game/clientbound_set_objective_packet.rs89
1 files changed, 56 insertions, 33 deletions
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<Self, BufReadError> {
- 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<Self, azalea_buf::BufReadError> {
+ 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,
-}