--- a/net/minecraft/server/ItemSkull.java +++ b/net/minecraft/server/ItemSkull.java @@ -117,6 +117,20 @@ 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 (!valid) { + nbttagcompound.remove("SkullOwner"); + } + // CraftBukkit end return false; } }