From 14545818bd25f38ac717a1434fa1bf4a0eb504ee Mon Sep 17 00:00:00 2001 From: Kam Date: Fri, 20 Feb 2026 13:13:45 -0500 Subject: [PATCH] Fix Animation Syncing for Built in --- src/main/java/noppes/npcs/CustomNpcs.java | 8 ++++++++ .../noppes/npcs/controllers/AnimationController.java | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index ff2d13031..ca2be8968 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -335,6 +335,14 @@ public class CustomNpcs { @EventHandler public void loadComplete(FMLLoadCompleteEvent ev) { proxy.buildPackageIndex(); + + // Load built-in animations on the client so they're available for ability preview. + // On dedicated servers, AnimationController.load() only runs on the server JVM, + // leaving the client without built-in animation data. In singleplayer, load() + // runs later during server start and reloads everything, so this is harmless. + if (FMLCommonHandler.instance().getSide().isClient()) { + AnimationController.Instance.loadClientBuiltIns(); + } } @EventHandler diff --git a/src/main/java/noppes/npcs/controllers/AnimationController.java b/src/main/java/noppes/npcs/controllers/AnimationController.java index bfbf978d2..e9a64bfe1 100644 --- a/src/main/java/noppes/npcs/controllers/AnimationController.java +++ b/src/main/java/noppes/npcs/controllers/AnimationController.java @@ -213,6 +213,18 @@ public class AnimationController implements IAnimationHandler { } } + /** + * Loads built-in animations for client-side usage. + * On dedicated servers, AnimationController.load() never runs on the client JVM, + * so built-in animations would be missing for client-only systems like ability preview. + * This method loads just the built-in animations (from assets and registered addons) + * without touching user animations or world save data. + */ + public void loadClientBuiltIns() { + loadBuiltInAnimations(); + loadRegisteredBuiltIns(); + } + private File getDir() { return new File(CustomNpcs.getWorldSaveDirectory(), "animations"); }