Crear NPCs
Ajustes de configuración
isEnabled
Establece si un NPC está habilitado.
| Key | Valores | Predeterminado |
|---|---|---|
isEnabled | Boolean | true |
Ejemplo
isEnabled: true
name
Establece el nombre visible de un NPC. Admite Color Codes y claves de traducción para servidores multiidioma.
| Key | Valores | Predeterminado |
|---|---|---|
name | String | ninguno |
Ejemplo
name: "&aEnn Peecee"

scale
Establece la escala (tamaño) del NPC. Esto se aplica mediante el atributo vanilla generic_scale sobre la entidad subyacente.
| Key | Valores | Predeterminado |
|---|---|---|
scale | Multiplier | 1.0 |
Al escalar, 1.0 representa el tamaño predeterminado. Para hacer la entidad más grande, aumenta el valor (por ejemplo, 1.2). Para hacer la entidad más pequeña, disminuye el valor (por ejemplo, 0.8).
Ejemplo
scale: 1.2
role
Establece el rol del NPC, bajo el nombre. Solo es visual. Admite Color Codes y claves de traducción para servidores multiidioma.
| Key | Valores | Predeterminado |
|---|---|---|
role | String | ninguno |
Ejemplo
role: "&c<Red Fellow>"

profession
Establece la profesión del NPC, que define su skin cuando no se usa un disfraz.
| Key | Valores | Predeterminado |
|---|---|---|
profession | Profession | NITWIT |
Ejemplo
profession: NITWIT

greetings
Establece la lista de saludos que el NPC puede decir cuando un jugador entra por primera vez en su activationRadius. Se elige una entrada al azar y se muestra como un bocadillo de chat flotante sobre el NPC (visible solo para ese jugador, durante unos 5 segundos). Admite claves de traducción para servidores multiidioma.
| Key | Valores | Predeterminado |
|---|---|---|
greetings | String List | ninguno |
Un saludo solo se dispara al entrar en el radio, no repetidamente mientras el jugador permanece dentro.
Ejemplo
greetings:
- Hi there!
- Good day.

dialog
Establece las líneas que el NPC puede decir como bocadillo de chat flotante. Cada vez se elige una entrada al azar (la lista no se lee en orden). Admite claves de traducción para servidores multiidioma.
Cuándo se dispara depende del interactionType:
- Los NPC
CHATdicen una línea de diálogo cuando un jugador les hace clic derecho. - Cualquier otro
interactionTypedice una línea de diálogo en cada escaneo de proximidad mientras un jugador permanece dentro delactivationRadius.
Un \n literal dentro de una línea la divide en varias líneas apiladas del bocadillo.
| Key | Valores | Predeterminado |
|---|---|---|
dialog | String List | ninguno |
Ejemplo
dialog:
- I like apples!
- Sure is hot.

farewell
Establece los mensajes de despedida del NPC. Se elige una entrada al azar y se muestra como un bocadillo de chat flotante. Admite claves de traducción para servidores multiidioma.
| Key | Valores | Predeterminado |
|---|---|---|
farewell | String List | ninguno |
Las despedidas se disparan cuando un jugador cierra un menú de inventario estando a menos de 5 bloques del NPC, normalmente justo después de cerrar un menú de tienda, misión o arena. No se disparan cuando un jugador simplemente sale caminando del activationRadius.
Ejemplo
farewell:
- Until next time!
- Bye!

canTalk
Establece si el NPC puede hablar. Cuando se establece en false, el NPC nunca muestra un bocadillo de chat, así que greetings, dialog y farewell quedan todos suprimidos.
| Key | Valores | Predeterminado |
|---|---|---|
canTalk | Boolean | true |
Ejemplo
canTalk: true
activationRadius
Establece el radio, en bloques, en el que un NPC puede detectar a un jugador acercándose.
| Key | Valores | Predeterminado |
|---|---|---|
activationRadius | Double | 3.0 |
La proximidad se escanea cada 5 segundos. Mientras un jugador está dentro del radio, el NPC gira para mirarle, se muestran los indicadores de misión (en los NPC QUEST_GIVER / CUSTOM_QUEST_GIVER) y se activan greetings / dialog. Establecer esto en 0 (o menos) desactiva por completo la detección de proximidad para ese NPC.
Ejemplo
activationRadius: 3.0
scripts
Establece los scripts Lua adjuntos a este NPC. Los archivos de script se cargan desde plugins/EliteMobs/npc_scripts/. La extensión .lua es opcional: se añade automáticamente si la omites.
| Key | Valores | Predeterminado |
|---|---|---|
scripts | String List | ninguno |
Los scripts de NPC se ejecutan en el motor Lua compartido de MagmaCore y admiten los siguientes hooks: on_spawn, on_tick, on_remove, on_npc_interact, on_npc_proximity_enter, on_npc_proximity_leave, on_zone_enter y on_zone_leave. Consulta Scripts Lua de NPC para ver la API completa y ejemplos.
Un nombre de archivo de script que no se corresponda con un archivo de npc_scripts/ se omite con una advertencia; el NPC aparece igualmente.
Ejemplo
scripts:
- wave.lua
interactionType
Establece el tipo de interacción que realizará el NPC.
| Key | Valores | Predeterminado |
|---|---|---|
interactionType | Especial [1] | ninguno |
Ejemplo
interactionType: TELEPORT_BACK
noPreviousLocationMessage
Cuando un NPC Teletransportador no tiene una ubicación anterior a la que pueda teletransportar a un jugador, mostrará este mensaje. Acepta Color Codes y claves de traducción para servidores multiidioma.
| Key | Valores | Predeterminado |
|---|---|---|
noPreviousLocationMessage | String | ninguno |
Ejemplo
noPreviousLocationMessage: '&8[EliteMobs] &cCouldn''t send you back to your previous location - no previous location found!'

timeout
Establece la cantidad de tiempo, en minutos, antes de que un NPC desaparezca permanentemente.
| Key | Valores | Predeterminado |
|---|---|---|
timeout | Double | 0 (nunca) |
Ejemplo
timeout: 0
questFileName
Establece las misiones personalizadas que da el NPC. Requiere el interactionType CUSTOM_QUEST_GIVER. Ten en cuenta que la clave está en singular (questFileName) aunque acepte una lista.
| Key | Valores | Predeterminado |
|---|---|---|
questFileName | String List | ninguno |
Ejemplo
questFileName:
- my_quest_one.yml
- my_quest_two.yml
disguise
Establece el disfraz de LibsDisguises que tiene el NPC.
| Key | Valores | Predeterminado |
|---|---|---|
disguise | Formato de LibsDisguises | ninguno |
Ejemplo
disguise: SKELETON

customDisguiseData
Establece los datos de un disfraz personalizado de LibsDisguises.
| Key | Valores | Predeterminado |
|---|---|---|
customDisguiseData | Formato de LibsDisguises | ninguno |
Ejemplo
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
Establece el modelo personalizado de ModelEngine que usará el NPC.
| Key | Valores | Predeterminado |
|---|---|---|
customModel | String | ninguno |
Ejemplo
customModel: MY_MODEL_ONE
arena
Establece el nombre de archivo de la arena para la que el NPC abrirá un menú (requiere el interactionType ARENA_MASTER).
| Key | Valores | Predeterminado |
|---|---|---|
arena | Filename | ninguno |
Ejemplo
arena: my_arena.yml
command
Establece el comando que ejecutará el NPC (requiere el interactionType COMMAND). Los comandos se ejecutan como el jugador, no como la consola. No incluyas la barra inicial (/).
| Key | Valores | Predeterminado |
|---|---|---|
command | String | ninguno |
Ejemplo
command: say Look at me running a command, how cool!
![]()
spawnLocation
Establece una única ubicación de aparición para el NPC. Esta es la clave antigua de ubicación única: solo se lee cuando spawnLocations está ausente o vacía. Las nuevas ubicaciones colocadas dentro del juego se escriben en spawnLocations, así que es preferible usar esa clave.
El formato es world,x,y,z,yaw,pitch.
| Key | Valores | Predeterminado |
|---|---|---|
spawnLocation | String | ninguno |
Ejemplo
spawnLocation: my_world,10,50,10,0,0
spawnLocations
Establece las ubicaciones de aparición del NPC. El mismo archivo de NPC puede colocarse en varios sitios; se genera un NPC por cada entrada. Deberías establecer esto mediante el comando /em place npc <npcfilename.yml>, que añade tu ubicación actual (incluida la dirección hacia la que miras) a esta lista y también establece isEnabled: true.
El formato de cada entrada es world,x,y,z,yaw,pitch.
| Key | Valores | Predeterminado |
|---|---|---|
spawnLocations | String List | ninguno |
Ejemplo
spawnLocations:
- my_world,10,50,10,0,0
- my_world,-10,50,-10,0,0
instanced
Establece si el NPC debe estar instanciado (para uso en mazmorras instanciadas). Cuando se establece en true, el NPC no aparece en el mundo plantilla; en su lugar se registra como plantilla y se clona para cada instancia de mazmorra, y cada clon existe en el mundo de instancia correspondiente.
| Key | Valores | Predeterminado |
|---|---|---|
instanced | Boolean | false |
Ejemplo
instanced: false
syncMovement
Establece si el modelo personalizado del NPC debe tener su movimiento sincronizado con la entidad subyacente. Esto solo tiene efecto cuando customModel está establecido y el modelo está cargado: se ignora en los NPC normales y en los de LibsDisguises.
| Key | Valores | Predeterminado |
|---|---|---|
syncMovement | Boolean | true |
Ejemplo
syncMovement: true
Ejemplo de configuración de NPC
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 (do not include the leading slash)
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 place npc <npcfilename.yml> command, so make sure you pose where you want the NPC to be facing when running the command.

Especial [1]
La siguiente es la lista de tipos de interacción de NPC válidos:
| Tipo | Descripción |
|---|---|
GUILD_GREETER | Abre el menú de selección de bono de habilidad de arma |
CHAT | El clic derecho dice una línea aleatoria de dialog |
CUSTOM_SHOP | Abre el menú de la tienda personalizada |
PROCEDURALLY_GENERATED_SHOP | Abre la tienda generada proceduralmente |
BAR | Sin implementar. Indica al jugador que la característica llegará pronto. |
ARENA | No hace nada. Usa ARENA_MASTER en su lugar. |
QUEST_GIVER | Abre el menú de misiones generadas proceduralmente |
CUSTOM_QUEST_GIVER | Abre el menú de misiones para una misión específica establecida en questFileName |
NONE | Sin interacciones |
SELL | Abre el menú de venta |
TELEPORT_BACK | Teletransporta a los jugadores de vuelta a la última ubicación de mundo no perteneciente a elitemobs en la que estuvieron |
SCRAPPER | Abre el menú de desguace |
REPAIRMAN | Abre el menú de reparación |
ENCHANTER | Abre el menú de encantamiento |
REFINER | REEMPLAZADO - Indica al jugador que la característica fue reemplazada; a los administradores se les indica que eliminen el NPC |
SMELTER | REEMPLAZADO - Indica al jugador que la característica fue reemplazada; a los administradores se les indica que eliminen el NPC |
ENHANCER | REEMPLAZADO - Indica al jugador que la característica fue reemplazada; a los administradores se les indica que eliminen el NPC |
UNBINDER | Abre el menú de desvinculación |
ARENA_MASTER | Abre el menú de la arena establecida en arena |
COMMAND | Ejecuta el comando establecido en command |
SCROLL_APPLIER | Abre el menú de pergaminos de objeto élite. El NPC no aparece en absoluto mientras useEliteItemScrolls esté desactivado |
ARROW_SHOP | Abre el menú de la tienda de flechas |
GAMBLING_BLACKJACK | Abre el juego de apuestas de blackjack |
GAMBLING_COINFLIP | Abre el juego de apuestas de cara o cruz |
GAMBLING_SLOTS | Abre el juego de apuestas de tragaperras |
GAMBLING_HIGHERLOWER | Abre el juego de apuestas de mayor/menor |
Para más información sobre lo que hacen el SCRAPPER y tipos de interacción similares haz clic aquí.
Notas sobre el comportamiento de los NPCs
Los NPCs tienen varios comportamientos preprogramados que no se pueden configurar:
- IA Deshabilitada: Los NPCs no pueden moverse ni buscar rutas. Permanecen en su ubicación de aparición. Sí giran sobre sí mismos para mirar a un jugador que esté dentro del
activationRadius. - Visualización del Rol: El texto de
rolese dibuja en una entidad de texto flotante sobre el NPC. El desplazamiento vertical depende de cómo se represente el NPC:2.52para un NPC normal,2.30para un NPC con LibsDisguises y2.3para uno que use uncustomModel. - Etiqueta de rol en Bedrock: Los clientes de Bedrock no pueden mostrar entidades de texto, así que un NPC disfrazado recibe además un soporte de armadura marcador invisible que lleva el texto del rol, visible solo para los jugadores de Bedrock y oculto para los de Java. Su altura la establece
bedrockNPCRoleYOffsetenconfig.yml(por defecto2.2). Esta alternativa requiere Geyser o Floodgate en el servidor de destino; una instalación de Geyser solo en el proxy la desactiva. - Tiempo de espera de diálogo: Los NPCs esperan 3 segundos entre eventos de habla para evitar que los mensajes se solapen. Los bocadillos de chat son texto flotante por jugador que desaparece tras unos 5 segundos, no mensajes de chat.
- Invisibilidad: Un NPC bajo el efecto de poción de invisibilidad no mostrará bocadillos de chat.
- Ciclo de vida del Chunk: Los NPCs desaparecen cuando su chunk se descarga y reaparecen cuando se vuelve a cargar. Las entidades de NPC nunca se guardan en el mundo: se recrean a partir de su archivo de configuración.
- Renombrado bloqueado: Hacer clic derecho en un NPC sosteniendo una etiqueta de nombre se cancela y se indica al jugador que el NPC no puede renombrarse.
