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

Помогите Количество ключей в конфиге

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

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

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

    Баллы:
    173
    Skype:
    shkurovs
    Здравствуйте. Помогите, как узнать количество ключей в определенной ветке? Например:

    Код:
    mykey:
        blaablabas:
          '0':
            //text
          '1':
            //text
    Как узнать количество этих ключей в ветке blablablas?
     
    Последнее редактирование: 15 янв 2014
  2. Хостинг MineCraft
    <
  3. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    ПриветОтЛайки нравится это.
  4. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    getConfig().getConfigurationSection("mykey.blaablabas").getKeys(false).size()
     
    serega6531 нравится это.
  5. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Спасибо!
     
  6. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Не благодари не опробовав
     
  7. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Сейчас попробую. И ещё я так понимаю getKeys(false) - получение параметов в виде списка?
     
  8. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    getKeys(false) возвращает сет ключей выбранной конфигурации
     
    serega6531 нравится это.
  9. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Могу я сделать так:
    Код:
    String[] arenasnames = (String[]) (arenasfile.getConfigurationSection("arenas").getKeys(false)).toArray();
    ?
     
  10. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Выглядит страшно, но может быть будет работать
     
  11. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    А как по вашему правильно?[DOUBLEPOST=1389797000,1389796824][/DOUBLEPOST]Неа.
    java.lang.ClassCastException: java.lang.Object; cannot be cast to java.lang.String;[DOUBLEPOST=1389797466][/DOUBLEPOST]А если так:

    Код:
    String[] arenasnames = new String[]{};
    Iterator<String> iterator = arenasfile.getConfigurationSection("arenas").getKeys(false).iterator();
    while (iterator.hasNext()) {
             arenasnames[arenasnames.length] = iterator.next().toString();
    }
    ?
     
  12. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Что конкретно нужно сделать со списком ключей?
     
  13. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Записать имя каждого из них в свою ячейку массива.
     
  14. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Уже сделал вроде.[DOUBLEPOST=1389798284,1389798230][/DOUBLEPOST]
    Нет, Set. Но уже сделал через List.[DOUBLEPOST=1389799199][/DOUBLEPOST]Сейчас была странная ситуация. Выполнил одну строку и сервер завис, а потом выскочила ошибка Heap size. Теперь её нет. Даже не знаю, в чем дело.
     
  15. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Добавь в батник -XX:PermSize=128m -XX:MaxPermSize=256m, не будет ошибки.
    С плагином не связана, это из за релоадов
     
    Последнее редактирование: 15 янв 2014
  16. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    И снова. В чем дело?
    Вот строка:
    Код:
    names.add(Settings.arenamanager.getArena(names.get(i)).getName());
    Ошибка:

    Код:
    [19:19:47 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'ac' in plugin AssasinsCreed v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:196) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:542) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerConnection.java:929) [craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:811) [craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146) [craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655) [craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
    Caused by: java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Arrays.java:2219) ~[?:1.7.0_45]
        at java.util.ArrayList.grow(ArrayList.java:242) ~[?:1.7.0_45]
        at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:216) ~[?:1.7.0_45]
        at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:208) ~[?:1.7.0_45]
        at java.util.ArrayList.add(ArrayList.java:440) ~[?:1.7.0_45]
        at ru.serega6531.AssasinsCreed.GameCommandExecutor.onCommand(GameCommandExecutor.java:32) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.1-b2969jnks]
        ... 13 more
    
    [DOUBLEPOST=1389799402,1389799321][/DOUBLEPOST]
    Связана, все равно она есть.[DOUBLEPOST=1389799580][/DOUBLEPOST]Понял. Команда в цикле постоянно выполняется. Вот сам цикл:

    Код:
    for (int i = 0; i < names.size(); i++){
          names.add(Settings.arenamanager.getArena(names.get(i)).getName());
    }
    Причем в names только одна запись.[DOUBLEPOST=1389800167][/DOUBLEPOST]Но names.size() все время увеличивается.
    Так это же я его увеличиваю...[DOUBLEPOST=1389800751][/DOUBLEPOST]Ну, это я запутался. Спасибо всем.
     
    fromgate и Den_Abr нравится это.
  17. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    Разъясню пару моментов:
    getKeys -- получение имён всех полей данной секции, если true, то и всех подсекций.
    Мы не можем привести Object[] к String[]. Нужно использовать:
    Код:
    String[] arenasnames = arenasfile.getConfigurationSection("arenas").getKeys(false).toArray(new String[0]);
     
    Den_Abr и serega6531 нравится это.
  18. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    А если я хочу получить ключи из корня конфига?[DOUBLEPOST=1389965504,1389963139][/DOUBLEPOST]Уже понял
     
Статус темы:
Закрыта.

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