You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.1 KiB

use valence::{client::misc::ChatMessage, prelude::*};
use crate::MessageQueue;
pub fn player_message_handler(
clients: Query<(&mut Client, &Username)>,
mut message_queue: ResMut<MessageQueue>,
mut messages: EventReader<ChatMessage>,
) {
for message in messages.iter() {
let username = match clients.get_component::<Username>(message.client) {
Ok(username) => username.to_string(),
_ => "Unknown".to_string(),
};
let new_message = format!("[{}] ", username).not_bold().color(Color::GOLD)
+ message.message.to_string().not_bold().color(Color::WHITE);
message_queue.0.push(new_message)
}
}
pub fn flush_message_queue(
mut clients: Query<&mut Client>,
mut message_queue: ResMut<MessageQueue>,
) {
message_queue.0.reverse();
while message_queue.0.len() > 0 {
let message = message_queue.0.pop().unwrap();
tracing::info!("{}", message.clone().to_string());
for mut client in &mut clients {
client.send_message(message.clone());
}
}
}