diff --git a/client/src/lib.rs b/client/src/lib.rs index 80653d132d..04c8a90e18 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -1013,7 +1013,7 @@ impl Client { self.entity = entity_builder.with(uid).build(); } - + /// Format a message for the client (voxygen chat box or chat-cli) pub fn format_message(&self, msg: &comp::ChatMsg, character_name: bool) -> String { let comp::ChatMsg { chat_type, message } = &msg; diff --git a/common/src/cmd.rs b/common/src/cmd.rs index 94ee54c532..c7314e25f9 100644 --- a/common/src/cmd.rs +++ b/common/src/cmd.rs @@ -280,7 +280,11 @@ impl ChatCommand { "Spawn entity with light", Admin, ), - ChatCommand::Motd => cmd(vec![Message], "View the server description", false), + ChatCommand::Motd => cmd( + vec![Message(Optional)], + "View the server description", + NoAdmin, + ), ChatCommand::Object => cmd( vec![Enum("object", OBJECTS.clone(), Required)], "Spawn an object", @@ -307,7 +311,9 @@ impl ChatCommand { "Set player Level", Admin, ), - ChatCommand::SetMotd => cmd(vec![Message], "Set the server description", true), + ChatCommand::SetMotd => { + cmd(vec![Message(Optional)], "Set the server description", Admin) + }, ChatCommand::Spawn => cmd( vec![ Enum("alignment", ALIGNMENTS.clone(), Required), diff --git a/server/src/cmd.rs b/server/src/cmd.rs index 63e37504fd..4bd28d1f6c 100644 --- a/server/src/cmd.rs +++ b/server/src/cmd.rs @@ -185,7 +185,7 @@ fn handle_motd( ) { server.notify_client( client, - ServerMsg::broadcast(server.settings().server_description.clone()), + ChatType::CommandError.server_msg(server.settings().server_description.clone()), ); } @@ -203,14 +203,14 @@ fn handle_set_motd( .edit(|s| s.server_description = msg.clone()); server.notify_client( client, - ServerMsg::private(format!("Server description set to \"{}\"", msg)), + ChatType::CommandError.server_msg(format!("Server description set to \"{}\"", msg)), ); }, Err(_) => { server.settings_mut().edit(|s| s.server_description.clear()); server.notify_client( client, - ServerMsg::private("Removed server description".to_string()), + ChatType::CommandError.server_msg("Removed server description".to_string()), ); }, } diff --git a/server/src/lib.rs b/server/src/lib.rs index 5ba9a71044..288537277a 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -110,9 +110,6 @@ impl Server { .insert(persistence::character::CharacterUpdater::new( settings.persistence_db_dir.clone(), )); - state.ecs_mut().insert(crate::settings::PersistenceDBDir( - settings.persistence_db_dir.clone(), - )); state .ecs_mut() .insert(comp::AdminList(settings.admins.clone())); diff --git a/server/src/state_ext.rs b/server/src/state_ext.rs index 785941c89a..08997341a7 100644 --- a/server/src/state_ext.rs +++ b/server/src/state_ext.rs @@ -46,13 +46,6 @@ pub trait StateExt { /// Performed after loading component data from the database fn update_character_data(&mut self, entity: EcsEntity, components: PersistedComponents); /// Iterates over registered clients and send each `ServerMsg` - fn create_player_character( - &mut self, - entity: EcsEntity, - character_id: i32, - body: comp::Body, - server_settings: &ServerSettings, - ); fn send_chat(&self, msg: comp::ChatMsg); fn notify_registered_clients(&self, msg: ServerMsg); /// Delete an entity, recording the deletion in [`DeletedEntities`] diff --git a/server/src/sys/message.rs b/server/src/sys/message.rs index 54bdc4790a..4c5849f603 100644 --- a/server/src/sys/message.rs +++ b/server/src/sys/message.rs @@ -49,7 +49,6 @@ impl<'a> System<'a> for Sys { WriteStorage<'a, Player>, WriteStorage<'a, Client>, WriteStorage<'a, Controller>, - WriteStorage<'a, SpeechBubble>, Read<'a, ServerSettings>, ); @@ -80,7 +79,6 @@ impl<'a> System<'a> for Sys { mut players, mut clients, mut controllers, - mut speech_bubbles, settings, ): Self::SystemData, ) { @@ -88,13 +86,13 @@ impl<'a> System<'a> for Sys { let mut server_emitter = server_event_bus.emitter(); - let mut new_chat_msgs = Vec::new(); + let mut new_chat_msgs: Vec<(Option, ChatMsg)> = Vec::new(); // Player list to send new players. let player_list = (&uids, &players, stats.maybe(), admins.maybe()) .join() .map(|(uid, player, stats, admin)| { - (*uid, PlayerInfo { + ((*uid).into(), PlayerInfo { is_online: true, is_admin: admin.is_some(), player_alias: player.alias.clone(), @@ -164,7 +162,7 @@ impl<'a> System<'a> for Sys { let vd = view_distance .map(|vd| vd.min(settings.max_view_distance.unwrap_or(vd))); - let player = Player::new(username, None, vd, uuid); + let player = Player::new(username.clone(), None, vd, uuid); let is_admin = admin_list.contains(&username); if !player.is_valid() { @@ -268,21 +266,19 @@ impl<'a> System<'a> for Sys { // Give the player a welcome message if settings.server_description.len() > 0 { - client.notify(ServerMsg::broadcast( - settings.server_description.clone(), - )); + client.notify( + ChatType::Online + .server_msg(settings.server_description.clone()), + ); } // Only send login message if it wasn't already // sent previously if !client.login_msg_sent { - new_chat_msgs.push(( - None, - ServerMsg::broadcast(format!( - "[{}] is now online.", - &player.alias - )), - )); + new_chat_msgs.push((None, ChatMsg { + chat_type: ChatType::Online, + message: format!("[{}] is now online.", &player.alias), + })); client.login_msg_sent = true; } @@ -464,12 +460,13 @@ impl<'a> System<'a> for Sys { // Tell all clients to add them to the player list. for entity in new_players { if let (Some(uid), Some(player)) = (uids.get(entity), players.get(entity)) { - let msg = ServerMsg::PlayerListUpdate(PlayerListUpdate::Add(*uid, PlayerInfo { - player_alias: player.alias.clone(), - is_online: true, - is_admin: admins.get(entity).is_some(), - character: None, // new players will be on character select. - })); + let msg = + ServerMsg::PlayerListUpdate(PlayerListUpdate::Add((*uid).into(), PlayerInfo { + player_alias: player.alias.clone(), + is_online: true, + is_admin: admins.get(entity).is_some(), + character: None, // new players will be on character select. + })); for client in (&mut clients).join().filter(|c| c.is_registered()) { client.notify(msg.clone()) }