diff options
author | md_5 <git@md-5.net> | 2016-07-22 20:34:17 +1000 |
---|---|---|
committer | md_5 <git@md-5.net> | 2016-07-22 20:34:17 +1000 |
commit | f5d891f609a5b93afbc778aadcd107363477d791 (patch) | |
tree | 2eb03f4990e6e6aac6c31415d383ed3c829f2a17 /nms-patches | |
parent | 7ae605218b9f458ab514ce19ad892b6453119188 (diff) | |
download | craftbukkit-f5d891f609a5b93afbc778aadcd107363477d791.tar craftbukkit-f5d891f609a5b93afbc778aadcd107363477d791.tar.gz craftbukkit-f5d891f609a5b93afbc778aadcd107363477d791.tar.lz craftbukkit-f5d891f609a5b93afbc778aadcd107363477d791.tar.xz craftbukkit-f5d891f609a5b93afbc778aadcd107363477d791.zip |
SPIGOT-2537: Relax skull check even for nominally invalid skulls.
Diffstat (limited to 'nms-patches')
-rw-r--r-- | nms-patches/ItemSkull.patch | 13 |
1 files 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; } |