diff --git a/nms-patches/ItemSkull.patch b/nms-patches/ItemSkull.patch index 2845d0f96a..81de415384 100644 --- a/nms-patches/ItemSkull.patch +++ b/nms-patches/ItemSkull.patch @@ -1,10 +1,23 @@ --- a/net/minecraft/server/ItemSkull.java +++ b/net/minecraft/server/ItemSkull.java -@@ -117,6 +117,7 @@ +@@ -117,6 +117,20 @@ nbttagcompound.set("SkullOwner", GameProfileSerializer.serialize(new NBTTagCompound(), gameprofile)); return true; } else { -+ nbttagcompound.remove("SkullOwner"); // CraftBukkit - remove broken skulls ++ // 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 (!valid) { ++ nbttagcompound.remove("SkullOwner"); ++ } ++ // CraftBukkit end return false; } }