steel_protocol/packets/game/
c_set_entity_data.rs1use std::io::{Result, Write};
4
5use steel_macros::ClientPacket;
6use steel_registry::{
7 entity_data::{DataValue, write_data_values},
8 packets::play::C_SET_ENTITY_DATA,
9};
10use steel_utils::{codec::VarInt, serial::WriteTo};
11
12#[derive(ClientPacket, Clone, Debug)]
21#[packet_id(Play = C_SET_ENTITY_DATA)]
22pub struct CSetEntityData {
23 pub entity_id: i32,
25 pub packed_items: Vec<DataValue>,
27}
28
29impl CSetEntityData {
30 #[must_use]
32 pub const fn new(entity_id: i32, packed_items: Vec<DataValue>) -> Self {
33 Self {
34 entity_id,
35 packed_items,
36 }
37 }
38}
39
40impl WriteTo for CSetEntityData {
41 fn write(&self, writer: &mut impl Write) -> Result<()> {
42 VarInt(self.entity_id).write(writer)?;
43 let mut buf = Vec::new();
44 write_data_values(&self.packed_items, &mut buf)?;
45 writer.write_all(&buf)
46 }
47}