From 8ced18ec84dfb9d0f9eb3de0a59a79c494c89c0a Mon Sep 17 00:00:00 2001 From: "Luis C.M." <42545778+c0508383@users.noreply.github.com> Date: Wed, 22 Jan 2025 15:31:11 -0600 Subject: [PATCH] Animation events API changes --- 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 | 12 ++++-- .../npcs/api/handler/data/IAnimationData.java | 8 ++++ 6 files changed, 66 insertions(+), 6 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 d298ae7..8f5ab6f 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 4dcb8c6..9ee89b6 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(); @@ -20,6 +22,10 @@ public interface IAnimation { String getName(); + int tickDuration(); + + IAnimation setTickDuration(int tickDuration); + IAnimation setSpeed(float speed); float getSpeed(); @@ -28,10 +34,6 @@ public interface IAnimation { byte isSmooth(); - IAnimation useRenderTicks(boolean renderTicks); - - boolean useRenderTicks(); - IAnimation doWhileStanding(boolean whileStanding); boolean doWhileStanding(); @@ -56,4 +58,6 @@ public interface IAnimation { * Do not use this unless you know what you are changing. Dangerous to change. */ void setID(int id); + + long getTotalTime(); } diff --git a/java/noppes/npcs/api/handler/data/IAnimationData.java b/java/noppes/npcs/api/handler/data/IAnimationData.java index 82f3bcf..096fb6a 100644 --- a/java/noppes/npcs/api/handler/data/IAnimationData.java +++ b/java/noppes/npcs/api/handler/data/IAnimationData.java @@ -1,11 +1,17 @@ package noppes.npcs.api.handler.data; +import noppes.npcs.api.entity.IAnimatable; + public interface IAnimationData { + IAnimatable getEntity(); + void updateClient(); boolean isActive(); + boolean isClientAnimating(); + void setEnabled(boolean enabled); boolean enabled(); @@ -13,4 +19,6 @@ public interface IAnimationData { void setAnimation(IAnimation animation); IAnimation getAnimation(); + + long getAnimatingTime(); }