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.
		
		
		
		
		
			
		
			
				
	
	
		
			129 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Java
		
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Java
		
	
package net.minecraft.entity.ai;
 | 
						|
 | 
						|
import java.util.Iterator;
 | 
						|
import java.util.List;
 | 
						|
import net.minecraft.entity.EntityLivingBase;
 | 
						|
import net.minecraft.entity.passive.EntityVillager;
 | 
						|
import net.minecraft.util.Vec3;
 | 
						|
 | 
						|
public class EntityAIPlay extends EntityAIBase
 | 
						|
{
 | 
						|
    private EntityVillager villagerObj;
 | 
						|
    private EntityLivingBase targetVillager;
 | 
						|
    private double field_75261_c;
 | 
						|
    private int playTime;
 | 
						|
    private static final String __OBFID = "CL_00001605";
 | 
						|
 | 
						|
    public EntityAIPlay(EntityVillager p_i1646_1_, double p_i1646_2_)
 | 
						|
    {
 | 
						|
        this.villagerObj = p_i1646_1_;
 | 
						|
        this.field_75261_c = p_i1646_2_;
 | 
						|
        this.setMutexBits(1);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns whether the EntityAIBase should begin execution.
 | 
						|
     */
 | 
						|
    public boolean shouldExecute()
 | 
						|
    {
 | 
						|
        if (this.villagerObj.getGrowingAge() >= 0)
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
        else if (this.villagerObj.getRNG().nextInt(400) != 0)
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            List list = this.villagerObj.worldObj.getEntitiesWithinAABB(EntityVillager.class, this.villagerObj.boundingBox.expand(6.0D, 3.0D, 6.0D));
 | 
						|
            double d0 = Double.MAX_VALUE;
 | 
						|
            Iterator iterator = list.iterator();
 | 
						|
 | 
						|
            while (iterator.hasNext())
 | 
						|
            {
 | 
						|
                EntityVillager entityvillager = (EntityVillager)iterator.next();
 | 
						|
 | 
						|
                if (entityvillager != this.villagerObj && !entityvillager.isPlaying() && entityvillager.getGrowingAge() < 0)
 | 
						|
                {
 | 
						|
                    double d1 = entityvillager.getDistanceSqToEntity(this.villagerObj);
 | 
						|
 | 
						|
                    if (d1 <= d0)
 | 
						|
                    {
 | 
						|
                        d0 = d1;
 | 
						|
                        this.targetVillager = entityvillager;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            if (this.targetVillager == null)
 | 
						|
            {
 | 
						|
                Vec3 vec3 = RandomPositionGenerator.findRandomTarget(this.villagerObj, 16, 3);
 | 
						|
 | 
						|
                if (vec3 == null)
 | 
						|
                {
 | 
						|
                    return false;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns whether an in-progress EntityAIBase should continue executing
 | 
						|
     */
 | 
						|
    public boolean continueExecuting()
 | 
						|
    {
 | 
						|
        return this.playTime > 0;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Execute a one shot task or start executing a continuous task
 | 
						|
     */
 | 
						|
    public void startExecuting()
 | 
						|
    {
 | 
						|
        if (this.targetVillager != null)
 | 
						|
        {
 | 
						|
            this.villagerObj.setPlaying(true);
 | 
						|
        }
 | 
						|
 | 
						|
        this.playTime = 1000;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Resets the task
 | 
						|
     */
 | 
						|
    public void resetTask()
 | 
						|
    {
 | 
						|
        this.villagerObj.setPlaying(false);
 | 
						|
        this.targetVillager = null;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Updates the task
 | 
						|
     */
 | 
						|
    public void updateTask()
 | 
						|
    {
 | 
						|
        --this.playTime;
 | 
						|
 | 
						|
        if (this.targetVillager != null)
 | 
						|
        {
 | 
						|
            if (this.villagerObj.getDistanceSqToEntity(this.targetVillager) > 4.0D)
 | 
						|
            {
 | 
						|
                this.villagerObj.getNavigator().tryMoveToEntityLiving(this.targetVillager, this.field_75261_c);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else if (this.villagerObj.getNavigator().noPath())
 | 
						|
        {
 | 
						|
            Vec3 vec3 = RandomPositionGenerator.findRandomTarget(this.villagerObj, 16, 3);
 | 
						|
 | 
						|
            if (vec3 == null)
 | 
						|
            {
 | 
						|
                return;
 | 
						|
            }
 | 
						|
 | 
						|
            this.villagerObj.getNavigator().tryMoveToXYZ(vec3.xCoord, vec3.yCoord, vec3.zCoord, this.field_75261_c);
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |