aboutsummaryrefslogtreecommitdiff
path: root/azalea-client/src/chat.rs
diff options
context:
space:
mode:
Diffstat (limited to 'azalea-client/src/chat.rs')
-rwxr-xr-xazalea-client/src/chat.rs25
1 files changed, 22 insertions, 3 deletions
diff --git a/azalea-client/src/chat.rs b/azalea-client/src/chat.rs
index 5eadc0c3..24ccbfd5 100755
--- a/azalea-client/src/chat.rs
+++ b/azalea-client/src/chat.rs
@@ -1,13 +1,32 @@
-use std::time::{SystemTime, UNIX_EPOCH};
+//! Implementations of chat-related features.
+use crate::Client;
+use azalea_chat::Component;
use azalea_crypto::MessageSignature;
use azalea_protocol::packets::game::{
- clientbound_player_chat_packet::LastSeenMessagesUpdate,
+ clientbound_player_chat_packet::{ClientboundPlayerChatPacket, LastSeenMessagesUpdate},
+ clientbound_system_chat_packet::ClientboundSystemChatPacket,
serverbound_chat_command_packet::ServerboundChatCommandPacket,
serverbound_chat_packet::ServerboundChatPacket,
};
+use std::time::{SystemTime, UNIX_EPOCH};
-use crate::Client;
+/// A chat packet, either a system message or a chat message.
+#[derive(Debug, Clone)]
+pub enum ChatPacket {
+ System(ClientboundSystemChatPacket),
+ Player(Box<ClientboundPlayerChatPacket>),
+}
+
+impl ChatPacket {
+ /// Get the message shown in chat for this packet.
+ pub fn message(&self) -> Component {
+ match self {
+ ChatPacket::System(p) => p.content.clone(),
+ ChatPacket::Player(p) => p.message(false),
+ }
+ }
+}
impl Client {
/// Sends chat message to the server. This only sends the chat packet and