001 package net.minecraft.src;
002
003 public class EntityAIWander extends EntityAIBase
004 {
005 private EntityCreature entity;
006 private double xPosition;
007 private double yPosition;
008 private double zPosition;
009 private float speed;
010
011 public EntityAIWander(EntityCreature par1EntityCreature, float par2)
012 {
013 this.entity = par1EntityCreature;
014 this.speed = par2;
015 this.setMutexBits(1);
016 }
017
018 /**
019 * Returns whether the EntityAIBase should begin execution.
020 */
021 public boolean shouldExecute()
022 {
023 if (this.entity.getAge() >= 100)
024 {
025 return false;
026 }
027 else if (this.entity.getRNG().nextInt(120) != 0)
028 {
029 return false;
030 }
031 else
032 {
033 Vec3 var1 = RandomPositionGenerator.findRandomTarget(this.entity, 10, 7);
034
035 if (var1 == null)
036 {
037 return false;
038 }
039 else
040 {
041 this.xPosition = var1.xCoord;
042 this.yPosition = var1.yCoord;
043 this.zPosition = var1.zCoord;
044 return true;
045 }
046 }
047 }
048
049 /**
050 * Returns whether an in-progress EntityAIBase should continue executing
051 */
052 public boolean continueExecuting()
053 {
054 return !this.entity.getNavigator().noPath();
055 }
056
057 /**
058 * Execute a one shot task or start executing a continuous task
059 */
060 public void startExecuting()
061 {
062 this.entity.getNavigator().tryMoveToXYZ(this.xPosition, this.yPosition, this.zPosition, this.speed);
063 }
064 }