From cd180e4520d766f927fb954433fd7812155a501f Mon Sep 17 00:00:00 2001 From: "Luis C.M" <42545778+c0508383@users.noreply.github.com> Date: Sun, 24 Mar 2024 17:03:58 -0500 Subject: [PATCH] Implemented animation events and made some event classes abstract. --- java/noppes/npcs/api/entity/IAnimatable.java | 8 ++++ java/noppes/npcs/api/entity/ICustomNpc.java | 2 +- java/noppes/npcs/api/entity/IPlayer.java | 2 +- .../npcs/api/event/IAnimationEvent.java | 40 +++++++++++++++++++ .../npcs/api/handler/data/IAnimation.java | 2 + .../npcs/api/handler/data/IAnimationData.java | 4 ++ 6 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 java/noppes/npcs/api/entity/IAnimatable.java create mode 100644 java/noppes/npcs/api/event/IAnimationEvent.java diff --git a/java/noppes/npcs/api/entity/IAnimatable.java b/java/noppes/npcs/api/entity/IAnimatable.java new file mode 100644 index 0000000..9d7fbc9 --- /dev/null +++ b/java/noppes/npcs/api/entity/IAnimatable.java @@ -0,0 +1,8 @@ +package noppes.npcs.api.entity; + +import noppes.npcs.api.handler.data.IAnimationData; + +public interface IAnimatable { + + IAnimationData getAnimationData(); +} diff --git a/java/noppes/npcs/api/entity/ICustomNpc.java b/java/noppes/npcs/api/entity/ICustomNpc.java index a9388bb..d353206 100644 --- a/java/noppes/npcs/api/entity/ICustomNpc.java +++ b/java/noppes/npcs/api/entity/ICustomNpc.java @@ -13,7 +13,7 @@ import noppes.npcs.api.item.IItemStack; import noppes.npcs.api.jobs.IJob; import noppes.npcs.api.roles.IRole; -public interface ICustomNpc extends IEntityLiving { +public interface ICustomNpc extends IEntityLiving, IAnimatable { /** * @return Returns the current npcs size 1-30 */ diff --git a/java/noppes/npcs/api/entity/IPlayer.java b/java/noppes/npcs/api/entity/IPlayer.java index 185e79b..f8d2432 100644 --- a/java/noppes/npcs/api/entity/IPlayer.java +++ b/java/noppes/npcs/api/entity/IPlayer.java @@ -13,7 +13,7 @@ import noppes.npcs.api.handler.data.ISound; import noppes.npcs.api.item.IItemStack; import noppes.npcs.api.overlay.ICustomOverlay; -public interface IPlayer extends IEntityLivingBase { +public interface IPlayer extends IEntityLivingBase, IAnimatable { /** * @return Returns the displayed name of the player */ diff --git a/java/noppes/npcs/api/event/IAnimationEvent.java b/java/noppes/npcs/api/event/IAnimationEvent.java new file mode 100644 index 0000000..400c597 --- /dev/null +++ b/java/noppes/npcs/api/event/IAnimationEvent.java @@ -0,0 +1,40 @@ +package noppes.npcs.api.event; + +import cpw.mods.fml.common.eventhandler.Cancelable; +import noppes.npcs.api.entity.IAnimatable; +import noppes.npcs.api.handler.data.IAnimation; +import noppes.npcs.api.handler.data.IAnimationData; +import noppes.npcs.api.handler.data.IFrame; + +public interface IAnimationEvent extends ICustomNPCsEvent { + + IAnimation getAnimation(); + + IAnimationData getAnimationData(); + + IAnimatable getEntity(); + + @Cancelable + interface Started extends IAnimationEvent { + + } + + interface Ended extends IAnimationEvent { + + } + + interface IFrameEvent extends IAnimationEvent { + + int getIndex(); + + IFrame getFrame(); + + interface Entered extends IFrameEvent { + + } + + interface Exited extends IFrameEvent { + + } + } +} diff --git a/java/noppes/npcs/api/handler/data/IAnimation.java b/java/noppes/npcs/api/handler/data/IAnimation.java index f502937..469359e 100644 --- a/java/noppes/npcs/api/handler/data/IAnimation.java +++ b/java/noppes/npcs/api/handler/data/IAnimation.java @@ -2,6 +2,8 @@ package noppes.npcs.api.handler.data; public interface IAnimation { + IAnimationData getParent(); + IFrame currentFrame(); IFrame[] getFrames(); diff --git a/java/noppes/npcs/api/handler/data/IAnimationData.java b/java/noppes/npcs/api/handler/data/IAnimationData.java index 82f3bcf..269bedd 100644 --- a/java/noppes/npcs/api/handler/data/IAnimationData.java +++ b/java/noppes/npcs/api/handler/data/IAnimationData.java @@ -1,7 +1,11 @@ package noppes.npcs.api.handler.data; +import noppes.npcs.api.entity.IAnimatable; + public interface IAnimationData { + IAnimatable getEntity(); + void updateClient(); boolean isActive();