Не получаю данные из секции в конфиге

Ght

Пользователь
Сообщения
157
Решения
11
В конфиге есть такая строка
YAML:
Payday-perm:
  Student:
    Permission: "payday.student"
    Pay: 400
    every-time: 10
    message: "&a%player_name% &f| Вы получили степендию в размере %payday_pay%"

И после Payday-perm может быть неограниченное кол-во секций. Так вот, сейчас мне нужно получить строку Permission, Pay и message

Java:
    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String arg, @NotNull String[] args) {

        Player p = (Player) sender;
        sender = p.getPlayer();
        ConfigurationSection playerSection = Config.getConfig().getConfigurationSection("Payday-perm");
        for (String key : playerSection.getKeys(false)) {
            ConfigurationSection givemoneyX = playerSection.getConfigurationSection(key);
            String dostup = givemoneyX.getString(key + "Permission");
            String msg = givemoneyX.getString(key + "message");
            double money = givemoneyX.getInt(key + "Pay");
            if (args.length == 0){
                p.sendMessage(ChatColor.RED + "Sorry. Usage /payday get");
                return true;
            }
            if (args[0].equalsIgnoreCase("get")) {
                p.sendMessage("Okay.. Wait one minute");
                try {
                        Economy.add(p.getName(), money);
                        p.sendMessage(ChatColor.GREEN + "You get " + money + "$");
                        p.sendMessage(msg);
                    } catch (UserDoesNotExistException | MaxMoneyException | NoLoanPermittedException e) {
                        throw new RuntimeException(e);
                    }
            }
            }
        return true;
    }
Что я делаю не так?
Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
перед словами ставь '.' например:
String dostup = givemoneyX.getString(key + ".Permission");
Ничего не изменилось, всё так же
Объединено

Ни сообщения "msg" .. Ни правильной суммы.. Должно писать "You get 400.0$" а пишет "0.0"
 
Ахах) Это так не работает
Это именно так и работает. Более того,
Java:
givemoneyX.getString(key + "Permission");
вернет null, поскольку имена полей должны быть разделены точкой или другим установленным сепаратором для путей:
Java:
givemoneyX.getString(key + ".Permission");
В этом конкретном случае даже последний вариант вернет null, ибо givemoneyX – это секция Student, как было сказано ранее.
 
Это именно так и работает. Более того,
Конкретно у меня не работало. Приписка key +, была в самом конце моих тестов и попыток выяснить что и почему
Объединено

Это именно так и работает. Более того,
Java:
givemoneyX.getString(key + "Permission");
вернет null, поскольку имена полей должны быть разделены точкой или другим установленным сепаратором для путей:
Java:
givemoneyX.getString(key + ".Permission");
В этом конкретном случае даже последний вариант вернет null, ибо givemoneyX – это секция Student, как было сказано ранее.
Но в любом случае спасибо, запомню)
 
Последнее редактирование модератором:
Назад
Сверху Снизу