001 package net.minecraft.src;
002
003 public class EntityAISit extends EntityAIBase
004 {
005 private EntityTameable theEntity;
006
007 /** If the EntityTameable is sitting. */
008 private boolean isSitting = false;
009
010 public EntityAISit(EntityTameable par1EntityTameable)
011 {
012 this.theEntity = par1EntityTameable;
013 this.setMutexBits(5);
014 }
015
016 /**
017 * Returns whether the EntityAIBase should begin execution.
018 */
019 public boolean shouldExecute()
020 {
021 if (!this.theEntity.isTamed())
022 {
023 return false;
024 }
025 else if (this.theEntity.isInWater())
026 {
027 return false;
028 }
029 else if (!this.theEntity.onGround)
030 {
031 return false;
032 }
033 else
034 {
035 EntityLiving var1 = this.theEntity.getOwner();
036 return var1 == null ? true : (this.theEntity.getDistanceSqToEntity(var1) < 144.0D && var1.getAITarget() != null ? false : this.isSitting);
037 }
038 }
039
040 /**
041 * Execute a one shot task or start executing a continuous task
042 */
043 public void startExecuting()
044 {
045 this.theEntity.getNavigator().clearPathEntity();
046 this.theEntity.setSitting(true);
047 }
048
049 /**
050 * Resets the task
051 */
052 public void resetTask()
053 {
054 this.theEntity.setSitting(false);
055 }
056
057 /**
058 * Sets the sitting flag.
059 */
060 public void setSitting(boolean par1)
061 {
062 this.isSitting = par1;
063 }
064 }