    001    package net.minecraft.src;
    002
    003    public class EntityAILookIdle extends EntityAIBase
    004    {
    005        /** The entity that is looking idle. */
    006        private EntityLiving idleEntity;
    007
    008        /** X offset to look at */
    009        private double lookX;
    010
    011        /** Z offset to look at */
    012        private double lookZ;
    013
    014        /**
    015         * A decrementing tick that stops the entity from being idle once it reaches 0.
    016         */
    017        private int idleTime = 0;
    018
    019        public EntityAILookIdle(EntityLiving par1EntityLiving)
    020        {
    021            this.idleEntity = par1EntityLiving;
    022            this.setMutexBits(3);
    023        }
    024
    025        /**
    026         * Returns whether the EntityAIBase should begin execution.
    027         */
    028        public boolean shouldExecute()
    029        {
    030            return this.idleEntity.getRNG().nextFloat() < 0.02F;
    031        }
    032
    033        /**
    034         * Returns whether an in-progress EntityAIBase should continue executing
    035         */
    036        public boolean continueExecuting()
    037        {
    038            return this.idleTime >= 0;
    039        }
    040
    041        /**
    042         * Execute a one shot task or start executing a continuous task
    043         */
    044        public void startExecuting()
    045        {
    046            double var1 = (Math.PI * 2D) * this.idleEntity.getRNG().nextDouble();
    047            this.lookX = Math.cos(var1);
    048            this.lookZ = Math.sin(var1);
    049            this.idleTime = 20 + this.idleEntity.getRNG().nextInt(20);
    050        }
    051
    052        /**
    053         * Updates the task
    054         */
    055        public void updateTask()
    056        {
    057            --this.idleTime;
    058            this.idleEntity.getLookHelper().setLookPosition(this.idleEntity.posX + this.lookX, this.idleEntity.posY + (double)this.idleEntity.getEyeHeight(), this.idleEntity.posZ + this.lookZ, 10.0F, (float)this.idleEntity.getVerticalFaceSpeed());
    059        }
    060    }