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

  • Автор темы Автор темы Bars
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Bars

Старожил
Девелопер
Пользователь
Баллы
173
  1. [WARNING] [MyPlugin] Task #17420 for MyPlugin v1.0 generated an exception
  2. java.lang.IllegalArgumentException: Cannot create section at empty path
  3. at org.apache.commons.lang.Validate.notEmpty(Validate.java:321)
  4. at org.bukkit.configuration.MemorySection.createSection(MemorySection.java:230)
  5. at org.bukkit.configuration.MemorySection.createSection(MemorySection.java:257)
  6. at ru.onlymc.MyPlugin.CheckTask.run(CheckTask.java:94)
  7. at org.bukkit.craftbukkit.v1_6_R3.scheduler.CraftTask.run(CraftTask.java:58)
  8. at org.bukkit.craftbukkit.v1_6_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345)
  9. at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:822)
  10. at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:330)
  11. at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:777)
  12. at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:659)
  13. at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
Java:
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");
 
А что в player? Такое может быть, если в нем есть точка.
И делайте сразу createSection(w + "." + wms + "." + player);
А ещё лучше просто set.
 
И ещё такой вопрос: как разбить время в мс на дни, часы и минуты?
Является мой вариант правильным?
Java:
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? Такое может быть, если в нем есть точка.
И делайте сразу createSection(w + "." + wms + "." + player);
А ещё лучше просто set.
В player всё o'kay, точек нет.
Сделать сразу не получится, ибо я выложил не весь код со всеми if/else, а чисто работу с YAML.
А set ругается, когда не создана секция.
 
http://g.zeos.in/?q=java parse time millisecond
Смотри в отладчике, что передается в последнюю createSection.
Это многое прояснило. Буду проверять player на null и != ""
  1. java.util.ConcurrentModificationException
  2. at java.util.HashMap$HashIterator.nextEntry(HashMap.java:926)
  3. at java.util.HashMap$KeyIterator.next(HashMap.java:960)
  4. at ru.onlymc.MyPlugin.CheckTask.run(CheckTask.java:68)
  5. at org.bukkit.craftbukkit.v1_6_R3.scheduler.CraftTask.run(CraftTask.java:58)
  6. at org.bukkit.craftbukkit.v1_6_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345)
  7. at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:822)
  8. at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:330)
  9. at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:777)
  10. at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:659)
  11. at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
Java:
                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);
                    }
                }

Читал, что это возникает когда элемент изменяется уже после итерирования
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх