    001package net.minecraft.entity.ai;
    002
    003import java.util.ArrayList;
    004import java.util.List;
    005import net.minecraft.entity.Entity;
    006import net.minecraft.entity.EntityLiving;
    007
    008public class EntitySenses
    009{
    010    EntityLiving entityObj;
    011
    012    /** Cache of entities which we can see */
    013    List seenEntities = new ArrayList();
    014
    015    /** Cache of entities which we cannot see */
    016    List unseenEntities = new ArrayList();
    017
    018    public EntitySenses(EntityLiving par1EntityLiving)
    019    {
    020        this.entityObj = par1EntityLiving;
    021    }
    022
    023    /**
    024     * Clears canSeeCachePositive and canSeeCacheNegative.
    025     */
    026    public void clearSensingCache()
    027    {
    028        this.seenEntities.clear();
    029        this.unseenEntities.clear();
    030    }
    031
    032    /**
    033     * Checks, whether 'our' entity can see the entity given as argument (true) or not (false), caching the result.
    034     */
    035    public boolean canSee(Entity par1Entity)
    036    {
    037        if (this.seenEntities.contains(par1Entity))
    038        {
    039            return true;
    040        }
    041        else if (this.unseenEntities.contains(par1Entity))
    042        {
    043            return false;
    044        }
    045        else
    046        {
    047            this.entityObj.worldObj.theProfiler.startSection("canSee");
    048            boolean flag = this.entityObj.canEntityBeSeen(par1Entity);
    049            this.entityObj.worldObj.theProfiler.endSection();
    050
    051            if (flag)
    052            {
    053                this.seenEntities.add(par1Entity);
    054            }
    055            else
    056            {
    057                this.unseenEntities.add(par1Entity);
    058            }
    059
    060            return flag;
    061        }
    062    }
    063}