001    package net.minecraft.entity.ai;
002    
003    public 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    }