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 }