Item callback for EntityItem update tick. Closes #426

This commit is contained in:
LexManos 2013-04-10 16:06:07 -07:00
parent 02a0824716
commit 395c537f2c
2 changed files with 39 additions and 10 deletions

View File

@ -32,7 +32,23 @@
} }
/** /**
@@ -135,7 +146,29 @@ @@ -80,6 +91,15 @@
*/
public void onUpdate()
{
+ ItemStack stack = this.getDataWatcher().getWatchableObjectItemStack(10);
+ if (stack != null && stack.getItem() != null)
+ {
+ if (stack.getItem().onEntityItemUpdate(this))
+ {
+ return;
+ }
+ }
+
super.onUpdate();
if (this.delayBeforeCanPickup > 0)
@@ -135,7 +155,29 @@
++this.age; ++this.age;
@ -63,7 +79,7 @@
{ {
this.setDead(); this.setDead();
} }
@@ -270,6 +303,7 @@ @@ -270,6 +312,7 @@
{ {
par1NBTTagCompound.setShort("Health", (short)((byte)this.health)); par1NBTTagCompound.setShort("Health", (short)((byte)this.health));
par1NBTTagCompound.setShort("Age", (short)this.age); par1NBTTagCompound.setShort("Age", (short)this.age);
@ -71,7 +87,7 @@
if (this.getEntityItem() != null) if (this.getEntityItem() != null)
{ {
@@ -287,10 +321,17 @@ @@ -287,10 +330,17 @@
NBTTagCompound nbttagcompound1 = par1NBTTagCompound.getCompoundTag("Item"); NBTTagCompound nbttagcompound1 = par1NBTTagCompound.getCompoundTag("Item");
this.setEntityItemStack(ItemStack.loadItemStackFromNBT(nbttagcompound1)); this.setEntityItemStack(ItemStack.loadItemStackFromNBT(nbttagcompound1));
@ -90,7 +106,7 @@
} }
/** /**
@@ -300,10 +341,22 @@ @@ -300,10 +350,22 @@
{ {
if (!this.worldObj.isRemote) if (!this.worldObj.isRemote)
{ {

View File

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/item/Item.java --- ../src_base/minecraft/net/minecraft/item/Item.java
+++ ../src_work/minecraft/net/minecraft/item/Item.java +++ ../src_work/minecraft/net/minecraft/item/Item.java
@@ -7,6 +7,8 @@ @@ -7,13 +7,17 @@
import java.util.Random; import java.util.Random;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
@ -9,7 +9,8 @@
import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
@@ -14,6 +16,7 @@ import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityItemFrame; import net.minecraft.entity.item.EntityItemFrame;
import net.minecraft.entity.item.EntityPainting; import net.minecraft.entity.item.EntityPainting;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -17,7 +18,7 @@
import net.minecraft.potion.Potion; import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionHelper; import net.minecraft.potion.PotionHelper;
import net.minecraft.stats.StatList; import net.minecraft.stats.StatList;
@@ -23,7 +26,10 @@ @@ -23,7 +27,10 @@
import net.minecraft.util.StatCollector; import net.minecraft.util.StatCollector;
import net.minecraft.util.StringTranslate; import net.minecraft.util.StringTranslate;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
@ -28,7 +29,7 @@
public class Item public class Item
{ {
@@ -238,13 +244,16 @@ @@ -238,13 +245,16 @@
/** Icon index in the icons table. */ /** Icon index in the icons table. */
protected Icon itemIcon; protected Icon itemIcon;
@ -46,7 +47,7 @@
} }
itemsList[256 + par1] = this; itemsList[256 + par1] = this;
@@ -640,6 +649,10 @@ @@ -640,6 +650,10 @@
float f7 = f4 * f5; float f7 = f4 * f5;
float f8 = f3 * f5; float f8 = f3 * f5;
double d3 = 5.0D; double d3 = 5.0D;
@ -57,7 +58,7 @@
Vec3 vec31 = vec3.addVector((double)f7 * d3, (double)f6 * d3, (double)f8 * d3); Vec3 vec31 = vec3.addVector((double)f7 * d3, (double)f6 * d3, (double)f8 * d3);
return par1World.rayTraceBlocks_do_do(vec3, vec31, par3, !par3); return par1World.rayTraceBlocks_do_do(vec3, vec31, par3, !par3);
} }
@@ -720,4 +733,395 @@ @@ -720,4 +734,407 @@
{ {
StatList.initStats(); StatList.initStats();
} }
@ -252,6 +253,18 @@
+ } + }
+ +
+ /** + /**
+ * Called by the default implemetation of EntityItem's onUpdate method, allowing for cleaner
+ * control over the update of the item without having to write a subclass.
+ *
+ * @param entityItem The entity Item
+ * @return Return true to skip any further update code.
+ */
+ public boolean onEntityItemUpdate(EntityItem entityItem)
+ {
+ return false;
+ }
+
+ /**
+ * Gets a list of tabs that items belonging to this class can display on, + * Gets a list of tabs that items belonging to this class can display on,
+ * combined properly with getSubItems allows for a single item to span + * combined properly with getSubItems allows for a single item to span
+ * many sub-items across many tabs. + * many sub-items across many tabs.