-
Bug
-
Resolution: Fixed
-
Minor
-
None
-
None
-
This server is running CraftBukkit version dev-Spigot-0a642bd-aac911d (MC: 1.21) (Implementing API version 1.21-R0.1-SNAPSHOT)
-
Yes
Issues:
- Pages are not serialized as json strings, but the IChatBaseComponents are outputted directly, which does not serialize the actual page data and results in an error during deserialization.
"pages: - !!net.minecraft.network.chat.IChatMutableComponent {}" - For the "resolved" and "generation" properties, the deserialization does not properly handle null / missing values during deserialization (tries to cast null to Generation or bool), instead of using false / Generation.ORIGINAL instead.
Example plugin code to reproduce the issue(s):
@Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { try { Player player = (Player) sender; ItemStack item = new ItemStack(Material.WRITTEN_BOOK); BookMeta meta = (BookMeta)item.getItemMeta(); meta.addPage("Test"); item.setItemMeta(meta); YamlConfiguration config = new YamlConfiguration(); config.set("item", item); String serialized = config.saveToString(); player.sendMessage("Serialized: " + serialized); config.loadFromString(serialized); ItemStack deserialized = config.getItemStack("item"); player.sendMessage("Deserialized: " + config.saveToString()); player.sendMessage("Deserialized equals original? " + item.isSimilar(deserialized)); } catch (Exception e) { sender.sendMessage("Command execution failed: " + e.getMessage()); Test.INSTANCE.getLogger().log(Level.SEVERE, "Command execution failed!", e); } return true; }