diff options
Diffstat (limited to 'azalea-client/src/chat.rs')
| -rwxr-xr-x | azalea-client/src/chat.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/azalea-client/src/chat.rs b/azalea-client/src/chat.rs index f805c20f..255e0898 100755 --- a/azalea-client/src/chat.rs +++ b/azalea-client/src/chat.rs @@ -2,6 +2,7 @@ use azalea_chat::FormattedText; use azalea_protocol::packets::game::{ + clientbound_disguised_chat_packet::ClientboundMaskedChatPacket, clientbound_player_chat_packet::ClientboundPlayerChatPacket, clientbound_system_chat_packet::ClientboundSystemChatPacket, serverbound_chat_command_packet::ServerboundChatCommandPacket, @@ -30,6 +31,7 @@ use crate::{ pub enum ChatPacket { System(Arc<ClientboundSystemChatPacket>), Player(Arc<ClientboundPlayerChatPacket>), + Masked(Arc<ClientboundMaskedChatPacket>), } macro_rules! regex { @@ -45,6 +47,7 @@ impl ChatPacket { match self { ChatPacket::System(p) => p.content.clone(), ChatPacket::Player(p) => p.message(), + ChatPacket::Masked(p) => p.message.clone(), } } @@ -74,6 +77,16 @@ impl ChatPacket { (None, message) } + ChatPacket::Masked(p) => { + let message = p.message.to_string(); + // It's a system message, so we'll have to match the content + // with regex + if let Some(m) = regex!("^<([a-zA-Z_0-9]{1,16})> (.+)$").captures(&message) { + return (Some(m[1].to_string()), m[2].to_string()); + } + + (None, message) + } } } @@ -91,6 +104,7 @@ impl ChatPacket { match self { ChatPacket::System(_) => None, ChatPacket::Player(m) => Some(m.sender), + ChatPacket::Masked(_) => None, } } |
