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

Помогите Получить строки из объекта в Yaml конфиге

Тема в разделе "Разработка плагинов для новичков", создана пользователем NyanGuyMF, 30 ноя 2018.

Метки:
Статус темы:
Закрыта.
  1. Автор темы
    NyanGuyMF

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

    Баллы:
    76
    Как получить все строки из подобного конфига и добавить их в массив?
    PHP:
    main:
      
    sub1'Строчка 1'
      
    sub2'Строчка 2'
      
    subN'Строчка N'
    UPD:
    Вариант через
    PHP:
    cfg.getString("main.sub1");
    не подойдет :D
     
    Последнее редактирование: 30 ноя 2018
  2. EnderBro3D

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

    Баллы:
    76
    Имя в Minecraft:
    EnderBro3D
    Код:
    List<String> keys = getConfig().getConfigurationSection("main").getKeys(false);
    
    String[] array = new String[keys.size()];
    for(int i = 0; i < array.length; i++) {
      array[i] = keys.get(i);
    }
    
    //array == [sub1, sub2, subN]
    
    String[] values = new String[keys.size()];
    for(int i = 0; i < values.length; i++) {
      values = getConfig().getString("main." + keys.get(i));
    }
    
    //values == [Строчка 1, Строчка 2, Строчка N]
    
    
     
    Последнее редактирование: 30 ноя 2018
  3. Автор темы
    NyanGuyMF

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

    Баллы:
    76
    Спасибо c:
     
  4. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    PHP:
    FileConfiguration config = ...;

    // Получаем секцию 'main'
    ConfigurationSection mainSection config.getConfigurationSection("main");
    // Перебираем все ключи (false значит что мы берем только ключи 1 уровня, тобишь это будут sub1, sub2....)
    for (String key mainSection.getKeys(false)) {
        
    String str mainSection.getString(key); // Либо config.getString("main." + key);
        // Профит
    }
     
  5. Автор темы
    NyanGuyMF

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

    Баллы:
    76
    Возвращает тип Set, а при преобразовании выдает ошибку вида

    PHP:
    java.util.LinkedHashSet cannot be cast to java.util.List
     
  6. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Пробовал, хрень. Для пользовательских конфигов очень неудобно. Достаточно комплексные конфиги будут очень плохо читаемы из-за строгого форматирования. Yaml вполне приличен, правда мне пришлось немного его кастомизировать под себя.
     
  7. Автор темы
    NyanGuyMF

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

    Баллы:
    76
    Не совсем понимаю, как добавить эти строки в массив. Как получить размер секции, чтобы задать размер массива? Или есть другой способ? :D
     
  8. EnderBro3D

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

    Баллы:
    76
    Имя в Minecraft:
    EnderBro3D
    Давно не юзал Yaml конфиги, думал getKeys возвращает List =)

    Set<String> keys = getConfig().getConfigurationSection("main").getKeys(false);
     
  9. Автор темы
    NyanGuyMF

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

    Баллы:
    76
    Что дальше с сетом делать? :D * не работал с этим типом данных *
     
  10. Автор темы
    NyanGuyMF

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

    Баллы:
    76
    Всем спасибо, решил проблему так:

    PHP:
            ConfigurationSection    helpSection MessagesManager.getConfig().getConfigurationSection("in-clan");
            
    String[]                help        = new String[helpSection.getKeys(false).size()];

            
    int counter 0;
            for (
    String key helpSection.getKeys(false)) {
                
    String str      helpSection.getString(key); // Либо config.getString("main." + key);
                
    help[counter]   = str;
                
    counter++;
            }
     
Статус темы:
Закрыта.

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