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

Помогите Как получить List<List<String>> из конфига Bukkit?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Нейн, 5 фев 2024.

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

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

    Баллы:
    66
    Имя в Minecraft:
    AmokDev
    Всем доброго времени суток!

    Нужно получить List<List<String>> из config.yml, но ide жалуется на
    Код:
    cfg.getStringList("myListListString");
    
    Можно ли как-то получить такой объект, исходя из функционала спигота или нужно делать свои костыли?
     
  2. alexandrage

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

    Баллы:
    173
    getObject("myListListString", List.class);
     
  3. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Как такая структура должна выглядеть в конфиге?

    Это ровно то же самое, что и section.getStringList(), только getStringList() ещё и с нормальным дженериком. Это не решает задачу ТСа
     
  4. alexandrage

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

    Баллы:
    173
    В его случае все равно с ненормальным, у него тип другой, тип токина увы у ведроапи нет.
     
  5. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Листа листов нет не в бакките, его нет в YML. Тут нужно не лист читать, а мапу. А ещё лучше использовать ConfigurationSerializable
     
  6. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Есть же. Даже подумал, может у меня шиза, так что проверил на всякий - работает.
    Код:
    test:
      - - hello
        - world
      - - welcome
        - back
    Код:
    List<?> list = getConfig().getList("test", List.of());
    getLogger().info(list.toString());
    for (var obj : list) {
        if (obj instanceof List<?> innerList) {
            for (var innerObj : innerList) {
                getLogger().info(innerObj.toString());
            }
        } else {
            getLogger().info("Unknown type " + obj);
        }
    }
    Результат:
    Код:
    [14:12:24 INFO]: [TestingStuff] [[hello, world], [welcome, back]]
    [14:12:24 INFO]: [TestingStuff] hello
    [14:12:24 INFO]: [TestingStuff] world
    [14:12:24 INFO]: [TestingStuff] welcome
    [14:12:24 INFO]: [TestingStuff] back
    Yaml в целом очень гибкий в этом плане, можно и конфиг в список засунуть если постараться.
     
  7. alexandrage

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

    Баллы:
    173
    Да оно то работает, индивиду не нравиться варнинг в иде)
     
  8. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Жесть, ну и изврат. Но работает, да.

    Мне не нравится getObject("myListListString", List.class), потому что им не прочитать лист листов. imDaniX сделал тоже самое, но с getList("test", List.of())
    Вот это уже работает.

    Хотя я удивлён, что YML и такое позволяет. Но выглядит ужасно
     
  9. alexandrage

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

    Баллы:
    173
    И почему?
     
  10. Автор темы
    Нейн

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

    Баллы:
    66
    Имя в Minecraft:
    AmokDev
    В моем конфиге это выглядит как
    [
    ["Name", 1],
    ["Name", 228]
    ]

    Делать для такого бд (such as sqlite) не хочется, ибо в жабе это не очень удобная практика. (там игроков от силы 10 будет)
     
  11. Автор темы
    Нейн

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

    Баллы:
    66
    Имя в Minecraft:
    AmokDev

    Спасибо, это действительно сработало!

    ТЕМА ЗАКРЫТА
     
Статус темы:
Закрыта.

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