Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Рандомный ключ

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

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

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    Получаю ключи так getConfig().getConfigurationSection("names").getKeys(false));Надо из всего этого получить рандомную строку.
     
  2. Хостинг MineCraft
    <
  3. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Заноси ключи в аррай лист, генерируй рандомное число, бери ключ с числом.
    При генерации рандомного числа ограничивай его размером количеством ключей.
     
    Последнее редактирование: 5 июл 2016
  4. Автор темы
    Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    Спасибо.Я пытался в обычный лист не получилось,подумал что нужны особые заморочки с этим.
     
  5. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Слишком сложнА. Можно же getConfig().getList("names");
     
  6. Автор темы
    Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    plugin. использую из-за того что работаю не в главном классе.А про .getList() ничего не знал.
     
  7. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Там и мапы есть, если что, getMapList.
     
  8. Автор темы
    Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    Можно пример кода,а то у меня не получается скастовать ваш .getList("names"); в ArrayList.
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ну получай сизе и генерируй рандомный индекс.
     
    Последнее редактирование: 5 июл 2016
  10. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    rnd.nextInt(array.size()), скорее, всё-таки :)
     
  11. Автор темы
    Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    Мне нужен код получения строк из getConfig().getList("names"); ,а не пример с рандомом.
     
  12. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Если в конфиге names это лист, то ты его уже получил.
     
  13. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Ты уж определись :)
     
  14. Автор темы
    Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    Понял свою ошибку,вы думаете что names оформлено как массив."names" я использовал в качестве примера.
    Конструкция вот такая:
    Код:
    names:
      blaka:
        count: 20
        enabled: true
      example:
        count: 2
        enabled: false
    [DOUBLEPOST=1467739438,1467739361][/DOUBLEPOST]
    Я предполагал что смогу словить двух зайцев сразу то есть и список вынуть и получить рандомную строку.
     
  15. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Да какая разница.
    Код:
    // config.getConfigurationSection("names").getKeys(false)
    // возвращает множество доступных ключей (Set<String>):
    final Set<String> set = config.getConfigurationSection("names").getKeys(false);
    // Множество не имеет порядка. Конвертируешь в список, чтобы был порядок.
    final List<String> list = new ArrayList<>(set);
    // Количество элементов в множестве или списке:
    final int size = list.size();
    // Случайный элемент от 0 до size - 1:
    final int rnd = new Random().nextInt(size);
    // Сам элемент:
    final String result = list.get(rnd);
    Многие фанатеют по укорачиванию строк:
    Код:
    final Set<String> set = config.getConfigurationSection("names").getKeys(false);
    final String result = new ArrayList<>(set).get(new Random().nextInt(set.size));
    , но на самом деле это даже вредно, потому что код становится менее поддерживаемым.
     
    Последнее редактирование: 6 июл 2016
  16. Автор темы
    Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    Большое тебе спасибо и всем остальным кто помог.
     

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