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

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

Discussion in 'Разработка плагинов для новичков' started by Novichock, Jul 5, 2016.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Trophy Points:
    173
    Skype:
    alexandr0116
    Ну получай сизе и генерируй рандомный индекс.
     
    Last edited: Jul 5, 2016
  10. Reality_SC

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

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

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

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

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

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

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

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

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

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

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

    Trophy Points:
    123
    Имя в Minecraft:
    Reality_SC
    Да какая разница.
    Code:
    // 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);
    Многие фанатеют по укорачиванию строк:
    Code:
    final Set<String> set = config.getConfigurationSection("names").getKeys(false);
    final String result = new ArrayList<>(set).get(new Random().nextInt(set.size));
    , но на самом деле это даже вредно, потому что код становится менее поддерживаемым.
     
    Last edited: Jul 6, 2016
  16. Автор темы
    Novichock

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

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

Share This Page