68 lines
1.5 KiB
Java
68 lines
1.5 KiB
Java
![]() |
package game.ai;
|
||
|
|
||
|
import game.entity.types.EntityLiving;
|
||
|
import game.entity.types.EntityTameable;
|
||
|
|
||
|
public class EntityAISit extends EntityAIBase
|
||
|
{
|
||
|
private EntityTameable theEntity;
|
||
|
|
||
|
/** If the EntityTameable is sitting. */
|
||
|
private boolean isSitting;
|
||
|
|
||
|
public EntityAISit(EntityTameable entityIn)
|
||
|
{
|
||
|
this.theEntity = entityIn;
|
||
|
this.setMutexBits(5);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns whether the EntityAIBase should begin execution.
|
||
|
*/
|
||
|
public boolean shouldExecute()
|
||
|
{
|
||
|
if (!this.theEntity.isTamed())
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
else if (this.theEntity.isInLiquid())
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
else if (!this.theEntity.onGround)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
EntityLiving entitylivingbase = this.theEntity.getOwner();
|
||
|
return entitylivingbase == null ? true : (this.theEntity.getDistanceSqToEntity(entitylivingbase) < 144.0D && entitylivingbase.getAttackedBy() != null ? false : this.isSitting);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Execute a one shot task or start executing a continuous task
|
||
|
*/
|
||
|
public void startExecuting()
|
||
|
{
|
||
|
this.theEntity.getNavigator().clearPathEntity();
|
||
|
this.theEntity.setSitting(true);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Resets the task
|
||
|
*/
|
||
|
public void resetTask()
|
||
|
{
|
||
|
this.theEntity.setSitting(false);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets the sitting flag.
|
||
|
*/
|
||
|
public void setSitting(boolean sitting)
|
||
|
{
|
||
|
this.isSitting = sitting;
|
||
|
}
|
||
|
}
|