001 package net.minecraft.src;
002
003 public class EntityAIDefendVillage extends EntityAITarget
004 {
005 EntityIronGolem irongolem;
006
007 /**
008 * The aggressor of the iron golem's village which is now the golem's attack target.
009 */
010 EntityLiving villageAgressorTarget;
011
012 public EntityAIDefendVillage(EntityIronGolem par1EntityIronGolem)
013 {
014 super(par1EntityIronGolem, 16.0F, false, true);
015 this.irongolem = par1EntityIronGolem;
016 this.setMutexBits(1);
017 }
018
019 /**
020 * Returns whether the EntityAIBase should begin execution.
021 */
022 public boolean shouldExecute()
023 {
024 Village var1 = this.irongolem.getVillage();
025
026 if (var1 == null)
027 {
028 return false;
029 }
030 else
031 {
032 this.villageAgressorTarget = var1.findNearestVillageAggressor(this.irongolem);
033
034 if (!this.isSuitableTarget(this.villageAgressorTarget, false))
035 {
036 if (this.taskOwner.getRNG().nextInt(20) == 0)
037 {
038 this.villageAgressorTarget = var1.func_82685_c(this.irongolem);
039 return this.isSuitableTarget(this.villageAgressorTarget, false);
040 }
041 else
042 {
043 return false;
044 }
045 }
046 else
047 {
048 return true;
049 }
050 }
051 }
052
053 /**
054 * Execute a one shot task or start executing a continuous task
055 */
056 public void startExecuting()
057 {
058 this.irongolem.setAttackTarget(this.villageAgressorTarget);
059 super.startExecuting();
060 }
061 }