95 lines
2.2 KiB
Java
95 lines
2.2 KiB
Java
![]() |
package game.ai;
|
||
|
|
||
|
import game.entity.types.EntityLiving;
|
||
|
import game.world.Vec3;
|
||
|
|
||
|
public class EntityAIWander extends EntityAIBase
|
||
|
{
|
||
|
private EntityLiving entity;
|
||
|
private double xPosition;
|
||
|
private double yPosition;
|
||
|
private double zPosition;
|
||
|
private double speed;
|
||
|
private int executionChance;
|
||
|
// private boolean mustUpdate;
|
||
|
|
||
|
public EntityAIWander(EntityLiving creatureIn, double speedIn)
|
||
|
{
|
||
|
this(creatureIn, speedIn, 120);
|
||
|
}
|
||
|
|
||
|
public EntityAIWander(EntityLiving creatureIn, double speedIn, int chance)
|
||
|
{
|
||
|
this.entity = creatureIn;
|
||
|
this.speed = speedIn;
|
||
|
this.executionChance = chance;
|
||
|
this.setMutexBits(1);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns whether the EntityAIBase should begin execution.
|
||
|
*/
|
||
|
public boolean shouldExecute()
|
||
|
{
|
||
|
// if (!this.mustUpdate)
|
||
|
// {
|
||
|
// if (this.entity.getAge() >= 100)
|
||
|
// {
|
||
|
// return false;
|
||
|
// }
|
||
|
|
||
|
if (this.entity.getRNG().zrange(this.executionChance) != 0)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
// }
|
||
|
|
||
|
Vec3 vec3 = RandomPositionGenerator.findRandomTarget(this.entity, 10, 7);
|
||
|
|
||
|
if (vec3 == null)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
this.xPosition = vec3.xCoord;
|
||
|
this.yPosition = vec3.yCoord;
|
||
|
this.zPosition = vec3.zCoord;
|
||
|
// this.mustUpdate = false;
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns whether an in-progress EntityAIBase should continue executing
|
||
|
*/
|
||
|
public boolean continueExecuting()
|
||
|
{
|
||
|
return !this.entity.getNavigator().noPath();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Execute a one shot task or start executing a continuous task
|
||
|
*/
|
||
|
public void startExecuting()
|
||
|
{
|
||
|
this.entity.getNavigator().tryMoveToXYZ(this.xPosition, this.yPosition, this.zPosition, this.speed);
|
||
|
}
|
||
|
|
||
|
// /**
|
||
|
// * Makes task to bypass chance
|
||
|
// */
|
||
|
// public void makeUpdate()
|
||
|
// {
|
||
|
// this.mustUpdate = true;
|
||
|
// }
|
||
|
//
|
||
|
// /**
|
||
|
// * Changes task random possibility for execution
|
||
|
// */
|
||
|
// public void setExecutionChance(int newchance)
|
||
|
// {
|
||
|
// this.executionChance = newchance;
|
||
|
// }
|
||
|
}
|