[SPIGOT-7804] Written book serialization broken since Spigot 1.20.5 Created: 29/Jun/24  Updated: 25/Dec/24  Resolved: 30/Jun/24

Status: Resolved
Project: Spigot
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: blablubbabc Assignee: blablubbabc
Resolution: Fixed Votes: 0
Labels: item, serialization, written_book

Version: This server is running CraftBukkit version dev-Spigot-0a642bd-aac911d (MC: 1.21) (Implementing API version 1.21-R0.1-SNAPSHOT)
Guidelines Read: Yes

 Description   

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;
	}

 


Generated at Tue Apr 15 09:10:48 UTC 2025 using Jira 10.3.3#10030003-sha1:d220e3fefc8dfc6d47f522d3b9a20c1455e12b7b.