    001    package net.minecraft.entity.ai;
    002
    003    import net.minecraft.entity.passive.EntityVillager;
    004    import net.minecraft.entity.player.EntityPlayer;
    005    import net.minecraft.inventory.Container;
    006
    007    public class EntityAITradePlayer extends EntityAIBase
    008    {
    009        private EntityVillager villager;
    010
    011        public EntityAITradePlayer(EntityVillager par1EntityVillager)
    012        {
    013            this.villager = par1EntityVillager;
    014            this.setMutexBits(5);
    015        }
    016
    017        /**
    018         * Returns whether the EntityAIBase should begin execution.
    019         */
    020        public boolean shouldExecute()
    021        {
    022            if (!this.villager.isEntityAlive())
    023            {
    024                return false;
    025            }
    026            else if (this.villager.isInWater())
    027            {
    028                return false;
    029            }
    030            else if (!this.villager.onGround)
    031            {
    032                return false;
    033            }
    034            else if (this.villager.velocityChanged)
    035            {
    036                return false;
    037            }
    038            else
    039            {
    040                EntityPlayer var1 = this.villager.getCustomer();
    041                return var1 == null ? false : (this.villager.getDistanceSqToEntity(var1) > 16.0D ? false : var1.openContainer instanceof Container);
    042            }
    043        }
    044
    045        /**
    046         * Execute a one shot task or start executing a continuous task
    047         */
    048        public void startExecuting()
    049        {
    050            this.villager.getNavigator().clearPathEntity();
    051        }
    052
    053        /**
    054         * Resets the task
    055         */
    056        public void resetTask()
    057        {
    058            this.villager.setCustomer((EntityPlayer)null);
    059        }
    060    }