Войти или зарегистрироваться

Помогите Не читает данные с конфига

  • Автор темы Автор темы _Corbi_
  • Дата начала Дата начала

_Corbi_

Ньюби
Баллы
1
Здравия желаю!
Возникла проблема, точнее проблем возникло много, но конкретно разобраться не могу с одной.
Делаю плагин на четырёхуровнего скупщика для своего сервера. Идея в том, что бы в конфиг добавлять предмет по шаблону:
CARROT:
lvl:
1
name:
'Морковка'
lore:
'Осталось сдать ещё '
count:
1000
​
Название на русском, описание (В конце прибавляется коллво предметов, которое осталось сдать), уровень, на котором должен быть предмет и коллво предметов, которое нужно сдать что бы закрыть предмет.
Этот пул предметов должен быть записан в ArrayList, я сделал отдельный класс, каждый объект которого хранит своё капс имя, не капс имя(ID предмета в майне), уровень, на котором должен появляться предмет, коллво предметов, которое нужно сдать и коллво уже сданных предметов. Ещё есть 5 статических ArrayList'ов : 1 для хранения всего пула предметов, и ещё 4 для хранения предметов каждого из уровней.
Так вот. при заходе игрока создаётся файлик в который должны записываться 10 рандомных предметов из листа, в котором хранятся предметы 1 уровня (их там штук 18-20), но он кидает ошибку о том, что в параметр метода random.nextInt() должно быть записано число больше нуля, то бишь лист оказывается пустой.
вот проект на гитхабе:
https://github.com/Corbonat/BebroQuests/tree/main/src/main/java/corbihack
вот ссылка на проект в виде rar архива:
https://drive.google.com/file/d/1wQicAxZPaswrBCHHqbcZqyYy6AlEgoI5/view?usp=sharing
Класс в котором выдаёт ошибку: Items
 
я вывел блок кода
PHP:
        FileConfiguration config = BebroQuests.getInstants().config;
        for (String str : config.getStringList("items")) {
            Items item = new Items(str);
            if (item.lvl == 1) lvl1.add(item);
            else if (item.lvl == 2) lvl2.add(item);
            else if (item.lvl == 3) lvl3.add(item);
            else if (item.lvl == 4) lvl4.add(item);

            values.add(item);

            System.out.println(item.minecraftId + " " + item.lvl + " added");
        }
из статичного блока в отдельный метод, который вызывается в onEnable(), теперь при запуске вылетает ошибка null
в строке for (String str : config.getStringList("items")) {
То бишь конфиг не может найти блок "items", но я не понимаю почему

вот файл конфига:
PHP:
items:
  CARROT:
    lvl:
      1
    name:
      'Морковка'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  POTATO:
    lvl:
      1
    name:
      'Картошка'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  KELP:
    lvl:
      1
    name:
      'Ламинария'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  BEETROOT_SEEDS:
    lvl:
      1
    name:
      'Семена свёклы'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  WHEAT:
    lvl:
      1
    name:
      'Пшеница'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  WHEAT_SEEDS:
    lvl:
      1
    name:
      'Семена пшеницы'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  SWEET_BERRIES:
    lvl:
      1
    name:
      'Ягоды'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  COCOA_BEANS:
    lvl:
      1
    name:
      'Какао Бобы'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  BEETROOT:
    lvl:
      1
    name:
      'Свекла'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  OAK_LEAVES:
    lvl:
      1
    name:
      'Дубовая листва'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  MELON:
    lvl:
      1
    name:
      'Арбуз'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  SUGAR_CANE:
    lvl:
      1
    name:
      'Тростник'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  PUMPKIN:
    lvl:
      1
    name:
      'Тыква'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  NETHER_WART:
    lvl:
      1
    name:
      'Адские наросты'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  APPLE:
    lvl:
      1
    name:
      'Яблоко'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  PUMPKIN_PIE:
    lvl:
      1
    name:
      'Тыквенный пирог'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  POPPY:
    lvl:
      1
    name:
      'Мак'
    lore:
      'Осталось сдать ещё '
    count:
      1000
  SUNFLOWER:
    lvl:
      1
    name:
      'Подсолнух'
    lore:
      'Осталось сдать ещё '
    count:
      1000
 
Попробовал вместо getStringList поставить getList, та же ошибка,
Код:
[16:20:23 ERROR]: Error occurred while enabling BebroQuests v1.0-SNAPSHOT (Is it up to date?)
java.lang.NullPointerException: null
        at corbihack.Items.loadItems(Items.java:24) ~[?:?]
        at corbihack.BebroQuests.onEnable(BebroQuests.java:25) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:518) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:432) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:599) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:298) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1074) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_351]
 
В общем проблему решил, я очень глупо сделал обёртку для конфига и использовал неправильный метод (getList() вместо getConfigurationSelection("path").getKeys(false))
 
Назад
Верх