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

Помогите Проблема с записью в YAML

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

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

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Код:
    World w = getWorld();
    String wms = w+"."+getMySection();
    String player = getPlayer();
    config.createSection(w);
    config.createSection(wms);
    config.createSection(wms+"."+player); // Строка 94, где наблюдается ошибка
    config.set(wms+"."+player, "value");
     
  2. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    А что в player? Такое может быть, если в нем есть точка.
    И делайте сразу createSection(w + "." + wms + "." + player);
    А ещё лучше просто set.
     
  3. Автор темы
    Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    И ещё такой вопрос: как разбить время в мс на дни, часы и минуты?
    Является мой вариант правильным?
    Код:
    long lp = Bukkit.getOfflinePlayer(player).getLastPlayed(); // мс
    long em = (long)((System.currentTimeMillis()-lp) / 1000 / 60L); // минуты
    int eh = (int)((em*60)-(int)(em/60)); // часы
    int ed = (int)((em*60*24)-(int)(em/60/24)); // дни

    В player всё o'kay, точек нет.
    Сделать сразу не получится, ибо я выложил не весь код со всеми if/else, а чисто работу с YAML.
    А set ругается, когда не создана секция.
     
  4. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
  5. Автор темы
    Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Это многое прояснило. Буду проверять player на null и != ""
    Код:
                    for (String check : playerlist) { // Строка 68
                        if (check == null) continue;
                        if ((check == "") || !(Bukkit.getOfflinePlayer(check).hasPlayedBefore())) {
                            playerlist.remove(check);
                            continue;
                        }
    
                        if (!act.contains(check)) {
                            players.add(check);
                        }
                    }
    

    Читал, что это возникает когда элемент изменяется уже после итерирования
     
  6. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Да. Нельзя удалять во время итерации. Но можно получать .iterator() и делать iterator.remove()
     
  7. Автор темы
    Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    За всё спасибо
     
Статус темы:
Закрыта.

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