Créer des Quêtes
Quête Exemple
EliteMobs est livré avec un fichier test_quest.yml préinstallé, qui sera analysé ici comme un format de quête simple à suivre.
Les Quêtes Personnalisées se trouvent dans le dossier ~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 votre interface de quête ne ressemble pas à ceci, vous pouvez la modifier pour qu'elle corresponde à l'aide de /em alt.
Cette quête d'exemple donnera aux joueurs la tâche d'abattre 1 test_boss.yml. (Le nom réel du boss affiché dans le suivi de quête sera le name: défini dans test_boss.yml.) Et en récompense de la complétion de la quête, ils recevront 1 Cure-dent de Magmaguy.
Créer des Quêtes Personnalisées
isEnabled
Définit si la quête est activée.
| Key | Values | Default |
|---|---|---|
isEnabled | Boolean | true |
Exemple
isEnabled: true
customObjectives
Définit les objectifs de la quête.
| Key | Values | Default |
|---|---|---|
customObjectives | Spécial [1] | aucun |
Note : Si vous utilisez un boss multiphase comme objectif, l'objectif doit cibler la première phase.
Exemples
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"

Spécial [1]
Déplier le Tableau
Les Objectifs Personnalisés sont construits à l'aide des valeurs suivantes :
| Key | Description |
|---|---|
KILL_CUSTOM / FETCH_ITEM / DIALOG / ARENA | Utilisé pour définir le type d'objectif que cela représente. KILL_CUSTOM indique que la quête consiste à tuer un Boss Personnalisé spécifique, FETCH_ITEM indique que la quête consiste à obtenir un Objet Personnalisé spécifique, DIALOG indique que la quête consiste à parler à un PNJ, et ARENA indique que la quête consiste à terminer une arène spécifique. |
filename | Utilisé pour définir le nom de fichier du Boss Personnalisé, de l'Objet Personnalisé que le joueur doit tuer / obtenir, du PNJ auquel il doit parler, ou de l'arène qu'il doit terminer. |
amount | Utilisé pour définir le nombre de Boss Personnalisés à tuer ou d'objets à obtenir. Vaut 1 par défaut si non spécifié. |
dialog | Utilisé pour définir le dialogue du PNJ avec lequel le joueur parle. |
name | Utilisé pour définir le nom de l'objectif de la quête, qu'il s'agisse d'un PNJ, d'un objet personnalisé ou d'une arène. À des fins visuelles uniquement. |
itemName | Utilisé uniquement avec FETCH_ITEM – Ce paramètre modifie la façon dont le nom de l'objet apparaît dans le suivi de quête. Il vous permet d'afficher un nom personnalisé différent du nom réel de l'objet en jeu. |
Veuillez noter que chaque champ d'Objectif Personnalisé est séparé par un : !
customRewards
Définit les récompenses de la quête.
| Key | Values | Default |
|---|---|---|
customRewards | Format de butin universel d'EliteMobs | aucun |
Exemple
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

Note : Si vous ne spécifiez pas customRewards, le système de quête générera automatiquement des récompenses en fonction du niveau de la quête. La qualité des récompenses évolue avec la difficulté de la quête et inclut à la fois de la monnaie et des objets. Pour un contrôle précis des récompenses, spécifiez toujours customRewards explicitement.
questAcceptPermission
Définit la permission que le joueur doit posséder pour accepter la quête.
| Key | Values | Default |
|---|---|---|
questAcceptPermission | String | aucun |
Exemple
questAcceptPermission: elitequest.my_permission
questAcceptPermissions
Définit les permissions que le joueur doit posséder pour accepter la quête.
| Key | Values | Default |
|---|---|---|
questAcceptPermissions | String List | aucun |
Exemple
questAcceptPermissions:
- elitequest.my_previous_quest_one.yml
- elitequest.my_previous_quest_two.yml
questLockoutPermission
Définit la permission que le joueur obtiendra à la fin de la quête, ce qui l'empêchera de la refaire. Si elle n'est pas spécifiée, la permission de verrouillage de quête est générée automatiquement sous la forme elitequest.[filename].
| Key | Values | Default |
|---|---|---|
questLockoutPermission | String | elitequest.[filename] |
Exemple
questLockoutPermission: elitequest.my_quest.yml
questLockoutMinutes
Définit la durée, en minutes, pendant laquelle le joueur devra attendre avant de pouvoir refaire la quête (fonctionne en retirant la permission de verrouillage de quête).
| Key | Values | Default |
|---|---|---|
questLockoutMinutes | Integer | -1(ne se répétera jamais) |
Exemple
questLockoutMinutes: 60
name
Définit le nom de la quête. Accepte les Color Codes.
| Key | Values | Default |
|---|---|---|
name | String | [filename] |
Exemple
name: "&aMy Great Quest Name"
questLore
Définit le lore de la quête qui apparaîtra dans le menu de quête en jeu.
| Key | Values | Default |
|---|---|---|
questLore | String List | aucun |
Exemple
questLore:
- "Interesting lore sentence."
- "Yet another interesting lore sentence."

temporaryPermissions
Définit les permissions attribuées au joueur jusqu'à ce qu'il rende la quête.
Si vous utilisez ce paramètre pour vous assurer qu'un objet ne tombe que lorsque les joueurs ont une quête spécifique active, vous devrez également configurer la Même Permission dans le fichier de configuration de l'objet.
| Key | Values | Default |
|---|---|---|
temporaryPermissions | String List | aucun |
Exemple
temporaryPermissions:
- elitequest.item_that_should_drop_only_during_quest.yml
questAcceptDialog
Définit le dialogue qui apparaît dans le chat lors de l'acceptation de la quête.
| Key | Values | Default |
|---|---|---|
questAcceptDialog | String List | aucun |
Exemple
questAcceptDialog:
- "My hero! You are so helpful!"
- "I wish you the best of luck!"

questCompleteMessage
Définit le dialogue qui apparaît dans le chat lors de la complétion de la quête.
| Key | Values | Default |
|---|---|---|
questCompleteMessage | String List | aucun |
Exemple
questCompleteMessage:
- "My hero! You have completed my difficult quest!"
- "As a reward you can have this loaf of bread!"

questCompleteCommands
Définit les commandes qui s'exécuteront lors de la complétion de la quête. Prend en charge les placeholders : $player pour le nom du joueur, et $getX, $getY, $getZ pour les coordonnées de l'emplacement du joueur.
| Key | Values | Default |
|---|---|---|
questCompleteCommands | String List | aucun |
Exemple
questCompleteCommands:
- say $player has finished a quest at $getX, $getY, $getZ!
- give $player diamond 1
![]()
turnInNPC
Définit le nom de fichier du PNJ auquel les joueurs doivent parler / avec lequel ils doivent interagir pour terminer la quête. Ce n'a pas besoin d'être le même PNJ que celui qui a donné la quête.
| Key | Values | Default |
|---|---|---|
turnInNPC | Filename | aucun |
Exemple
turnInNPC: my_cool_quest_npc.yml
Donneurs de Quêtes
Pour attribuer une quête à un PNJ qui la donnera aux joueurs, vous devez configurer le fichier du PNJ, et non le fichier de la quête.
Dans votre fichier de configuration de PNJ (~/plugins/EliteMobs/npcs/), ajoutez :
questFileName: my_quest.yml
Pour les PNJ qui donnent plusieurs quêtes :
questFileName:
- quest_one.yml
- quest_two.yml
Consultez la documentation sur la création de PNJ pour plus d'informations sur la configuration des PNJ.
trackable
Définit si la quête utilisera le suivi de quête.
| Key | Values | Default |
|---|---|---|
trackable | Boolean | true |
Exemple
trackable: true
questLevel
Définit le niveau de la quête. Il s'agit uniquement d'un guide visuel permettant aux joueurs de savoir à quel point la quête sera difficile. Cela ne modifie en aucune façon les niveaux des boss, des objets ou autres.
| Key | Values | Default |
|---|---|---|
questLevel | Integer | 0 |
Exemple
questLevel: 10

questAcceptSound
Définit le son joué lorsqu'une quête est acceptée. Il est possible de jouer à la fois des sons de Minecraft et des sons provenant d'un resource pack.
| Key | Values | Default |
|---|---|---|
questAcceptSound | String | aucun |
Exemple
questAcceptSound: entity.experience_orb.pickup

questCompleteSound
Définit le son joué lorsqu'une quête est terminée (rendue). Il est possible de jouer à la fois des sons de Minecraft et des sons provenant d'un resource pack.
| Key | Values | Default |
|---|---|---|
questCompleteSound | String | aucun |
Exemple
questCompleteSound: entity.player.levelup

Support de Localisation
Les champs suivants prennent en charge la localisation pour les serveurs multilingues :
namequestLorequestAcceptDialogquestCompleteMessage
Cela vous permet de fournir des traductions pour différentes langues sur votre serveur.
Permissions
Comme mentionné dans les tableaux ci-dessus, les permissions sont généralement des Strings ou des String Lists. Mais entrons plus en détail sur la façon dont vous les utiliserez pour verrouiller et déverrouiller les quêtes.
Disons que vous créez quest_3 dans une série de quêtes que vous avez planifiée et que vous ne voulez pas que les joueurs puissent prendre quest_3 avant d'avoir terminé quest_2. Nous configurerions le fichier de quête comme ceci :
questAcceptPermission: elitequest.quest_2.yml
questLockoutPermission: elitequest.quest_3.yml
En définissant questAcceptPermissions sur elitequest.quest_2.yml, nous avons maintenant empêché les joueurs de prendre quest_3.yml avant d'avoir terminé quest_2.yml.
En définissant questLockoutPermission sur elitequest.quest_3.yml, nous avons empêché les joueurs de pouvoir recevoir cette quête tant qu'ils l'ont déjà dans leur suivi ou s'ils l'ont déjà terminée. Cela empêche les joueurs de pouvoir répéter la quête.
Si vous souhaitez créer une quête qui ne devient disponible qu'après que les joueurs ont terminé une série de quêtes, vous configureriez alors le fichier de quête comme ceci :
questAcceptPermissions:
- elitequest.quest_2.yml
- elitequest.quest_3.yml
- elitequest.quest_4.yml
Si vous voulez que les joueurs ne puissent récupérer certains objets que lorsqu'ils ont la bonne quête active, alors nous pouvons le faire en utilisant temporaryPermissions. Nous créerions une permission dans le fichier de quête à l'aide de temporaryPermissions puis créerions une permission correspondante dans le fichier d'objet à l'aide de permission.
Par exemple, nous ouvririons notre fichier de quête et ajouterions ce qui suit :
temporaryPermissions:
- elitequest.my_cool_item.yml
Ensuite, nous ouvririons le fichier d'objet, dans notre cas my_cool_item.yml, puis nous ajouterions ce qui suit :
permission: elitequest.my_cool_item.yml
Les deux fichiers ont maintenant des permissions correspondantes, ce qui devrait désormais faire en sorte que notre objet ne tombe que lorsque les joueurs ont la bonne quête active.
Quêtes Dynamiques
Les Quêtes Dynamiques sont des quêtes générées de manière procédurale qui sont automatiquement créées et actualisées par EliteMobs. Contrairement aux quêtes personnalisées définies dans les fichiers de configuration, les quêtes dynamiques ne nécessitent aucune configuration manuelle et s'adaptent à la progression de chaque joueur.
Comment ça Fonctionne
- Palier de Quête : Le palier de quête dynamique d'un joueur est dérivé de son niveau de combat :
tier = combatLevel / 5, limité à une plage de 1 à 20. Par exemple, un joueur ayant un niveau de combat de 45 recevra des quêtes dynamiques de palier 9. Les quêtes elles-mêmes (et leurs récompenses) sont ajustées au niveau de combat réel du joueur, qui est limité à une plage de 1 à 100. - 3 Quêtes Par Palier : Pour chacun des 20 paliers de quête, le système génère exactement 3 objectifs de quête aléatoires à la fois. Les joueurs se voient proposer les 3 quêtes correspondant à leur palier actuel.
- Cycle d'Actualisation Automatique : Le pool d'objectifs de quête dynamique est régénéré toutes les 60 secondes (toutes les 1200 ticks). Lorsque le pool s'actualise, de nouveaux objectifs remplacent les anciens, offrant aux joueurs une sélection tournante de tâches.
- Adaptation aux Donjons Dynamiques : Lorsqu'un joueur entre dans un donjon dynamique avec une sélection de niveau spécifique, toutes ses quêtes dynamiques actives s'adaptent pour correspondre au niveau des mobs du donjon. Le niveau de la quête, les objectifs et le nom d'affichage sont mis à jour en conséquence afin que les quêtes restent pertinentes par rapport au contenu du donjon.
