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