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; } }