Saltar al contenido principal

Crear Eventos

webapp_banner.jpg

Esta guía es para EliteMobs 10 y versiones posteriores

¿Qué son los Eventos Personalizados?​

Los Eventos Personalizados aquí se refieren a eventos que ocurren aleatoriamente en el juego, ya sea en función de las acciones del jugador o con un activador programado. El plugin viene precargado con varios Eventos Personalizados, como el evento del Balrog, el evento del Kraken y los eventos del Treasure Goblin, por nombrar algunos.

Este sistema se llama Eventos Personalizados porque los eventos no solo pueden personalizarse, sino también crearse desde cero. Lo que sigue es una guía sobre cómo crear y personalizar tus propios eventos.

Crear tus Eventos Personalizados​

Los archivos de configuración de eventos personalizados deben crearse en: plugins/EliteMobs/customevents/

Los archivos deben usar el formato .yml. Utiliza el nombre completo, incluida la extensión .yml, al hacer referencia al evento.

Ejemplo: my_cool_event.yml se referencia como my_cool_event.yml

Guarda los archivos y ejecuta /em reload para cargar los cambios. También debe estar habilitado el interruptor de eventos de acción o programados correspondiente en events.yml.

Ajustes de configuración comunes

Los siguientes ajustes pueden/deben usarse tanto para eventos de acción como para eventos programados.


isEnabled​

Establece si el evento está habilitado.

KeyValoresPredeterminado
isEnabledBooleantrue
Ejemplo
isEnabled: true

eventType​

Establece el tipo de evento.

KeyValoresPredeterminado
eventTypeBREAK_BLOCK / FISH / TILL_SOIL / TIMEDDEFAULT

Ten en cuenta que BREAK_BLOCK, FISH y TILL_SOIL son Eventos de Acción y TIMED son Eventos Programados.

eventType es obligatorio. DEFAULT es el marcador de posición al que recurre EliteMobs cuando el ajuste falta o no coincide con ninguno de los tipos de arriba. Un evento que se quede en DEFAULT registra una advertencia y no se registra en absoluto, así que ni siquiera se leen los ajustes que hay debajo de él.

Ejemplo
eventType: BREAK_BLOCK

bossFilenames​

Lista los archivos de jefes personalizados que aparecerán juntos, incluida la extensión .yml. ¡Obligatorio! No se elige un jefe aleatorio de la lista. Comprueba todas las referencias antes de usar el evento. Los eventos programados omiten archivos inválidos y no entran en cola sin jefes válidos. Un evento de acción con algún archivo inválido se cancela antes de generar nada, y si se rechaza la aparición de un jefe, se retiran los jefes que ya haya generado.

KeyValoresPredeterminado
bossFilenamesString Listninguno
Ejemplo
bossFilenames:
- balrog.yml
- my_event_boss.yml

announcementPriority​

Define quién recibe los mensajes de inicio y fin del evento. Funciona de forma distinta a las prioridades de anuncio de los jefes:

PrioridadDestinatarios
0Jugadores del mundo del evento; no silencia los mensajes
1Todos los jugadores conectados, o solo los del mundo del evento con announcementBroadcastWorldOnly: true
2Jugadores del mundo del evento
3 o superiorJugadores del mundo del evento y DiscordSRV, si está configurado

Omite startMessage o endMessage para suprimir ese mensaje. El anuncio de aparición del propio jefe es independiente.

KeyValoresPredeterminado
announcementPriorityInteger0
Ejemplo
announcementPriority: 1

startMessage​

Define el mensaje que se envía cuando empieza el evento, no cuando entra en cola. Los mensajes de inicio y fin admiten colores, pero el sistema de eventos no sustituye marcadores de jefe o jugador como $boss o $player.

KeyValoresPredeterminado
startMessageStringninguno
Ejemplo
startMessage: An event has started!

create_events_start_message.jpg


endMessage​

Establece el mensaje enviado al final del evento.

KeyValoresPredeterminado
endMessageStringninguno
Ejemplo
endMessage: An event has ended!

create_events_end_message.jpg


eventStartCommands​

Define comandos de consola que se ejecutan al comenzar el evento, sin / inicial ni marcadores de jugador o jefe. Cada comando se ejecuta de forma independiente; $chance=0.5$ le da una probabilidad del 50%. Usa valores entre 0 y 1; sin este marcador, el comando siempre se ejecuta.

KeyValoresPredeterminado
eventStartCommandsString Listninguno
Ejemplo
eventStartCommands:
- say The event now starts!!
- "$chance=0.5$ say What a spawn!"

create_events_start_commands.jpg


eventEndCommands​

Define comandos de consola programados para la siguiente tarea del servidor al terminar el evento. Usan la misma sintaxis y probabilidad por comando que eventStartCommands, sin marcadores de jugador o jefe.

KeyValoresPredeterminado
eventEndCommandsString Listninguno
Ejemplo
eventEndCommands:
- say The event ends, so sad.
- "$chance=0.5$ say Too slow bud!"

create_events_end_commands.jpg


minimumPlayerCount​

Define el mínimo de jugadores conectados, contando todos los mundos y modos de juego. No cuenta solo a participantes aptos cercanos al evento.

Los Eventos de Acción lo comprueban cuando la acción los activa. Los Eventos Programados lo comprueban cuando el selector automático elige eventos, antes de que un evento en cola busque ubicación y otra vez justo antes de que aparezcan sus jefes. Un evento programado en cola espera hasta que haya suficientes jugadores conectados; su spawn personalizado debe seguir encontrando una ubicación adecuada mediante sus propias comprobaciones de jugadores y ubicaciones.

KeyValoresPredeterminado
minimumPlayerCountInteger1
Ejemplo
minimumPlayerCount: 5

Ejemplo de configuración de Evento

Solo contiene ajustes comunes; un evento programado completo también necesita spawnType y un peso de selección positivo.

isEnabled: true
eventType: TIMED
bossFilenames:
- "cool_boss.yml"
- "other_cool_boss.yml"
announcementPriority: 3
startMessage: "Cool event is starting!"
endMessage: "Cool event is ending!"
eventStartCommands:
- say The event started!
eventEndCommands:
- say The event ended!

Ejemplo completo de Evento Programado
isEnabled: true
eventType: TIMED
bossFilenames:
- "my_timed_boss.yml"
announcementPriority: 3
startMessage: "A timed event has started!"
endMessage: "The timed event has ended!"
eventStartCommands:
- say The timed event began!
eventEndCommands:
- say The timed event concluded!
spawnType: "my_spawn_location.yml"
localCooldown: 120
globalCooldown: 30
weight: 100
eventDuration: 15
endEventWithBossDeath: true

Eventos de Acción​

Eventos que tienen una probabilidad de ejecutarse cuando ocurre una acción específica, como romper un bloque o pescar.

Al empezar un evento de acción se aplica una espera por jugador, de 4 minutos por defecto, configurable mediante actionEventMinimumCooldownMinutes en events.yml. Cada acción inicia como máximo un evento de acción: en cuanto empieza un archivo coincidente, el jugador entra en espera y se omiten los archivos restantes. Un evento que no consigue empezar no consume la espera. Usa actionEventsEnabled: false para desactivarlos en todo el servidor.

Los tres tipos de acción se disparan así:

eventTypeDisparador
BREAK_BLOCKUn jugador rompe un bloque. Primero se tira chance, y después se comprueba el bloque roto contra breakableMaterials.
FISHUn evento de pesca tiene una entidad capturada, incluido un mob enganchado. Sin entidad capturada no puede activarse. El jefe aparece en la ubicación de esa entidad.
TILL_SOILUn jugador hace clic derecho sobre DIRT o GRASS_BLOCK con una azada de madera, piedra, hierro, oro, diamante o netherita en la mano principal. No se exige que el bloque se convierta en tierra de cultivo.

Se ignoran los eventos Bukkit cancelados. La ubicación debe estar en un mundo habilitado para EliteMobs, fuera de mundos de mazmorra de EliteMobs y de regiones de instancias de mazmorra, arena o prueba de clase, y permitida por la bandera elitemobs-events de WorldGuard. Estos listeners no limitan por separado el modo de juego del jugador.

Los jefes aparecen en la interacción: el centro X/Z del bloque roto, la entidad capturada o un bloque por encima del suelo pulsado. Los eventos de acción no usan spawnType, pesos ni esperas de selección de eventos programados.

La protección de Peace Banner también impide el evento cuando suppressEvents está habilitado. Los ajustes de duración, hora de fin y finalización por retirada de jefes descritos más abajo también se aplican a los eventos de acción.

chance​

Establece la probabilidad de que el evento ocurra cuando se realiza la acción.

KeyValoresPredeterminado
chanceValor entre 0.0 y 1.00
Ejemplo
chance: 0.001

breakableMaterials​

Establece la lista de materiales a comprobar si la acción está configurada como BREAK_BLOCK.

KeyValoresPredeterminado
breakableMaterialsLista de materialesninguno
Ejemplo
breakableMaterials:
- BEEHIVE
- BIRCH_WOOD

Ejemplo de configuración
chance: 0.001
breakableMaterials:
- COAL_ORE

Establece una probabilidad del 0.1% de ejecutar el evento cuando se rompe un bloque de mineral de carbón, asumiendo que el tipo de evento es BREAK_BLOCK.


Ejemplo completo de Evento de Acción
isEnabled: true
eventType: BREAK_BLOCK
bossFilenames:
- "mining_boss.yml"
announcementPriority: 2
startMessage: "You've awakened something..."
chance: 0.001
breakableMaterials:
- DIAMOND_ORE
- EMERALD_ORE

Eventos Programados​

Los eventos programados usan una selección automática ponderada seguida de una cola de spawn personalizado. La selección no garantiza una aparición inmediata ni un horario fijo. Distintos archivos pueden estar en cola o activos al mismo tiempo.

No se selecciona nada sin jugadores conectados. El selector automático excluye un archivo mientras haya una copia en cola o activa, o mientras haya menos jugadores conectados que su minimumPlayerCount. Usa timedEventsEnabled: false en events.yml para desactivarlos en todo el servidor.

spawnType​

Establece el Spawn Personalizado usado por el evento, que define dónde puede aparecer el jefe.

KeyValoresPredeterminado
spawnTypeFilenameninguno
Ejemplo
spawnType: nether_spawn.yml

localCooldown​

Define la espera en minutos para volver a seleccionar automáticamente este evento, contada desde su selección. Se consume aunque una validación u otro plugin impida después ponerlo en cola. Una copia en cola o activa también impide volver a seleccionarlo, aunque ya haya pasado la espera.

KeyValoresPredeterminado
localCooldownDouble0
Ejemplo
localCooldown: 120

globalCooldown​

Define la espera global de selección automática en minutos. Se asigna al poner correctamente un evento en cola y de nuevo cuando empieza, incluso para eventos activados manualmente. No comienza al finalizar el evento. Cada nueva asignación sustituye el plazo anterior.

KeyValoresPredeterminado
globalCooldownDouble0
Ejemplo
globalCooldown: 60

weight​

Define el peso relativo entre los eventos programados actualmente aptos. Usa un valor finito positivo. Recomendado: 100. El peso cero no desactiva de forma fiable un evento, especialmente si todos los pesos aptos son cero; usa isEnabled: false.

El sistema de peso determina la probabilidad relativa de selección del evento. Por ejemplo:

  • Evento A con peso 100 vs Evento B con peso 50 = el Evento A tiene el doble de probabilidades de ser seleccionado
  • Mayor peso = mayor probabilidad de ser elegido
  • El planificador comprueba por primera vez unos 5 minutos después de inicializarse y después una vez por minuto. El lag del servidor puede retrasar estas comprobaciones.
KeyValoresPredeterminado
weightDouble0
Ejemplo
weight: 60.5

eventDuration​

Define el límite de duración en minutos desde el inicio real del evento. 0 lo desactiva; los valores negativos también. La comprobación se hace cada 20 ticks del servidor, así que el evento puede terminar hasta un segundo tarde, o más con lag en el servidor. También se aplica a eventos de acción.

KeyValoresPredeterminado
eventDurationDouble0
Ejemplo
eventDuration: 30

endEventWithBossDeath​

Termina el evento cuando ya no existe ninguno de sus objetos de jefe principales. Con varios bossFilenames, eliminar o derrotar uno no basta mientras quede otro. Los refuerzos no son jefes principales adicionales. Se comprueba su existencia, sin exigir una muerte atribuida a un jugador. Al terminar por cualquier motivo, los jefes principales restantes se retiran por expiración. También se aplica a eventos de acción.

KeyValoresPredeterminado
endEventWithBossDeathBooleantrue
Ejemplo
endEventWithBossDeath: true

eventEndTime​

Establece la hora del juego (en ticks) en la que termina el evento. Usa el sistema de tiempo de Minecraft donde 0=amanecer, 6000=mediodía, 12000=atardecer, 18000=medianoche, 23000=madrugada. Establece -1 para deshabilitar la finalización basada en el tiempo.

La comprobación es hora del mundo > eventEndTime; no espera al día siguiente ni a un cruce exacto. Si el evento empieza después de esa hora, puede terminar en la primera comprobación. Coordina el horario del spawn con la hora final. La hora del mundo va de 0 a 23999, así que nunca supera umbrales de 23999 o más. También se aplica a eventos de acción.

KeyValoresPredeterminado
eventEndTimeInteger (0–23998 para un umbral alcanzable; -1 desactiva)-1
Ejemplo
eventEndTime: 23000


Entrar en cola inicia la búsqueda y los reintentos del spawn personalizado. Puede esperar en una ubicación guardada hasta que coincidan la hora o fase lunar; no se repiten todas las comprobaciones de ubicación durante esa espera. Consulta las comprobaciones y limitaciones en la guía de spawns enlazada arriba. Solo aparece un evento programado a la vez, y la aparición también espera a que se cumplan minimumPlayerCount y el intervalo timedEventMinimumCooldownMinutes. El mensaje y los comandos de inicio se ejecutan cuando el evento programado confirma que existen sus jefes principales.

Ejemplo de configuración de Eventos
isEnabled: true
eventType: TIMED
bossFilenames:
- "cool_boss.yml"
- "other_cool_boss.yml"
announcementPriority: 3
startMessage: "Cool event is starting!"
endMessage: "Cool event is ending!"
eventStartCommands:
- say The event started!
eventEndCommands:
- say The event ended!
spawnType: "myCoolSpawn.yml"
localCooldown: 30
globalCooldown: 15
weight: 100
eventDuration: 20
endEventWithBossDeath: true
eventEndTime: 10000

Activar un evento manualmente​

/em event <event filename>

Pone en cola un evento programado para empezar en un momento y lugar válidos. Requiere elitemobs.event.start, debe ejecutarlo un jugador y solo acepta plantillas de eventos programados cargadas. Estas se crean a partir de archivos TIMED habilitados cuando timedEventsEnabled está activo.

El comando omite la selección ponderada, las esperas local/global de selección y la comprobación de copias en cola o activas. Repetirlo puede generar copias duplicadas. Siguen aplicándose las condiciones de ubicación y hora del spawn personalizado, el minimumPlayerCount del evento y el intervalo timedEventMinimumCooldownMinutes.

Si el evento no se puede poner en cola, se indica el motivo: falta spawnType, apunta a un archivo de spawn inválido, no hay ningún bossFilenames válido u otro plugin canceló el evento. El mensaje de éxito confirma la entrada en cola, no una aparición visible. Comprueba los jefes reales y los reintentos en la consola.

Ajustes de eventos para todo el servidor​

Se encuentran en plugins/EliteMobs/events.yml. Recarga tras editarlos:

ClaveDescripciónPor defecto
actionEventsEnabledSi los eventos de acción ocurren siquieratrue
timedEventsEnabledSi los eventos programados ocurren siquieratrue
actionEventMinimumCooldownMinutesTiempo de espera por jugador, en minutos, después de que se active un evento de acción4
timedEventMinimumCooldownMinutesEspera en minutos desde el inicio de un evento programado antes de que otro evento programado pueda buscar ubicación o hacer aparecer sus jefes, incluido uno que ya espera en una ubicación guardada4
announcementBroadcastWorldOnlyLimita los mensajes de prioridad 1 al mundo del evento; las demás prioridades ya envían los mensajes del juego solo a ese mundofalse