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