Config error

Discussion in 'Plugin Development' started by Rekimo, Aug 18, 2019.

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

    Rekimo

    Hello,
    I had a problem with config

    Conf code:
    Code:
    void loadConfiguration() {
         
         if (this.getConfig().getString("options.general.maxChests") == null) //Main.java:142
           this.getConfig().addDefault("options.general.maxChests", 10);
         
         if (this.getConfig().getString("options.general.maxWinChests") == null)
           this.getConfig().addDefault("options.general.maxWinChests", 3);
         
         if (this.getConfig().getString("options.general.settedChests") == null)
           this.getConfig().addDefault("options.general.settedChests", 0);
         
         if (this.getConfig().getString("options.general.settedWinChests") == null)
           this.getConfig().addDefault("options.general.settedWinChests", 0);
         
      this.getConfig().options().copyDefaults(true);
      this.saveConfig();
         
         for (int i=1; this.getConfig().getInt("options.general.settedChests") >= i; i++) {
           if (this.getConfig().getString("options.loc.Pos" + i + ".x") != null) {
             World world = Bukkit.getServer().getWorld(this.getConfig().getString("options.loc.Pos" + i + ".world"));
             int x = (int) this.getConfig().get("options.loc.Pos" + i + ".x");
             int y = (int) this.getConfig().get("options.loc.Pos" + i + ".y");
             int z = (int) this.getConfig().get("options.loc.Pos" + i + ".z");
             
             Location pos = new Location(world, x, y, z);
             
             RandChestItem.pos.add(pos);
             RandChestItem.p = RandChestItem.p - 1;
           }
         }
         
         for (int i=1; this.getConfig().getInt("options.general.settedWinChests") >= i; i++) {
           if (this.getConfig().getString("options.loc.WinPos" + i + ".x") != null) {
             World world = Bukkit.getServer().getWorld(this.getConfig().getString("options.loc.WinPos" + i + ".world"));
             int x = (int) this.getConfig().get("options.loc.WinPos" + i + ".x");
             int y = (int) this.getConfig().get("options.loc.WinPos" + i + ".y");
             int z = (int) this.getConfig().get("options.loc.WinPos" + i + ".z");
             
             Location pos = new Location(world, x, y, z);
             
             RandChestItem.poswin.add(pos);
             RandChestItem.p2 = RandChestItem.p2 - 1;
           }
         }
      }
    
    Error:
    Code:
    [04:10:16] [Server thread/ERROR]: Could not call method 'public static org.bukkit.Location org.bukkit.Location.deserialize(java.util.Map)' of class org.bukkit.Location for deserialization
    java.lang.IllegalArgumentException: unknown world
       at org.bukkit.Location.deserialize(Location.java:631) ~[minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_222]
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_222]
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_222]
       at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_222]
       at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeViaMethod(ConfigurationSerialization.java:86) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.configuration.serialization.ConfigurationSerialization.deserialize(ConfigurationSerialization.java:128) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeObject(ConfigurationSerialization.java:208) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:39) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:204) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:193) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:453) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:184) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:434) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:521) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:30) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:204) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:193) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:453) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:184) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:434) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:521) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:30) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:204) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:193) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:453) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:184) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:434) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:521) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:30) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:204) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:193) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:159) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:146) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:524) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.yaml.snakeyaml.Yaml.load(Yaml.java:437) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:55) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:163) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:131) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:184) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:159) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:135) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at com.plugin.mayan.Main.loadConfiguration(Main.java:142) [mayan_event_1.0.jar:?]
       at com.plugin.mayan.Main.onEnable(Main.java:23) [mayan_event_1.0.jar:?]
       at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:265) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:347) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:410) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.craftbukkit.v1_13_R2.CraftServer.enablePlugin(CraftServer.java:436) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at org.bukkit.craftbukkit.v1_13_R2.CraftServer.enablePlugins(CraftServer.java:350) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at net.minecraft.server.v1_13_R2.MinecraftServer.l(MinecraftServer.java:580) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:542) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:420) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at net.minecraft.server.v1_13_R2.DedicatedServer.init(DedicatedServer.java:294) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:698) [minecraft_server.jar:git-Spigot-1a3504a-84f3da3]
       at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
    
     
  2. Offline

    robertlit

    Problem 1: Since null isn't a string, instead of getString() use get()
    Problem 2: Instead of addDeafult() use set()
    Problem 3: remove this.getConfig().options().copyDefaults(true)
    I am pretty sure there are more problems, try that and post the code and the problems if needed. @Rekimo
     
  3. Offline

    Strahan

    Instead of doing that at all, just create a config.yml in your plugin with the default values then all you need to do is saveDefaultConfig() when the plugin loads and it will populate it if it isn't there.

    Then when you go to use the values, just pass it default values in case the server admin deleted the key or messed it up in some way. It appears to be ints, so wherever you use options.general.maxChests for example you'd just do getConfig().getInt("options.general.maxChests", 10).

    Also Location implements ConfigurationSerializable so rather than do your own serialization to the config just write the Location directly. You should also treat any data you get from config as suspect. For instance you are reading your serialized world/x/y/z and creating a Location and using it without verification. For all we know, some idiot admin put worrld instead of world.

    PS instead of RandChestItem.p = RandChestItem.p - 1; just do RandChestItem.p--;
     
Thread Status:
Not open for further replies.

Share This Page