Pumpkin/crates/pumpkin-protocol/src/java/client/play/delete_chat.rs
2026-08-20 22:39:16 +02:00

44 lines
1.1 KiB
Rust

use pumpkin_data::packet::clientbound::play::DELETE_CHAT;
use pumpkin_macros::java_packet;
use crate::{ClientPacket, codec::var_int::VarInt, ser::NetworkWriteExt};
use pumpkin_util::version::JavaMinecraftVersion;
#[java_packet(DELETE_CHAT)]
pub struct CDeleteChat<'a> {
pub signature_id: VarInt,
pub signature: Option<&'a [u8]>,
}
impl<'a> CDeleteChat<'a> {
#[must_use]
pub const fn from_id(signature_id: VarInt) -> Self {
Self {
signature_id,
signature: None,
}
}
#[must_use]
pub const fn from_signature(signature: &'a [u8]) -> Self {
Self {
signature_id: VarInt(0),
signature: Some(signature),
}
}
}
impl ClientPacket for CDeleteChat<'_> {
fn write_packet_data(
&self,
mut write: impl std::io::Write,
_version: &JavaMinecraftVersion,
) -> Result<(), crate::ser::WritingError> {
write.write_var_int(&self.signature_id)?;
if let Some(signature) = self.signature {
write.write_slice(signature)?;
}
Ok(())
}
}