    001package net.minecraft.entity.ai;
    002
    003import net.minecraft.entity.passive.EntityVillager;
    004import net.minecraft.entity.player.EntityPlayer;
    005import net.minecraft.inventory.Container;
    006
    007public 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 entityplayer = this.villager.getCustomer();
    041            return entityplayer == null ? false : (this.villager.getDistanceSqToEntity(entityplayer) > 16.0D ? false : entityplayer.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}