Interface IActionManager


  • public interface IActionManager
    Manages a queue of IAction instances, allowing scheduling of delayed, repeating, or conditional "tasks" for NPC scripting.
    • Method Summary

      All Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      default void addConditionalTask​(java.lang.String name, java.util.function.Supplier<java.lang.Boolean> condition, java.util.function.Consumer<IAction> task)
      Convenience: create & enqueue a conditional task that re-checks forever.
      default void addConditionalTask​(java.lang.String name, java.util.function.Supplier<java.lang.Boolean> condition, java.util.function.Consumer<IAction> task, java.util.function.Supplier<java.lang.Boolean> terminateWhen)
      Convenience: create & enqueue a conditional task that gives up after maxChecks.
      default void addSingleTask​(java.lang.String name, int startAfterTicks, java.util.function.Consumer<IAction> task)
      Convenience: create & enqueue a task that will fire exactly once after the given delay, and then auto-complete.
      default void addSingleTask​(java.lang.String name, java.util.function.Consumer<IAction> task)
      Same as above, but fires immediately (no delay).
      default void addTask​(java.lang.String name, int maxDuration, int startAfterTicks, java.util.function.Consumer<IAction> task)
      Convenience: create and enqueue a normal repeating task.
      boolean cancelAction​(java.lang.String name)
      Cancel (remove) the first queued action with the given name.
      IActionChain chain()  
      void clear()
      Remove every scheduled action immediately.
      IAction create​(int delay, java.util.function.Consumer<IAction> t)  
      IAction create​(java.lang.String name)  
      IAction create​(java.lang.String name, int maxDuration, int startAfterTicks, java.util.function.Consumer<IAction> action)
      Create a new action instance without immediately scheduling it.
      IAction create​(java.lang.String name, int delay, java.util.function.Consumer<IAction> t)  
      IAction create​(java.lang.String name, java.util.function.Consumer<IAction> t)  
      IConditionalAction create​(java.lang.String name, java.util.function.Supplier<java.lang.Boolean> condition, java.util.function.Consumer<IAction> task)
      Schedule a conditional action that gives up after at most maxChecks attempts.
      IConditionalAction create​(java.lang.String name, java.util.function.Supplier<java.lang.Boolean> condition, java.util.function.Consumer<IAction> task, java.util.function.Supplier<java.lang.Boolean> terminateWhen)
      Schedule a conditional action that gives up after at most maxChecks attempts.
      IConditionalAction create​(java.lang.String name, java.util.function.Supplier<java.lang.Boolean> condition, java.util.function.Consumer<IAction> task, java.util.function.Supplier<java.lang.Boolean> terminateWhen, java.util.function.Consumer<IAction> onTermination)
      Schedule a conditional action that gives up after at most maxChecks attempts.
      IAction create​(java.util.function.Consumer<IAction> t)  
      IConditionalAction create​(java.util.function.Supplier<java.lang.Boolean> condition, java.util.function.Consumer<IAction> task)
      Schedule a conditional action that gives up after at most maxChecks attempts.
      IConditionalAction create​(java.util.function.Supplier<java.lang.Boolean> condition, java.util.function.Consumer<IAction> task, java.util.function.Supplier<java.lang.Boolean> terminateWhen)
      Schedule a conditional action that gives up after at most maxChecks attempts.
      IConditionalAction create​(java.util.function.Supplier<java.lang.Boolean> condition, java.util.function.Consumer<IAction> task, java.util.function.Supplier<java.lang.Boolean> terminateWhen, java.util.function.Consumer<IAction> onTermination)
      Schedule a conditional action that gives up after at most maxChecks attempts.
      java.util.Queue<IAction> getActionQueue()
      Retrieve the entire action queue.
      java.util.List<IConditionalAction> getConditionalActions()  
      IAction getCurrentAction()
      Peek at the next action to run (the head of the queue).
      int getIndex​(IAction action)
      Get the zero-based position of an action in the queue.
      IActionChain parallelChain()  
      IAction scheduleAction​(java.lang.String name, int maxDuration, int startAfterTicks, java.util.function.Consumer<IAction> action)
      Convenience for create(String, int, int, Consumer) + enqueue.
      IConditionalAction scheduleAction​(java.lang.String name, java.util.function.Supplier<java.lang.Boolean> condition, java.util.function.Consumer<IAction> task)
      Schedule a conditional action that gives up after at most maxChecks attempts.
      IConditionalAction scheduleAction​(java.lang.String name, java.util.function.Supplier<java.lang.Boolean> condition, java.util.function.Consumer<IAction> task, java.util.function.Supplier<java.lang.Boolean> terminateWhen)
      Schedule a conditional action that gives up after at most maxChecks attempts.
      IConditionalAction scheduleAction​(java.lang.String name, java.util.function.Supplier<java.lang.Boolean> condition, java.util.function.Consumer<IAction> task, java.util.function.Supplier<java.lang.Boolean> terminateWhen, java.util.function.Consumer<IAction> onTermination)
      Schedule a conditional action that gives up after at most maxChecks attempts.
      IConditionalAction scheduleAction​(IConditionalAction action)  
      IAction scheduleAction​(IAction action)
      Schedule an existing action for execution.
      IAction scheduleActionAt​(int index, IAction action)
      Insert an action at a specific position in the queue.
      IAction scheduleParallelAction​(IAction action)  
      void start()
      Begin processing scheduled actions.
      void stop()
      Halt processing of actions.
    • Method Detail

      • create

        IAction create​(java.lang.String name,
                       int maxDuration,
                       int startAfterTicks,
                       java.util.function.Consumer<IAction> action)
        Create a new action instance without immediately scheduling it.
        Parameters:
        name - a unique name for this action
        maxDuration - the maximum lifetime of the action in ticks
        startAfterTicks - number of ticks to wait before the first run
        action - code to execute each time the action "fires"
        Returns:
        a fresh IAction object
      • create

        IAction create​(java.lang.String name,
                       int delay,
                       java.util.function.Consumer<IAction> t)
      • create

        IAction create​(int delay,
                       java.util.function.Consumer<IAction> t)
      • create

        IAction create​(java.lang.String name,
                       java.util.function.Consumer<IAction> t)
      • create

        IAction create​(java.lang.String name)
      • create

        IConditionalAction create​(java.util.function.Supplier<java.lang.Boolean> condition,
                                  java.util.function.Consumer<IAction> task)
        Schedule a conditional action that gives up after at most maxChecks attempts.
        Parameters:
        condition - supplier checked every tick, if it returns true, task is fired
        task - code to run once condition first becomes true
        Returns:
        the action scheduled
      • create

        IConditionalAction create​(java.lang.String name,
                                  java.util.function.Supplier<java.lang.Boolean> condition,
                                  java.util.function.Consumer<IAction> task)
        Schedule a conditional action that gives up after at most maxChecks attempts.
        Parameters:
        name - unique name
        condition - supplier checked every tick, if it returns true, task is fired
        task - code to run once condition first becomes true
        Returns:
        the action scheduled
      • create

        IConditionalAction create​(java.util.function.Supplier<java.lang.Boolean> condition,
                                  java.util.function.Consumer<IAction> task,
                                  java.util.function.Supplier<java.lang.Boolean> terminateWhen)
        Schedule a conditional action that gives up after at most maxChecks attempts.
        Parameters:
        condition - supplier checked every tick, if it returns true, task is fired
        task - code to run once condition first becomes true
        terminateWhen - supplier checked every tick, if it returns true, action is terminated (gets marked done)
        Returns:
        the action scheduled
      • create

        IConditionalAction create​(java.lang.String name,
                                  java.util.function.Supplier<java.lang.Boolean> condition,
                                  java.util.function.Consumer<IAction> task,
                                  java.util.function.Supplier<java.lang.Boolean> terminateWhen)
        Schedule a conditional action that gives up after at most maxChecks attempts.
        Parameters:
        name - unique name
        condition - supplier checked every tick, if it returns true, task is fired
        task - code to run once condition first becomes true
        terminateWhen - supplier checked every tick, if it returns true, action is terminated (gets marked done)
        Returns:
        the action scheduled
      • create

        IConditionalAction create​(java.util.function.Supplier<java.lang.Boolean> condition,
                                  java.util.function.Consumer<IAction> task,
                                  java.util.function.Supplier<java.lang.Boolean> terminateWhen,
                                  java.util.function.Consumer<IAction> onTermination)
        Schedule a conditional action that gives up after at most maxChecks attempts.
        Parameters:
        condition - supplier checked every tick, if it returns true, task is fired
        task - code to run once condition first becomes true
        terminateWhen - supplier checked every tick, if it returns true, action is terminated (gets marked done)
        onTermination - code to run when the termination condition returns true
        Returns:
        the action scheduled
      • create

        IConditionalAction create​(java.lang.String name,
                                  java.util.function.Supplier<java.lang.Boolean> condition,
                                  java.util.function.Consumer<IAction> task,
                                  java.util.function.Supplier<java.lang.Boolean> terminateWhen,
                                  java.util.function.Consumer<IAction> onTermination)
        Schedule a conditional action that gives up after at most maxChecks attempts.
        Parameters:
        name - unique name
        condition - supplier checked every tick, if it returns true, task is fired
        task - code to run once condition first becomes true
        terminateWhen - supplier checked every tick, if it returns true, action is terminated (gets marked done)
        onTermination - code to run when the termination condition returns true
        Returns:
        the action scheduled
      • start

        void start()
        Begin processing scheduled actions. Must be called once.
      • stop

        void stop()
        Halt processing of actions. Queued actions remain but will not run until start() is called again.
      • scheduleAction

        IAction scheduleAction​(IAction action)
        Schedule an existing action for execution.
        Parameters:
        action - the action to enqueue
        Returns:
        the action scheduled
      • scheduleAction

        IAction scheduleAction​(java.lang.String name,
                               int maxDuration,
                               int startAfterTicks,
                               java.util.function.Consumer<IAction> action)
        Convenience for create(String, int, int, Consumer) + enqueue.
        Parameters:
        name - a unique name for this action
        maxDuration - the maximum lifetime of the action in ticks
        startAfterTicks - number of ticks to wait before the first run
        action - code to execute each time the action "fires"
        Returns:
        the action scheduled
      • scheduleActionAt

        IAction scheduleActionAt​(int index,
                                 IAction action)
        Insert an action at a specific position in the queue.
        Parameters:
        index - zero-based queue position to insert at
        action - the action to insert
        Returns:
        the action scheduled
      • getIndex

        int getIndex​(IAction action)
        Get the zero-based position of an action in the queue.
        Parameters:
        action - the action to look up
        Returns:
        its index, or -1 if not found
      • getCurrentAction

        IAction getCurrentAction()
        Peek at the next action to run (the head of the queue).
        Returns:
        the current head action, or null if queue is empty
      • getActionQueue

        java.util.Queue<IAction> getActionQueue()
        Retrieve the entire action queue.
        Returns:
        live reference to the internal Queue of actions
      • scheduleAction

        IConditionalAction scheduleAction​(java.lang.String name,
                                          java.util.function.Supplier<java.lang.Boolean> condition,
                                          java.util.function.Consumer<IAction> task)
        Schedule a conditional action that gives up after at most maxChecks attempts.
        Parameters:
        name - unique name
        condition - supplier checked every tick, if it returns true, task is fired
        task - code to run once condition first becomes true
        Returns:
        the action scheduled
      • scheduleAction

        IConditionalAction scheduleAction​(java.lang.String name,
                                          java.util.function.Supplier<java.lang.Boolean> condition,
                                          java.util.function.Consumer<IAction> task,
                                          java.util.function.Supplier<java.lang.Boolean> terminateWhen)
        Schedule a conditional action that gives up after at most maxChecks attempts.
        Parameters:
        name - unique name
        condition - supplier checked every tick, if it returns true, task is fired
        task - code to run once condition first becomes true
        terminateWhen - supplier checked every tick, if it returns true, action is terminated (gets marked done)
        Returns:
        the action scheduled
      • scheduleAction

        IConditionalAction scheduleAction​(java.lang.String name,
                                          java.util.function.Supplier<java.lang.Boolean> condition,
                                          java.util.function.Consumer<IAction> task,
                                          java.util.function.Supplier<java.lang.Boolean> terminateWhen,
                                          java.util.function.Consumer<IAction> onTermination)
        Schedule a conditional action that gives up after at most maxChecks attempts.
        Parameters:
        name - unique name
        condition - supplier checked every tick, if it returns true, task is fired
        task - code to run once condition first becomes true
        terminateWhen - supplier checked every tick, if it returns true, action is terminated (gets marked done)
        onTermination - code to run when the termination condition returns true
        Returns:
        the action scheduled
      • getConditionalActions

        java.util.List<IConditionalAction> getConditionalActions()
        Returns:
        the list of all conditional actions
      • cancelAction

        boolean cancelAction​(java.lang.String name)
        Cancel (remove) the first queued action with the given name.
        Parameters:
        name - the name assigned when scheduling
        Returns:
        true if one was found and removed, false otherwise
      • clear

        void clear()
        Remove every scheduled action immediately.
      • addTask

        default void addTask​(java.lang.String name,
                             int maxDuration,
                             int startAfterTicks,
                             java.util.function.Consumer<IAction> task)
        Convenience: create and enqueue a normal repeating task.
      • addSingleTask

        default void addSingleTask​(java.lang.String name,
                                   int startAfterTicks,
                                   java.util.function.Consumer<IAction> task)
        Convenience: create & enqueue a task that will fire exactly once after the given delay, and then auto-complete.
        Parameters:
        name - a unique name for this action
        startAfterTicks - delay before it runs (in ticks)
        task - code to execute once
      • addSingleTask

        default void addSingleTask​(java.lang.String name,
                                   java.util.function.Consumer<IAction> task)
        Same as above, but fires immediately (no delay).
      • addConditionalTask

        default void addConditionalTask​(java.lang.String name,
                                        java.util.function.Supplier<java.lang.Boolean> condition,
                                        java.util.function.Consumer<IAction> task)
        Convenience: create & enqueue a conditional task that re-checks forever.
      • addConditionalTask

        default void addConditionalTask​(java.lang.String name,
                                        java.util.function.Supplier<java.lang.Boolean> condition,
                                        java.util.function.Consumer<IAction> task,
                                        java.util.function.Supplier<java.lang.Boolean> terminateWhen)
        Convenience: create & enqueue a conditional task that gives up after maxChecks.
      • scheduleParallelAction

        IAction scheduleParallelAction​(IAction action)