001 package net.minecraft.src; 002 003 public class EntityAIBeg extends EntityAIBase 004 { 005 private EntityWolf theWolf; 006 private EntityPlayer thePlayer; 007 private World worldObject; 008 private float minPlayerDistance; 009 private int field_75384_e; 010 011 public EntityAIBeg(EntityWolf par1EntityWolf, float par2) 012 { 013 this.theWolf = par1EntityWolf; 014 this.worldObject = par1EntityWolf.worldObj; 015 this.minPlayerDistance = par2; 016 this.setMutexBits(2); 017 } 018 019 /** 020 * Returns whether the EntityAIBase should begin execution. 021 */ 022 public boolean shouldExecute() 023 { 024 this.thePlayer = this.worldObject.getClosestPlayerToEntity(this.theWolf, (double)this.minPlayerDistance); 025 return this.thePlayer == null ? false : this.hasPlayerGotBoneInHand(this.thePlayer); 026 } 027 028 /** 029 * Returns whether an in-progress EntityAIBase should continue executing 030 */ 031 public boolean continueExecuting() 032 { 033 return !this.thePlayer.isEntityAlive() ? false : (this.theWolf.getDistanceSqToEntity(this.thePlayer) > (double)(this.minPlayerDistance * this.minPlayerDistance) ? false : this.field_75384_e > 0 && this.hasPlayerGotBoneInHand(this.thePlayer)); 034 } 035 036 /** 037 * Execute a one shot task or start executing a continuous task 038 */ 039 public void startExecuting() 040 { 041 this.theWolf.func_70918_i(true); 042 this.field_75384_e = 40 + this.theWolf.getRNG().nextInt(40); 043 } 044 045 /** 046 * Resets the task 047 */ 048 public void resetTask() 049 { 050 this.theWolf.func_70918_i(false); 051 this.thePlayer = null; 052 } 053 054 /** 055 * Updates the task 056 */ 057 public void updateTask() 058 { 059 this.theWolf.getLookHelper().setLookPosition(this.thePlayer.posX, this.thePlayer.posY + (double)this.thePlayer.getEyeHeight(), this.thePlayer.posZ, 10.0F, (float)this.theWolf.getVerticalFaceSpeed()); 060 --this.field_75384_e; 061 } 062 063 /** 064 * Gets if the Player has the Bone in the hand. 065 */ 066 private boolean hasPlayerGotBoneInHand(EntityPlayer par1EntityPlayer) 067 { 068 ItemStack var2 = par1EntityPlayer.inventory.getCurrentItem(); 069 return var2 == null ? false : (!this.theWolf.isTamed() && var2.itemID == Item.bone.shiftedIndex ? true : this.theWolf.isWheat(var2)); 070 } 071 }