Помогите Bukkit/BungeeCord Plugin Messaging Channel forward

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

Limon-mine

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Limon_MineDel
У меня есть 2 моих плагина, 1 на BungeeCord другой на Spigot. Мне надо делать 2 запроса со Spigot где должна возращаться строка. Например есть типо запрос от Spigot с названием ismuted, ник и получаем значение в String, и запрос mutestring, ник и возращается тоже строка. Как это сделать с помощью
Bukkit/BungeeCord Plugin Messaging Channel forward?
 
Я знаю, но там про Forward и ForwardToplayer не понятно написано
По этим каналам можно "с одной стороны" отправить произвольный массив байт и принять его "с другой стороны".
Для формирования массива байт используется DataOutputStream.
Собственно, все необходимые данные и записываются в этот буфер.
По ссылке выше показан пример передачи строки "Some kind of data here" и числа 123.
Для передачи данных требуется онлайн-игрок (как, собственно, и для всех других каналов)
 
По этим каналам можно "с одной стороны" отправить произвольный массив байт и принять его "с другой стороны".
Для формирования массива байт используется DataOutputStream.
Собственно, все необходимые данные и записываются в этот буфер.
По ссылке выше показан пример передачи строки "Some kind of data here" и числа 123.
Для передачи данных требуется онлайн-игрок (как, собственно, и для всех других каналов)
А как мне получать ник который был там написан? и на Screenshot.png указывается ник и данные, но мне не надо указывать ник откуда я отправляю данные, а на
Screenshot (1).png не указывается ник, а мне надо получать данные.
 

Вложения

  • Screenshot.png
    Screenshot.png
    28,3 КБ · Просмотры: 12
  • Screenshot (1).png
    Screenshot (1).png
    25 КБ · Просмотры: 9
Мне надо на Bungee что б если приход запрос с ником и названием запроса, я отправлял данные . А на spigot я отправлял запрос с ником и назв запроса и мне приходили данные
 
задачка не решена
 
Не понял твоего вопроса.
Что запишешь - то и прочитаешь.
Можно и ник записать строкой.

А как мне получать ник который был там написан
Где "там"?

мне не надо указывать ник откуда я отправляю данные
Данные игрока можно отправлять через любого игрока, который онлайн. Если сервер пуст - отправить данные ты не сможешь.

мне надо получать данные.
Ну, с одной стороны отправляй, с другой получай. В чём конкретно проблема?

Мне надо на Bungee что б если приход запрос с ником и названием запроса, я отправлял данные . А на spigot я отправлял запрос с ником и назв запроса и мне приходили данные
Ещё раз - в чём конкретно проблема?
Регистрируешь канал на банже и на спиготе, и для входящего, и для исходящего трафика.
На банже при получении запроса отправляешь обратно на спигот ответ с нужной тебе информацией.

Если совсем туго - скопируй пример, запусти, проверь, что всё работает. Затем уже меняй под себя, под свои задачи
 
Не понял твоего вопроса.
Что запишешь - то и прочитаешь.
Можно и ник записать строкой.


Где "там"?


Данные игрока можно отправлять через любого игрока, который онлайн. Если сервер пуст - отправить данные ты не сможешь.


Ну, с одной стороны отправляй, с другой получай. В чём конкретно проблема?


Ещё раз - в чём конкретно проблема?
Регистрируешь канал на банже и на спиготе, и для входящего, и для исходящего трафика.
На банже при получении запроса отправляешь обратно на спигот ответ с нужной тебе информацией.

Если совсем туго - скопируй пример, запусти, проверь, что всё работает. Затем уже меняй под себя, под свои задачи
Мне надо так. Я отправляю запрос со Spigot с ником игрока, Bungee мне возращает замучен ли игрок или нет, Если замучен то мне надо получить строку со Spigot, мне bungee возращает строку
 
Мне надо так. Я отправляю запрос со Spigot с ником игрока, Bungee мне возращает замучен ли игрок или нет, Если замучен то мне надо получить строку
Попробуй использовать другой дизайн.
Если ты пишешь систему мутов, напиши ее прямо на банжикорде и прямо на нем блокируй чат, сразу отпадет необходимость как то синхронизировать эти данные между серверами
 
Попробуй использовать другой дизайн.
Если ты пишешь систему мутов, напиши ее прямо на банжикорде и прямо на нем блокируй чат, сразу отпадет необходимость как то синхронизировать эти данные между серверами
Я пишу на чат плагин и на баны, а локальный чат обходит евент и пишет по другому в чат с помощью получение игроков которые вблизи и отправки каждому сообщение.
 
А если через MySQL сделать то я смогу смотреть замучен или нет, но как мне туда закинуть очень большую строку с русскими буквами в MySQL?
 
Последнее редактирование:
А если через MySQL сделать то я смогу смотреть замучен или нет, но как мне туда закинуть очень большую строку с русскими буквами в MySQL?
LONGTEXT используется для больших строк. MySQL нужен чтобы это всё хранить.

BungeeCord:
Код:
    @Override
    public void onEnable() {
        this.getProxy().registerChannel("ban:handler");
    }

Listener:
Код:
@EventHandler
public void on(PluginMessageEvent e) {
    if (!e.getTag().equalsIgnoreCase("ban:handler")) return;
    ByteArrayDataInput in = ByteStreams.newDataInput(e.getData());
    String subChannel = in.readUTF();
    if (e.getReceiver() instanceof ProxiedPlayer) {
        ProxiedPlayer player = (ProxiedPlayer) e.getReceiver();
        if (subChannel.startsWith("check player mute")) {
            //отсылаешь ответ
            return;
        }
    }
}
    }
Spigot:
Код:
this.getServer().getMessenger().registerIncomingPluginChannel(this, "ban:handler", new MessageListener());
this.getServer().getMessenger().registerOutgoingPluginChannel(this, "ban:handler");
MessageListener:
Код:
public class MessageListener implements PluginMessageListener {
    @Override
    public void onPluginMessageReceived(@NotNull String channel, @NotNull Player player, @NotNull byte[] bytes) {
        if (!channel.equals("ban:handler")) return;
        ByteArrayDataInput in = ByteStreams.newDataInput(bytes);
        String subChannel = in.readUTF();
        if (subchannel.startsWith("ответ банжи")) {
        //действие
      }
    }
}
Отправить сообщение:
Код:
Спигот:
ByteArrayDataOutput out = ByteStreams.newDataOutput();
        out.writeUTF("check player mute");
        this.player.sendPluginMessage(main.getInstance(), "ban:handler", out.toByteArray());
Банжа: 
//то же самое начало
this.player.getServer().getInfo().sendData("ban:handler", out.toByteArray());
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх