1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите StringList

Тема в разделе "Разработка плагинов для новичков", создана пользователем EugeneRu, 10 дек 2018.

  1. Автор темы
    EugeneRu

    EugeneRu Новичок Пользователь

    Баллы:
    11
    Как отправить игроку несколько строк сообщений которые указаны в конфиге.
    Например вот так:
    Test:
    Test1:
    1 - 'a'
    2 - 'b'
    3 - 'c'
     
  2. Автор темы
    EugeneRu

    EugeneRu Новичок Пользователь

    Баллы:
    11
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    yamlbeans
    Код:
    package Example;
    
    import java.util.Map;
    
    public class Tests {
        public Map<String, String[]> Test;
    }
    Код:
            YamlReader reader = new YamlReader(new FileReader("путь до конфига /config.yml"));
            player.sendMessage(reader.read(Tests.class).Test.get("Test1"));
     
  4. Exception_Prototype

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

    Баллы:
    96
    это чё типо, аналог gson только на yml ?
     
    Последнее редактирование: 10 дек 2018
  5. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Не проще переписать их как
    Код:
    Test:
      test1:
        - "a"
        - "b"
        - "c"
    
    И получать как getConfig().getStringList("Test.test1")?
     
  6. Автор темы
    EugeneRu

    EugeneRu Новичок Пользователь

    Баллы:
    11
    я их так и написал, только они сместились, а getConfig().getStringList("Test.test1") брал почему-то только первое сообщение, и отправлял его. А не все три как надо.
     
  7. Exception_Prototype

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

    Баллы:
    96
    Во первых структура конфига должна быть правильной. YML чувствительный к пробелам.
    Во вторых показывай полный код.
     
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Агась.
     
  9. Автор темы
    EugeneRu

    EugeneRu Новичок Пользователь

    Баллы:
    11
    Ну смотри, я вот использую так https://pastebin.com/xpQb1eYw , и у меня ошибка sendMessage, как это правильно использовать ?
     
  10. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    И не получитчя. sendMessage не принимает лист, только массив.
     
  11. Автор темы
    EugeneRu

    EugeneRu Новичок Пользователь

    Баллы:
    11
    и как тогда сделать ?
     
  12. Exception_Prototype

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

    Баллы:
    96
    Получи список и по одной строке отправляй игроку. А лучше в StringBuilder собери и потом отправляй(builder.toString());
     
  13. Автор темы
    EugeneRu

    EugeneRu Новичок Пользователь

    Баллы:
    11
    Попробую.
     
  14. NyanGuyMF

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

    Баллы:
    76
    Если отправлять по одной строке, то будет небольшая задержка между сообщениями (на большом количетве будет заметно)
    Поэтому, на мой взгляд, проще отправить игроку массив строк:
    PHP:
    // Эта строка преобразует список «stringList» типа String  в массив строк «stringArray»
    String [] stringArray stringList.toArray(new String[stringList.size()]);
     
    Последнее редактирование: 11 дек 2018
  15. Exception_Prototype

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

    Баллы:
    96
    ты думаешь он массив целиком отправляет? Я предложил StringBuilder чтобы собрать все строки в одну и отправить. Т.е. будет отправлен 1 пакет вместо 4.
     
  16. NyanGuyMF

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

    Баллы:
    76
    Разница небольшая ¯\_(ツ)_/¯

    Но до этого он будет ещё собирать стоку :D

    UPD: в массиве сохранится перенос строки, а одна строка на то и одна, чтобы отправляться целиком :D Все прекрасно знаю про \n

    Я не смотрел реализацию метода sendMessage)
     
  17. Автор темы
    EugeneRu

    EugeneRu Новичок Пользователь

    Баллы:
    11
    Сделал так, вроде работает https://pastebin.com/KcQELu9v
     
  18. Nikolai_Faint

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

    Баллы:
    96
    PHP:
    #Конечно тут лучше юзать forEach, но так проще.
    #(Уменьшил твой код)
    for (String list : config.getStringList("test.test1")) {
    #Отправляем строку
    player.sendMessage(list);
    }
     
  19. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Капец вы сложные list.toArray(new String[]{}) . А лучше бы заюзали как нормальные люди yamlbeans - gson.
     
  20. Nikolai_Faint

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

    Баллы:
    96
    А нужно вывести в лист, а не в строку?
     

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