Multiverse-Inventories icon indicating copy to clipboard operation
Multiverse-Inventories copied to clipboard

Error with item serialization in fireworks

Open takatalvi opened this issue 3 years ago • 0 comments

Information

  • Server version:
[11:55:26 INFO]: Checking version, please wait...
[11:55:27 INFO]: This server is running Paper version git-Paper-81 (MC: 1.19) (Implementing API version 1.19-R0.1-SNAPSHOT) (Git: 86f87ba)
You are running the latest version
Previous version: git-Paper-70 (MC: 1.19)
  • Full output of /mv version -p: https://paste.gg/2d170c6b881f4eea9671772060fea610

  • Server log: https://gist.github.com/takatalvi/7b2d025cfedd8f711fa2d76b9d6cccc4

Details

I was able to reproduce my issue on a freshly setup and up-to-date server with the latest version of Multiverse plugins with no other plugins and with no kinds of other server or client mods.

Description
Fireworks with Flight:-2 in the inventory or ender chests are stored by MV-Inventories data as "power":254, which causes an exception to show up periodically, each time the player's MV-Inventories data file is accessed:

[10:46:21 ERROR]: [org.bukkit.configuration.serialization.ConfigurationSerialization] Could not call method 'public static org.bukkit.inventory.meta.ItemMeta org.bukkit.craftbukkit.v1_19_R1.inventory.CraftMetaItem$SerializableMeta.deserialize(java.util.Map) throws java.lang.Throwable' of class org.bukkit.craftbukkit.v1_19_R1.inventory.CraftMetaItem$SerializableMeta for deserialization
java.lang.IllegalArgumentException: Power cannot be more than 127: 254
at org.apache.commons.lang.Validate.isTrue(Validate.java:93) ~[commons-lang-2.6.jar:2.6]
at org.bukkit.craftbukkit.v1_19_R1.inventory.CraftMetaFirework.setPower(CraftMetaFirework.java:404) ~[paper-1.19.jar:git-Paper-81]
at org.bukkit.craftbukkit.v1_19_R1.inventory.CraftMetaFirework.<init>(CraftMetaFirework.java:185) ~[paper-1.19.jar:git-Paper-81]
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?]
at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?]
at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?]
at org.bukkit.craftbukkit.v1_19_R1.inventory.CraftMetaItem$SerializableMeta.deserialize(CraftMetaItem.java:201) ~[paper-1.19.jar:git-Paper-81]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeViaMethod(ConfigurationSerialization.java:85) ~[paper-api-1.19-R0.1-SNAPSHOT.jar:?]
at org.bukkit.configuration.serialization.ConfigurationSerialization.deserialize(ConfigurationSerialization.java:127) ~[paper-api-1.19-R0.1-SNAPSHOT.jar:?]
at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeObject(ConfigurationSerialization.java:207) ~[paper-api-1.19-R0.1-SNAPSHOT.jar:?]
at com.onarandombox.multiverseinventories.utils.configuration.util.SerializationHelper.deserialize(SerializationHelper.java:125) ~[Multiverse-Inventories-4.2.3.jar:?]
at com.onarandombox.multiverseinventories.utils.configuration.util.SerializationHelper.deserialize(SerializationHelper.java:116) ~[Multiverse-Inventories-4.2.3.jar:?]
at com.onarandombox.multiverseinventories.utils.configuration.util.SerializationHelper.deserialize(SerializationHelper.java:116) ~[Multiverse-Inventories-4.2.3.jar:?]
at com.onarandombox.multiverseinventories.utils.configuration.util.SerializationHelper.deserialize(SerializationHelper.java:116) ~[Multiverse-Inventories-4.2.3.jar:?]
at com.onarandombox.multiverseinventories.utils.configuration.util.SerializationHelper.deserialize(SerializationHelper.java:116) ~[Multiverse-Inventories-4.2.3.jar:?]
at com.onarandombox.multiverseinventories.utils.configuration.json.JsonConfiguration.convertMapsToSections(JsonConfiguration.java:75) ~[Multiverse-Inventories-4.2.3.jar:?]
at com.onarandombox.multiverseinventories.utils.configuration.json.JsonConfiguration.loadFromString(JsonConfiguration.java:68) ~[Multiverse-Inventories-4.2.3.jar:?]
at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:160) ~[paper-api-1.19-R0.1-SNAPSHOT.jar:?]
at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:128) ~[paper-api-1.19-R0.1-SNAPSHOT.jar:?]
at com.onarandombox.multiverseinventories.utils.configuration.json.JsonConfiguration.loadConfiguration(JsonConfiguration.java:110) ~[Multiverse-Inventories-4.2.3.jar:?]
at com.onarandombox.multiverseinventories.utils.configuration.json.JsonConfiguration.loadConfiguration(JsonConfiguration.java:131) ~[Multiverse-Inventories-4.2.3.jar:?]
at com.onarandombox.multiverseinventories.FlatFileProfileDataSource.getConfigHandleNow(FlatFileProfileDataSource.java:96) ~[Multiverse-Inventories-4.2.3.jar:?]
at com.onarandombox.multiverseinventories.FlatFileProfileDataSource.access$100(FlatFileProfileDataSource.java:37) ~[Multiverse-Inventories-4.2.3.jar:?]
at com.onarandombox.multiverseinventories.FlatFileProfileDataSource$ConfigLoader.call(FlatFileProfileDataSource.java:108) ~[Multiverse-Inventories-4.2.3.jar:?]
at com.onarandombox.multiverseinventories.FlatFileProfileDataSource$ConfigLoader.call(FlatFileProfileDataSource.java:99) ~[Multiverse-Inventories-4.2.3.jar:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]

Steps to reproduce
Place a firework rocket with its NBT Flight set to a negative number (-2 fires the rocket immediately upon using) in your inventory or ender chest.

Expected behavior
When MV-Inventories is set up with different world groups and inventory/enderchest data is written to individual player files, this negative number is stored as a positive >127 number, which causes an exception as the plugin is not expecting values above 127.

takatalvi avatar Jul 27 '22 10:07 takatalvi