Crear Misiones
Misión de Ejemplo
EliteMobs viene preempaquetado con un test_quest.yml, que se analizará aquí como un formato de misión sencillo a seguir.
¡Las Misiones Personalizadas están en la carpeta ~plugins/EliteMobs/customquests!
test_quest.yml
isEnabled: true
customObjectives:
Objective1:
amount: '1'
filename: test_boss.yml
objectiveType: KILL_CUSTOM
customRewards:
- filename=magmaguys_toothpick.yml:amount=1:chance=1
name: "&aKill the Test Boss"
questLore:
- "&cEnd the test boss'' reign of terror!"

Si tu interfaz de misiones no se ve así, puedes cambiarla para que coincida usando /em alt.
Esta misión de ejemplo dará a los jugadores la tarea de matar 1 test_boss.yml. (El nombre real del boss mostrado en el rastreador de misiones será el name: establecido en test_boss.yml.) Y como recompensa por completar la misión serán recompensados con 1 Magmaguy's Toothpick.
Crear Misiones Personalizadas
isEnabled
Establece si la misión está habilitada.
| Key | Values | Default |
|---|---|---|
isEnabled | Boolean | true |
Ejemplo
isEnabled: true
customObjectives
Establece los objetivos de la misión.
| Key | Values | Default |
|---|---|---|
customObjectives | Special [1] | none |
Nota: Si usas un boss multifase como tu objetivo, entonces el objetivo debería usar la primera fase como objetivo.
Ejemplos
KILL_CUSTOM:
customObjectives:
Objective1:
amount: '1'
filename: my_cool_boss.yml
objectiveType: KILL_CUSTOM
DIALOG:
customObjectives:
Objective1:
dialog:
- "&a[Dialog NPC] &fCome here often?"
- "&7&oI should eat more apples."
filename: dialog_npc.yml
npcName: Dialog NPC
location: at dialog location.
objectiveType: DIALOG
FETCH_ITEM:
customObjectives:
Objective1:
amount: '99'
itemName: Red Apples
filename: my_quest_item_red_apples.yml
objectiveType: FETCH_ITEM
ARENA:
customObjectives:
Objective1:
objectiveType: ARENA
filename: my_arena.yml
name: "Complete the Arena"

Special [1]
Expandir Tabla
Los Objetivos Personalizados se construyen usando los siguientes valores:
| Key | Descripción |
|---|---|
KILL_CUSTOM / FETCH_ITEM / DIALOG / ARENA | Se usa para establecer el tipo de objetivo que representa. KILL_CUSTOM indica que la misión implica matar a un Boss Personalizado específico, FETCH_ITEM indica que la misión implica conseguir un Objeto Personalizado específico, DIALOG indica que la misión implica hablar con un NPC, y ARENA indica que la misión implica completar una arena específica. |
filename | Se usa para establecer el nombre de archivo del Boss Personalizado, del Objeto Personalizado que el jugador tiene que matar / obtener, del NPC con el que tienen que hablar, o de la arena que deben completar. |
amount | Se usa para establecer la cantidad de Bosses Personalizados que deben matarse o de objetos que deben obtenerse. Por defecto es 1 si no se especifica. |
dialog | Se usa para establecer el diálogo del NPC con el que habla el jugador. |
name | Se usa para establecer el nombre del objetivo de la misión, ya sea un NPC, un objeto personalizado o una arena. Solo con fines visuales. |
itemName | Se usa solo con FETCH_ITEM – Este ajuste cambia cómo aparece el nombre del objeto en el rastreador de misiones. Te permite mostrar un nombre personalizado que sea diferente del nombre real del objeto en el juego. |
¡Ten en cuenta que cada campo de Objetivo Personalizado se separa con un :!
customRewards
Establece las recompensas de la misión.
| Key | Values | Default |
|---|---|---|
customRewards | Formato universal de botín de EliteMobs | none |
Ejemplo
customRewards:
- currencyAmount=50:amount=1:chance=0.05
- material=COOKED_COD:amount=3:chance=1.0
- filename=magmaguys_toothpick.yml:amount=1:chance=1.0

Nota: Si no especificas customRewards, el sistema de misiones generará automáticamente recompensas basadas en el nivel de la misión. La calidad de la recompensa escala con la dificultad de la misión e incluye tanto moneda como objetos. Para un control preciso sobre las recompensas, especifica siempre customRewards de forma explícita.
questAcceptPermission
Establece el permiso que el jugador debe tener para poder aceptar la misión.
| Key | Values | Default |
|---|---|---|
questAcceptPermission | String | none |
Ejemplo
questAcceptPermission: elitequest.my_permission
questAcceptPermissions
Establece los permisos que el jugador debe tener para poder aceptar la misión.
| Key | Values | Default |
|---|---|---|
questAcceptPermissions | String List | none |
Ejemplo
questAcceptPermissions:
- elitequest.my_previous_quest_one.yml
- elitequest.my_previous_quest_two.yml
questLockoutPermission
Establece el permiso que el jugador obtendrá al completar la misión, que le impedirá hacer la misión de nuevo. Si no se especifica, el permiso de bloqueo de misión se genera automáticamente como elitequest.[filename].
| Key | Values | Default |
|---|---|---|
questLockoutPermission | String | elitequest.[filename] |
Ejemplo
questLockoutPermission: elitequest.my_quest.yml
questLockoutMinutes
Establece cuánto tiempo, en minutos, tendrá que esperar el jugador antes de poder hacer la misión de nuevo (funciona eliminando el permiso de bloqueo de misión).
| Key | Values | Default |
|---|---|---|
questLockoutMinutes | Integer | -1(nunca se repetirá) |
Ejemplo
questLockoutMinutes: 60
name
Establece el nombre de la misión. Acepta Color Codes.
| Key | Values | Default |
|---|---|---|
name | String | [filename] |
Ejemplo
name: "&aMy Great Quest Name"
questLore
Establece la descripción (lore) de la misión que aparecerá en el menú de misiones del juego.
| Key | Values | Default |
|---|---|---|
questLore | String List | none |
Ejemplo
questLore:
- "Interesting lore sentence."
- "Yet another interesting lore sentence."

temporaryPermissions
Establece los permisos asignados al jugador hasta que entregue la misión.
Si estás usando este ajuste para asegurarte de que un objeto solo caiga cuando los jugadores tengan una misión específica activa, también tendrás que configurar el mismo permiso en el archivo de configuración del objeto.
| Key | Values | Default |
|---|---|---|
temporaryPermissions | String List | none |
Ejemplo
temporaryPermissions:
- elitequest.item_that_should_drop_only_during_quest.yml
questAcceptDialog
Establece el diálogo que aparece en el chat al aceptar la misión.
| Key | Values | Default |
|---|---|---|
questAcceptDialog | String List | none |
Ejemplo
questAcceptDialog:
- "My hero! You are so helpful!"
- "I wish you the best of luck!"

questCompleteMessage
Establece el diálogo que aparece en el chat al completar la misión.
| Key | Values | Default |
|---|---|---|
questCompleteMessage | String List | none |
Ejemplo
questCompleteMessage:
- "My hero! You have completed my difficult quest!"
- "As a reward you can have this loaf of bread!"

questCompleteCommands
Establece los comandos que se ejecutarán al completar la misión. Admite marcadores de posición: $player para el nombre del jugador, y $getX, $getY, $getZ para las coordenadas de la ubicación del jugador.
| Key | Values | Default |
|---|---|---|
questCompleteCommands | String List | none |
Ejemplo
questCompleteCommands:
- say $player has finished a quest at $getX, $getY, $getZ!
- give $player diamond 1
![]()
turnInNPC
Establece el nombre de archivo del NPC con el que los jugadores tienen que hablar/interactuar para completar la misión. Este no tiene que ser el mismo NPC que entregó la misión.
| Key | Values | Default |
|---|---|---|
turnInNPC | Filename | none |
Ejemplo
turnInNPC: my_cool_quest_npc.yml
Dadores de Misiones
Para asignar una misión a un NPC que se la dará a los jugadores, necesitas configurar el archivo del NPC, no el archivo de la misión.
En tu archivo de configuración del NPC (~/plugins/EliteMobs/npcs/), añade:
questFileName: my_quest.yml
Para NPCs que dan varias misiones:
questFileName:
- quest_one.yml
- quest_two.yml
Consulta la documentación de creación de NPCs para más información sobre cómo configurar NPCs.
trackable
Establece si la misión usará el rastreador de misiones.
| Key | Values | Default |
|---|---|---|
trackable | Boolean | true |
Ejemplo
trackable: true
questLevel
Establece el nivel de la misión. Esto es solo una guía visual para que los jugadores puedan saber lo desafiante que será la misión. Esto no modifica de ninguna manera los niveles de boss, objetos u otros.
| Key | Values | Default |
|---|---|---|
questLevel | Integer | 0 |
Ejemplo
questLevel: 10

questAcceptSound
Establece el sonido que se reproduce cuando se acepta una misión. Es posible reproducir tanto sonidos de Minecraft como sonidos de un paquete de recursos.
| Key | Values | Default |
|---|---|---|
questAcceptSound | String | none |
Ejemplo
questAcceptSound: entity.experience_orb.pickup

questCompleteSound
Establece el sonido que se reproduce cuando se completa (se entrega) una misión. Es posible reproducir tanto sonidos de Minecraft como sonidos de un paquete de recursos.
| Key | Values | Default |
|---|---|---|
questCompleteSound | String | none |
Ejemplo
questCompleteSound: entity.player.levelup

Soporte de Localización
Los siguientes campos admiten localización para servidores multilingües:
namequestLorequestAcceptDialogquestCompleteMessage
Esto te permite proporcionar traducciones para distintos idiomas en tu servidor.
Permisos
Como se mencionó en las tablas anteriores, los permisos suelen ser Strings o String Lists. Pero veamos con más detalle cómo los usarás para bloquear y desbloquear misiones.
Supongamos que estás haciendo quest_3 en una serie de misiones que has planeado y no quieres que los jugadores puedan tomar quest_3 antes de terminar quest_2. Configuraríamos el archivo de la misión así:
questAcceptPermission: elitequest.quest_2.yml
questLockoutPermission: elitequest.quest_3.yml
Al establecer questAcceptPermissions en elitequest.quest_2.yml ahora hemos impedido que los jugadores tomen quest_3.yml antes de terminar quest_2.yml.
Al establecer questLockoutPermission en elitequest.quest_3.yml hemos impedido que los jugadores puedan recibir esa misión mientras ya tengan esa misión en su rastreador o si ya terminaron esa misión. Esto impide que los jugadores puedan repetir la misión.
Si quieres hacer una misión que solo esté disponible después de que los jugadores hayan completado una serie de misiones, entonces configurarías el archivo de la misión así:
questAcceptPermissions:
- elitequest.quest_2.yml
- elitequest.quest_3.yml
- elitequest.quest_4.yml
Si quieres que los jugadores solo puedan saquear ciertos objetos cuando tengan la misión correcta activa, podemos hacerlo usando temporaryPermissions. Crearíamos un permiso en el archivo de la misión usando temporaryPermissions y luego crearíamos un permiso coincidente en el archivo del objeto usando permission.
Por ejemplo, abriríamos nuestro archivo de misión y añadiríamos lo siguiente:
temporaryPermissions:
- elitequest.my_cool_item.yml
Luego abriríamos el archivo del objeto, en nuestro caso my_cool_item.yml, y añadiríamos lo siguiente:
permission: elitequest.my_cool_item.yml
Ahora ambos archivos tienen permisos coincidentes, lo que debería hacer que nuestro objeto solo caiga cuando los jugadores tengan la misión correcta activa.
Misiones Dinámicas
Las Misiones Dinámicas son misiones generadas procedimentalmente que EliteMobs crea y actualiza automáticamente. A diferencia de las misiones personalizadas definidas en archivos de configuración, las misiones dinámicas no requieren ninguna configuración manual y se adaptan a la progresión de cada jugador.
Cómo Funcionan
- Nivel de misión (Quest Tier): El nivel de misión dinámica de un jugador se deriva de su nivel de combate:
tier = combatLevel / 5, limitado a un rango de 1 a 20. Por ejemplo, un jugador con nivel de combate 45 recibirá misiones dinámicas de nivel 9. Las misiones en sí (y sus recompensas) se escalan al nivel de combate real del jugador, que se limita a un rango de 1 a 100. - 3 Misiones Por Nivel: Para cada uno de los 20 niveles de misión, el sistema genera exactamente 3 objetivos de misión aleatorios a la vez. A los jugadores se les ofrecen las 3 misiones que coinciden con su nivel actual.
- Ciclo de Actualización Automática: El conjunto de objetivos de misión dinámica se regenera cada 60 segundos (cada 1200 ticks). Cuando el conjunto se actualiza, los nuevos objetivos reemplazan a los antiguos, dando a los jugadores una selección rotativa de tareas.
- Adaptación a Mazmorras Dinámicas: Cuando un jugador entra en una mazmorra dinámica con una selección de nivel específica, todas sus misiones dinámicas activas se adaptan para coincidir con el nivel de los mobs de la mazmorra. El nivel de la misión, los objetivos y el nombre mostrado se actualizan en consecuencia para que las misiones sigan siendo relevantes para el contenido de la mazmorra.
