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}