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

Помогите [РЕШЕНО] Velocity не пересылает игрока на другой сервер по каналу BungeeCord

Тема в разделе "Разработка плагинов для новичков", создана пользователем PhonkKWC, 15 фев 2023.

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

    PhonkKWC Новичок Пользователь

    Баллы:
    11
    Всем привет! Хотелось бы обратиться с проблемой. У меня есть плагин, он пересылает игрока на другой сервер по нажатию на предмет в инвентаре.

    У меня есть вот такой код:

    Main:
    PHP:
    public void connectServer(Player playerString serverName) {
            
    ByteArrayDataOutput out ByteStreams.newDataOutput();
            
    out.writeUTF("Connect");
            
    out.writeUTF(serverName);
            
    player.sendPluginMessage(this"BungeeCord"out.toByteArray());
        }
    Event:

    PHP:
    if (e.getSlot() == && e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("ItemName")) {
                    
    this.main.connectServer(p"server");
                }
    Тем не менее при нажатии на предмет никаких ошибок, а игрока вовсе никуда не переносит. Перерыл уже пол интернета по этому вопросу, однако, ничего не нашёл.
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Каналы зарегистрированы?
     
  3. Автор темы
    PhonkKWC

    PhonkKWC Новичок Пользователь

    Баллы:
    11
    Конечно!

    PHP:
    getServer().getMessenger().registerOutgoingPluginChannel(this"BungeeCord");
    НО! Ещё хочу обратить внимание, что даже когда я пишу вместо "BungeeCord" просто "bungeecord:main", ситуация не меняется. В velocity.toml подключён сервер, на который мне нужно отправить игрока, а ещё включена функция канала BungeeCord.
     
  4. Автор темы
    PhonkKWC

    PhonkKWC Новичок Пользователь

    Баллы:
    11
    Этот плагин работал на BungeeCord, и перестал работать на Velocity
     
  5. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    1) Другие плагины, использующие BungeeCord messaging, работают корректно? Может в настройках Velocity параметр bungee-plugin-message-channel выключен?
    2) Метод connectServer() точно вызывается?
    3) Можно попробовать зарегистрировать канал для входящих сообщений. Вряд ли поможет, но мало ли
     
  6. Автор темы
    PhonkKWC

    PhonkKWC Новичок Пользователь

    Баллы:
    11
    1) Я написал выше, что функция включена.
    2) Да, метод вызывается, как минимум этот плагин работал на BungeeCord, была бы проблема, то и там бы он не работал.
    3) Хммм, ну не знаю
     
  7. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну, тогда очень странно. Переходим тогда к более сомнительным вопросам.

    1) Сервер с указанным названием точно существует? После добавления сервера в конфиг необходимо перезапустить прокси-сервер.
    2) Возможно в названии сервера некорректный регистр букв? Или, например, русская буква вместо английской?
    3) Ну и на всякий случай спрошу, онлайн ли игрок, от имени которого отправляются данные?
     
  8. Автор темы
    PhonkKWC

    PhonkKWC Новичок Пользователь

    Баллы:
    11
    Да, я даже проверил подключение к серверу через команду /server
    Игрок, который отправляет данные онлайн, я кликаю на предмет даже несколько раз. Сервер прокс не единожды перезапускался
     
  9. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну, если регистрация входящего канала не поможет, то тогда ХЗ. Может другие что предложат
     
  10. Автор темы
    PhonkKWC

    PhonkKWC Новичок Пользователь

    Баллы:
    11
    Вот уже таким образом 5 человек чешут затылок не понимая, почему не работает.
     
  11. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Потому что проблема в самом очевидном месте )
    Другие-то плагины работают
     
  12. Автор темы
    PhonkKWC

    PhonkKWC Новичок Пользователь

    Баллы:
    11
    Если проблема была бы в очевидном месте, логично предположить, что я не стал бы писать сюда. Ибо я изучал и другие темы на форуме, по логике вещей они должны были решить мою проблему, но к сожалению нет.
     
  13. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну можешь залить свой плагин в гит, попробую глянуть
     
  14. Автор темы
    PhonkKWC

    PhonkKWC Новичок Пользователь

    Баллы:
    11
    Ты представляешь? А Я исправил : )
    Оно теперь работает)
     
    Последнее редактирование: 15 фев 2023
  15. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    И в чем было дело?
     
  16. Автор темы
    PhonkKWC

    PhonkKWC Новичок Пользователь

    Баллы:
    11
    Дело было в функции connectServer()
    Точнее то, как она реализована, я дописал немного код и исправил
    ByteArrayOutputStream (он был неверно определён в методе), ну и не хватало входных данных.

    Перезапустил прокси, и теперь всё работает как часы. Но и тебе спасибо за попытку помощи.
     
  17. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    А можно на новую версию метода взглянуть?
     
  18. Автор темы
    PhonkKWC

    PhonkKWC Новичок Пользователь

    Баллы:
    11
    тебе в личку скинуть или сюда?
     
    Последнее редактирование: 15 фев 2023
  19. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Да сюда, чтобы другие тоже видели, если возникнет аналогичная проблема
     
  20. Автор темы
    PhonkKWC

    PhonkKWC Новичок Пользователь

    Баллы:
    11
    Вот обновлённый метод connectServer (я переименовал в SendServer):

    Регистрируем канал BungeeCord в onEnable():

    PHP:
    getServer().getMessenger().registerOutgoingPluginChannel(this"BungeeCord");
    Создаём метод переноса игрока на другой сервер.

    PHP:
    public void sendServer(Player playerString server) {
            
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            
    DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream);
            try {
                
    dataOutputStream.writeUTF("Connect");
                
    dataOutputStream.writeUTF(server);
            } catch (
    IOException e) {
                
    e.printStackTrace();
            }
            
    player.sendPluginMessage(this"BungeeCord"byteArrayOutputStream.toByteArray());
            
    player.sendMessage(ChatColor.GREEN "Connecting to server....");
        }
    Использование:

    PHP:
    sendServer(player"имя сервера из конфига");
     
Статус темы:
Закрыта.

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