Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Отправка собщений в канал обмена сообщениями плагинов (или как то так)

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

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

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    ~1 месяц назад лазил по форумам, и узнал об этом самом канале "обмена сообщениями плагинов". За перевод я не ручаюсь, но вроде называется он именно так (Plugin Messaging Channel).

    Узнал если быть точнее не о канале, а о его единственном для меня на тот момент нужном применение - отправка игроков между серверами связанными банжой. И теперь мне захотелось понять, что он из себя представляет, если использовать его на все 100%.

    Начал гуглить. Нашёл соответствующую тему на спиготе. Почитал, вроде все понятно, но кроме одного... Так как в байтах я вообще не разбираюсь, я по-факту не понимал, что и как происходит. В связи с чем возникла проблема. Я вообще никак не понимаю, как получить информацию? Отправлять байты например с сообщением - одно дело. Другое - принимать байты с данными например о игроках.

    UPD: Так, я начал читать более внимательнее. Заметил, как детектить, но все же.

    Код:
    ByteArrayDataOutput out = ByteStreams.newDataOutput();
    
    out.writeUTF("GetServers");
    
    p.sendPluginMessage(Main.getPlugin(Main.class), "BungeeCord", out.toByteArray());

    Код:
    public void onPluginMessageReceived(String channel, Player player, byte[] message) {
        if(!channel.equals("BungeeCord")) {
            return;
        }
    
        ByteArrayDataInput in = ByteStreams.newDataInput(message);
        String subchannel = in.readUTF();
    
        if(subchannel.equals("GetServers")) {
            String serverList = in.readUTF();
            System.out.println("IN = " + serverList);
        }
    }
    Фидбэка - ноль. (PluginMessageListener имплементирован!)
     
    Последнее редактирование: 8 май 2017
  2. Хостинг MineCraft
    <
  3. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Регистрация есть?
     
  4. Автор темы
    iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Да. В на onEnable регистрирую отправку, получение сообщений.

    Код:
    Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
    Bukkit.getMessenger().registerIncomingPluginChannel(this, "BungeeCord", new PluginMessageListener());
     
    Последнее редактирование: 9 май 2017
  5. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    По сути, должно работать, если игрок подключен к серверу через BungeeCord
     
  6. Автор темы
    iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Все работает, проблему решил >:)

    Тему закрываю.
     
Статус темы:
Закрыта.

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