1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите [Решено] Деавторизация и направление на другой сервер (BungeeCord)

Тема в разделе "Разработка плагинов для новичков", создана пользователем E_NeLsOn, 8 янв 2019.

Статус темы:
Закрыта.
  1. Автор темы
    E_NeLsOn

    E_NeLsOn Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    E_NeLsOn
    Добрый день!

    На BungeCord'e несколько серверов, команда /logout доступна только в лобби. Делаю плагин, который при вводе этой команды деавторизует игрока и отправит его на сервер авторизации. Есть вот такой код:

    Код:
        @EventHandler(priority = EventPriority.LOWEST)
        public void logout(PlayerCommandPreprocessEvent e) {
            Player sender = e.getPlayer();
            if(e.getMessage().equalsIgnoreCase("/logout")) {
                e.setCancelled(true);
               
                AuthMeApi authmeApi = AuthMeApi.getInstance();
                authmeApi.forceLogout(sender);
               
                ByteArrayDataOutput out = ByteStreams.newDataOutput();
                out.writeUTF("Connect");
                out.writeUTF("auth");
                sender.sendPluginMessage((org.bukkit.plugin.Plugin) this, "BungeeCord", out.toByteArray());
            }
        }
    
    При исполнении игрок не деавторизуется и попадает на сервер авторизации (потом Authme его отправляет обратно). Если убрать часть, которая отправляет на другой сервер, то игрок деавторизуется, но остается на сервере Лобби.

    При чем в консоли пишет:
    [AuthMe] player logged out
     
  2. ВukkitPrоfi

    ВukkitPrоfi Активный участник Пользователь

    Баллы:
    76
    если у тебя authme подключен к mysql, то отправляй mysql-запрос, который делогинет его
     
  3. Автор темы
    E_NeLsOn

    E_NeLsOn Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    E_NeLsOn
    Я сделал проще: позволил authme делать то, что он должен, и просто слушаю LogoutEvent

    Код:
    public void listenlogout(LogoutEvent e) {
            ByteArrayDataOutput out = ByteStreams.newDataOutput();
            out.writeUTF("Connect");
            out.writeUTF("auth");
            e.getPlayer().sendPluginMessage((org.bukkit.plugin.Plugin) this, "BungeeCord", out.toByteArray());
        }
    
     
Статус темы:
Закрыта.

Поделиться этой страницей