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 }