Canged all the IConditionalAction Supplier<Boolean> instances (condition,terminateWhen,pauseUntil) to Function<IAction,Boolean>

This commit is contained in:
bigguy345 committed 2025-06-30 09:15:33 +03:00
1 parent 283e3a864d
commit f998e8feb4
3 files changed
+51 -50

No files matched your search

@@ -7,7 +7,8 @@ import noppes.npcs.api.handler.data.actions.IConditionalAction;
import java.util.List;
import java.util.Queue;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.function.Function;
/**
* Manages a queue of {@link IAction} instances, allowing scheduling of delayed,
@@ -41,65 +42,65 @@ public interface IActionManager {
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @return the action scheduled
*/
IConditionalAction create(Supplier<Boolean> condition, Consumer<IAction> task);
IConditionalAction create(Function<IAction, Boolean> condition, Consumer<IAction> task);
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param name unique name
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @return the action scheduled
*/
IConditionalAction create(String name, Supplier<Boolean> condition, Consumer<IAction> task);
IConditionalAction create(String name, Function<IAction, Boolean> condition, Consumer<IAction> task);
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @param terminateWhen supplier checked every tick, if it returns true, action is terminated (gets marked done)
* @param terminateWhen checked every tick, if it returns true, action is terminated (gets marked done)
* @return the action scheduled
*/
IConditionalAction create(Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminateWhen);
IConditionalAction create(Function<IAction, Boolean> condition, Consumer<IAction> task, Function<IAction, Boolean> terminateWhen);
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param name unique name
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @param terminateWhen supplier checked every tick, if it returns true, action is terminated (gets marked done)
* @param terminateWhen checked every tick, if it returns true, action is terminated (gets marked done)
* @return the action scheduled
*/
IConditionalAction create(String name, Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminateWhen);
IConditionalAction create(String name, Function<IAction, Boolean> condition, Consumer<IAction> task, Function<IAction, Boolean> terminateWhen);
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @param terminateWhen supplier checked every tick, if it returns true, action is terminated (gets marked done)
* @param terminateWhen checked every tick, if it returns true, action is terminated (gets marked done)
* @param onTermination code to run when the termination condition returns true
* @return the action scheduled
*/
IConditionalAction create(Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminateWhen, Consumer<IAction> onTermination);
IConditionalAction create(Function<IAction, Boolean> condition, Consumer<IAction> task, Function<IAction, Boolean> terminateWhen, Consumer<IAction> onTermination);
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param name unique name
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @param terminateWhen supplier checked every tick, if it returns true, action is terminated (gets marked done)
* @param terminateWhen checked every tick, if it returns true, action is terminated (gets marked done)
* @param onTermination code to run when the termination condition returns true
* @return the action scheduled
*/
IConditionalAction create(String name, Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminateWhen, Consumer<IAction> onTermination);
IConditionalAction create(String name, Function<IAction, Boolean> condition, Consumer<IAction> task, Function<IAction, Boolean> terminateWhen, Consumer<IAction> onTermination);
/**
* Begin processing scheduled actions. Must be called once.
@@ -213,65 +214,65 @@ public interface IActionManager {
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @return the action scheduled
*/
IConditionalAction scheduleAction(Supplier<Boolean> condition, Consumer<IAction> task);
IConditionalAction scheduleAction(Function<IAction, Boolean> condition, Consumer<IAction> task);
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @param terminateWhen supplier checked every tick, if it returns true, action is terminated (gets marked done)
* @param terminateWhen checked every tick, if it returns true, action is terminated (gets marked done)
* @return the action scheduled
*/
IConditionalAction scheduleAction(Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminateWhen);
IConditionalAction scheduleAction(Function<IAction, Boolean> condition, Consumer<IAction> task, Function<IAction, Boolean> terminateWhen);
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @param terminateWhen supplier checked every tick, if it returns true, action is terminated (gets marked done)
* @param terminateWhen checked every tick, if it returns true, action is terminated (gets marked done)
* @param onTermination code to run when the termination condition returns true
* @return the action scheduled
*/
IConditionalAction scheduleAction(Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminateWhen, Consumer<IAction> onTermination);
IConditionalAction scheduleAction(Function<IAction, Boolean> condition, Consumer<IAction> task, Function<IAction, Boolean> terminateWhen, Consumer<IAction> onTermination);
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param name unique name
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @return the action scheduled
*/
IConditionalAction scheduleAction(String name, Supplier<Boolean> condition, Consumer<IAction> task);
IConditionalAction scheduleAction(String name, Function<IAction, Boolean> condition, Consumer<IAction> task);
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param name unique name
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @param terminateWhen supplier checked every tick, if it returns true, action is terminated (gets marked done)
* @param terminateWhen checked every tick, if it returns true, action is terminated (gets marked done)
* @return the action scheduled
*/
IConditionalAction scheduleAction(String name, Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminateWhen);
IConditionalAction scheduleAction(String name, Function<IAction, Boolean> condition, Consumer<IAction> task, Function<IAction, Boolean> terminateWhen);
/**
* Schedule a conditional action that gives up after at most maxChecks attempts.
*
* @param name unique name
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @param task code to run once condition first becomes true
* @param terminateWhen supplier checked every tick, if it returns true, action is terminated (gets marked done)
* @param terminateWhen checked every tick, if it returns true, action is terminated (gets marked done)
* @param onTermination code to run when the termination condition returns true
* @return the action scheduled
*/
IConditionalAction scheduleAction(String name, Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminateWhen, Consumer<IAction> onTermination);
IConditionalAction scheduleAction(String name, Function<IAction, Boolean> condition, Consumer<IAction> task, Function<IAction, Boolean> terminateWhen, Consumer<IAction> onTermination);
IConditionalAction scheduleAction(IConditionalAction action);
@@ -342,14 +343,14 @@ public interface IActionManager {
/**
* Convenience: create & enqueue a conditional task that re-checks forever.
*/
default IConditionalAction addConditionalTask(String name, Supplier<Boolean> condition, Consumer<IAction> task) {
default IConditionalAction addConditionalTask(String name, Function<IAction, Boolean> condition, Consumer<IAction> task) {
return scheduleAction(name, condition, task);
}
/**
* Convenience: create & enqueue a conditional task that gives up after maxChecks.
*/
default IConditionalAction addConditionalTask(String name, Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminateWhen) {
default IConditionalAction addConditionalTask(String name, Function<IAction, Boolean> condition, Consumer<IAction> task, Function<IAction, Boolean> terminateWhen) {
return scheduleAction(name, condition, task, terminateWhen);
}
@@ -4,7 +4,7 @@ import noppes.npcs.api.handler.IActionManager;
import noppes.npcs.api.handler.data.actions.IConditionalAction;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.function.Function;
/**
* Represents a single "task" that can be executed over multiple ticks,
@@ -125,10 +125,10 @@ public interface IAction {
* Must call {@link #threadify()} before using, else throws exception.
* Pauses IAction's thread until the supplied condition is satisfied or {@link #resume()} is called.
*/
void pauseUntil(Supplier<Boolean> until);
void pauseUntil(Function<IAction,Boolean> until);
/**
* Resumes thread that was previously paused by {@link #pause()}, {@link #pauseUntil(Supplier)}, {@link #pauseFor(int)} or {@link #pauseFor(long)}
* Resumes thread that was previously paused by {@link #pause()}, {@link #pauseUntil(Function)}, {@link #pauseFor(int)} or {@link #pauseFor(long)}
* Must be called from a different thread than the IAction one, as that one is paused, so it won't reach this function if it comes after any of the pausing functions.
*/
void resume();
@@ -201,17 +201,17 @@ public interface IAction {
*/
IConditionalAction conditional(IConditionalAction after);
IConditionalAction conditional(Supplier<Boolean> condition, Consumer<IAction> task);
IConditionalAction conditional(Function<IAction,Boolean> condition, Consumer<IAction> task);
IConditionalAction conditional(String name, Supplier<Boolean> condition, Consumer<IAction> task);
IConditionalAction conditional(String name, Function<IAction,Boolean> condition, Consumer<IAction> task);
IConditionalAction conditional(Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminate);
IConditionalAction conditional(Function<IAction,Boolean> condition, Consumer<IAction> task, Function<IAction,Boolean> terminate);
IConditionalAction conditional(String name, Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminate);
IConditionalAction conditional(String name, Function<IAction,Boolean> condition, Consumer<IAction> task, Function<IAction,Boolean> terminate);
IConditionalAction conditional(Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminateWhen, Consumer<IAction> onTermination);
IConditionalAction conditional(Function<IAction,Boolean> condition, Consumer<IAction> task, Function<IAction,Boolean> terminateWhen, Consumer<IAction> onTermination);
IConditionalAction conditional(String name, Supplier<Boolean> condition, Consumer<IAction> task, Supplier<Boolean> terminateWhen, Consumer<IAction> onTermination);
IConditionalAction conditional(String name, Function<IAction,Boolean> condition, Consumer<IAction> task, Function<IAction,Boolean> terminateWhen, Consumer<IAction> onTermination);
/**
* Enqueue another IAction on the parallel chain which starts firing simultaneously as this.
@@ -3,21 +3,21 @@ package noppes.npcs.api.handler.data.actions;
import noppes.npcs.api.handler.data.IAction;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.function.Function;
public interface IConditionalAction extends IAction {
/**
* @param condition supplier checked every tick, if it returns true, task is fired
* @param condition checked every tick, if it returns true, task is fired
* @return
*/
IConditionalAction setCondition(Supplier<Boolean> condition);
IConditionalAction setCondition(Function<IAction, Boolean> condition);
/**
* @param terminateWhen supplier checked every tick, if it returns true, action is terminated (gets marked done)
* @param terminateWhen checked every tick, if it returns true, action is terminated (gets marked done)
* @return this action
*/
IConditionalAction terminateWhen(Supplier<Boolean> terminateWhen);
IConditionalAction terminateWhen(Function<IAction, Boolean> terminateWhen);
/**
* @param onTermination code to run when the termination condition returns true
@@ -45,7 +45,7 @@ public interface IConditionalAction extends IAction {
/**
*
* @return True if condition provided by {{@link #terminateWhen(Supplier)}} is satisfied
* @return True if condition provided by {{@link #terminateWhen(Function)}} is satisfied
* Can be called directly in the IAction's task.
* Can only be true once, as action is marked done immediately after.
*/