    001    package net.minecraft.src;
    002
    003    public class EntityAILookAtVillager extends EntityAIBase
    004    {
    005        private EntityIronGolem theGolem;
    006        private EntityVillager theVillager;
    007        private int lookTime;
    008
    009        public EntityAILookAtVillager(EntityIronGolem par1EntityIronGolem)
    010        {
    011            this.theGolem = par1EntityIronGolem;
    012            this.setMutexBits(3);
    013        }
    014
    015        /**
    016         * Returns whether the EntityAIBase should begin execution.
    017         */
    018        public boolean shouldExecute()
    019        {
    020            if (!this.theGolem.worldObj.isDaytime())
    021            {
    022                return false;
    023            }
    024            else if (this.theGolem.getRNG().nextInt(8000) != 0)
    025            {
    026                return false;
    027            }
    028            else
    029            {
    030                this.theVillager = (EntityVillager)this.theGolem.worldObj.findNearestEntityWithinAABB(EntityVillager.class, this.theGolem.boundingBox.expand(6.0D, 2.0D, 6.0D), this.theGolem);
    031                return this.theVillager != null;
    032            }
    033        }
    034
    035        /**
    036         * Returns whether an in-progress EntityAIBase should continue executing
    037         */
    038        public boolean continueExecuting()
    039        {
    040            return this.lookTime > 0;
    041        }
    042
    043        /**
    044         * Execute a one shot task or start executing a continuous task
    045         */
    046        public void startExecuting()
    047        {
    048            this.lookTime = 400;
    049            this.theGolem.setHoldingRose(true);
    050        }
    051
    052        /**
    053         * Resets the task
    054         */
    055        public void resetTask()
    056        {
    057            this.theGolem.setHoldingRose(false);
    058            this.theVillager = null;
    059        }
    060
    061        /**
    062         * Updates the task
    063         */
    064        public void updateTask()
    065        {
    066            this.theGolem.getLookHelper().setLookPositionWithEntity(this.theVillager, 30.0F, 30.0F);
    067            --this.lookTime;
    068        }
    069    }