Skip to main content

steel_protocol/packets/game/
c_update_advancement.rs

1use steel_macros::{ClientPacket, WriteTo};
2use steel_registry::advancement::AdvancementProgressData;
3use steel_registry::advancement::registry::AdvancementNodeRef;
4use steel_registry::packets::play::C_UPDATE_ADVANCEMENTS;
5use steel_utils::Identifier;
6
7/// Updates the client advancement tree and progress
8#[derive(ClientPacket, WriteTo, Clone, Debug)]
9#[packet_id(Play = C_UPDATE_ADVANCEMENTS)]
10pub struct CUpdateAdvancements {
11    /// The number of ticks to step forward.
12    pub reset: bool,
13    pub added: Vec<AdvancementNodeRef>,
14    pub removed: Vec<Identifier>,
15    pub progress: Vec<AdvancementProgressData>,
16    pub show_advancements: bool,
17}
18
19impl CUpdateAdvancements {
20    /// Creates a new update advancement packet.
21    #[must_use]
22    pub const fn new(
23        reset: bool,
24        added: Vec<AdvancementNodeRef>,
25        progress: Vec<AdvancementProgressData>,
26        removed: Vec<Identifier>,
27        show_advancements: bool,
28    ) -> Self {
29        Self {
30            reset,
31            added,
32            removed,
33            progress,
34            show_advancements,
35        }
36    }
37}