private void HandlePlayerDisconnect(Player player, Elements.Events.PlayerQuitEventArgs e)
    {
        foreach (var ped in player.SyncingPeds.ToArray())
        {
            StopSyncingPed(ped);
        }

        player.Disconnected -= HandlePlayerDisconnect;
    }
    private void HandlePlayerDisconnect(Player player, Elements.Events.PlayerQuitEventArgs e)
    {
        foreach (var vehicle in player.SyncingVehicles.ToArray())
        {
            StopSyncingVehicle(vehicle);
        }

        player.Disconnected     -= HandlePlayerDisconnect;
        player.DimensionChanged -= HandlePlayerDimensionChange;
    }
    private void OnPlayerDisconnect(object?sender, Elements.Events.PlayerQuitEventArgs e)
    {
        var player = sender as Player;

        this.logger.LogInformation($"{player!.Name} ({player.Client.Version}) ({player.Client.Serial}) has left the server!");

        var packet = new PlayerQuitPacket(player.Id, (byte)e.Reason);

        var otherPlayers = this.elementCollection
                           .GetByType <Player>(ElementType.Player)
                           .Where(p => p != player);

        packet.SendTo(otherPlayers);
    }