// Remove player from the list, and notify remaining players public void UnregisterPlayer(Player player) { if (player == null) { log.Log("World.UnregisterPlayer: Trying to unregister a non-existent (null) player.", LogType.Debug); return; } lock ( playerListLock ) { if (players[player.id] == player) { log.Log("{0} left the server.", LogType.UserActivity, player.name); db.ProcessLogout(player); db.Save(); players[player.id] = null; playerCount--; SendToAll(PacketWriter.MakeRemoveEntity(player.id), null); SendToAll(PacketWriter.MakeMessage(Color.Sys + player.name + " left the server."), null); UpdatePlayerList(); } else { log.Log("World.UnregisterPlayer: Trying to unregister a non-existent (unknown id) player.", LogType.Warning); } } }