Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Статус
Закрыто для дальнейших ответов.

serega6531

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

Код:
mykey:
    blaablabas:
      '0':
        //text
      '1':
        //text
Как узнать количество этих ключей в ветке blablablas?
 
Последнее редактирование:
getConfig().getConfigurationSection("mykey.blaablabas").getKeys(false).size()
 
Выглядит страшно, но может быть будет работать
 
Выглядит страшно, но может быть будет работать
А как по вашему правильно?
Неа.
java.lang.ClassCastException: java.lang.Object; cannot be cast to java.lang.String;
А если так:

Код:
String[] arenasnames = new String[]{};
Iterator<String> iterator = arenasfile.getConfigurationSection("arenas").getKeys(false).iterator();
while (iterator.hasNext()) {
         arenasnames[arenasnames.length] = iterator.next().toString();
}
?
 
А как по вашему правильно?
Неа.
java.lang.ClassCastException: java.lang.Object; cannot be cast to java.lang.String;
А если так:

Код:
String[] arenasnames = new String[]{};
Iterator<String> iterator = arenasfile.getConfigurationSection("arenas").getKeys(false).iterator();
while (iterator.hasNext()) {
         arenasnames[arenasnames.length] = iterator.next().toString();
}
?
Что конкретно нужно сделать со списком ключей?
 
А чем List не устраивает? Они же в виде него выдаются
 
Уже сделал вроде.
А чем List не устраивает? Они же в виде него выдаются
Нет, Set. Но уже сделал через List.
Сейчас была странная ситуация. Выполнил одну строку и сервер завис, а потом выскочила ошибка Heap size. Теперь её нет. Даже не знаю, в чем дело.
 
Уже сделал вроде.

Нет, Set. Но уже сделал через List.
Сейчас была странная ситуация. Выполнил одну строку и сервер завис, а потом выскочила ошибка Heap size. Теперь её нет. Даже не знаю, в чем дело.
Добавь в батник -XX:PermSize=128m -XX:MaxPermSize=256m, не будет ошибки.
С плагином не связана, это из за релоадов
 
Последнее редактирование:
И снова. В чем дело?
Вот строка:
Код:
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

Добавь в батник -XX:PermSize=128m -XX:MaxPermSize=256m, не будет ошибки.
С плагином не связана, это из за релоадов
Связана, все равно она есть.
Понял. Команда в цикле постоянно выполняется. Вот сам цикл:

Код:
for (int i = 0; i < names.size(); i++){
      names.add(Settings.arenamanager.getArena(names.get(i)).getName());
}
Причем в names только одна запись.
Но names.size() все время увеличивается.
Так это же я его увеличиваю...
Ну, это я запутался. Спасибо всем.
 
Разъясню пару моментов:
Сейчас попробую. И ещё я так понимаю getKeys(false) - получение параметов в виде списка?
getKeys -- получение имён всех полей данной секции, если true, то и всех подсекций.
Могу я сделать так:
Код:
String[] arenasnames = (String[]) (arenasfile.getConfigurationSection("arenas").getKeys(false)).toArray();
?
Мы не можем привести Object[] к String[]. Нужно использовать:
Java:
String[] arenasnames = arenasfile.getConfigurationSection("arenas").getKeys(false).toArray(new String[0]);
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх