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    }