NPCs for Minecraft servers, defined in JSON.
Every NPC is a JSON file you can edit by hand, through /animus commands, or in the web editor. NPCs walk routes, carry riders, fight, build schematics, run behaviors, open shops and chest GUIs, and play rig animations. They are drawn with packets for each player, so players join with an unmodified client and other plugins never see an NPC as an entity.
| Minecraft | 26.1.2, 26.2 and 26.3 |
| Java | 25 |
| Plugin servers | Paper, Spigot and Folia, one jar for all three. Supported |
| Mod servers | Fabric, NeoForge and Forge, as a server-side mod. Experimental |
| Documentation | docs.volmitsoftware.com/animus |
Supported on Paper, Spigot and Folia; Fabric, Forge and NeoForge are experimental. All of them run the same NPC runtime, commands, behaviors, navigation, mounts, riding, combat and building. The differences are listed under platform differences: Folia runs each NPC on the region that owns its chunk, and mod servers have no protection plugin, no Vault economy and no Bukkit events.
- Put the jar in
plugins/(ormods/on a mod server) and start the server. - Follow the tutorial introduction to make, skin and walk a first NPC.
- Coming from Citizens? Migrating from Citizens imports your NPCs together with Sentinel, Denizen, dtlTraders and Shopkeepers data, and one command undoes it.
Every command is listed under commands and permissions, and every config.toml setting under configuration.
Trusted Java modules add behavior actions, conditions, triggers and import converters. See Java modules and API and the reference module. Example behavior packs are in examples/packs/.
Building needs JDK 25. Set JAVA_HOME to it if java -version reports something older.
./gradlew build # Core tests, Bukkit API matrix, artifact checks, converter archives
./gradlew :converter:installDist # Runnable local converter
./gradlew build -PincludeModDistributions=true # Plugin jar plus every mod jar in build/distributionsThe plugin jar is written to build/distributions/. The build uses a VolmLib checkout found beside or above the Animus checkout; point it elsewhere with -PlocalVolmLibDirectory=/path/to/VolmLib, or use the published dependency with -PuseLocalVolmLib=false.