Skip to main content
NMEntities ships a public addon API. If you can write a Bukkit plugin, you can extend it the way addon ecosystems grow around the big plugins: register your own effect mechanics and targeters, listen to NMEntities events, and drive mobs, NPCs and effects from code. Java and Kotlin both work. Every example in this section is Java.

Setting up an addon

1

Add the NMEntities jar as a compile-only dependency

There is no separate API artifact yet, so you compile against the plugin jar itself.
build.gradle.kts
2

Declare the dependency in plugin.yml

This makes your plugin enable after NMEntities.
plugin.yml
3

Register everything in onEnable

Registrations survive /nme reload, so you never need to re-register.

The entry point

Everything is reachable from one class: org.nexomaker.api.NMEntitiesAPI.

What that makes possible

The five effect-DSL extension points cover the whole skill language: new mechanics, targeters, triggers, conditions and placeholders. Add mobs().contribute(...) and naturalSpawns().contribute(...) on top, and an addon can ship a complete content pack — mobs, spawn rules and new vocabulary — without shipping a single YAML file. A server owner can still override any of it by declaring the same id in their own config.

Extending the effect language

The headline feature: teach the effect DSL new words that server owners use exactly like built-ins.

Models & animation

Attach a model to any entity, play animations, restyle bones and hook per-bone hitboxes — the embedded engine’s API, callable from the same jar.

Stability

  • Everything under org.nexomaker.api is the supported addon surface. The types it hands out — MechanicArgs, EffectContext, MobDefinition, NpcOps and the rest — are stable to compile against, including the kr.toxicity.model.bukkit.* packages they come from.
  • kr.toxicity.model.api is the embedded engine’s own API — models, animations, bones and hitboxes. It is not relocated, so you can call it from the same jar, but it is versioned by the engine rather than by NMEntities.
  • Anything else is an internal and may change without notice.
  • One jar: compile against the plugin jar itself until a separate API artifact exists.