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
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());
|
|
}
|
|
}
|
|
}
|