Silly problem writing to a config file

Discussion in 'Plugin Development' started by Caedus, Jan 30, 2016.

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

    Caedus

    Hi, to start off, i'm sure that this is a simple error and i'm either missing something very obvious or doing something very stupid, i've looked into the config documentation and for the life of me i'm not entirely sure what i'm doing wrong, configs are perhaps the thing I struggle with the most and i'd like to be able to use them reliably without running into issues in the future, so hopefully this is a learning experience.

    Right now, i'm trying to add the args[0] of a command to "Essentials" part of my config, my code is the following:

    Code:
    package me.Caedus;
    
    
    import java.io.File;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.permissions.Permission;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Warp extends JavaPlugin implements Listener{
       
        Permission warpcreate = new Permission("warp.create");
    
        @Override
        public void onEnable(){
            getLogger().info("Warp plugin has been loaded");
            getServer().getPluginManager().registerEvents(this, this);
           
           
            PluginManager pm = getServer().getPluginManager();
           
            pm.addPermission(warpcreate);
            if (!new File(getDataFolder() + "/config.yml").exists())
            {
              getConfig().options().copyDefaults(true);
              saveConfig();
            }
    
        }
       
        public boolean onCommand(CommandSender sender, Command cmd, String label, String args[]){
           
            if(cmd.getName().equalsIgnoreCase("createwarp") && sender instanceof Player){
                if(sender.hasPermission("warp.create")){
                   
                    if(args.length >= 1 && args.length < 3){
                        getConfig().set("Essentials."+args[0], args[0]);
                    }
                   
                   
                   
                }
               
               
               
               
               
                return true;
            }
           
           
            return false;
        }
    
    
    }
    

    Error log:
    Code:
    [12:54:14] [Server thread/INFO]: Caedus_ issued server command: /createwarp yes
    [12:54:14] [Server thread/ERROR]: Cannot load plugins\Warp\config.yml
    org.bukkit.configuration.InvalidConfigurationException: Top level is not a Map.
        at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:59) ~[craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:226) ~[craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:169) ~[craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:180) [craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:188) [craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:162) [craftbukkit.jar:git-Bukkit-18fbb24]
        at me.Caedus.Warp.onCommand(Warp.java:42) [warps.jar:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) [craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:620) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1106) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:966) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:37) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:9) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit.jar:git-Bukkit-18fbb24]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_66]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_66]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:673) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:335) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:629) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:537) [craftbukkit.jar:git-Bukkit-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_66]
    [12:54:14] [Server thread/ERROR]: [Warp] Cannot load configuration from jar
    org.bukkit.configuration.InvalidConfigurationException: Top level is not a Map.
        at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:59) ~[craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:214) [craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:162) [craftbukkit.jar:git-Bukkit-18fbb24]
        at me.Caedus.Warp.onCommand(Warp.java:42) [warps.jar:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) [craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:620) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1106) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:966) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:37) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:9) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit.jar:git-Bukkit-18fbb24]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_66]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_66]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:673) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:335) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:629) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:537) [craftbukkit.jar:git-Bukkit-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_66]
    [13:07:00] [Server thread/INFO]: Stopping the server
    
    Lastly, my config file that I compile the plugin with:

    Code:
    Essentials
    Cheers
     
  2. Offline

    I Al Istannen

    @Caedus Instead of this
    Code:
            if (!new File(getDataFolder() + "/config.yml").exists())
            {
              getConfig().options().copyDefaults(true);
              saveConfig();
            }
    you could use saveDefaultConfig.
    But I think it doesn't work, because it doesn't know what to do with "Essentials". The format for a normal key is
    "key:value". So it could be "Plugin: "Essentials". You could retrieve that with config.getString("Plugin"). I have just realized you know that probably.

    Delete the key in the default config or add a value to it.
     
Thread Status:
Not open for further replies.

Share This Page