Skip to main content

steel_protocol/packets/config/
c_registry_data.rs

1use simdnbt::owned::NbtTag;
2use steel_macros::{ClientPacket, WriteTo};
3use steel_registry::packets::config::C_REGISTRY_DATA;
4use steel_utils::Identifier;
5
6#[derive(Clone, Debug, WriteTo)]
7pub struct RegistryEntry {
8    pub id: Identifier,
9    pub data: Option<NbtTag>,
10}
11
12#[derive(ClientPacket, WriteTo, Clone, Debug)]
13#[packet_id(Config = C_REGISTRY_DATA)]
14pub struct CRegistryData {
15    pub registry: Identifier,
16    #[write(as = Prefixed(VarInt))]
17    pub entries: Vec<RegistryEntry>,
18}
19
20impl CRegistryData {
21    #[must_use]
22    pub const fn new(registry: Identifier, entries: Vec<RegistryEntry>) -> Self {
23        Self { registry, entries }
24    }
25}
26
27impl RegistryEntry {
28    #[must_use]
29    pub const fn new(id: Identifier, data: Option<NbtTag>) -> Self {
30        Self { id, data }
31    }
32}