Fixed potential NPE in SlotCrafting, and added ItemStack sensitive version fo hasContainerItem. Closes #854
This commit is contained in:
parent
d73f4fb7b3
commit
790030ab05
3 changed files with 37 additions and 13 deletions
|
@ -9,14 +9,17 @@
|
|||
|
||||
public class SlotCrafting extends Slot
|
||||
{
|
||||
@@ -124,8 +126,14 @@
|
||||
@@ -122,10 +124,16 @@
|
||||
{
|
||||
this.craftMatrix.decrStackSize(i, 1);
|
||||
|
||||
if (itemstack1.getItem().hasContainerItem())
|
||||
- if (itemstack1.getItem().hasContainerItem())
|
||||
+ if (itemstack1.getItem().hasContainerItem(itemstack1))
|
||||
{
|
||||
- ItemStack itemstack2 = new ItemStack(itemstack1.getItem().getContainerItem());
|
||||
+ ItemStack itemstack2 = itemstack1.getItem().getContainerItem(itemstack1);
|
||||
|
||||
+ if (itemstack2.isItemStackDamageable() && itemstack2.getItemDamage() > itemstack2.getMaxDamage())
|
||||
+ if (itemstack2 != null && itemstack2.isItemStackDamageable() && itemstack2.getItemDamage() > itemstack2.getMaxDamage())
|
||||
+ {
|
||||
+ MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(thePlayer, itemstack2));
|
||||
+ continue;
|
||||
|
|
|
@ -51,7 +51,15 @@
|
|||
public int getItemStackLimit()
|
||||
{
|
||||
return this.maxStackSize;
|
||||
@@ -660,6 +671,7 @@
|
||||
@@ -595,6 +606,7 @@
|
||||
}
|
||||
|
||||
// JAVADOC METHOD $$ func_77634_r
|
||||
+ @Deprecated // Use ItemStack sensitive version below.
|
||||
public boolean hasContainerItem()
|
||||
{
|
||||
return this.containerItem != null;
|
||||
@@ -660,6 +672,7 @@
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
|
@ -59,7 +67,7 @@
|
|||
public boolean hasEffect(ItemStack par1ItemStack)
|
||||
{
|
||||
return par1ItemStack.isItemEnchanted();
|
||||
@@ -674,7 +686,7 @@
|
||||
@@ -674,7 +687,7 @@
|
||||
// JAVADOC METHOD $$ func_77616_k
|
||||
public boolean isItemTool(ItemStack par1ItemStack)
|
||||
{
|
||||
|
@ -68,7 +76,7 @@
|
|||
}
|
||||
|
||||
protected MovingObjectPosition getMovingObjectPositionFromPlayer(World par1World, EntityPlayer par2EntityPlayer, boolean par3)
|
||||
@@ -683,7 +695,7 @@
|
||||
@@ -683,7 +696,7 @@
|
||||
float f1 = par2EntityPlayer.prevRotationPitch + (par2EntityPlayer.rotationPitch - par2EntityPlayer.prevRotationPitch) * f;
|
||||
float f2 = par2EntityPlayer.prevRotationYaw + (par2EntityPlayer.rotationYaw - par2EntityPlayer.prevRotationYaw) * f;
|
||||
double d0 = par2EntityPlayer.prevPosX + (par2EntityPlayer.posX - par2EntityPlayer.prevPosX) * (double)f;
|
||||
|
@ -77,7 +85,7 @@
|
|||
double d2 = par2EntityPlayer.prevPosZ + (par2EntityPlayer.posZ - par2EntityPlayer.prevPosZ) * (double)f;
|
||||
Vec3 vec3 = par1World.getWorldVec3Pool().getVecFromPool(d0, d1, d2);
|
||||
float f3 = MathHelper.cos(-f2 * 0.017453292F - (float)Math.PI);
|
||||
@@ -693,6 +705,10 @@
|
||||
@@ -693,6 +706,10 @@
|
||||
float f7 = f4 * f5;
|
||||
float f8 = f3 * f5;
|
||||
double d3 = 5.0D;
|
||||
|
@ -88,7 +96,7 @@
|
|||
Vec3 vec31 = vec3.addVector((double)f7 * d3, (double)f6 * d3, (double)f8 * d3);
|
||||
return par1World.func_147447_a(vec3, vec31, par3, !par3, false);
|
||||
}
|
||||
@@ -773,6 +789,532 @@
|
||||
@@ -773,6 +790,542 @@
|
||||
return this.iconString == null ? "MISSING_ICON_ITEM_" + field_150901_e.func_148757_b(this) + "_" + this.unlocalizedName : this.iconString;
|
||||
}
|
||||
|
||||
|
@ -234,7 +242,7 @@
|
|||
+ */
|
||||
+ public ItemStack getContainerItem(ItemStack itemStack)
|
||||
+ {
|
||||
+ if (!hasContainerItem())
|
||||
+ if (!hasContainerItem(itemStack))
|
||||
+ {
|
||||
+ return null;
|
||||
+ }
|
||||
|
@ -242,6 +250,16 @@
|
|||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * ItemStack sensitive version of hasContainerItem
|
||||
+ * @param stack The current item stack
|
||||
+ * @return True if this item has a 'container'
|
||||
+ */
|
||||
+ public boolean hasContainerItem(ItemStack stack)
|
||||
+ {
|
||||
+ return hasContainerItem();
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Retrieves the normal 'lifespan' of this item when it is dropped on the ground as a EntityItem.
|
||||
+ * This is in ticks, standard result is 6000, or 5 mins.
|
||||
+ *
|
||||
|
@ -621,7 +639,7 @@
|
|||
public static enum ToolMaterial
|
||||
{
|
||||
WOOD(0, 59, 2.0F, 0.0F, 15),
|
||||
@@ -793,6 +1335,9 @@
|
||||
@@ -793,6 +1346,9 @@
|
||||
|
||||
private static final String __OBFID = "CL_00000042";
|
||||
|
||||
|
@ -631,7 +649,7 @@
|
|||
private ToolMaterial(int par3, int par4, float par5, float par6, int par7)
|
||||
{
|
||||
this.harvestLevel = par3;
|
||||
@@ -834,7 +1379,15 @@
|
||||
@@ -834,7 +1390,15 @@
|
||||
|
||||
public Item func_150995_f()
|
||||
{
|
||||
|
|
|
@ -27,9 +27,12 @@
|
|||
{
|
||||
int j = this.field_145945_j[i].getItemDamage();
|
||||
int k = this.func_145936_c(j, itemstack);
|
||||
@@ -167,7 +169,7 @@
|
||||
@@ -165,9 +167,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
if (itemstack.getItem().hasContainerItem())
|
||||
- if (itemstack.getItem().hasContainerItem())
|
||||
+ if (itemstack.getItem().hasContainerItem(itemstack))
|
||||
{
|
||||
- this.field_145945_j[3] = new ItemStack(itemstack.getItem().getContainerItem());
|
||||
+ this.field_145945_j[3] = itemstack.getItem().getContainerItem(itemstack);
|
||||
|
|
Loading…
Reference in a new issue