    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    }