Overview#
Citadel is a library / API mod. It adds no creatures, blocks, or items of its own - instead it provides a powerful toolbox of shared code that other mods build on top of. The most well-known mod that depends on it is Alex's Mobs, but many other content mods use Citadel for animation and utility support.
What Citadel provides:
- a keyframe animation framework for smooth, complex entity animations,
- advanced entity model and render helpers,
- a persistent entity data-attachment system for storing custom data on entities,
- a configurable in-game guidebook system with 3D entity and recipe previews,
- post-processing shader effects,
- and common networking, registration, and utility helpers.
Because it is a dependency, it is present in your game only because another mod relies on it.
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.
Troubleshooting & FAQ#
My game crashes and the log mentions Citadel or a missing dependency. Make sure the correct Citadel build is present, or update it to match the version the dependent mod requires.
I installed Citadel but nothing changed. That is expected - Citadel adds no content on its own. You need the mod that uses it (e.g. Alex's Mobs).
Can I remove Citadel? Only if you also remove every mod that depends on it; otherwise those mods break.
Is Citadel a performance mod / does it change gameplay? No. It is a code library; it has negligible direct gameplay impact and exists purely to support other mods.