Package noppes.npcs.api.handler
Interface IActionManager
-
public interface IActionManager
Manages a queue ofIAction
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 forcreate(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 actionmaxDuration
- the maximum lifetime of the action in ticksstartAfterTicks
- number of ticks to wait before the first runaction
- code to execute each time the action "fires"- Returns:
- a fresh
IAction
object
-
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 firedtask
- 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 namecondition
- supplier checked every tick, if it returns true, task is firedtask
- 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 firedtask
- code to run once condition first becomes trueterminateWhen
- 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 namecondition
- supplier checked every tick, if it returns true, task is firedtask
- code to run once condition first becomes trueterminateWhen
- 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 firedtask
- code to run once condition first becomes trueterminateWhen
- 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 namecondition
- supplier checked every tick, if it returns true, task is firedtask
- code to run once condition first becomes trueterminateWhen
- 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 untilstart()
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 forcreate(String, int, int, Consumer)
+ enqueue.- Parameters:
name
- a unique name for this actionmaxDuration
- the maximum lifetime of the action in ticksstartAfterTicks
- number of ticks to wait before the first runaction
- 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 ataction
- 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 namecondition
- supplier checked every tick, if it returns true, task is firedtask
- 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 namecondition
- supplier checked every tick, if it returns true, task is firedtask
- code to run once condition first becomes trueterminateWhen
- 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 namecondition
- supplier checked every tick, if it returns true, task is firedtask
- code to run once condition first becomes trueterminateWhen
- 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
-
scheduleAction
IConditionalAction scheduleAction(IConditionalAction action)
-
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 actionstartAfterTicks
- 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.
-
chain
IActionChain chain()
-
parallelChain
IActionChain parallelChain()
-
-