Files
CustomNPC-Plus-API/java/noppes/npcs/api/IAction.java
T
bigguy345 e13c6762f3 Added Scheduled Tasks system for NPC scripting.
Allows for scripting the scheduling of runnable methods in sequence within the NPC's AI

An example sequence of tasks:
1. Dashes towards player (might take 3-5 seconds, doesn't matter, task durations are dynamic so it can take as long as it needs).
2. Punches player away
3. Waits 10 ticks - Fires a ki blast
4. Teleports behind player
5. Knocks player out
2025-03-03 23:59:48 +02:00

70 lines
1.5 KiB
Java

package noppes.npcs.api;
import java.util.function.Consumer;
public interface IAction {
/**
* @return number of times the function passed has been called upon
*/
int getCount();
/**
* @return number of ticks since action starting
*/
int getDuration();
String getName();
int getMaxDuration();
/**
* @param done set to true to end action
*/
void setDone(boolean done);
boolean isDone();
/**
* Allows the storage of objects that might be needed within the action.
* Equivalent to npc.getTempData().
* All data deleted on action ending
*
* @param key
* @return
*/
void addData(String key, Object value);
Object getData(String key);
int getUpdateEveryXTick();
/**
* @param X calls upon the function passed every X ticks
*/
void setUpdateEveryXTick(int X);
/**
* @return number of ticks to elapse before starting action
*/
int getStartAfterTicks();
/**
* Creates a new IAction. allows for instant daisy-chaining without having to go through npc.getActionManager() again
*
* @param name
* @param maxDuration
* @param startAfterTicks
* @param action
* @return
*/
IAction create(String name, int maxDuration, int startAfterTicks, Consumer<IAction> action);
/**
* Schedules newAction right after this one, skipping the line of everything after
*
* @param newAction
*/
void scheduleAfter(IAction newAction);
}