From ca7debb51beab644dce826ed4badb7bfbd9fee3e Mon Sep 17 00:00:00 2001 From: "Luis C.M." <42545778+c0508383@users.noreply.github.com> Date: Sat, 26 Oct 2024 10:45:59 -0500 Subject: [PATCH] Fixed null pointer exception when setting animation in animation controller. --- .../npcs/controllers/data/AnimationData.java | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/data/AnimationData.java b/src/main/java/noppes/npcs/controllers/data/AnimationData.java index 37528ce95..4c47c9e5e 100644 --- a/src/main/java/noppes/npcs/controllers/data/AnimationData.java +++ b/src/main/java/noppes/npcs/controllers/data/AnimationData.java @@ -155,28 +155,32 @@ public class AnimationData implements IAnimationData { public void setAnimation(IAnimation animation) { if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { - this.animation = (Animation) animation; + this.animation = animation != null ? (Animation) animation : null; } else { - Animation newAnim = new Animation(); - newAnim.readFromNBT(((Animation) animation).writeToNBT()); - if (this.isActive() && !newAnim.frames.isEmpty()) { - Frame frame = (Frame) this.animation.currentFrame(); - if (frame != null) { - Frame firstFrame = newAnim.frames.get(0); - for (Map.Entry entry : frame.frameParts.entrySet()) { - if (firstFrame.frameParts.containsKey(entry.getKey())) { - FramePart prevFramePart = entry.getValue(); - FramePart newFramePart = firstFrame.frameParts.get(entry.getKey()); - for (int i = 0; i < 3; i++) { - newFramePart.prevPivots[i] = prevFramePart.prevPivots[i]; - newFramePart.prevRotations[i] = prevFramePart.prevRotations[i]; + if (animation != null) { + Animation newAnim = new Animation(); + newAnim.readFromNBT(((Animation) animation).writeToNBT()); + if (this.isActive() && !newAnim.frames.isEmpty()) { + Frame frame = (Frame) this.animation.currentFrame(); + if (frame != null) { + Frame firstFrame = newAnim.frames.get(0); + for (Map.Entry entry : frame.frameParts.entrySet()) { + if (firstFrame.frameParts.containsKey(entry.getKey())) { + FramePart prevFramePart = entry.getValue(); + FramePart newFramePart = firstFrame.frameParts.get(entry.getKey()); + for (int i = 0; i < 3; i++) { + newFramePart.prevPivots[i] = prevFramePart.prevPivots[i]; + newFramePart.prevRotations[i] = prevFramePart.prevRotations[i]; + } } } } } + this.animation = newAnim; + newAnim.parent = this; + } else { + this.animation = null; } - this.animation = newAnim; - newAnim.parent = this; } }