001 package net.minecraft.src; 002 003 public abstract class EntityAgeable extends EntityCreature 004 { 005 public EntityAgeable(World par1World) 006 { 007 super(par1World); 008 } 009 010 protected void entityInit() 011 { 012 super.entityInit(); 013 this.dataWatcher.addObject(12, new Integer(0)); 014 } 015 016 /** 017 * The age value may be negative or positive or zero. If it's negative, it get's incremented on each tick, if it's 018 * positive, it get's decremented each tick. Don't confuse this with EntityLiving.getAge. With a negative value the 019 * Entity is considered a child. 020 */ 021 public int getGrowingAge() 022 { 023 return this.dataWatcher.getWatchableObjectInt(12); 024 } 025 026 /** 027 * The age value may be negative or positive or zero. If it's negative, it get's incremented on each tick, if it's 028 * positive, it get's decremented each tick. With a negative value the Entity is considered a child. 029 */ 030 public void setGrowingAge(int par1) 031 { 032 this.dataWatcher.updateObject(12, Integer.valueOf(par1)); 033 } 034 035 /** 036 * (abstract) Protected helper method to write subclass entity data to NBT. 037 */ 038 public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) 039 { 040 super.writeEntityToNBT(par1NBTTagCompound); 041 par1NBTTagCompound.setInteger("Age", this.getGrowingAge()); 042 } 043 044 /** 045 * (abstract) Protected helper method to read subclass entity data from NBT. 046 */ 047 public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) 048 { 049 super.readEntityFromNBT(par1NBTTagCompound); 050 this.setGrowingAge(par1NBTTagCompound.getInteger("Age")); 051 } 052 053 /** 054 * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons 055 * use this to react to sunlight and start to burn. 056 */ 057 public void onLivingUpdate() 058 { 059 super.onLivingUpdate(); 060 int var1 = this.getGrowingAge(); 061 062 if (var1 < 0) 063 { 064 ++var1; 065 this.setGrowingAge(var1); 066 } 067 else if (var1 > 0) 068 { 069 --var1; 070 this.setGrowingAge(var1); 071 } 072 } 073 074 /** 075 * If Animal, checks if the age timer is negative 076 */ 077 public boolean isChild() 078 { 079 return this.getGrowingAge() < 0; 080 } 081 }