Помогите ConfigurationSection использование рандома

FortiStrike

Активный участник
Пользователь
Баллы
66
Код:
            List<String> configItems = plugin.getConfig().getList("revs");
            int index = new Random().nextInt(configItems.size());
            String rev = configItems.get(index);
            sender.sendMessage(rev.replace("&", "\u00a7"));
            return true;
Мой конфиг:
revs:
IJustFortiLive: 'Здравствуйте'
DimaEnov: "топово"

Меня интересует получение рандом сообщения
Например: 'IJustFortiLive: 'Здравствуйте''
 
config.getList(String) возвращает, что очевидно, список.
Код:
list-1:
  - Привет чувак, как дела?
  - Прощай навсегда
list-2: ['Привет чувак, как дела?', 'Прощай навсегда']
Однако то, что ты хочешь получить - пути к элементам конфига. Для этого тебе пригодится config.getConfigurationSection("revs").getKeys(false), который возвращает сет ключей/путей Set<String>. Из него не получится просто так получить рандомный элемент - придется доходить до нужного тебе элемента через цикл. В итоге решение будет каким-то таким
PHP:
public static <T> T getRandom(Set<T> set) {
    int index = ThreadLocalRandom.current().nextInt(set.size());
    Iterator<T> iter = set.iterator();
    for (int i = 0; i < index; ++i) {
        iter.next();
    }
     return iter.next();
}
и далее ты просто получаешь из конфига результат этого метода.
 
Назад
Верх