
Unable to upgrade shops from 1.21.4 to 1.21.8
Closed this issue ยท 1 comments
The latest version (2.23.10) said 1.21.8 is supported. I am trying to updated from 1.21.4 to 1.21.8 and Shopkeepers yells at me that downgrades are not supported. Are there any in-between versions I have to upgrade to, in order to migrate my shop data?
I tried both the latest release and even the latest snapshot of shopkeepers!
Paper version: Paper version 1.21.8-21-main@ed31825 (2025-07-31T02:36:28Z) (Implementing API version 1.21.8-R0.1-SNAPSHOT)
You are running the latest version
Shopkeepers version: 2.23.11-SNAPSHOT+ec09736d
Error in question:
[14:17:49] [Server thread/ERROR]: [Shopkeepers] Failed to load the save file! Note: Server downgrades or manually editing the save file are not supported!
com.nisovin.shopkeepers.util.data.persistence.InvalidDataFormatException: Failed to load data as Bukkit config!
at Shopkeepers-2.23.11-SNAPSHOT.jar/com.nisovin.shopkeepers.util.data.persistence.bukkit.BukkitConfigDataStore.loadFromString(BukkitConfigDataStore.java:63) ~[Shopkeepers-2.23.11-SNAPSHOT.jar:?]
at Shopkeepers-2.23.11-SNAPSHOT.jar/com.nisovin.shopkeepers.storage.SKShopkeeperStorage.doReload(SKShopkeeperStorage.java:448) ~[Shopkeepers-2.23.11-SNAPSHOT.jar:?]
at Shopkeepers-2.23.11-SNAPSHOT.jar/com.nisovin.shopkeepers.storage.SKShopkeeperStorage.reload(SKShopkeeperStorage.java:355) ~[Shopkeepers-2.23.11-SNAPSHOT.jar:?]
at Shopkeepers-2.23.11-SNAPSHOT.jar/com.nisovin.shopkeepers.SKShopkeepersPlugin.onEnable(SKShopkeepersPlugin.java:422) ~[Shopkeepers-2.23.11-SNAPSHOT.jar:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:280) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:202) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:109) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:520) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.CraftServer.enablePlugin(CraftServer.java:652) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:608) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:743) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:488) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:280) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1164) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:310) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: org.bukkit.configuration.InvalidConfigurationException: Could not call method 'public static org.bukkit.inventory.meta.ItemMeta org.bukkit.craftbukkit.inventory.SerializableMeta.deserialize(java.util.Map) throws java.lang.Throwable' of class org.bukkit.craftbukkit.inventory.SerializableMeta for deserialization
at Shopkeepers-2.23.11-SNAPSHOT.jar/com.nisovin.shopkeepers.util.bukkit.ConfigUtils.loadConfigSafely(ConfigUtils.java:259) ~[Shopkeepers-2.23.11-SNAPSHOT.jar:?]
at Shopkeepers-2.23.11-SNAPSHOT.jar/com.nisovin.shopkeepers.util.data.persistence.bukkit.BukkitConfigDataStore.loadFromString(BukkitConfigDataStore.java:61) ~[Shopkeepers-2.23.11-SNAPSHOT.jar:?]
... 15 more
Caused by: java.lang.IllegalStateException: Not a number; Failed to get element minecraft:levels missed input: {levels:{"minecraft:mending":1,"minecraft:protection":4,"minecraft:thorns":3,"minecraft:unbreaking":3}} missed input: {"minecraft:enchantments":{levels:{"minecraft:mending":1,"minecraft:protection":4,"minecraft:thorns":3,"minecraft:unbreaking":3}}}; Not a number; Failed to get element minecraft:levels missed input: {levels:{"minecraft:power":2}} missed input: {"minecraft:enchantments":{levels:{"minecraft:power":2}}}; Not a number; Failed to get element minecraft:levels missed input: {levels:{"minecraft:aqua_affinity":1,"minecraft:mending":1,"minecraft:protection":4,"minecraft:respiration":3,"minecraft:thorns":3,"minecraft:unbreaking":3}} missed input: {"minecraft:enchantments":{levels:{"minecraft:aqua_affinity":1,"minecraft:mending":1,"minecraft:protection":4,"minecraft:respiration":3,"minecraft:thorns":3,"minecraft:unbreaking":3}}}; Not a number; Failed to get element minecraft:levels missed input: {levels:{"minecraft:mending":1,"minecraft:protection":4,"minecraft:thorns":3,"minecraft:unbreaking":3}} missed input: {"minecraft:enchantments":{levels:{"minecraft:mending":1,"minecraft:protection":4,"minecraft:thorns":3,"minecraft:unbreaking":3}}}; Not a number; Failed to get element minecraft:levels missed input: {levels:{"minecraft:depth_strider":3,"minecraft:feather_falling":4,"minecraft:mending":1,"minecraft:protection":4,"minecraft:thorns":3,"minecraft:unbreaking":3}} missed input: {"minecraft:enchantments":{levels:{"minecraft:depth_strider":3,"minecraft:feather_falling":4,"minecraft:mending":1,"minecraft:protection":4,"minecraft:thorns":3,"minecraft:unbreaking":3}}}; Not a number; Failed to get element minecraft:levels missed input: {levels:{"minecraft:mending":1,"minecraft:unbreaking":3}} missed input: {"minecraft:enchantments":{levels:{"minecraft:mending":1,"minecraft:unbreaking":3}}} missed input: {"minecraft:container":[{item:{count:11,id:"minecraft:firework_rocket"},slot:0},{item:{count:64,id:"minecraft:golden_carrot"},slot:1},{item:{count:64,id:"minecraft:golden_carrot"},slot:2},{item:{components:{"minecraft:custom_name":'"red bull"',"minecraft:damage":71,"minecraft:enchantments":{levels:{"minecraft:mending":1,"minecraft:unbreaking":3}},"minecraft:repair_cost":3},count:1,id:"minecraft:elytra"},slot:3},{item:{components:{"minecraft:custom_name":'"every day im shufflin"',"minecraft:damage":26,"minecraft:enchantments":{levels:{"minecraft:depth_strider":3,"minecraft:feather_falling":4,"minecraft:mending":1,"minecraft:protection":4,"minecraft:thorns":3,"minecraft:unbreaking":3}},"minecraft:repair_cost":15,"minecraft:trim":{material:"minecraft:quartz",pattern:"minecraft:spire"}},count:1,id:"minecraft:netherite_boots"},slot:4},{item:{components:{"minecraft:custom_name":'"fancy pants"',"minecraft:damage":23,"minecraft:enchantments":{levels:{"minecraft:mending":1,"minecraft:protection":4,"minecraft:thorns":3,"minecraft:unbreaking":3}},"minecraft:repair_cost":7,"minecraft:trim":{material:"minecraft:quartz",pattern:"minecraft:snout"}},count:1,id:"minecraft:netherite_leggings"},slot:5},{item:{components:{"minecraft:custom_name":'"brain bucket"',"minecraft:damage":29,"minecraft:enchantments":{levels:{"minecraft:aqua_affinity":1,"minecraft:mending":1,"minecraft:protection":4,"minecraft:respiration":3,"minecraft:thorns":3,"minecraft:unbreaking":3}},"minecraft:repair_cost":15,"minecraft:trim":{material:"minecraft:quartz",pattern:"minecraft:raiser"}},count:1,id:"minecraft:netherite_helmet"},slot:6},{item:{count:25,id:"minecraft:arrow"},slot:7},{item:{count:1,id:"minecraft:magma_cream"},slot:8},{item:{components:{"minecraft:damage":368,"minecraft:enchantments":{levels:{"minecraft:power":2}}},count:1,id:"minecraft:bow"},slot:9},{item:{count:1,id:"minecraft:glass"},slot:10},{item:{components:{"minecraft:custom_name":'"heart breaker"',"minecraft:enchantments":{levels:{"minecraft:mending":1,"minecraft:protection":4,"minecraft:thorns":3,"minecraft:unbreaking":3}},"minecraft:repair_cost":7,"minecraft:trim":{material:"minecraft:quartz",pattern:"minecraft:spire"}},count:1,id:"minecraft:netherite_chestplate"},slot:11},{item:{count:8,id:"minecraft:golden_carrot"},slot:12},{item:{count:32,id:"minecraft:acacia_leaves"},slot:13},{item:{count:1,id:"minecraft:totem_of_undying"},slot:14}]}
at com.mojang.serialization.DataResult$Error.getOrThrow(DataResult.java:287) ~[datafixerupper-8.0.16.jar:?]
at com.mojang.serialization.DataResult.getOrThrow(DataResult.java:81) ~[datafixerupper-8.0.16.jar:?]
at org.bukkit.craftbukkit.inventory.CraftMetaBlockState.lambda$deserializeInternal$6(CraftMetaBlockState.java:208) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at java.base/java.util.Optional.ifPresent(Optional.java:178) ~[?:?]
at org.bukkit.craftbukkit.inventory.CraftMetaBlockState.deserializeInternal(CraftMetaBlockState.java:207) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at org.bukkit.craftbukkit.inventory.CraftMetaItem.<init>(CraftMetaItem.java:754) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at org.bukkit.craftbukkit.inventory.CraftMetaBlockState.<init>(CraftMetaBlockState.java:137) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[?:?]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[?:?]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) ~[?:?]
at org.bukkit.craftbukkit.inventory.SerializableMeta.deserialize(SerializableMeta.java:80) ~[paper-1.21.8.jar:1.21.8-21-ed31825]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeViaMethod(ConfigurationSerialization.java:87) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.bukkit.configuration.serialization.ConfigurationSerialization.deserialize(ConfigurationSerialization.java:129) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeObject(ConfigurationSerialization.java:209) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:58) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:264) ~[snakeyaml-2.2.jar:?]
at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:247) ~[snakeyaml-2.2.jar:?]
at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:576) ~[snakeyaml-2.2.jar:?]
at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:210) ~[snakeyaml-2.2.jar:?]
at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:552) ~[snakeyaml-2.2.jar:?]
at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:597) ~[snakeyaml-2.2.jar:?]
at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:49) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:264) ~[snakeyaml-2.2.jar:?]
at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:247) ~[snakeyaml-2.2.jar:?]
at org.bukkit.configuration.file.YamlConstructor.construct(YamlConstructor.java:37) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:164) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:162) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:162) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:162) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:121) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at Shopkeepers-2.23.11-SNAPSHOT.jar/com.nisovin.shopkeepers.util.bukkit.ConfigUtils.loadConfigSafely(ConfigUtils.java:254) ~[Shopkeepers-2.23.11-SNAPSHOT.jar:?]
at Shopkeepers-2.23.11-SNAPSHOT.jar/com.nisovin.shopkeepers.util.data.persistence.bukkit.BukkitConfigDataStore.loadFromString(BukkitConfigDataStore.java:61) ~[Shopkeepers-2.23.11-SNAPSHOT.jar:?]
... 15 more
[14:17:49] [Server thread/ERROR]: [Shopkeepers] Detected an issue during the loading of the saved shopkeepers data! Disabling the plugin!
[14:17:49] [Server thread/INFO]: [Shopkeepers] Disabling Shopkeepers v2.23.11-SNAPSHOT+ec09736d
If you need more information please let me know I am thankful for any help on this matter.
The actual issue is with loading the save data. If I remember correctly from this ticket #958, you can resolve this issue by first converting your save file to a new format by loading it with the latest plugin version but on an older server version, and afterwards transfering your migrated save file to your actual latest server version.
I.e. run Shopkeepers 2.23.10 on a 1.21.4 server with your Shopkeepers save.yml file. This server version should be able to still load your save file. The latest plugin version can then process the loaded save data and convert it to a new format that hopefully avoids these item migration issues going forward. Then move the converter save.yml file to your actual 1.21.8 server.