Force item data to use a tag name. Fixes BUKKIT-4809

The recent Minecraft update rendered the
e20e50f85083dc53cb5456254bcf5781ef750daa fix incorrect by adding a
compound name to the base tag in some code. This fix changes all uses
of tag changes to explicitly use a name.
This commit is contained in:
feildmaster 2013-10-10 17:54:29 -05:00
parent 159403e085
commit f4277d7105
2 changed files with 12 additions and 6 deletions

View File

@ -117,8 +117,8 @@ public final class ItemStack {
}
if (nbttagcompound.hasKey("tag")) {
// CraftBukkit - clear name from compound and make defensive copy as this data may be coming from the save thread
this.tag = (NBTTagCompound) nbttagcompound.getCompound("tag").clone().setName("");
// CraftBukkit - make defensive copy as this data may be coming from the save thread
this.tag = (NBTTagCompound) nbttagcompound.getCompound("tag").clone();
}
}
@ -334,6 +334,11 @@ public final class ItemStack {
}
public void setTag(NBTTagCompound nbttagcompound) {
// CraftBukkit start - Set compound name to "tag," remove discrepancy
if (nbttagcompound != null) {
nbttagcompound.setName("tag");
}
// CraftBukkit end
this.tag = nbttagcompound;
}

View File

@ -191,10 +191,11 @@ public final class CraftItemStack extends ItemStack {
if (item == null) {
return false;
}
if (item.tag != null) {
return true;
if (item.tag == null) {
item.setTag(new NBTTagCompound("tag"));
}
item.tag = new NBTTagCompound();
return true;
}
@ -350,7 +351,7 @@ public final class CraftItemStack extends ItemStack {
return false;
}
NBTTagCompound tag = new NBTTagCompound();
NBTTagCompound tag = new NBTTagCompound("tag");
item.setTag(tag);
((CraftMetaItem) itemMeta).applyToItem(tag);