From 145a9e5054b0f9da1d24e87946a910c390f648af Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Thu, 23 Feb 2017 22:38:37 +0100 Subject: [PATCH] Perform some sanitation of items before applying them as Mson tooltips. --- .../massivecore/mson/MsonEvent.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/com/massivecraft/massivecore/mson/MsonEvent.java b/src/com/massivecraft/massivecore/mson/MsonEvent.java index 74e85dda..754059e4 100644 --- a/src/com/massivecraft/massivecore/mson/MsonEvent.java +++ b/src/com/massivecraft/massivecore/mson/MsonEvent.java @@ -11,6 +11,8 @@ import com.massivecraft.massivecore.nms.NmsItemStackTooltip; import com.massivecraft.massivecore.util.MUtil; import com.massivecraft.massivecore.util.Txt; import com.massivecraft.massivecore.xlib.gson.JsonElement; +import org.bukkit.inventory.meta.BookMeta; +import org.bukkit.inventory.meta.ItemMeta; public final class MsonEvent implements Serializable { @@ -164,9 +166,30 @@ public final class MsonEvent implements Serializable public static MsonEvent item(ItemStack item) { if (item == null) throw new NullPointerException("item"); + item = getItemSanitizedForTooltip(item); String value = NmsItemStackTooltip.get().getNbtStringTooltip(item); return MsonEvent.valueOf(MsonEventAction.SHOW_ITEM, value); } + + private static ItemStack getItemSanitizedForTooltip(ItemStack item) + { + if (item == null) throw new NullPointerException("item"); + + if (!item.hasItemMeta()) return item; + + ItemMeta meta = item.getItemMeta(); + + if (meta instanceof BookMeta) + { + BookMeta book = (BookMeta)meta; + book.setPages(); + item = item.clone(); + item.setItemMeta(meta); + return item; + } + + return item; + } // -------------------------------------------- // // CONVENIENCE