Remove all Legacy Ability Content, cleanup API.

- Add Script Tab to Abilities
- Add Custom Ability
- Add Icon Support for Abilities / Default Icon Support
- Remove Icon Tab and throw it into Effects with allowed Override
- Removed Deprecated API Sources
This commit is contained in:
Kam committed 2026-02-27 16:43:34 -05:00
1 parent aac5f98be8
commit ae98d12faf
8 files changed
+149 -30

No files matched your search

@@ -0,0 +1,42 @@
package noppes.npcs.api.ability;
/**
* A custom (script-driven) ability whose behavior is entirely defined by script event hooks.
* Supports both instant execution mode and toggle mode.
*/
public interface ICustomAbility extends IAbility {
/**
* Get the duration in ticks for instant mode (non-toggle).
*/
int getDurationTicks();
/**
* Set the duration in ticks for instant mode.
*/
void setDurationTicks(int ticks);
/**
* Get the telegraph shape type ordinal.
* @return ordinal of TelegraphType: 0=CIRCLE, 1=RING, 2=LINE, 3=CONE, 4=POINT, 5=SQUARE, 6=NONE
*/
int getTelegraphShapeType();
/**
* Set the telegraph shape type by ordinal.
* @param type ordinal of TelegraphType
*/
void setTelegraphShapeType(int type);
/**
* Get the targeting mode ordinal.
* @return ordinal of TargetingMode: 0=AGGRO_TARGET, 1=SELF, 2=AOE_SELF, 3=AOE_TARGET
*/
int getTargetingModeType();
/**
* Set the targeting mode by ordinal.
* @param type ordinal of TargetingMode
*/
void setTargetingModeType(int type);
}
@@ -80,6 +80,11 @@ public interface IDataAbilities {
*/
void interruptCurrentAbility();
/**
* Signal the current ability to complete immediately.
*/
void completeCurrentAbility();
/**
* Get the global cooldown timer in ticks.
*/
@@ -70,6 +70,11 @@ public interface IPlayerAbilityData {
*/
void interruptCurrentAbility();
/**
* Signal the current ability to complete immediately.
*/
void completeCurrentAbility();
/**
* Check if the player is on universal cooldown.
*/
@@ -54,16 +54,6 @@ public interface IAbilityDisc extends IAbilityEnergyProjectile {
void setFireDelay(int delay);
/**
* @deprecated Use {@link #getFireDelay()}
*/
int getDualFireDelay();
/**
* @deprecated Use {@link #setFireDelay(int)}
*/
void setDualFireDelay(int delay);
// Indexed accessors
int getInnerColor(int projectileIndex);
@@ -42,16 +42,6 @@ public interface IAbilityEnergyBeam extends IAbilityEnergyProjectile {
void setFireDelay(int delay);
/**
* @deprecated Use {@link #getFireDelay()}
*/
int getDualFireDelay();
/**
* @deprecated Use {@link #setFireDelay(int)}
*/
void setDualFireDelay(int delay);
// Indexed accessors
int getInnerColor(int projectileIndex);
@@ -38,16 +38,6 @@ public interface IAbilityOrb extends IAbilityEnergyProjectile {
void setFireDelay(int delay);
/**
* @deprecated Use {@link #getFireDelay()}
*/
int getDualFireDelay();
/**
* @deprecated Use {@link #setFireDelay(int)}
*/
void setDualFireDelay(int delay);
// Indexed accessors
int getInnerColor(int projectileIndex);
@@ -3,7 +3,9 @@ package noppes.npcs.api.event;
import cpw.mods.fml.common.eventhandler.Cancelable;
import noppes.npcs.api.IDamageSource;
import noppes.npcs.api.ability.IAbility;
import noppes.npcs.api.entity.ICustomNpc;
import noppes.npcs.api.entity.IEntityLivingBase;
import noppes.npcs.api.entity.IPlayer;
/**
* Events related to NPC ability execution.
@@ -11,6 +13,21 @@ import noppes.npcs.api.entity.IEntityLivingBase;
*/
public interface IAbilityEvent extends INpcEvent {
/**
* Get the entity executing the ability (NPC or Player).
*/
IEntityLivingBase getEntity();
/**
* Get the player executing the ability, or null if the caster is an NPC.
*/
IPlayer getPlayer();
/**
* Whether the entity executing the ability is an NPC.
*/
boolean isNPC();
/**
* Get the ability involved in this event.
*/
@@ -0,0 +1,80 @@
package noppes.npcs.api.event;
import noppes.npcs.api.IDamageSource;
import noppes.npcs.api.ability.IChainedAbility;
import noppes.npcs.api.entity.ICustomNpc;
import noppes.npcs.api.entity.IEntityLivingBase;
import noppes.npcs.api.entity.IPlayer;
/**
* Events related to chained ability execution lifecycle.
* These fire at chain-level transitions, not per-ability.
* Unified for both NPCs and Players.
*/
public interface IChainEvent extends ICustomNPCsEvent {
/**
* Get the entity executing the chain (NPC or Player).
*/
IEntityLivingBase getEntity();
/**
* Get the player executing the chain, or null if the caster is an NPC.
*/
IPlayer getPlayer();
/**
* Get the NPC executing the chain, or null if the caster is a player.
*/
ICustomNpc<?> getNpc();
/**
* Whether the entity executing the chain is an NPC.
*/
boolean isNPC();
/**
* Get the chained ability being executed.
*/
IChainedAbility getChain();
/**
* Get the target of the chain, or null if no target.
*/
IEntityLivingBase getTarget();
/**
* Get the current entry index within the chain (0-based).
*/
int getEntryIndex();
/**
* Fired when a chained ability sequence starts executing.
*/
interface StartEvent extends IChainEvent {}
/**
* Fired when the chain advances to the next entry in the sequence.
*/
interface NextEvent extends IChainEvent {}
/**
* Fired when a chained ability sequence completes all entries.
*/
interface CompleteEvent extends IChainEvent {}
/**
* Fired when a chained ability is interrupted by damage.
*/
interface InterruptEvent extends IChainEvent {
/**
* Get the damage source that caused the interruption.
*/
IDamageSource getDamageSource();
/**
* Get the amount of damage that caused the interruption.
*/
float getDamage();
}
}