basalt-mc-protocol 0.2.1

Minecraft packet definitions and version-aware packet registry
Documentation
//! Play state — chat packets.
//!
//! Auto-generated by `cargo xt codegen` from minecraft-data.
//! Do not edit manually — changes will be overwritten.

use basalt_derive::{Decode, Encode, EncodedSize, packet};
use basalt_types::{NbtCompound, Uuid};

// -- Serverbound packets --

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x05)]
pub struct ServerboundPlayChatCommand {
    pub command: String,
}

/// Inline data structure used by [`ServerboundPlayChatCommandSigned`].
#[derive(Debug, Clone, Default, PartialEq, Encode, Decode, EncodedSize)]
pub struct ServerboundPlayChatCommandSignedArgumentsignatures {
    pub argument_name: String,
    #[field(length = "varint")]
    pub signature: Vec<u8>,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x06)]
pub struct ServerboundPlayChatCommandSigned {
    pub command: String,
    pub timestamp: i64,
    pub salt: i64,
    #[field(length = "varint")]
    pub argument_signatures: Vec<ServerboundPlayChatCommandSignedArgumentsignatures>,
    #[field(varint)]
    pub message_count: i32,
    #[field(length = "varint")]
    pub acknowledged: Vec<u8>,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x07)]
pub struct ServerboundPlayChatMessage {
    pub message: String,
    pub timestamp: i64,
    pub salt: i64,
    #[field(optional)]
    pub signature: Option<Vec<u8>>,
    #[field(varint)]
    pub offset: i32,
    #[field(length = "varint")]
    pub acknowledged: Vec<u8>,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x08)]
pub struct ServerboundPlayChatSessionUpdate {
    pub session_uuid: Uuid,
    pub expire_time: i64,
    #[field(length = "varint")]
    pub public_key: Vec<u8>,
    #[field(length = "varint")]
    pub signature: Vec<u8>,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x04)]
pub struct ServerboundPlayMessageAcknowledgement {
    #[field(varint)]
    pub count: i32,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x0d)]
pub struct ServerboundPlayTabComplete {
    #[field(varint)]
    pub transaction_id: i32,
    pub text: String,
}

// -- Clientbound packets --

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x51)]
pub struct ClientboundPlayActionBar {
    pub text: NbtCompound,
}

/// Switch enum used by [`ClientboundPlayBossBar`].
#[derive(Debug, Clone, PartialEq, Encode, Decode, EncodedSize)]
pub enum ClientboundPlayBossBarAction {
    #[variant(id = 0)]
    Variant0 {
        title: NbtCompound,
        health: f32,
        #[field(varint)]
        color: i32,
        #[field(varint)]
        dividers: i32,
        flags: u8,
    },
    #[variant(id = 2)]
    Variant2 { health: f32 },
    #[variant(id = 3)]
    Variant3 { title: NbtCompound },
    #[variant(id = 4)]
    Variant4 {
        #[field(varint)]
        color: i32,
        #[field(varint)]
        dividers: i32,
    },
    #[variant(id = 5)]
    Variant5 { flags: u8 },
}

impl Default for ClientboundPlayBossBarAction {
    fn default() -> Self {
        Self::Variant0 {
            title: Default::default(),
            health: Default::default(),
            color: Default::default(),
            dividers: Default::default(),
            flags: Default::default(),
        }
    }
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x0a)]
pub struct ClientboundPlayBossBar {
    pub entity_uuid: Uuid,
    pub action: ClientboundPlayBossBarAction,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x18)]
pub struct ClientboundPlayChatSuggestions {
    #[field(varint)]
    pub action: i32,
    #[field(length = "varint")]
    pub entries: Vec<String>,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x0f)]
pub struct ClientboundPlayClearTitles {
    pub reset: bool,
}

/// Inline data structure used by [`ClientboundPlayDeclareCommands`].
#[derive(Debug, Clone, Default, PartialEq, Encode, Decode, EncodedSize)]
pub struct ClientboundPlayDeclareCommandsCommandNode {
    pub flags: u8,
    #[field(length = "varint", element = "varint")]
    pub children: Vec<i32>,
    #[field(rest)]
    pub remaining: Vec<u8>,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x11)]
pub struct ClientboundPlayDeclareCommands {
    #[field(length = "varint")]
    pub nodes: Vec<ClientboundPlayDeclareCommandsCommandNode>,
    #[field(varint)]
    pub root_index: i32,
}

/// Switch enum used by [`ClientboundPlayHideMessage`].
#[derive(Debug, Clone, PartialEq, Encode, Decode, EncodedSize)]
pub enum ClientboundPlayHideMessageId {
    #[variant(id = 0)]
    Variant0 {
        #[field(length = "varint")]
        signature: Vec<u8>,
    },
}

impl Default for ClientboundPlayHideMessageId {
    fn default() -> Self {
        Self::Variant0 {
            signature: Default::default(),
        }
    }
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x1c)]
pub struct ClientboundPlayHideMessage {
    pub id: ClientboundPlayHideMessageId,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x74)]
pub struct ClientboundPlayPlayerlistHeader {
    pub header: NbtCompound,
    pub footer: NbtCompound,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x1e)]
pub struct ClientboundPlayProfilelessChat {
    pub message: NbtCompound,
    pub r#type: Vec<u8>,
    pub name: NbtCompound,
    #[field(optional)]
    pub target: Option<NbtCompound>,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x49)]
pub struct ClientboundPlayResetScore {
    pub entity_name: String,
    #[field(optional)]
    pub objective_name: Option<String>,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x5c)]
pub struct ClientboundPlayScoreboardDisplayObjective {
    #[field(varint)]
    pub position: i32,
    pub name: String,
}

/// Switch enum used by [`ClientboundPlayScoreboardObjective`].
#[derive(Debug, Clone, PartialEq, Encode, Decode, EncodedSize)]
pub enum ClientboundPlayScoreboardObjectiveAction {
    #[variant(id = 0)]
    Variant0 {
        display_text: NbtCompound,
        #[field(varint)]
        r#type: i32,
        #[field(optional)]
        number_format: Option<Vec<u8>>,
        styling: Vec<u8>,
    },
    #[variant(id = 2)]
    Variant2 {
        display_text: NbtCompound,
        #[field(varint)]
        r#type: i32,
        #[field(optional)]
        number_format: Option<Vec<u8>>,
        styling: Vec<u8>,
    },
}

impl Default for ClientboundPlayScoreboardObjectiveAction {
    fn default() -> Self {
        Self::Variant0 {
            display_text: Default::default(),
            r#type: Default::default(),
            number_format: Default::default(),
            styling: Default::default(),
        }
    }
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x64)]
pub struct ClientboundPlayScoreboardObjective {
    pub name: String,
    pub action: ClientboundPlayScoreboardObjectiveAction,
}

/// Switch enum used by [`ClientboundPlayScoreboardScore`].
#[derive(Debug, Clone, PartialEq, Encode, Decode, EncodedSize)]
pub enum ClientboundPlayScoreboardScoreNumberFormat {
    #[variant(id = 1)]
    Variant1 { styling: NbtCompound },
    #[variant(id = 2)]
    Variant2 { styling: NbtCompound },
}

impl Default for ClientboundPlayScoreboardScoreNumberFormat {
    fn default() -> Self {
        Self::Variant1 {
            styling: Default::default(),
        }
    }
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x68)]
pub struct ClientboundPlayScoreboardScore {
    pub item_name: String,
    pub score_name: String,
    #[field(varint)]
    pub value: i32,
    #[field(optional)]
    pub display_name: Option<NbtCompound>,
    pub number_format: ClientboundPlayScoreboardScoreNumberFormat,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x6a)]
pub struct ClientboundPlaySetTitleSubtitle {
    pub text: NbtCompound,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x6c)]
pub struct ClientboundPlaySetTitleText {
    pub text: NbtCompound,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x6d)]
pub struct ClientboundPlaySetTitleTime {
    pub fade_in: i32,
    pub stay: i32,
    pub fade_out: i32,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x73)]
pub struct ClientboundPlaySystemChat {
    pub content: NbtCompound,
    pub is_action_bar: bool,
}

/// Inline data structure used by [`ClientboundPlayTabComplete`].
#[derive(Debug, Clone, Default, PartialEq, Encode, Decode, EncodedSize)]
pub struct ClientboundPlayTabCompleteMatches {
    pub r#match: String,
    #[field(optional)]
    pub tooltip: Option<NbtCompound>,
}

#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x10)]
pub struct ClientboundPlayTabComplete {
    #[field(varint)]
    pub transaction_id: i32,
    #[field(varint)]
    pub start: i32,
    #[field(varint)]
    pub length: i32,
    #[field(length = "varint")]
    pub matches: Vec<ClientboundPlayTabCompleteMatches>,
}

/// Switch enum used by [`ClientboundPlayTeams`].
#[derive(Debug, Clone, PartialEq, Encode, Decode, EncodedSize)]
pub enum ClientboundPlayTeamsMode {
    #[variant(id = 0)]
    Variant0 {
        name: NbtCompound,
        friendly_fire: i8,
        name_tag_visibility: String,
        collision_rule: String,
        #[field(varint)]
        formatting: i32,
        prefix: NbtCompound,
        suffix: NbtCompound,
        #[field(length = "varint")]
        players: Vec<String>,
    },
    #[variant(id = 2)]
    Variant2 {
        name: NbtCompound,
        friendly_fire: i8,
        name_tag_visibility: String,
        collision_rule: String,
        #[field(varint)]
        formatting: i32,
        prefix: NbtCompound,
        suffix: NbtCompound,
    },
    #[variant(id = 3)]
    Variant3 {
        #[field(length = "varint")]
        players: Vec<String>,
    },
    #[variant(id = 4)]
    Variant4 {
        #[field(length = "varint")]
        players: Vec<String>,
    },
}

impl Default for ClientboundPlayTeamsMode {
    fn default() -> Self {
        Self::Variant0 {
            name: Default::default(),
            friendly_fire: Default::default(),
            name_tag_visibility: Default::default(),
            collision_rule: Default::default(),
            formatting: Default::default(),
            prefix: Default::default(),
            suffix: Default::default(),
            players: Default::default(),
        }
    }
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x67)]
pub struct ClientboundPlayTeams {
    pub team: String,
    pub mode: ClientboundPlayTeamsMode,
}