mirror of
https://github.com/mat-1/azalea.git
synced 2025-08-02 06:16:04 +00:00
* 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
42 lines
1.4 KiB
Rust
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)
|
|
}
|
|
}
|