Preventing the Bukkit Config API from resetting the config on an error

Discussion in 'Plugin Development' started by Tecno_Wizard, Oct 30, 2014.

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

    Tecno_Wizard

    Evening,
    I'm trying to prevent the Bukkit API from completely resetting my plugin's config file if there is an error, because due to it's nature, everything is deleted.

    Code:java
    1. private void setUpConfig()
    2. {
    3. try
    4. {
    5. getConfig().addDefault("ListOfCommands", new ArrayList<String>());
    6. //this line is what throws the error/|\
    7. }
    8. catch(Exception e)
    9. {
    10. log.severe("[CommandsForSale] There seems to be a problem with the config file...");
    11. return;
    12. }
    13. getConfig().options().copyDefaults(true);
    14. saveConfig();
    15.  
    16. for(String commandName: getConfig().getStringList("ListOfCommands"))
    17. {
    18. getConfig().addDefault("CommandOptions." + commandName + ".display_name", "");
    19. getConfig().addDefault("CommandOptions." + commandName + ".price", 0);
    20. getConfig().addDefault("CommandOptions." + commandName + ".true_command_name", "");//
    21. }
    22. getConfig().options().copyDefaults(true);
    23. saveConfig();
    24. }


    The try- catch statement doesn't fix it, it is just prints the stack trace.
    Any ideas?
     
  2. Offline

    OffLuffy

    Please include the stack trace and note which line in the code it's pointing to, if you can.
     
  3. Offline

    Tecno_Wizard

    OffLuffy , Stack trace:
    Code:
    C:\Users\Ethan\Desktop\Plugin Testing Server>java -Xmx1024M -Xms1024M -jar craft
    bukkit.jar
    Loading libraries, please wait...
    [21:44:01 INFO]: Starting minecraft server version 1.7.9
    [21:44:01 INFO]: Loading properties
    [21:44:01 INFO]: Default game type: SURVIVAL
    [21:44:01 INFO]: Generating keypair
    [21:44:01 INFO]: Starting Minecraft server on *:25565
    [21:44:02 INFO]: This server is running CraftBukkit version git-Bukkit-1.7.9-R0.
    2-1-ga6e0bfd-b3095jnks (MC: 1.7.9) (Implementing API version 1.7.9-R0.3-SNAPSHOT
    )
    [21:44:02 WARN]: Could not get information about this CraftBukkit version; perha
    ps you are running a custom one?: IOException
    [21:44:02 INFO]: [Vault] Loading Vault v1.4.1-b436
    [21:44:02 INFO]: [CommandsForSale] Loading CommandsForSale v1.0
    [21:44:02 INFO]: [Essentials] Loading Essentials v2.13.1
    [21:44:02 INFO]: [Vault] Enabling Vault v1.4.1-b436
    [21:44:02 INFO]: [Vault] [Economy] Essentials Economy found: Waiting
    [21:44:02 INFO]: [Vault] [Permission] SuperPermissions loaded as backup permissi
    on system.
    [21:44:02 INFO]: [Vault] Enabled Version 1.4.1-b436
    [21:44:03 INFO]: Preparing level "world"
    [21:44:03 WARN]: Could not get latest artifact information: IOException
    [21:44:03 INFO]: Preparing start region for level 0 (Seed: -1580440507216941901)
     
    [21:44:04 INFO]: Preparing spawn area: 43%
    [21:44:04 INFO]: Preparing start region for level 1 (Seed: -1580440507216941901)
     
    [21:44:05 INFO]: Preparing start region for level 2 (Seed: -1580440507216941901)
     
    [21:44:06 INFO]: [CommandsForSale] Enabling CommandsForSale v1.0
    [21:44:06 INFO]: [Essentials] Enabling Essentials v2.13.1
    [21:44:06 INFO]: [Vault][Economy] Essentials Economy hooked.
    [21:44:06 INFO]: Essentials: Using config file enhanced permissions.
    [21:44:06 INFO]: Permissions listed in as player-commands will be given to all u
    sers.
    [21:44:06 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [21:44:07 INFO]: Done (4.078s)! For help, type "help" or "?"
    [21:44:09 INFO]: [Vault] Checking for Updates:
    [21:44:09 INFO]: [Vault] No new version available
    >reload
    [21:44:24 INFO]: [Essentials] Disabling Essentials v2.13.1
    [21:44:24 INFO]: [Vault][Economy] Essentials Economy unhooked.
    [21:44:24 INFO]: [CommandsForSale] Disabling CommandsForSale v1.0
    [21:44:24 INFO]: [Vault] Disabling Vault v1.4.1-b436
    [21:44:25 INFO]: [Vault] Loading Vault v1.4.1-b436
    [21:44:25 INFO]: [CommandsForSale] Loading CommandsForSale v1.0
    [21:44:25 INFO]: [Essentials] Loading Essentials v2.13.1
    [21:44:25 INFO]: [Vault] Enabling Vault v1.4.1-b436
    [21:44:25 INFO]: [Vault] [Economy] Essentials Economy found: Waiting
    [21:44:25 INFO]: [Vault] [Permission] SuperPermissions loaded as backup permissi
    on system.
    [21:44:25 INFO]: [Vault] Enabled Version 1.4.1-b436
    [21:44:25 INFO]: [CommandsForSale] Enabling CommandsForSale v1.0
    [21:44:25 INFO]: [Essentials] Enabling Essentials v2.13.1
    [21:44:25 INFO]: [Vault][Economy] Essentials Economy hooked.
    [21:44:25 INFO]: Essentials: Using config file enhanced permissions.
    [21:44:25 INFO]: Permissions listed in as player-commands will be given to all u
    sers.
    [21:44:25 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [21:44:25 INFO]: CONSOLE: Reload complete.
    [21:44:27 WARN]: [Vault] No files found, or Feed URL is bad.
    [21:44:27 INFO]: [Vault] Checking for Updates:
    [21:44:27 INFO]: [Vault] No new version available
    >reload
    [21:44:35 INFO]: [Essentials] Disabling Essentials v2.13.1
    [21:44:35 INFO]: [Vault][Economy] Essentials Economy unhooked.
    [21:44:35 INFO]: [CommandsForSale] Disabling CommandsForSale v1.0
    [21:44:35 INFO]: [Vault] Disabling Vault v1.4.1-b436
    [21:44:35 INFO]: [Vault] Loading Vault v1.4.1-b436
    [21:44:35 INFO]: [CommandsForSale] Loading CommandsForSale v1.0
    [21:44:35 INFO]: [Essentials] Loading Essentials v2.13.1
    [21:44:35 INFO]: [Vault] Enabling Vault v1.4.1-b436
    [21:44:35 INFO]: [Vault] [Economy] Essentials Economy found: Waiting
    [21:44:35 INFO]: [Vault] [Permission] SuperPermissions loaded as backup permissi
    on system.
    [21:44:35 INFO]: [Vault] Enabled Version 1.4.1-b436
    [21:44:35 INFO]: [CommandsForSale] Enabling CommandsForSale v1.0
    [21:44:35 ERROR]: Cannot load plugins\CommandsForSale\config.yml
    org.bukkit.configuration.InvalidConfigurationException: while parsing a block ma
    pping
    in "<string>", line 5, column 4:
          display_name: ''
          ^
    expected <block end>, but found BlockMappingStart
    in "<string>", line 6, column 5:
            price: 0
            ^
     
            at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlCo
    nfiguration.java:57) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnk
    s]
            at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguratio
    n.java:226) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguratio
    n.java:169) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(Yam
    lConfiguration.java:180) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095
    jnks]
            at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:183) [
    craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:157) [cra
    ftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at me.Tecno_WizardAndZiggy2764.CommandsForSale.Main.setUpConfig(Main.jav
    a:34) [CommandsForSale.jar:?]
            at me.Tecno_WizardAndZiggy2764.CommandsForSale.Main.onEnable(Main.java:2
    6) [CommandsForSale.jar:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316) [cr
    aftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:324) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:404) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.craftbukkit.v1_7_R3.CraftServer.loadPlugin(CraftServer.jav
    a:446) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.craftbukkit.v1_7_R3.CraftServer.enablePlugins(CraftServer.
    java:380) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.craftbukkit.v1_7_R3.CraftServer.reload(CraftServer.java:79
    9) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.Bukkit.reload(Bukkit.java:288) [craftbukkit.jar:git-Bukkit
    -1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
    23) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:18
    0) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.craftbukkit.v1_7_R3.CraftServer.dispatchCommand(CraftServe
    r.java:701) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.craftbukkit.v1_7_R3.CraftServer.dispatchServerCommand(Craf
    tServer.java:688) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at net.minecraft.server.v1_7_R3.DedicatedServer.aB(DedicatedServer.java:
    296) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:2
    61) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:5
    58) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java
    :469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:6
    28) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
    Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapp
    ing; expected <block end>, but found BlockMappingStart
            at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(Par
    serImpl.java:575) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161) ~
    [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
    ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java
    :230) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160) ~
    [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java
    :237) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160) ~
    [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java
    :237) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160) ~
    [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:12
    3) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)
    ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseCons
    tructor.java:121) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480) ~[craftbukkit.j
    ar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.yaml.snakeyaml.Yaml.load(Yaml.java:399) ~[craftbukkit.jar:git-Buk
    kit-1.7.9-R0.2-1-ga6e0bfd-b3095jnks]
            at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlCo
    nfiguration.java:55) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-1-ga6e0bfd-b3095jnk
    s]
            ... 23 more
    [21:44:35 INFO]: [Essentials] Enabling Essentials v2.13.1
    [21:44:35 INFO]: [Vault][Economy] Essentials Economy hooked.
    [21:44:35 INFO]: Essentials: Using config file enhanced permissions.
    [21:44:35 INFO]: Permissions listed in as player-commands will be given to all u
    sers.
    [21:44:35 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [21:44:35 INFO]: CONSOLE: Reload complete.
    [21:44:36 INFO]: [Vault] Checking for Updates:
    [21:44:36 INFO]: [Vault] No new version available
    >
    On the second reload I purposely broke the config by creating the save value cow by adding it into the list and reloading the first time, then breaking the config by removing a space before display_name.

    The config statement works by generating all the necessary files by adding it to the list (eventually I will make that command based) but for now add "string" into the array list brackets when they generate, then reload.

    Also, in the posted code, line 5 throws the error (above post)
     
  4. Offline

    Tecno_Wizard

    I am now trying to do this by saving a copy of the config.yml file from the last time that it operated correctly, but I can't seem to figure out how to actually get the file...

    Code:java
    1. private void setUpConfig()
    2. {
    3. YamlConfiguration yaml = new YamlConfiguration();
    4.  
    5. getConfig().addDefault("ListOfCommands", new ArrayList<String>());
    6. getConfig().options().copyDefaults(true);
    7. saveConfig();
    8. for(String commandName: getConfig().getStringList("ListOfCommands"))
    9. {
    10. getConfig().addDefault("CommandOptions." + commandName + ".display_name", "");//
    11. getConfig().addDefault("CommandOptions." + commandName + ".price", 0);
    12. getConfig().addDefault("CommandOptions." + commandName + ".true_command_name", "");//
    13. }
    14. getConfig().options().copyDefaults(true);
    15. saveConfig();
    16.  
    17. if(getConfig().contains("CommandOptions"))
    18. {
    19. yaml.load(getDataFolder());//I can't figure out how to get the life config.yml out of the resource folder. I can only seem to get the folder itself.
    20. }
    21. else
    22. {
    23. log.severe(ChatColor.RED + "[CommandsForSale] It seems that either your configuration has been corrupted or is empty.\n"
    24. + "[CommandsForSale] The plugin will not operate without any commands. If the config corrupted, use the backup file to repair your config.");
    25. }
     
Thread Status:
Not open for further replies.

Share This Page