[SOLVED] InvalidConfigurationException: Top level is not a Map

Discussion in 'Plugin Development' started by SchmidtMathias, May 2, 2012.

Thread Status:
Not open for further replies.
  1. Offline

    SchmidtMathias

    Hi there,

    this is my Problem:
    Code:
    13:31:43 [SCHWERWIEGEND] Cannot load configuration from stream
    org.bukkit.configuration.InvalidConfigurationException: Top level is not a Map.
            at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlCo
    nfiguration.java:57)
            at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguratio
    n.java:143)
            at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(Yam
    lConfiguration.java:206)
            at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:121)
            at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)
            at plugin.Mine4xp.onEnable(Mine4xp.java:18)
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:215)
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:336)
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:381)
            at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:256)
            at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:238
    )
            at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:371)
            at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:358)
            at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:187)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:422)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
    This is the config:
    Code:
    1:10
    2:10
    3:10
    4:10
    12:10
    13:10
    14:500
    15:400
    16:100
    17:30
    21:300
    24:10
    49:700
    56:600
    73:200
    82:20
    86:50
    87:5
    88:10
    89:20
    112:10
    This is the code that should be reading the config:
    Code:
        public void onEnable() {
            Object[] c = getConfig().getKeys(true).toArray();
            boolean run = true;
            for(int i=0;run==true;i++){
                try{
                    rules.put(new Integer(c[i].toString()), getConfig().getInt(c[i].toString()));
                    System.out.println("Mine4xp Rule: "+c[i].toString()+" -> "+getConfig().getInt(c[i].toString()));
                }
                catch(ArrayIndexOutOfBoundsException e){
                    run = false;
                }
            }
    I guess "Object[] c = getConfig().getKeys(true).toArray();" is bullshit, but i have no idea how to do it on another way.

    Thanks for any kind of help.

    Ok I'll push that again, but the situation changed a bit:

    Code:
    InvalidConfigurationException: Top level is not a Map
    keeps throwing even if i do not even load a single value from it.

    Any ideas?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 25, 2016
  2. Offline

    Njol

    I think YAML doesn't allow integers as keys, try to enclose them in quotes (e.g. '1': 10) or use the Material instead (e.g. stone: 10)
     
  3. Offline

    Neodork


    You should make sure the top level has a map appointed: something.number

    example:
    Code:
    numbers:
        1:10
        2:10
        3:10
        4:10
        12:10
        13:10
        14:500
        15:400
        16:100
        17:30
        21:300
        24:10
        49:700
        56:600
        73:200
        82:20
        86:50
        87:5
        88:10
        89:20
        112:10
     
  4. Offline

    Sagacious_Zed Bukkit Docs

    That still does not fix that fact that keys have to be strings which require you to single quote them.
     
  5. Offline

    SchmidtMathias

    Thanks so far. But we are not done yet :)
    I enclosed the Material-ID like '10' and now I get this error:
    Code:
    09:02:20 [SCHWERWIEGEND] Cannot load plugins\Mine4xp\config.yml
    org.bukkit.configuration.InvalidConfigurationException: expected '<document star
    t>', but found Scalar
    in "<string>", line 1, column 4:
        '1':10
          ^
     
  6. Offline

    SchmidtMathias

    I have no clue what I'm doing wrong.
    My config looks like that:
    Code:
    rules:
      '1':10
      '2':10
      '3':10
      '4':10
      '12':10
      '13':10
      '14':500
      '15':400
      '16':100
      '17':30
      '21':300
      '24':10
      '49':700
      '56':600
      '73':200
      '82':20
      '86':50
      '87':5
      '88':10
      '89':20
      '112':10
    And the server keeps on throwing this:
    Code:
    15:03:50 [SCHWERWIEGEND] Cannot load plugins\Mine4xp\config.yml
    org.bukkit.configuration.InvalidConfigurationException: while parsing a block ma
    pping
    in "<string>", line 1, column 1:
        rules:
        ^
    expected <block end>, but found Scalar
    in "<string>", line 2, column 6:
          '1':10
            ^
     
            at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlCo
    nfiguration.java:55)
            at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguratio
    n.java:143)
            at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguratio
    n.java:109)
            at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(Yam
    lConfiguration.java:177)
            at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:117)
            at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)
            at plugin.Mine4xp.onEnable(Mine4xp.java:23)
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:215)
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:336)
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:381)
            at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:256)
            at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:238
    )
            at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:371)
            at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:358)
            at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:187)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:422)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
    Caused by: while parsing a block mapping
    in "<string>", line 1, column 1:
        rules:
        ^
    expected <block end>, but found Scalar
    in "<string>", line 2, column 6:
          '1':10
            ^
     
            at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(Par
    serImpl.java:575)
            at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
            at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
            at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java
    :230)
            at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
            at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:12
    3)
            at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)
     
            at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseCons
    tructor.java:121)
            at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
            at org.yaml.snakeyaml.Yaml.load(Yaml.java:399)
            at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlCo
    nfiguration.java:53)
            ... 16 more
    15:03:50 [SCHWERWIEGEND] Cannot load configuration from stream
    org.bukkit.configuration.InvalidConfigurationException: while parsing a block ma
    pping
    in "<string>", line 1, column 1:
        rules:
        ^
    expected <block end>, but found Scalar
    in "<string>", line 2, column 6:
          '1':10
            ^
     
            at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlCo
    nfiguration.java:55)
            at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguratio
    n.java:143)
            at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(Yam
    lConfiguration.java:206)
            at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:121)
            at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)
            at plugin.Mine4xp.onEnable(Mine4xp.java:23)
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:215)
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:336)
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:381)
            at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:256)
            at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:238
    )
            at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:371)
            at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:358)
            at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:187)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:422)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
    Caused by: while parsing a block mapping
    in "<string>", line 1, column 1:
        rules:
        ^
    expected <block end>, but found Scalar
    in "<string>", line 2, column 6:
          '1':10
            ^
     
            at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(Par
    serImpl.java:575)
            at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
            at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
            at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java
    :230)
            at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
            at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:12
    3)
            at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)
     
            at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseCons
    tructor.java:121)
            at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
            at org.yaml.snakeyaml.Yaml.load(Yaml.java:399)
            at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlCo
    nfiguration.java:53)
            ... 15 more
    Could anyone be so kind a post me a config you are using and the code to read it?

    Thanks.
     
  7. Offline

    Njol

    There has to be a space after every colon it seems, as this config gives me no errors in the YAML online parser:
    Code:
    rules:
      '1': 10
      '2': 10
      '3': 10
      '4': 10
      '12': 10
      '13': 10
      '14': 500
      '15': 400
      '16': 100
      '17': 30
      '21': 300
      '24': 10
      '49': 700
      '56': 600
      '73': 200
      '82': 20
      '86': 50
      '87': 5
      '88': 10
      '89': 20
      '112': 10
     
  8. Offline

    SchmidtMathias

    Wow, I guess that was the error. Thanks to everyone :)
     
Thread Status:
Not open for further replies.

Share This Page