Solved ConfigurationSerializable Objects in a ConfigurationSerializable Object

Discussion in 'Plugin Development' started by Aza24, Jan 5, 2013.

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

    Aza24

    I am working on re-coding my plugin BattleNight and have decided to make the arenas and waypoints ConfigurationSerializable. The issue I am having is that I can not figure out how to deserialize the Waypoint Objects inside the Arena Object. The error I get when the arena is deserialized is as follows:

    Code:
    17:08:22 [SEVERE] Cannot load C:\Users\Aaron\Desktop\Servers\Plugin Test Server\
    plugins\BattleNight\.PluginData\Arenas.dat
    org.bukkit.configuration.InvalidConfigurationException: org.yaml.snakeyaml.error.YAMLException: Could not deserialize object
            at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:55)
            at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:138)
            at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:105)
            at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:175)
            at me.limebyte.battlenight.core.util.config.Configuration.reload(Configuration.java:46)
            at me.limebyte.battlenight.core.util.config.ConfigManager.reloadAll(ConfigManager.java:33)
            at me.limebyte.battlenight.core.util.config.ConfigManager.initConfigurations(ConfigManager.java:15)
            at me.limebyte.battlenight.core.BattleNight.onEnable(BattleNight.java:55)
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
            at org.bukkit.craftbukkit.v1_4_6.CraftServer.loadPlugin(CraftServer.java:282)
            at org.bukkit.craftbukkit.v1_4_6.CraftServer.enablePlugins(CraftServer.java:264)
            at net.minecraft.server.v1_4_6.MinecraftServer.j(MinecraftServer.java:321)
            at net.minecraft.server.v1_4_6.MinecraftServer.e(MinecraftServer.java:300)
            at net.minecraft.server.v1_4_6.MinecraftServer.a(MinecraftServer.java:259)
            at net.minecraft.server.v1_4_6.DedicatedServer.init(DedicatedServer.java:149)
            at net.minecraft.server.v1_4_6.MinecraftServer.run(MinecraftServer.java:399)
            at net.minecraft.server.v1_4_6.ThreadServerApplication.run(SourceFile:849)
    Caused by: org.yaml.snakeyaml.error.YAMLException: Could not deserialize object
            at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:37)
            at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:183)
            at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:326)
            at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:143)
            at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:307)
            at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:459)
            at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:26)
            at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:183)
            at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:142)
            at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:128)
            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(YamlConfiguration.java:53)
            ... 18 more
    Caused by: java.lang.IllegalArgumentException: Specified class does not exist ('me.limebyte.battlenight.api.battle.Waypoint')
            at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeObject(ConfigurationSerialization.java:177)
            at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:35)
            ... 30 more
    The source code can be found on Github.
     
  2. Offline

    Sagacious_Zed Bukkit Docs

    Aza24
    try moving when you register the classes to be deserialized into your plugin's onLoad. I have a feeling it is not being registered early enough.
     
  3. Offline

    Aza24

    Thanks, that fixed the problem and makes total sense now why only the Arena's serialization worked. The Arena class just had enough time to process before it was needed whereas the Waypoint one was too late.
     
Thread Status:
Not open for further replies.

Share This Page