Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Статус
Закрыто для дальнейших ответов.

PhonkKWC

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

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

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

Event:

PHP:
if (e.getSlot() == 6 && e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("ItemName")) {
                this.main.connectServer(p, "server");
            }

Тем не менее при нажатии на предмет никаких ошибок, а игрока вовсе никуда не переносит. Перерыл уже пол интернета по этому вопросу, однако, ничего не нашёл.
 
Каналы зарегистрированы?
 
Каналы зарегистрированы?
Конечно!

PHP:
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");

НО! Ещё хочу обратить внимание, что даже когда я пишу вместо "BungeeCord" просто "bungeecord:main", ситуация не меняется. В velocity.toml подключён сервер, на который мне нужно отправить игрока, а ещё включена функция канала BungeeCord.
 
Этот плагин работал на BungeeCord, и перестал работать на Velocity
 
1) Другие плагины, использующие BungeeCord messaging, работают корректно? Может в настройках Velocity параметр bungee-plugin-message-channel выключен?
2) Метод connectServer() точно вызывается?
3) Можно попробовать зарегистрировать канал для входящих сообщений. Вряд ли поможет, но мало ли
 
1) Другие плагины, использующие BungeeCord messaging, работают корректно? Может в настройках Velocity параметр bungee-plugin-message-channel выключен?
2) Метод connectServer() точно вызывается?
3) Можно попробовать зарегистрировать канал для входящих сообщений. Вряд ли поможет, но мало ли

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

1) Сервер с указанным названием точно существует? После добавления сервера в конфиг необходимо перезапустить прокси-сервер.
2) Возможно в названии сервера некорректный регистр букв? Или, например, русская буква вместо английской?
3) Ну и на всякий случай спрошу, онлайн ли игрок, от имени которого отправляются данные?
 
Ну, тогда очень странно. Переходим тогда к более очевидным вопросам.
Сервер с указанным названием точно существует? После добавления сервера в конфиг необходимо перезапустить прокси-сервер.
Ну и на всякий случай спрошу, онлайн ли игрок, от имени которого отправляются данные?
Да, я даже проверил подключение к серверу через команду /server
Игрок, который отправляет данные онлайн, я кликаю на предмет даже несколько раз. Сервер прокс не единожды перезапускался
 
Да, я даже проверил подключение к серверу через команду /server
Игрок, который отправляет данные онлайн, я кликаю на предмет даже несколько раз. Сервер прокс не единожды перезапускался
Ну, если регистрация входящего канала не поможет, то тогда ХЗ. Может другие что предложат
 
Потому что проблема в самом очевидном месте )
Другие-то плагины работают
Если проблема была бы в очевидном месте, логично предположить, что я не стал бы писать сюда. Ибо я изучал и другие темы на форуме, по логике вещей они должны были решить мою проблему, но к сожалению нет.
 
Если проблема была бы в очевидном месте, логично предположить, что я не стал бы писать сюда. Ибо я изучал и другие темы на форуме, по логике вещей они должны были решить мою проблему, но к сожалению нет.
Ну можешь залить свой плагин в гит, попробую глянуть
 
И в чем было дело?
Дело было в функции connectServer()
Точнее то, как она реализована, я дописал немного код и исправил
ByteArrayOutputStream (он был неверно определён в методе), ну и не хватало входных данных.

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

Перезапустил прокси, и теперь всё работает как часы. Но и тебе спасибо за попытку помощи.
А можно на новую версию метода взглянуть?
 
Да сюда, чтобы другие тоже видели, если возникнет аналогичная проблема

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

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

PHP:
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");

Создаём метод переноса игрока на другой сервер.

PHP:
public void sendServer(Player player, String 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, "имя сервера из конфига");
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх