001package net.minecraft.entity.ai;
002
003public abstract class EntityAIBase
004{
005    /**
006     * A bitmask telling which other tasks may not run concurrently. The test is a simple bitwise AND - if it yields
007     * zero, the two tasks may run concurrently, if not - they must run exclusively from each other.
008     */
009    private int mutexBits = 0;
010
011    /**
012     * Returns whether the EntityAIBase should begin execution.
013     */
014    public abstract boolean shouldExecute();
015
016    /**
017     * Returns whether an in-progress EntityAIBase should continue executing
018     */
019    public boolean continueExecuting()
020    {
021        return this.shouldExecute();
022    }
023
024    /**
025     * Returns whether the task requires multiple updates or not
026     */
027    public boolean isContinuous()
028    {
029        return true;
030    }
031
032    /**
033     * Execute a one shot task or start executing a continuous task
034     */
035    public void startExecuting() {}
036
037    /**
038     * Resets the task
039     */
040    public void resetTask() {}
041
042    /**
043     * Updates the task
044     */
045    public void updateTask() {}
046
047    /**
048     * Sets a bitmask telling which other tasks may not run concurrently. The test is a simple bitwise AND - if it
049     * yields zero, the two tasks may run concurrently, if not - they must run exclusively from each other.
050     */
051    public void setMutexBits(int par1)
052    {
053        this.mutexBits = par1;
054    }
055
056    /**
057     * Get a bitmask telling which other tasks may not run concurrently. The test is a simple bitwise AND - if it yields
058     * zero, the two tasks may run concurrently, if not - they must run exclusively from each other.
059     */
060    public int getMutexBits()
061    {
062        return this.mutexBits;
063    }
064}