From 7039bf7a0c28617bf30f78a08b790b191145b82f Mon Sep 17 00:00:00 2001 From: Ben Wallis Date: Sun, 8 Aug 2021 14:59:11 +0100 Subject: [PATCH] Fixed issue caused by Uid component being removed too soon on logout --- server/src/events/player.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/src/events/player.rs b/server/src/events/player.rs index e7290c33c9..667dd5fe39 100644 --- a/server/src/events/player.rs +++ b/server/src/events/player.rs @@ -18,6 +18,10 @@ pub fn handle_exit_ingame(server: &mut Server, entity: EcsEntity) { span!(_guard, "handle_exit_ingame"); let state = server.state_mut(); + // Sync the player's character data to the database. This must be done before + // removing any components from the entity + let entity = persist_entity(state, entity); + // Create new entity with just `Client`, `Uid`, `Player`, and `...Stream` // components Easier than checking and removing all other known components // Note: If other `ServerEvent`s are referring to this entity they will be @@ -83,9 +87,6 @@ pub fn handle_exit_ingame(server: &mut Server, entity: EcsEntity) { // Erase group component to avoid group restructure when deleting the entity state.ecs().write_storage::().remove(entity); - // Sync the player's character data to the database - let entity = persist_entity(state, entity); - // Delete old entity if let Err(e) = state.delete_entity_recorded(entity) { error!(