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

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем FortiStrike, 5 июн 2021.

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

    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: 'Здравствуйте''
     
  2. imDaniX

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

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

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