From eb660b38ae73166547680a1428606186d644367f Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Mon, 5 Jan 2026 17:14:45 +0200 Subject: [PATCH 1/3] Added IAnimation consumers to API --- src/api | 2 +- src/main/java/noppes/npcs/controllers/data/Animation.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/api b/src/api index aefae8ace..801d62c06 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit aefae8ace3555442da7debff5b95cf410fa057f7 +Subproject commit 801d62c0607f301759b627f251e93a5fc6de9d67 diff --git a/src/main/java/noppes/npcs/controllers/data/Animation.java b/src/main/java/noppes/npcs/controllers/data/Animation.java index 89081467b..bddcb3f7e 100644 --- a/src/main/java/noppes/npcs/controllers/data/Animation.java +++ b/src/main/java/noppes/npcs/controllers/data/Animation.java @@ -318,16 +318,19 @@ public class Animation implements IAnimation { } } + @Override public IAnimation onStart(Consumer task) { this.onAnimationStart = task; return this; } - + + @Override public IAnimation onFrame(BiConsumer task) { this.onAnimationFrame = task; return this; } - + + @Override public IAnimation onEnd(Consumer task) { this.onAnimationEnd = task; return this; From db0aa94a3aeaaf154bb1954d45982878ec6abeca Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Mon, 5 Jan 2026 20:17:55 +0200 Subject: [PATCH 2/3] IAnimation instead of Animation --- .../java/noppes/npcs/controllers/data/Animation.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/data/Animation.java b/src/main/java/noppes/npcs/controllers/data/Animation.java index bddcb3f7e..9daa7e7b9 100644 --- a/src/main/java/noppes/npcs/controllers/data/Animation.java +++ b/src/main/java/noppes/npcs/controllers/data/Animation.java @@ -39,9 +39,9 @@ public class Animation implements IAnimation { protected final Map dataStore = new HashMap<>(); - public Consumer onAnimationStart; - public BiConsumer onAnimationFrame; - public Consumer onAnimationEnd; + public Consumer onAnimationStart; + public BiConsumer onAnimationFrame; + public Consumer onAnimationEnd; public Animation() { } @@ -319,19 +319,19 @@ public class Animation implements IAnimation { } @Override - public IAnimation onStart(Consumer task) { + public IAnimation onStart(Consumer task) { this.onAnimationStart = task; return this; } @Override - public IAnimation onFrame(BiConsumer task) { + public IAnimation onFrame(BiConsumer task) { this.onAnimationFrame = task; return this; } @Override - public IAnimation onEnd(Consumer task) { + public IAnimation onEnd(Consumer task) { this.onAnimationEnd = task; return this; } From e8ef60deb4e1ceee87e40bcb1851599c42c21608 Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Mon, 5 Jan 2026 20:25:34 +0200 Subject: [PATCH 3/3] Important IAnimation takeTasksFrom global instance in AnimationController to local instance in entity AnimationData --- .../noppes/npcs/controllers/data/Animation.java | 16 ++++++++++++++++ .../npcs/controllers/data/AnimationData.java | 1 + 2 files changed, 17 insertions(+) diff --git a/src/main/java/noppes/npcs/controllers/data/Animation.java b/src/main/java/noppes/npcs/controllers/data/Animation.java index 9daa7e7b9..fa290975c 100644 --- a/src/main/java/noppes/npcs/controllers/data/Animation.java +++ b/src/main/java/noppes/npcs/controllers/data/Animation.java @@ -353,6 +353,22 @@ public class Animation implements IAnimation { this.onAnimationEnd.accept(this); } } + + /** + * Only called on setAnimation, to transfer tasks from + * this global instance stored in AnimationController + * to the new local instance on entity's AnimationData, + * and clear them from the global instance. + */ + public void takeTasksFrom(Animation animation) { + this.onAnimationStart = animation.onAnimationStart; + this.onAnimationFrame = animation.onAnimationFrame; + this.onAnimationEnd = animation.onAnimationEnd; + + animation.onAnimationEnd = null; + animation.onAnimationFrame = null; + animation.onAnimationStart = null; + } } diff --git a/src/main/java/noppes/npcs/controllers/data/AnimationData.java b/src/main/java/noppes/npcs/controllers/data/AnimationData.java index ca1e25900..ea5da6a84 100644 --- a/src/main/java/noppes/npcs/controllers/data/AnimationData.java +++ b/src/main/java/noppes/npcs/controllers/data/AnimationData.java @@ -272,6 +272,7 @@ public class AnimationData implements IAnimationData { newAnim.currentFrame = 0; newAnim.currentFrameTime = 0; newAnim.parent = this; + newAnim.takeTasksFrom((Animation) animation); }