Créer des Événements
Ce guide concerne EliteMobs 10 et les versions ultérieures
Que sont les Événements personnalisés ?
Les Événements personnalisés désignent ici des événements qui se produisent aléatoirement en jeu, qu'ils soient basés sur les actions des joueurs ou déclenchés par un minuteur. Le plugin est livré préchargé avec un certain nombre d'Événements personnalisés, tels que l'événement Balrog, l'événement Kraken et les événements Gobelin du trésor, pour n'en citer que quelques-uns.
Ce système s'appelle Événements personnalisés car les événements peuvent non seulement être personnalisés mais aussi créés de toutes pièces. Ce qui suit est un guide expliquant comment créer et personnaliser vos propres événements.
Créer vos Événements personnalisés
Les fichiers de configuration d'événement personnalisé doivent être créés dans :
plugins/EliteMobs/customevents/
Les fichiers doivent utiliser le format .yml. Référencez le nom complet, extension .yml comprise.
Exemple : my_cool_event.yml est référencé par my_cool_event.yml
Enregistrez les fichiers puis lancez /em reload pour charger les modifications. L'option correspondante des événements d'action ou à minuterie doit aussi être activée dans events.yml.
Paramètres de configuration communs
Les paramètres suivants peuvent/doivent être utilisés à la fois pour les événements d'action et les événements à minuterie.
isEnabled
Définit si l'événement est activé.
| Clé | Valeurs | Défaut |
|---|---|---|
isEnabled | Boolean | true |
Exemple
isEnabled: true
eventType
Définit le type d'événement.
| Clé | Valeurs | Défaut |
|---|---|---|
eventType | BREAK_BLOCK / FISH / TILL_SOIL / TIMED | DEFAULT |
Notez que BREAK_BLOCK, FISH et TILL_SOIL sont des Événements d'action et que TIMED correspond aux Événements à minuterie.
eventType est obligatoire. DEFAULT est l'espace réservé sur lequel EliteMobs retombe lorsque le paramètre est absent ou ne correspond à aucun des types ci-dessus. Un événement laissé sur DEFAULT journalise un avertissement et n'est pas enregistré du tout ; aucun des paramètres qui le suivent n'est donc même lu.
Exemple
eventType: BREAK_BLOCK
bossFilenames
Liste les fichiers de boss personnalisés à faire apparaître ensemble, extension .yml comprise. Obligatoire ! Il ne s'agit pas d'un tirage aléatoire dans la liste. Vérifiez chaque boss référencé avant d'utiliser l'événement. Les événements à minuterie ignorent les fichiers invalides et ne peuvent pas être mis en attente sans boss valide. Un événement d'action contenant un fichier invalide est annulé avant toute apparition, et si l'apparition d'un boss est refusée, les boss déjà apparus sont retirés.
| Clé | Valeurs | Défaut |
|---|---|---|
bossFilenames | String List | aucun |
Exemple
bossFilenames:
- balrog.yml
- my_event_boss.yml
announcementPriority
Définit les destinataires des messages de début et de fin. Ces priorités fonctionnent différemment des priorités d'annonce des boss :
| Priorité | Destinataires |
|---|---|
0 | Joueurs du monde de l'événement ; cela ne rend pas les messages silencieux |
1 | Tous les joueurs connectés, ou seulement ceux du monde de l'événement avec announcementBroadcastWorldOnly: true |
2 | Joueurs du monde de l'événement |
3 ou plus | Joueurs du monde de l'événement et DiscordSRV, si configuré |
Omettez startMessage ou endMessage pour supprimer le message concerné. L'annonce d'apparition du boss lui-même est distincte.
| Clé | Valeurs | Défaut |
|---|---|---|
announcementPriority | Integer | 0 |
Exemple
announcementPriority: 1
startMessage
Définit le message envoyé au démarrage effectif, et non à la mise en attente d'un événement à minuterie. Les messages de début et de fin acceptent les couleurs, mais le système ne remplace pas les marqueurs de boss ou de joueur tels que $boss et $player.
| Clé | Valeurs | Défaut |
|---|---|---|
startMessage | String | aucun |
Exemple
startMessage: An event has started!
![]()
endMessage
Définit le message envoyé à la fin de l'événement.
| Clé | Valeurs | Défaut |
|---|---|---|
endMessage | String | aucun |
Exemple
endMessage: An event has ended!
eventStartCommands
Définit les commandes console exécutées au démarrage, sans / initial ni marqueurs de joueur ou de boss. Chaque commande est indépendante ; $chance=0.5$ lui donne 50 % de chances de s'exécuter. Utilisez une probabilité entre 0 et 1 ; sans marqueur, la commande s'exécute toujours.
| Clé | Valeurs | Défaut |
|---|---|---|
eventStartCommands | String List | aucun |
Exemple
eventStartCommands:
- say The event now starts!!
- "$chance=0.5$ say What a spawn!"

eventEndCommands
Définit les commandes console planifiées pour la prochaine tâche du serveur lorsque l'événement se termine. Elles utilisent la syntaxe et les probabilités par commande de eventStartCommands, sans marqueurs de joueur ou de boss.
| Clé | Valeurs | Défaut |
|---|---|---|
eventEndCommands | String List | aucun |
Exemple
eventEndCommands:
- say The event ends, so sad.
- "$chance=0.5$ say Too slow bud!"

minimumPlayerCount
Définit le minimum de joueurs connectés, tous mondes et modes de jeu confondus. Ce n'est pas un compte des participants admissibles à proximité.
Les Événements d'action le vérifient lorsque l'action les déclenche. Les Événements à minuterie le vérifient lorsque le sélecteur automatique choisit les événements, avant qu'un événement en attente cherche un emplacement, puis à nouveau juste avant l'apparition de ses boss. Un événement à minuterie en attente patiente jusqu'à ce qu'il y ait assez de joueurs connectés ; son apparition personnalisée doit encore trouver un emplacement convenable selon ses propres contrôles des joueurs et des lieux.
| Clé | Valeurs | Défaut |
|---|---|---|
minimumPlayerCount | Integer | 1 |
Exemple
minimumPlayerCount: 5
Exemple de configuration d'événement
Paramètres communs uniquement ; un événement à minuterie complet nécessite aussi spawnType et un poids de sélection positif.
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!
Exemple complet d'événement à minuterie
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
Événements d'action
Des événements qui ont une chance de se déclencher lorsqu'une action spécifique, comme casser un bloc ou pêcher, se produit.
Un événement d'action applique un délai par joueur au démarrage, de 4 minutes par défaut, réglable via actionEventMinimumCooldownMinutes dans events.yml. Un seul événement d'action démarre par action : dès qu'un fichier correspondant démarre, le joueur est soumis au délai et les fichiers restants sont ignorés. Un événement qui ne parvient pas à démarrer ne consomme pas le délai. Désactivez ces événements avec actionEventsEnabled: false.
Les trois types d'action se déclenchent comme suit :
eventType | Déclencheur |
|---|---|
BREAK_BLOCK | Un joueur casse un bloc. chance est tirée en premier, puis le bloc cassé est comparé à breakableMaterials. |
FISH | Un événement de pêche possède une entité attrapée, y compris un mob accroché. Sans entité attrapée, aucun déclenchement. L'apparition se fait à l'emplacement de cette entité. |
TILL_SOIL | Un joueur fait un clic droit sur DIRT ou GRASS_BLOCK avec une houe en bois, pierre, fer, or, diamant ou netherite dans la main principale. La transformation effective du bloc en terre labourée n'est pas vérifiée. |
Les événements Bukkit annulés sont ignorés. L'emplacement doit être dans un monde activé pour EliteMobs, hors des mondes de donjon EliteMobs et des régions d'instances de donjon, d'arène ou d'épreuve de classe, et autorisé par le flag WorldGuard elitemobs-events. Ces listeners ne limitent pas séparément le mode de jeu du joueur.
Les boss apparaissent au point d'interaction : au centre X/Z du bloc cassé, sur l'entité attrapée ou un bloc au-dessus du sol cliqué. Ces événements n'utilisent ni spawnType, ni les poids et délais de sélection des événements à minuterie.
Peace Banner empêche aussi l'événement lorsque suppressEvents est activé. Les contrôles de durée, d'heure de fin et de disparition des boss décrits plus bas s'appliquent également aux événements d'action.
chance
Définit la chance que l'événement se produise lorsque l'action se produit.
| Clé | Valeurs | Défaut |
|---|---|---|
chance | Valeur entre 0.0 et 1.0 | 0 |
Exemple
chance: 0.001
breakableMaterials
Définit la liste des matériaux à vérifier si l'action est définie sur BREAK_BLOCK.
| Clé | Valeurs | Défaut |
|---|---|---|
breakableMaterials | Liste de matériaux | aucun |
Exemple
breakableMaterials:
- BEEHIVE
- BIRCH_WOOD
Exemple de configuration
chance: 0.001
breakableMaterials:
- COAL_ORE
Définit une chance de 0,1 % de déclencher l'événement lorsqu'un bloc de minerai de charbon est cassé, en supposant que le type d'événement est BREAK_BLOCK.
Exemple complet d'événement d'action
isEnabled: true
eventType: BREAK_BLOCK
bossFilenames:
- "mining_boss.yml"
announcementPriority: 2
startMessage: "You've awakened something..."
chance: 0.001
breakableMaterials:
- DIAMOND_ORE
- EMERALD_ORE
Événements à minuterie
Les événements à minuterie passent par une sélection automatique pondérée, puis une file d'attente d'apparitions personnalisées. Être sélectionné ne garantit ni une apparition immédiate ni un horaire fixe. Des fichiers différents peuvent être en attente ou actifs simultanément.
Rien n'est sélectionné sans joueur connecté. Le sélecteur automatique exclut un fichier tant qu'une copie est en attente ou active, ou tant que moins de joueurs que son minimumPlayerCount sont connectés. Désactivez ces événements avec timedEventsEnabled: false dans events.yml.
spawnType
Définit l'Apparition personnalisée utilisée par l'événement, qui détermine où le boss peut apparaître.
| Clé | Valeurs | Défaut |
|---|---|---|
spawnType | Filename | aucun |
Exemple
spawnType: nether_spawn.yml
localCooldown
Définit le délai en minutes avant une nouvelle sélection automatique, à compter de la sélection. Ce délai est consommé même si la validation ou un autre plugin empêche ensuite la mise en attente. Une copie en attente ou active bloque aussi la sélection, même après l'expiration du délai.
| Clé | Valeurs | Défaut |
|---|---|---|
localCooldown | Double | 0 |
Exemple
localCooldown: 120
globalCooldown
Définit le délai global de sélection automatique en minutes. Il est assigné à la mise en attente réussie, puis de nouveau au démarrage effectif, y compris pour les événements ajoutés manuellement. Il ne commence pas à la fin de l'événement. Chaque nouvelle assignation remplace l'échéance précédente.
| Clé | Valeurs | Défaut |
|---|---|---|
globalCooldown | Double | 0 |
Exemple
globalCooldown: 60
weight
Définit le poids relatif parmi les événements à minuterie actuellement admissibles. Utilisez une valeur finie positive. Recommandé : 100. Un poids nul ne désactive pas fiablement un événement, surtout si tous les poids admissibles sont nuls ; utilisez isEnabled: false.
Le système de poids détermine la probabilité relative de sélection d'un événement. Par exemple :
- L'événement A avec un poids de 100 contre l'événement B avec un poids de 50 = l'événement A a deux fois plus de chances d'être sélectionné
- Plus le poids est élevé, plus la chance d'être choisi est grande
- Le planificateur effectue son premier contrôle environ 5 minutes après son initialisation, puis une fois par minute. Le lag du serveur peut retarder ces contrôles.
| Clé | Valeurs | Défaut |
|---|---|---|
weight | Double | 0 |
Exemple
weight: 60.5
eventDuration
Définit la limite de durée en minutes à compter du démarrage effectif. 0 désactive cette limite, tout comme les valeurs négatives. Le contrôle a lieu tous les 20 ticks serveur : l'événement peut donc se terminer jusqu'à une seconde en retard, voire davantage en cas de lag du serveur. S'applique aussi aux événements d'action.
| Clé | Valeurs | Défaut |
|---|---|---|
eventDuration | Double | 0 |
Exemple
eventDuration: 30
endEventWithBossDeath
Termine l'événement quand aucun de ses objets de boss principaux n'existe encore. Avec plusieurs bossFilenames, éliminer un seul boss ne suffit pas tant qu'un autre reste. Les renforts ne sont pas des boss principaux supplémentaires. Le contrôle porte sur l'existence, sans exiger une mort attribuée à un joueur. Toute fin d'événement retire les boss principaux restants comme des boss arrivés à expiration. S'applique aussi aux événements d'action.
| Clé | Valeurs | Défaut |
|---|---|---|
endEventWithBossDeath | Boolean | true |
Exemple
endEventWithBossDeath: true
eventEndTime
Définit l'heure en jeu (en ticks) à laquelle l'événement se termine. Utilisez le système temporel de Minecraft où 0=aube, 6000=midi, 12000=crépuscule, 18000=minuit, 23000=fin de nuit. Définissez sur -1 pour désactiver la fin basée sur le temps.
Le contrôle est heure du monde > eventEndTime ; il n'attend ni le jour suivant ni un franchissement exact. Un événement démarrant après cette heure peut finir dès le premier contrôle. Accordez la plage horaire d'apparition avec l'heure de fin. L'heure du monde va de 0 à 23999, donc les seuils de 23999 ou plus ne sont jamais dépassés. S'applique aussi aux événements d'action.
| Clé | Valeurs | Défaut |
|---|---|---|
eventEndTime | Integer (0–23998 pour un seuil atteignable ; -1 désactive) | -1 |
Exemple
eventEndTime: 23000
La mise en attente lance la recherche et les nouvelles tentatives de l'apparition personnalisée. Celle-ci peut attendre à un emplacement mémorisé que l'heure ou la phase lunaire convienne ; tous les contrôles d'emplacement ne sont pas répétés pendant l'attente. Consultez leurs limites dans le guide des apparitions lié plus haut. Un seul événement à minuterie apparaît à la fois, et l'apparition attend aussi minimumPlayerCount et l'intervalle timedEventMinimumCooldownMinutes. Le message et les commandes de début s'exécutent une fois que l'événement à minuterie confirme l'existence de ses boss principaux.
Exemple de configuration d'événements
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
Déclencher un événement manuellement
/em event <event filename>
Met un événement à minuterie en attente d'un moment et d'un lieu valides. Nécessite elitemobs.event.start, doit être exécuté par un joueur et n'accepte que les modèles d'événement chargés. Ceux-ci proviennent des fichiers TIMED activés lorsque timedEventsEnabled est actif.
La commande contourne la sélection pondérée, les délais local/global de sélection et le contrôle d'une copie déjà en attente ou active. La répéter peut créer des doublons. Les conditions de lieu et d'heure de l'apparition personnalisée, le minimumPlayerCount de l'événement et l'intervalle timedEventMinimumCooldownMinutes restent applicables.
Si la mise en attente échoue, le motif est indiqué : spawnType absent ou invalide, aucun bossFilenames valide, ou annulation par un autre plugin. Le message de réussite confirme l'ajout à la file, pas une apparition visible. Vérifiez les boss réels et les nouvelles tentatives dans la console.
Paramètres d'événement à l'échelle du serveur
Ils se trouvent dans plugins/EliteMobs/events.yml. Rechargez après modification :
| Clé | Description | Défaut |
|---|---|---|
actionEventsEnabled | Indique si les événements d'action se produisent | true |
timedEventsEnabled | Indique si les événements à minuterie se produisent | true |
actionEventMinimumCooldownMinutes | Temps de recharge par joueur, en minutes, après le déclenchement d'un événement d'action | 4 |
timedEventMinimumCooldownMinutes | Délai en minutes après le démarrage d'un événement à minuterie avant qu'un autre événement à minuterie puisse chercher un emplacement ou faire apparaître ses boss, y compris s'il attend déjà à un emplacement mémorisé | 4 |
announcementBroadcastWorldOnly | Limite les messages de priorité 1 au monde de l'événement ; les autres priorités y limitent déjà leurs messages en jeu | false |
