Nullcheck EntityItem's ItemStack where required. This fixes BUKKIT-552

This commit is contained in:
Nathan Adams 2012-01-20 16:40:27 +00:00
parent 51a056ecd5
commit 85ab95cec7

View File

@ -21,7 +21,10 @@ public class EntityItem extends Entity {
this.height = this.length / 2.0F; this.height = this.length / 2.0F;
this.setPosition(d0, d1, d2); this.setPosition(d0, d1, d2);
this.itemStack = itemstack; this.itemStack = itemstack;
// CraftBukkit start - infinite item fix // CraftBukkit start - infinite item fix & nullcheck
if (this.itemStack == null) {
throw new IllegalArgumentException("Can't create an EntityItem for a null item");
}
if (this.itemStack.count <= -1) { if (this.itemStack.count <= -1) {
this.itemStack.count = 1; this.itemStack.count = 1;
} }
@ -117,7 +120,7 @@ public class EntityItem extends Entity {
public void b(NBTTagCompound nbttagcompound) { public void b(NBTTagCompound nbttagcompound) {
nbttagcompound.setShort("Health", (short) ((byte) this.f)); nbttagcompound.setShort("Health", (short) ((byte) this.f));
nbttagcompound.setShort("Age", (short) this.age); nbttagcompound.setShort("Age", (short) this.age);
nbttagcompound.setCompound("Item", this.itemStack.b(new NBTTagCompound())); if (this.itemStack != null) nbttagcompound.setCompound("Item", this.itemStack.b(new NBTTagCompound())); // CraftBukkit - Nullchex!
} }
public void a(NBTTagCompound nbttagcompound) { public void a(NBTTagCompound nbttagcompound) {
@ -132,7 +135,7 @@ public class EntityItem extends Entity {
} }
public void a_(EntityHuman entityhuman) { public void a_(EntityHuman entityhuman) {
if (!this.world.isStatic) { if ((!this.world.isStatic) && (this.itemStack != null)) { // CraftBukkit - nullcheck
int i = this.itemStack.count; int i = this.itemStack.count;
// CraftBukkit start // CraftBukkit start
@ -180,6 +183,7 @@ public class EntityItem extends Entity {
} }
public String getLocalizedName() { public String getLocalizedName() {
if (this.itemStack == null) return LocaleI18n.a("item.unknown"); // CraftBukkit - nullcheck
return LocaleI18n.a("item." + this.itemStack.k()); return LocaleI18n.a("item." + this.itemStack.k());
} }
} }