Войти или зарегистрироваться

[Решено] Bungee Velocity не выполняется Event

  • Автор темы Автор темы LilClick
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

LilClick

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
Lil_Click
Доброго времени суток, проблема такова, что Велосити просто не выполняет PluginMessageEvent

Эвент зареган.

Velocity:
Код:
 @Subscribe
    public void onServerMessage(PluginMessageEvent e) {
        System.out.println("123455555");
        String tag = e.getIdentifier().getId();
        v.getLogger().info(tag);
        if (!tag.equals("BungeeCord")) return;
        DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(e.getData()));
        String channel = null;
        try {
            channel = inputStream.readUTF();
        } catch (IOException ex) {
            throw new RuntimeException(ex);
        }
        v.getLogger().info(channel);
//            System.out.println(channel);
        switch (channel) {
            case "Burn":
                v.getLogger().info("Ok");
                try {
                    String owner = inputStream.readUTF();
                    String playerNick = inputStream.readUTF();
                    double value = inputStream.readDouble();
                    ByteArrayOutputStream stream = new ByteArrayOutputStream();
                    DataOutputStream outputStream = new DataOutputStream(stream);
                    outputStream.writeUTF(channel);
                    outputStream.writeUTF(owner);
                    outputStream.writeUTF(playerNick);
                    outputStream.writeDouble(value);
                    server.getPlayer(playerNick).get().getCurrentServer().get().getServer().sendPluginMessage(() -> "BungeeCord", stream.toByteArray());
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
                break;
        }
    }


Bukkit:

Код:
    public static void sendRequestWhiteList(String owner, String playerNick, double value) {
        ByteArrayDataOutput out = ByteStreams.newDataOutput();
        out.writeUTF("Burn");
        out.writeUTF(owner);
        out.writeUTF(playerNick);
        out.writeDouble(value);
        getInstance().getServer().sendPluginMessage(getInstance(), "bungeecord:main", out.toByteArray());
        log.info(out + " ");
    }
 
Не смотря на код сразу предупрежу, что на сервере должен быть онлайн, чтобы plugin messaging работал
 
Не смотря на код сразу предупрежу, что на сервере должен быть онлайн, чтобы plugin messaging работал
Я знаю, я просто пытаюсь затестить Велосити т.к. многие говорят что это лучше чем Банжа

Скажем учусь.
 
Попробуй использовать произвольное название канала вместо bungeecord:main. Есть вариант, что этот канал обрабатывает сам Velocity и дальше не пускает сообщения на обработку.

А если используешь канал банжи, то надо пользоваться саб-каналами Forward и ForwardToPlayer:
https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/#forward
https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/#forwardtoplayer
 
Попробуй использовать произвольное название канала вместо bungeecord:main. Есть вариант, что этот канал обрабатывает сам Velocity и дальше не пускает сообщения на обработку.

А если используешь канал банжи, то надо пользоваться саб-каналами Forward и ForwardToPlayer:
https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/#forward
https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/#forwardtoplayer

Привет, спасибо за ответ, нет, не работает к сожалению, я использовал и произвольные названия и каналы, просто не хочет работать сам эвент обработчик, просто эвент не отвечает запросам.
 
Вообщем, решили проблему
Так как Velocity использует bungeecord:main для своих нужд
Dymeth был прав, ток надо было зарегать канал.

Velocity:
Код:
server.getChannelRegistrar().register(MinecraftChannelIdentifier.create("yourplugin", "main"));


Bukkit:
Код:
     Bukkit.getMessenger().registerOutgoingPluginChannel(this, "yourplugin:main");
        Bukkit.getMessenger().registerIncomingPluginChannel(this, "yourplugin:main", this);
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх