1
2
Fork 0
mirror of https://github.com/mat-1/azalea.git synced 2025-08-02 06:16:04 +00:00
azalea/azalea-protocol/src/packets/game/c_disguised_chat.rs
mat 08958c2278
Refactor azalea-protocol (#190)
* start updating to 1.21.4

* fix block codegen and stop using block data from burger

* rename packet related modules and structs to be simpler

* ItemSlot -> ItemStack for more consistency with mojmap

* .get() -> .into_packet()

* simplify declare_state_packets by removing packet ids

* rename read_from and write_into to azalea_read and azalea_write

* rename McBufReadable and McBufWritable to AzaleaRead and AzaleaWrite

* McBuf -> AzBuf

* remove most uses of into_variant

* update codegen and use resourcelocation names for packets

* implement #[limit(i)] attribute for AzBuf derive macro

* fixes for 1.21.4

* fix examples

* update some physics code and fix ChatType

* remove unused imports in codegen

* re-add some things to migrate.py and update +mc version numbers automatically

* downgrade to 1.21.3 lol
2024-11-27 19:31:40 -06:00

42 lines
1.4 KiB
Rust

use azalea_buf::AzBuf;
use azalea_chat::{
translatable_component::{StringOrComponent, TranslatableComponent},
FormattedText,
};
use azalea_protocol_macros::ClientboundGamePacket;
use super::c_player_chat::ChatTypeBound;
// A disguised chat packet is basically the same as a normal
// [`ClientboundPlayerChat`], except that it doesn't have any of the chat
// signing things. Vanilla servers use this when messages are sent from the
// console.
#[derive(Clone, Debug, AzBuf, ClientboundGamePacket, PartialEq)]
pub struct ClientboundDisguisedChat {
pub message: FormattedText,
pub chat_type: ChatTypeBound,
}
impl ClientboundDisguisedChat {
/// Get the full message, including the sender part.
#[must_use]
pub fn message(&self) -> FormattedText {
let sender = self.chat_type.name.clone();
let content = self.message.clone();
let target = self.chat_type.target_name.clone();
let translation_key = self.chat_type.chat_type.chat_translation_key();
let mut args = vec![
StringOrComponent::FormattedText(sender),
StringOrComponent::FormattedText(content),
];
if let Some(target) = target {
args.push(StringOrComponent::FormattedText(target));
}
let component = TranslatableComponent::new(translation_key.to_string(), args);
FormattedText::Translatable(component)
}
}