aboutsummaryrefslogtreecommitdiff
path: root/azalea/src/client_impl/chat.rs
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2025-12-27 22:02:00 -0600
committerGitHub <noreply@github.com>2025-12-27 22:02:00 -0600
commit9513f42e87f64c409cdb2a100500a50e5a713bac (patch)
treebb6aa8b6d50fddf967bcb1f759e023754ea84e49 /azalea/src/client_impl/chat.rs
parent588902ba4a3965982bdd84d92b20c6f7613f3978 (diff)
downloadazalea-drasl-9513f42e87f64c409cdb2a100500a50e5a713bac.tar.xz
Move Client struct to azalea crate (#297)
* move the Client struct out of azalea-client into azalea * actually add client impls in azalea
Diffstat (limited to 'azalea/src/client_impl/chat.rs')
-rw-r--r--azalea/src/client_impl/chat.rs49
1 files changed, 49 insertions, 0 deletions
diff --git a/azalea/src/client_impl/chat.rs b/azalea/src/client_impl/chat.rs
new file mode 100644
index 00000000..3ca98631
--- /dev/null
+++ b/azalea/src/client_impl/chat.rs
@@ -0,0 +1,49 @@
+use azalea_client::chat::{ChatKind, SendChatEvent, handler::SendChatKindEvent};
+
+use crate::Client;
+
+impl Client {
+ /// Send a chat message to the server.
+ ///
+ /// This only sends the chat packet and not the command packet, which means
+ /// on some servers you can use this to send chat messages that start
+ /// with a `/`. The [`Client::chat`] function handles checking whether
+ /// the message is a command and using the proper packet for you, so you
+ /// should use that instead.
+ pub fn write_chat_packet(&self, message: &str) {
+ self.ecs.lock().write_message(SendChatKindEvent {
+ entity: self.entity,
+ content: message.to_owned(),
+ kind: ChatKind::Message,
+ });
+ }
+
+ /// Send a command packet to the server. The `command` argument should not
+ /// include the slash at the front.
+ ///
+ /// You can also just use [`Client::chat`] and start your message with a `/`
+ /// to send a command.
+ pub fn write_command_packet(&self, command: &str) {
+ self.ecs.lock().write_message(SendChatKindEvent {
+ entity: self.entity,
+ content: command.to_owned(),
+ kind: ChatKind::Command,
+ });
+ }
+
+ /// Send a message in chat.
+ ///
+ /// ```rust,no_run
+ /// # use azalea::Client;
+ /// # async fn example(bot: Client) -> anyhow::Result<()> {
+ /// bot.chat("Hello, world!");
+ /// # Ok(())
+ /// # }
+ /// ```
+ pub fn chat(&self, content: impl Into<String>) {
+ self.ecs.lock().write_message(SendChatEvent {
+ entity: self.entity,
+ content: content.into(),
+ });
+ }
+}