Improve ItemStack filtering.

This commit is contained in:
Travis Watkins 2014-05-31 18:28:25 -05:00
parent 47b57e6bcf
commit 1c13d076af

View File

@ -204,10 +204,14 @@ public final class ItemStack {
public void c(NBTTagCompound nbttagcompound) {
this.item = Item.d(nbttagcompound.getShort("id"));
this.count = nbttagcompound.getByte("Count");
/* CraftBukkit start - Route through setData for filtering
this.damage = nbttagcompound.getShort("Damage");
if (this.damage < 0) {
this.damage = 0;
}
*/
this.setData(nbttagcompound.getShort("Damage"));
// CraftBukkit end
if (nbttagcompound.hasKeyOfType("tag", 10)) {
// CraftBukkit - make defensive copy as this data may be coming from the save thread
@ -258,6 +262,11 @@ public final class ItemStack {
i = 0;
}
}
// Filter invalid plant data
if (CraftMagicNumbers.getBlock(CraftMagicNumbers.getId(this.getItem())) == Blocks.DOUBLE_PLANT && (i > 5 || i < 0)) {
i = 0;
}
// CraftBukkit end
this.damage = i;
@ -565,6 +574,7 @@ public final class ItemStack {
public void setItem(Item item) {
this.item = item;
this.setData(this.getData()); // CraftBukkit - Set data again to ensure it is filtered properly
}
public IChatBaseComponent E() {