From 1c13d076afb1fa02e3bc850d9f9de5128865d875 Mon Sep 17 00:00:00 2001 From: Travis Watkins Date: Sat, 31 May 2014 18:28:25 -0500 Subject: [PATCH] Improve ItemStack filtering. --- src/main/java/net/minecraft/server/ItemStack.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java index 73428488c7..f9aaf4ab99 100644 --- a/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java @@ -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() {