diff options
author | Nathan Wolf <nathan@elmakers.com> | 2015-04-16 07:51:08 -0700 |
---|---|---|
committer | Thinkofdeath <thinkofdeath@spigotmc.org> | 2015-06-07 20:31:01 +0100 |
commit | 845336b511bdd3d3d9b8a67346503acc4ad3396a (patch) | |
tree | 65e72ea3888f1c741bef1a62b51dce37836c9f6d /src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java | |
parent | 04afd79178f3d09128e0bac3a382be2f28c38123 (diff) | |
download | craftbukkit-845336b511bdd3d3d9b8a67346503acc4ad3396a.tar craftbukkit-845336b511bdd3d3d9b8a67346503acc4ad3396a.tar.gz craftbukkit-845336b511bdd3d3d9b8a67346503acc4ad3396a.tar.lz craftbukkit-845336b511bdd3d3d9b8a67346503acc4ad3396a.tar.xz craftbukkit-845336b511bdd3d3d9b8a67346503acc4ad3396a.zip |
Serialize full skull item profile data in internal blob
Diffstat (limited to 'src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java')
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java index 8b18e1f3..5f123e32 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -376,16 +376,12 @@ class CraftMetaItem implements ItemMeta, Repairable { ByteArrayInputStream buf = new ByteArrayInputStream(Base64.decodeBase64(internal)); try { NBTTagCompound tag = NBTCompressedStreamTools.a(buf); + deserializeInternal(tag); Set<String> keys = tag.c(); for (String key : keys) { if (!getHandledTags().contains(key)) { unhandledTags.put(key, tag.get(key)); } - if (key.equals(CraftMetaBlockState.BLOCK_ENTITY_TAG.NBT) && this instanceof CraftMetaBlockState) { - if (tag.hasKeyOfType(key, 10)) { - ((CraftMetaBlockState) this).blockEntityTag = tag.getCompound(key); - } - } } } catch (IOException ex) { Logger.getLogger(CraftMetaItem.class.getName()).log(Level.SEVERE, null, ex); @@ -393,6 +389,9 @@ class CraftMetaItem implements ItemMeta, Repairable { } } + void deserializeInternal(NBTTagCompound tag) { + } + static Map<Enchantment, Integer> buildEnchantments(Map<String, Object> map, ItemMetaKey key) { Map<?, ?> ench = SerializableMeta.getObject(Map.class, map, key.BUKKIT, true); if (ench == null) { @@ -715,17 +714,13 @@ class CraftMetaItem implements ItemMeta, Repairable { builder.put(HIDEFLAGS.BUKKIT, hideFlags); } - if (!unhandledTags.isEmpty() || this instanceof CraftMetaBlockState) { + final Map<String, NBTBase> internalTags = new HashMap<String, NBTBase>(unhandledTags); + serializeInternal(internalTags); + if (!internalTags.isEmpty()) { NBTTagCompound internal = new NBTTagCompound(); - for (Map.Entry<String, NBTBase> e : unhandledTags.entrySet()) { + for (Map.Entry<String, NBTBase> e : internalTags.entrySet()) { internal.set(e.getKey(), e.getValue()); } - if (this instanceof CraftMetaBlockState) { - CraftMetaBlockState bs = ((CraftMetaBlockState) this); - if (bs.blockEntityTag != null) { - internal.set(CraftMetaBlockState.BLOCK_ENTITY_TAG.NBT, bs.blockEntityTag); - } - } try { ByteArrayOutputStream buf = new ByteArrayOutputStream(); NBTCompressedStreamTools.a(internal, buf); @@ -738,6 +733,9 @@ class CraftMetaItem implements ItemMeta, Repairable { return builder; } + void serializeInternal(final Map<String, NBTBase> unhandledTags) { + } + static void serializeEnchantments(Map<Enchantment, Integer> enchantments, ImmutableMap.Builder<String, Object> builder, ItemMetaKey key) { if (enchantments == null || enchantments.isEmpty()) { return; @@ -804,6 +802,7 @@ class CraftMetaItem implements ItemMeta, Repairable { CraftMetaMap.MAP_SCALING.NBT, CraftMetaPotion.POTION_EFFECTS.NBT, CraftMetaSkull.SKULL_OWNER.NBT, + CraftMetaSkull.SKULL_PROFILE.NBT, CraftMetaBlockState.BLOCK_ENTITY_TAG.NBT, CraftMetaBook.BOOK_TITLE.NBT, CraftMetaBook.BOOK_AUTHOR.NBT, |