mirror of
https://github.com/KAMKEEL/CustomNPC-Plus-API.git
synced 2026-11-15 13:44:43 +00:00
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
70 lines
1.5 KiB
Java
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);
|
|
}
|