Creating NPCs
Configuration settings
isEnabled
Sets if an NPC is enabled.
| Key | Values | Default |
|---|---|---|
isEnabled | Boolean | true |
Example
isEnabled: true
name
Sets the display name of an NPC. Supports Color Codes and translation keys for multi-language servers.
| Key | Values | Default |
|---|---|---|
name | String | none |
Example
name: "&aEnn Peecee"

scale
Sets the scale (size) of the NPC.
| Key | Values | Default |
|---|---|---|
scale | Multiplier | 1.0 |
When scaling, 1.0 represents the default size. To make the entity larger, increase the value (e.g., 1.2). To make the entity smaller, decrease the value (e.g., 0.8).
Example
scale: 1.2
role
Sets the role of the NPC, under the name. Only visual. Supports Color Codes and translation keys for multi-language servers.
| Key | Values | Default |
|---|---|---|
role | String | none |
Example
role: "&c<Red Fellow>"

profession
Sets the profession of the NPC, which sets its skin when not using a disguise.
| Key | Values | Default |
|---|---|---|
profession | Profession | NITWIT |
Example
profession: NITWIT

greetings
Sets the list of greeting the NPC says when a player approaches. Supports translation keys for multi-language servers.
| Key | Values | Default |
|---|---|---|
greetings | String List | none |
Example
greetings:
- Hi there!
- Good day.

dialog
Sets the dialog the NPC will say while a player is nearby (In case of the DIALOG interactionType, this would be the dialog). Supports translation keys for multi-language servers.
| Key | Values | Default |
|---|---|---|
dialog | String List | none |
Example
dialog:
- I like apples!
- Sure is hot.

farewell
Sets the farewell message of the NPC. Supports translation keys for multi-language servers.
| Key | Values | Default |
|---|---|---|
farewell | String List | none |
Example
farewell:
- Until next time!
- Bye!

canTalk
Sets if the NPC can talk.
| Key | Values | Default |
|---|---|---|
canTalk | Boolean | true |
Example
canTalk: true
activationRadius
Sets the radius at which an NPC can detect a player approaching.
| Key | Values | Default |
|---|---|---|
activationRadius | Double | 3.0 |
Example
activationRadius: 3.0
interactionType
Sets the type of interaction the NPC will do.
| Key | Values | Default |
|---|---|---|
interactionType | Special [1] | none |
Example
interactionType: TELEPORT_BACK
noPreviousLocationMessage
When a Teleporter NPC has no previous location it can teleport a player to, it will display this message. Accepts Color Codes and translation keys for multi-language servers.
| Key | Values | Default |
|---|---|---|
noPreviousLocationMessage | String | none |
Example
noPreviousLocationMessage: '&8[EliteMobs] &cCouldn''t send you back to your previous location - no previous location found!'

timeout
Sets the amount of time, in minutes, before an NPC vanishes permanently.
| Key | Values | Default |
|---|---|---|
timeout | Integer | 0 (never) |
Example
timeout: 0
questFileName
Sets the quests the NPC gives.
| Key | Values | Default |
|---|---|---|
questFileName | String List | none |
Example
questFileName:
- my_quest_one.yml
- my_quest_two.yml
disguise
Sets the LibsDisguises disguise the NPC has.
| Key | Values | Default |
|---|---|---|
disguise | LibsDisguises format | none |
Example
disguise: SKELETON

customDisguiseData
Sets the data for a custom LibsDisguises disguise.
| Key | Values | Default |
|---|---|---|
customDisguiseData | LibsDisguises format | none |
Example
disguise: custom:my_cool_disguise_name
customDisguiseData: player my_cool_disguise_name setskin {"id":"364acb6d-9050-46f7-b5fb-f8c3fd83a6fc","name":"Unknown","properties":[{"name":"textures","value":"ewogICJ0aW1lc3RhbXAiIDogMTYxMTk4ODA4Nzc1NSwKICAicHJvZmlsZUlkIiA6ICJkZGVkNTZlMWVmOGI0MGZlOGFkMTYyOTIwZjdhZWNkYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJEaXNjb3JkQXBwIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzliYmVkODQzNWY4YmYyNzhhZmUyNmU2NGZkOTI2YjhiMzc3MzJkODhlMzM0ODk3ZGJkNTI3ZDU2ZmY5MTk5MGUiCiAgICB9CiAgfQp9","signature":"ujLq1joYVktuQAp1xpFKlxQFUVinSePiDBiVCAxxix/mA5vP86i/eAOfb1mtGjaAZ6sO0l2olbzvycnGXNBtbAxgqprguROXY4tpWiePVTDmy3iD4GdOCxHAkYLoyMV5qTT4SNsldUFFuND8GSEgbNMltKDLmhNKwzm08iCigPfpeuYpwljgJPxu6ka54PKNaQu4doI0ZDZXKqq4hPhR3Bs2Sz9MI0SmdmQWwcCzUz3DFdVno27fmQ6LwqmT+eSoOv0EttVG/XMaTYQ5lhBY61mqf6WlJyYVUSfjJk1AbYsctu7dWM+sbY8jFq5ljvXJGGr5TyKi+fs8vHy06Z2go20QgTYOw+caFxFijAS6fgm3oY57VEO/+/9OLHdD+Z9BrWqQWcIIrVeIfxjue/yt4pyeVv9jX59hjNFjhcPEwotkxJ+vZ96WlTLWDG4BiqauDr2VeGyLlVaygO9ZU0wwsN65iSh91GI3tMIA5wbDR0Hts/9ABvt9eafHbowS+4SZXN0i9mYnKg7op1eiB8nMEAGsPJg3DwsmUrh3ACAapQ6eYHiJpo59RXDqKlRcXwo7wsEFp//5LgQWbPj0NP3nxnywdpozqSAeq6236qlhE9BT9eiyJ41V9sMelYFEWMlUAltR40NdbIrHB0J3nmfuLJz44/sTwWf6P1khOy//XX0="}],"legacy":false}

customModel
Sets the ModelEngine custom model the NPC will use.
| Key | Values | Default |
|---|---|---|
customModel | String | none |
Example
customModel: MY_MODEL_ONE
arena
Sets the filename of the arena the NPC will open a menu for (requires the ARENA_MASTER interactionType).
| Key | Values | Default |
|---|---|---|
arena | Filename | none |
Example
arena: my_arena.yml
command
Sets the command the NPC will run (requires COMMAND interactionType). Commands are executed as console commands, not as the player. Do not include the leading slash (/).
| Key | Values | Default |
|---|---|---|
command | String | none |
Example
command: say Look at me running a command, how cool!
![]()
spawnLocation
Sets the spawn location of the NPCs. You should set this through the /em spawnnpc <npcfilename.yml> command.
| Key | Values | Default |
|---|---|---|
spawnLocation | String | none |
Example
spawnLocation: my_world,10,50,10,0,0
spawnLocations
Sets the spawn locations of the NPCs. You should set this through the /em spawnnpc <npcfilename.yml> command.
| Key | Values | Default |
|---|---|---|
spawnLocations | String List | none |
Example
spawnLocations:
- my_world,10,50,10,0,0
- my_world,-10,50,-10,0,0
instanced
Sets if the NPC should be instanced (for use in instanced dungeons). When set to true, the NPC is automatically cloned for each dungeon instance, with each clone existing in the corresponding instance world.
| Key | Values | Default |
|---|---|---|
instanced | Boolean | false |
Example
instanced: false
NPC Config Example
isEnabled: true
name: "&cRed Rubin"
role: "&a<Generic NPC>"
profession: NITWIT
greetings:
- Hiya!
- Hello!
dialog:
- Great conversation!
- Pleasure talking with you!
farewell:
- Goodbye!
- Laters!
canTalk: true
activationRadius: 4
interactionType: CHAT
timeout: 0
questFileName:
- my_quest.yml #npc interactionType must be set to CUSTOM_QUEST_GIVER
disguise: SKELETON
customDisguiseData: #used when a custom libsdisguise is being set
customModel: MODEL_ONE
arena: my_arena.yml #npc interactionType must be set to ARENA_MASTER
command: /say Hello World! #npc interactionType must be set to COMMAND
spawnLocation: my_world,584,55,127,90,10 #remember that NPCs use pitch and yaw to set where they are looking at. this is also automatically set when running the /em spawnnpc <npcfilename.yml> command, so make sure you pose where you want the NPC to be facing when running the command.

Special [1]
The following is the list of valid NPC interaction types:
| Type | Description |
|---|---|
GUILD_GREETER | Open the adventurer's guild menu |
CHAT | Right-clicking cycles through the dialog |
CUSTOM_SHOP | Opens the custom shop menu |
PROCEDURALLY_GENERATED_SHOP | Opens the procedurally generated shop |
BAR | Opens the bar menu |
ARENA | Opens the arena menu |
QUEST_GIVER | Opens the procedurally generated quests menu |
CUSTOM_QUEST_GIVER | Opens the quest menu for a specific quest set in questFileName |
NONE | No interactions |
SELL | Opens the sell menu |
TELEPORT_BACK | Teleports players back to the last non-elitemobs world location they were |
SCRAPPER | Opens the scrap menu |
REPAIRMAN | Opens the repair menu |
ENCHANTER | Opens the enchant menu |
REFINER | DEPRECATED - Feature removed, do not use |
UNBINDER | Opens the unbind menu |
ARENA_MASTER | Opens the arena menu for the arena set in arenaFilename |
COMMAND | Runs the command set in command |
SCROLL_APPLIER | Applies elite item scrolls to items |
For more information on what the SCRAPPER and similar interaction types do click here.
NPC Behavior Notes
NPCs have several hardcoded behaviors that cannot be configured:
- AI Disabled: NPCs cannot move autonomously. They remain at their spawn location.
- Role Display: The role text is displayed on an invisible armor stand above the NPC at a fixed height.
- Dialogue Cooldown: NPCs wait 3 seconds between speech events to prevent overlapping messages.
- Chunk Lifecycle: NPCs despawn when their chunk unloads and respawn when it reloads.
