Citadel — Guide
Do I Need This?
Yes - if another mod relies on it. Citadel is a required dependency for mods such as Alex's Mobs. Those mods will crash or fail to load without it.
No - on its own. Citadel by itself does nothing visible in-game: it adds no mobs, blocks, items, or world content. There is nothing to "use" directly as a player.
Rule of thumb: if your modpack or a mod lists Citadel as a requirement, it needs to be present. Otherwise it serves no purpose alone.
How It Loads
Citadel works silently in the background, powering the dependent mod's animations, guidebook, and data. As a player there is nothing to do with it directly - it simply needs to be present and version-correct for the mod that relies on it.
There is no config you normally need to touch.
Developer API
Modders depend on Citadel to avoid re-implementing animation, rendering, and data plumbing. Add it as a dependency, then use its APIs.
Declaring the dependency
Declare Citadel as a required dependency in your mod descriptor so the game enforces correct load order, and reference it from your build configuration.
Animated entities
Implement IAnimatedEntity on your entity and drive it with Citadel's keyframe Animation system:
public class MyCreature extends Animal implements IAnimatedEntity {
public static final Animation ANIMATION_ATTACK = Animation.create(15);
private int animationTick;
private Animation currentAnimation = NO_ANIMATION;
@Override public int getAnimationTick() { return animationTick; }
@Override public void setAnimationTick(int tick) { this.animationTick = tick; }
@Override public Animation getAnimation() { return currentAnimation; }
@Override public void setAnimation(Animation a) { this.currentAnimation = a; }
@Override public Animation[] getAnimations() {
return new Animation[]{ ANIMATION_ATTACK };
}
}
Call AnimationHandler.INSTANCE.updateAnimations(this) each tick and trigger an animation with setAnimation(ANIMATION_ATTACK).
Other utilities
- Entity data attachment - persist custom data on any entity without editing its class.
- Guidebook - register entries with 3D entity/recipe previews (this is what powers in-game dictionaries).
- Render helpers - shared model/renderer base classes and post-processing shader hooks.
- Networking & registration - boilerplate helpers for packets and deferred registration.
Always compile and test against the exact Citadel version your release targets - the API surface can change between game versions.