From f5d891f609a5b93afbc778aadcd107363477d791 Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 22 Jul 2016 20:34:17 +1000 Subject: SPIGOT-2537: Relax skull check even for nominally invalid skulls. --- nms-patches/ItemSkull.patch | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/nms-patches/ItemSkull.patch b/nms-patches/ItemSkull.patch index 81de4153..c97743da 100644 --- a/nms-patches/ItemSkull.patch +++ b/nms-patches/ItemSkull.patch @@ -1,22 +1,17 @@ --- a/net/minecraft/server/ItemSkull.java +++ b/net/minecraft/server/ItemSkull.java -@@ -117,6 +117,20 @@ +@@ -117,6 +117,15 @@ nbttagcompound.set("SkullOwner", GameProfileSerializer.serialize(new NBTTagCompound(), gameprofile)); return true; } else { + // CraftBukkit start -+ boolean valid = true; -+ + NBTTagList textures = nbttagcompound.getCompound("SkullOwner").getCompound("Properties").getList("textures", 10); // Safe due to method contracts + for (int i = 0; i < textures.size(); i++) { -+ if (textures.get(i) instanceof NBTTagCompound && !((NBTTagCompound) textures.get(i)).hasKeyOfType("Signature", 8)) { -+ valid = false; ++ if (textures.get(i) instanceof NBTTagCompound && !((NBTTagCompound) textures.get(i)).hasKeyOfType("Signature", 8) && ((NBTTagCompound) textures.get(i)).getString("Value").trim().isEmpty()) { ++ nbttagcompound.remove("SkullOwner"); ++ break; + } + } -+ -+ if (!valid) { -+ nbttagcompound.remove("SkullOwner"); -+ } + // CraftBukkit end return false; } -- cgit v1.2.3