Création de Quêtes
Exemple de Quête
EliteMobs est livré avec un fichier test_quest.yml, 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 à cela, vous pouvez la modifier pour qu'elle corresponde en utilisant /em alt.
Cet exemple de quête donnera aux joueurs la tâche de tuer 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 comme récompense pour avoir complété la quête, ils recevront 1 Magmaguy's Toothpick.
Création de Quêtes Personnalisées
customObjectives
Définit les objectifs de la quête.
| Clé | Valeurs | Défaut |
|---|---|---|
customObjectives | Special [1] | aucun |
Note : Si vous utilisez un boss multiphase comme objectif, l'objectif doit utiliser la première phase comme cible.
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"

Special [1]
Développer le Tableau
Les Objectifs Personnalisés sont construits en utilisant les valeurs suivantes :
| Clé | 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 implique de tuer un Boss Personnalisé spécifique, FETCH_ITEM indique que la quête implique d'obtenir un Objet Personnalisé spécifique, DIALOG indique que la quête implique de parler à un NPC, et ARENA indique que la quête implique de compléter 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 NPC auquel il doit parler, ou de l'arène qu'il doit compléter. |
amount | Utilisé pour définir le nombre de Boss Personnalisés qui doivent être tués ou d'objets qui doivent être obtenus. Par défaut 1 si non spécifié. |
dialog | Utilisé pour définir le dialogue du NPC auquel le joueur parle. |
name | Utilisé pour définir le nom de l'objectif de la quête, qu'il s'agisse d'un NPC, 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 dans le jeu. |
Veuillez noter que chaque champ d'Objectif Personnalisé est séparé par un : !
customRewards
Définit les récompenses de la quête.
| Clé | Valeurs | Défaut |
|---|---|---|
customRewards | Format de butin universel 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êtes générera automatiquement des récompenses basées sur le niveau de la quête. La qualité de la récompense é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 avoir pour accepter la quête.
| Clé | Valeurs | Défaut |
|---|---|---|
questAcceptPermission | String | aucun |
Exemple
questAcceptPermission: elitequest.my_permission
Note : Si vous ne spécifiez pas customRewards, le système de quêtes générera automatiquement des récompenses basées sur le niveau de la quête. La qualité de la récompense é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.
questAcceptPermissions
Définit les permissions que le joueur doit avoir pour accepter la quête.
| Clé | Valeurs | Défaut |
|---|---|---|
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 recevra après avoir terminé la quête, ce qui l'empêchera de refaire la quête. Si non spécifiée, la permission de verrouillage de quête est automatiquement générée comme elitequest.[filename].
| Clé | Valeurs | Défaut |
|---|---|---|
questLockoutPermission | String | elitequest.[filename] |
Exemple
questLockoutPermission: elitequest.my_quest.yml
questLockoutMinutes
Définit combien de temps, en minutes, le joueur devra attendre avant de pouvoir refaire la quête (fonctionne en supprimant la permission de verrouillage de quête).
| Clé | Valeurs | Défaut |
|---|---|---|
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.
| Clé | Valeurs | Défaut |
|---|---|---|
name | String | aucun |
Exemple
name: "&aMy Great Quest Name"
questLore
Définit la description de la quête qui apparaîtra dans le menu de quête en jeu.
| Clé | Valeurs | Défaut |
|---|---|---|
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.
| Clé | Valeurs | Défaut |
|---|---|---|
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.
| Clé | Valeurs | Défaut |
|---|---|---|
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.
| Clé | Valeurs | Défaut |
|---|---|---|
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 espaces réservés : $player pour le nom du joueur, et $getX, $getY, $getZ pour les coordonnées de localisation du joueur.
| Clé | Valeurs | Défaut |
|---|---|---|
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 NPC auquel les joueurs doivent parler/interagir pour terminer la quête. Cela ne doit pas nécessairement être le même NPC qui a donné la quête.
| Clé | Valeurs | Défaut |
|---|---|---|
turnInNPC | Filename | aucun |
Exemple
turnInNPC: my_cool_quest_npc.yml
Quest Givers
Pour assigner une quête à un NPC qui la donnera aux joueurs, vous devez configurer le fichier NPC, pas le fichier de quête.
Dans votre fichier de configuration NPC (~/plugins/EliteMobs/npcs/), ajoutez :
questFileName: my_quest.yml
Pour les NPC qui donnent plusieurs quêtes :
questFileName:
- quest_one.yml
- quest_two.yml
Consultez la documentation de création de NPC pour plus d'informations sur la configuration des NPC.
trackable
Définit si la quête utilisera le suivi de quête.
| Clé | Valeurs | Défaut |
|---|---|---|
trackable | Boolean | true |
Exemple
trackable: true
questLevel
Définit le niveau de la quête. Il s'agit uniquement d'un guide visuel pour que les joueurs puissent déterminer à quel point la quête sera difficile. Cela ne modifie en aucun cas les niveaux de boss, d'objets ou autres.
| Clé | Valeurs | Défaut |
|---|---|---|
questLevel | Integer | 0 |
Exemple
questLevel: 10

questAcceptSound
Définit le son qui se joue lorsqu'une quête est acceptée. Il est possible de jouer à la fois des sons Minecraft et des sons d'un resource pack.
| Clé | Valeurs | Défaut |
|---|---|---|
questAcceptSound | String | aucun |
Exemple
questAcceptSound: entity.experience_orb.pickup

questCompleteSound
Définit le son qui se joue lorsqu'une quête est terminée (rendue). Il est possible de jouer à la fois des sons Minecraft et des sons d'un resource pack.
| Clé | Valeurs | Défaut |
|---|---|---|
questCompleteSound | String | aucun |
Exemple
questCompleteSound: entity.player.levelup

Localization Support
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 voyons plus en détail comment vous les utiliserez pour verrouiller et déverrouiller les quêtes.
Supposons que vous créez quest_3 dans une série de quêtes que vous avez prévues 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 de terminer 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 ont déjà cette quête dans leur suivi ou s'ils ont déjà terminé cette quête. 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 aient terminé une série de quêtes, vous configureriez 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 piller certains objets que lorsqu'ils ont la bonne quête active, nous pouvons le faire en utilisant temporaryPermissions. Nous créerions une permission dans le fichier de quête en utilisant temporaryPermissions puis créerions une permission correspondante dans le fichier d'objet en utilisant 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 et ajouterions ce qui suit :
permission: elitequest.my_cool_item.yml
Les deux fichiers ont maintenant des permissions correspondantes, ce qui devrait maintenant faire en sorte que notre objet ne tombe que lorsque les joueurs ont la bonne quête active.
