IAbilityAction for Abilities and Chained Actions

This commit is contained in:
Kam committed 2026-02-18 04:00:07 -05:00
1 parent 010849fe8f
commit 28c0ca840f
4 files changed
+77 -1

No files matched your search

+1 -1
View File
@@ -6,7 +6,7 @@ import noppes.npcs.api.INbt;
* Interface for NPC abilities.
* Abilities are special attacks or actions that NPCs can perform during combat.
*/
public interface IAbility {
public interface IAbility extends IAbilityAction {
/**
* Get the unique ID (UUID for custom abilities, registry key for built-in).
@@ -0,0 +1,25 @@
package noppes.npcs.api.ability;
/**
* Common API interface for all combat actions (abilities and chained abilities).
* Both {@link IAbility} and {@link IChainedAbility} extend this interface.
*/
public interface IAbilityAction {
String getName();
boolean isEnabled();
int getWeight();
int getCooldownTicks();
float getMinRange();
float getMaxRange();
/**
* Whether this action is a chained ability (sequence) vs an individual ability.
*/
boolean isChain();
}
@@ -0,0 +1,18 @@
package noppes.npcs.api.ability;
/**
* API interface for chained abilities - ordered sequences of ability references
* that execute one after another with configurable delays.
*/
public interface IChainedAbility extends IAbilityAction {
boolean isWindUpAll();
int getEntryCount();
String getEntryReference(int index);
int getEntryDelay(int index);
boolean isEntryInline(int index);
}
@@ -1,5 +1,7 @@
package noppes.npcs.api.handler;
import noppes.npcs.api.ability.IChainedAbility;
/**
* Handler for ability management. Allows scripts to query ability types,
* built-in abilities, and custom ability presets.
@@ -44,4 +46,35 @@ public interface IAbilityHandler {
* @return true if deleted successfully
*/
boolean deleteCustomAbilityByName(String name);
/**
* Get all chained ability names.
*/
String[] getChainedAbilityNames();
/**
* Check if a chained ability exists by name.
*/
boolean hasChainedAbilityName(String name);
/**
* Delete a chained ability by name.
*
* @return true if deleted successfully
*/
boolean deleteChainedAbilityByName(String name);
/**
* Get a chained ability by name.
*
* @return the chained ability, or null if not found
*/
IChainedAbility getChainedAbility(String name);
/**
* Save a chained ability. If a chain with the same name exists, it is overwritten.
*
* @return true if saved successfully
*/
boolean saveChainedAbility(IChainedAbility chain);
}