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

Помогите BungeeCord онлайн со всех серверов

Discussion in 'Разработка плагинов для новичков' started by baksovic111, Jun 16, 2015.

Thread Status:
Not open for further replies.
  1. Автор темы
    baksovic111

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

    Trophy Points:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Товарищи, помогите пожалуйста получить онлайн со всех серверов bungee.
    Уже голову себе поломал.. Не как не выходит
    Помогите дописать код..


    public void onEnable() {
    Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");


    ByteArrayOutputStream b = new ByteArrayOutputStream();
    DataOutputStream out = new DataOutputStream(b);

    try {
    out.writeUTF("PlayerCount");
    out.writeUTF("ALL");
    } catch (IOException e) {
    e.printStackTrace();
    }

    Получение онлайна..

    System.out.print("Online: " + Переменная с онлайном игроков);
    }
     
  2. Хостинг MineCraft
    <
  3. ScoutRUS

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

    Trophy Points:
    78
    Имя в Minecraft:
    ScoutRUS
    Чтобы весь онлайн был в ТАБе?
     
  4. Автор темы
    baksovic111

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

    Trophy Points:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Омг. Бля.
    нет причем тут вообще это.
    ты думаешь я такой тупой что не могу редачить данный параметр?
    tab_list: GLOBAL_PING

    Мне нужно получить онлайн.length со всех серверов и дальше уже работать с ним
     
  5. ScoutRUS

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

    Trophy Points:
    78
    Имя в Minecraft:
    ScoutRUS
    Ясн...
     
  6. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
  7. Автор темы
    baksovic111

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

    Trophy Points:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Да ну мля\!. Зачем мне скидывать то что я уже видел и изучал?
    не доходит до меня та инструкция. Не зря ведь суда написал.
    Уже несколько часов пытаюсь сделать эту херню.
    Если знаешь может просто допишешь код?
    Я уверен что там буквально пару строк!
     
  8. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    У вас с чтением или зрением проблемы?

    На странице дана разжеванная документация с готовым кодом, чтобы получать сообщения от Bungee нужен соответствующий метод в том же главном классе

    Code:
      @Override
      public void onPluginMessageReceived(String channel, Player player, byte[] message) {
        if (!channel.equals("BungeeCord")) {
          return;
        }
        ByteArrayDataInput in = ByteStreams.newDataInput(message);
        String subchannel = in.readUTF();
        String server = in.readUTF();
        if(subchannel.equals("PlayerCount") && server.equals("ALL"))
               int players = in.readInt(); // вот и переменная
        }
      }
     
  9. Автор темы
    baksovic111

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

    Trophy Points:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    У меня просто маленько припекает -_-
    И я жестко туплю и просто не до понимаю смысла кода
    Можете еще подсказать кое что
    public void onPluginMessageReceived(String channel, Player player, byte[] message){...}
    Что нужно передавать в сообщении? Что за канал(channel) ?

    Напишите пожалуйста простейший пример как работать с этим методом.
    Я не как не могу понять инструкцию с spigotMC
    Буду очень признателен...
     
  10. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Вам не нужно вызывать этот метод. Этот метод вызывает сервер, когда Bungee пришлёт пакет, ваша задача - считать данные, а точнее просто вставить написанный за вас код в код плагина.
     
  11. Автор темы
    baksovic111

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

    Trophy Points:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Вы написали что сервер вызывает этом метод сам?!
    В каком случае/когда он его вызывает?
     
  12. Автор темы
    baksovic111

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

    Trophy Points:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Эм.. Откуда вы знаете каким я тоном выразил данное сообщение?
    Я лишь в 1 сообщение не много психанул. Дальше я начал обыкновенным образом общение, просто с вопросами
     
  13. Автор темы
    baksovic111

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

    Trophy Points:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Я не собираю сервера. Я лишь активно увлекаюсь кодингом плагинов для серверов.
     
  14. Автор темы
    baksovic111

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

    Trophy Points:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Den_Abr, подскажите пожалуйста
    Написал я следующий код

    @Override
    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("PlayerCount")) {
    ByteArrayOutputStream b = new ByteArrayOutputStream();
    DataOutputStream out = new DataOutputStream(b);

    try {
    out.writeUTF("PlayerCount");
    out.writeUTF("lobby");
    } catch (IOException e) {
    e.printStackTrace();
    }

    int playercount = in.readInt();

    System.out.print("Online: " + playercount);


    }
    }

    В каком случае вызывается или как вызвать данный метод?[DOUBLEPOST=1434469995,1434469915][/DOUBLEPOST]
    В интернете, методом тыка и шастая по другим плагинам[DOUBLEPOST=1434470525][/DOUBLEPOST]И вот по этому до меня ни хера не доходит -_-
     
  15. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Не трогайте метод onPluginMessageReceived, оставьте его в том виде, в котором я его прислал, за исключением строки получения онлайна.

    Чтобы Bungee прислал пакет с данными, нужно его попросить, отправив любому игроку PluginMessage, делая это шедулером например.
    Пример чего тоже дан в документации.

    Code:
    ByteArrayDataOutput out = ByteStreams.newDataOutput();
      out.writeUTF("PlayerCount");
      out.writeUTF("ALL");
    
      Player player = Bukkit.getOnlinePlayers()[0]; // я делаю так
    
      player.sendPluginMessage(this, "BungeeCord", out.toByteArray());
    [DOUBLEPOST=1434471002,1434470758][/DOUBLEPOST]
    На удивление, целый язык я изучил точно таким же способом, но почему то мне в данном случае всё было предельно понятно.
     
  16. Автор темы
    baksovic111

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

    Trophy Points:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Возможно на моменты когда вы узучали java и bukkitAPI у вас было больше опыта.
    Либо я просто дурачек(
    Сегодня мой первый день работы с Bungee и пока что все очень сложно для меня[DOUBLEPOST=1434471670][/DOUBLEPOST]У меня получилась вот такая вот каша..
    http://pastebin.com/Xre38RXT
    Но выводиться только онлайн с 1 сервера.
    Чувствую себя полным дураком(
     
  17. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Теперь у меня гореть начинает. :mad::mad::mad:
    Зачем делать такую ахинею, когда всё делается предельно просто:cry:
     
  18. Автор темы
    baksovic111

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

    Trophy Points:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Решил проблему изменив массив игроков на строчку
    int playercount = in.readInt();[DOUBLEPOST=1434472218,1434472168][/DOUBLEPOST]Ахах)
    Прошу прощения.
    И огромнейшее спасибо за помощь)
     
Thread Status:
Not open for further replies.

Share This Page