@EventHandler(priority = EventPriority.LOW)
    public void playerLogout( final PlayerDisconnectEvent e ) {
        int dcTime = MainConfig.playerDisconnectDelay;
        final BSPlayer p = PlayerManager.getPlayer( e.getPlayer() );
        if ( dcTime > 0 ) {
            BungeeSuite.proxy.getScheduler().schedule( BungeeSuite.instance, new Runnable() {

                @Override
                public void run() {
                    if ( PlayerManager.isPlayerOnline( p.getName() ) && ProxyServer.getInstance().getPlayer( e.getPlayer().getName() ) == null ) {
                        if ( !PlayerManager.kickedPlayers.contains( e.getPlayer() ) ) {
                            if ( MainConfig.broadcastProxyConnectionMessages ) {
                                PlayerManager.sendBroadcast( Messages.PLAYER_DISCONNECT_PROXY.replace( "{player}", p.getDisplayingName() ) );
                            }
                        } else {
                            PlayerManager.kickedPlayers.remove( e.getPlayer() );
                        }
                        PlayerManager.unloadPlayer( e.getPlayer().getName() );
                    }
                }

            }, MainConfig.playerDisconnectDelay, TimeUnit.SECONDS );
        } else {
            if ( PlayerManager.isPlayerOnline( p.getName() ) && ProxyServer.getInstance().getPlayer( e.getPlayer().getName() ) == null ) {
                if ( !PlayerManager.kickedPlayers.contains( e.getPlayer() ) ) {
                    if ( MainConfig.broadcastProxyConnectionMessages ) {
                        PlayerManager.sendBroadcast( Messages.PLAYER_DISCONNECT_PROXY.replace( "{player}", p.getDisplayingName() ) );
                    }
                } else {
                    PlayerManager.kickedPlayers.remove( e.getPlayer() );
                }
                PlayerManager.unloadPlayer( e.getPlayer().getName() );
            }
        }
    }