You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			109 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Java
		
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Java
		
	
package net.minecraft.entity.ai;
 | 
						|
 | 
						|
import java.util.Iterator;
 | 
						|
import java.util.List;
 | 
						|
import net.minecraft.entity.monster.EntityIronGolem;
 | 
						|
import net.minecraft.entity.passive.EntityVillager;
 | 
						|
 | 
						|
public class EntityAIFollowGolem extends EntityAIBase
 | 
						|
{
 | 
						|
    private EntityVillager theVillager;
 | 
						|
    private EntityIronGolem theGolem;
 | 
						|
    private int takeGolemRoseTick;
 | 
						|
    private boolean tookGolemRose;
 | 
						|
    private static final String __OBFID = "CL_00001615";
 | 
						|
 | 
						|
    public EntityAIFollowGolem(EntityVillager p_i1656_1_)
 | 
						|
    {
 | 
						|
        this.theVillager = p_i1656_1_;
 | 
						|
        this.setMutexBits(3);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns whether the EntityAIBase should begin execution.
 | 
						|
     */
 | 
						|
    public boolean shouldExecute()
 | 
						|
    {
 | 
						|
        if (this.theVillager.getGrowingAge() >= 0)
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
        else if (!this.theVillager.worldObj.isDaytime())
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            List list = this.theVillager.worldObj.getEntitiesWithinAABB(EntityIronGolem.class, this.theVillager.boundingBox.expand(6.0D, 2.0D, 6.0D));
 | 
						|
 | 
						|
            if (list.isEmpty())
 | 
						|
            {
 | 
						|
                return false;
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                Iterator iterator = list.iterator();
 | 
						|
 | 
						|
                while (iterator.hasNext())
 | 
						|
                {
 | 
						|
                    EntityIronGolem entityirongolem = (EntityIronGolem)iterator.next();
 | 
						|
 | 
						|
                    if (entityirongolem.getHoldRoseTick() > 0)
 | 
						|
                    {
 | 
						|
                        this.theGolem = entityirongolem;
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                return this.theGolem != null;
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns whether an in-progress EntityAIBase should continue executing
 | 
						|
     */
 | 
						|
    public boolean continueExecuting()
 | 
						|
    {
 | 
						|
        return this.theGolem.getHoldRoseTick() > 0;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Execute a one shot task or start executing a continuous task
 | 
						|
     */
 | 
						|
    public void startExecuting()
 | 
						|
    {
 | 
						|
        this.takeGolemRoseTick = this.theVillager.getRNG().nextInt(320);
 | 
						|
        this.tookGolemRose = false;
 | 
						|
        this.theGolem.getNavigator().clearPathEntity();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Resets the task
 | 
						|
     */
 | 
						|
    public void resetTask()
 | 
						|
    {
 | 
						|
        this.theGolem = null;
 | 
						|
        this.theVillager.getNavigator().clearPathEntity();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Updates the task
 | 
						|
     */
 | 
						|
    public void updateTask()
 | 
						|
    {
 | 
						|
        this.theVillager.getLookHelper().setLookPositionWithEntity(this.theGolem, 30.0F, 30.0F);
 | 
						|
 | 
						|
        if (this.theGolem.getHoldRoseTick() == this.takeGolemRoseTick)
 | 
						|
        {
 | 
						|
            this.theVillager.getNavigator().tryMoveToEntityLiving(this.theGolem, 0.5D);
 | 
						|
            this.tookGolemRose = true;
 | 
						|
        }
 | 
						|
 | 
						|
        if (this.tookGolemRose && this.theVillager.getDistanceSqToEntity(this.theGolem) < 4.0D)
 | 
						|
        {
 | 
						|
            this.theGolem.setHoldingRose(false);
 | 
						|
            this.theVillager.getNavigator().clearPathEntity();
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |