Files
CustomNPC-Plus-API/java/noppes/npcs/api/handler/data/actions/IConditionalAction.java
T
bigguy345 06d73d7f11 Added termination task to ConditionalActions
(code that runs when task termination predicate is satisfied)
2025-04-28 09:57:24 +03:00

54 lines
2.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package noppes.npcs.api.handler.data.actions;
import noppes.npcs.api.handler.data.IAction;
import java.util.function.Consumer;
import java.util.function.Supplier;
public interface IConditionalAction extends IAction {
/**
* @param predicate supplier checked every tick, if it returns true, task is fired
* @return
*/
IConditionalAction setPredicate(Supplier<Boolean> predicate);
/**
* @param terminateWhen supplier checked every tick, if it returns true, action is terminated (gets marked done)
* @return this action
*/
IConditionalAction setTerminationPredicate(Supplier<Boolean> terminateWhen);
/**
* @param onTermination code to run when the termination predicate returns true
* @return this action
*/
IConditionalAction setTerminationTask(Consumer<IAction> onTermination);
/**
* @return true if predicate was satisfied and task ran (i.e can be called in termination task to see if original task was executed
* then do code based on that, if not return early)
*/
boolean wasTaskExecuted();
/**
* @param maxChecks maximum times to test predicate before auto‐cancelling
* @return this action
*/
IConditionalAction setMaxChecks(int maxChecks);
IConditionalAction after(IConditionalAction after);
IConditionalAction after(Supplier<Boolean> predicate, Consumer<IAction> task);
IConditionalAction after(String name, Supplier<Boolean> predicate, Consumer<IAction> task);
IConditionalAction after(Supplier<Boolean> predicate, Supplier<Boolean> terminate, Consumer<IAction> task);
IConditionalAction after(String name, Supplier<Boolean> predicate, Supplier<Boolean> terminate, Consumer<IAction> task);
IConditionalAction after(Supplier<Boolean> predicate, Supplier<Boolean> terminateWhen, Consumer<IAction> onTermination, Consumer<IAction> task);
IConditionalAction after(String name, Supplier<Boolean> predicate, Supplier<Boolean> terminateWhen, Consumer<IAction> onTermination, Consumer<IAction> task);
}