Créer des PNJ
Paramètres de configuration
isEnabled
Définit si un PNJ est activé.
| Clé | Valeurs | Défaut |
|---|---|---|
isEnabled | Boolean | true |
Exemple
isEnabled: true
name
Définit le nom d'affichage d'un PNJ. Prend en charge les Codes de couleur et les clés de traduction pour les serveurs multilingues.
| Clé | Valeurs | Défaut |
|---|---|---|
name | String | aucun |
Exemple
name: "&aEnn Peecee"

scale
Définit l'échelle (la taille) du PNJ.
| Clé | Valeurs | Défaut |
|---|---|---|
scale | Multiplier | 1.0 |
Lors de la mise à l'échelle, 1.0 représente la taille par défaut. Pour agrandir l'entité, augmentez la valeur (par exemple, 1.2). Pour rapetisser l'entité, diminuez la valeur (par exemple, 0.8).
Exemple
scale: 1.2
role
Définit le rôle du PNJ, sous le nom. Purement visuel. Prend en charge les Codes de couleur et les clés de traduction pour les serveurs multilingues.
| Clé | Valeurs | Défaut |
|---|---|---|
role | String | aucun |
Exemple
role: "&c<Red Fellow>"

profession
Définit la profession du PNJ, qui détermine son apparence (skin) lorsqu'il n'utilise pas de déguisement.
| Clé | Valeurs | Défaut |
|---|---|---|
profession | Profession | NITWIT |
Exemple
profession: NITWIT

greetings
Définit la liste des salutations que le PNJ prononce lorsqu'un joueur approche. Prend en charge les clés de traduction pour les serveurs multilingues.
| Clé | Valeurs | Défaut |
|---|---|---|
greetings | String List | aucun |
Exemple
greetings:
- Hi there!
- Good day.

dialog
Définit le dialogue que le PNJ prononce lorsqu'un joueur se trouve à proximité (dans le cas de l'interactionType DIALOG, ce serait le dialogue). Prend en charge les clés de traduction pour les serveurs multilingues.
| Clé | Valeurs | Défaut |
|---|---|---|
dialog | String List | aucun |
Exemple
dialog:
- I like apples!
- Sure is hot.

farewell
Définit le message d'adieu du PNJ. Prend en charge les clés de traduction pour les serveurs multilingues.
| Clé | Valeurs | Défaut |
|---|---|---|
farewell | String List | aucun |
Exemple
farewell:
- Until next time!
- Bye!

canTalk
Définit si le PNJ peut parler.
| Clé | Valeurs | Défaut |
|---|---|---|
canTalk | Boolean | true |
Exemple
canTalk: true
activationRadius
Définit le rayon auquel un PNJ peut détecter l'approche d'un joueur.
| Clé | Valeurs | Défaut |
|---|---|---|
activationRadius | Double | 3.0 |
Exemple
activationRadius: 3.0
scripts
Définit les scripts Lua attachés à ce PNJ. Les fichiers de script sont chargés depuis plugins/EliteMobs/npc_scripts/ et les noms de fichiers doivent correspondre exactement, y compris l'extension .lua.
| Clé | Valeurs | Défaut |
|---|---|---|
scripts | String List | aucun |
Les scripts de PNJ peuvent réagir aux hooks de cycle de vie, d'interaction et de proximité tels que on_npc_proximity_enter. Consultez Scripts Lua de PNJ pour l'API complète et des exemples.
Exemple
scripts:
- wave.lua
interactionType
Définit le type d'interaction que le PNJ effectuera.
| Clé | Valeurs | Défaut |
|---|---|---|
interactionType | Spécial [1] | aucun |
Exemple
interactionType: TELEPORT_BACK
noPreviousLocationMessage
Lorsqu'un PNJ Téléporteur n'a aucun emplacement précédent vers lequel téléporter un joueur, il affichera ce message. Accepte les Codes de couleur et les clés de traduction pour les serveurs multilingues.
| Clé | Valeurs | Défaut |
|---|---|---|
noPreviousLocationMessage | String | aucun |
Exemple
noPreviousLocationMessage: '&8[EliteMobs] &cCouldn''t send you back to your previous location - no previous location found!'

timeout
Définit la durée, en minutes, avant qu'un PNJ ne disparaisse définitivement.
| Clé | Valeurs | Défaut |
|---|---|---|
timeout | Double | 0 (jamais) |
Exemple
timeout: 0
questFileName
Définit les quêtes que le PNJ donne.
| Clé | Valeurs | Défaut |
|---|---|---|
questFileName | String List | aucun |
Exemple
questFileName:
- my_quest_one.yml
- my_quest_two.yml
disguise
Définit le déguisement LibsDisguises du PNJ.
| Clé | Valeurs | Défaut |
|---|---|---|
disguise | Format LibsDisguises | aucun |
Exemple
disguise: SKELETON

customDisguiseData
Définit les données d'un déguisement LibsDisguises personnalisé.
| Clé | Valeurs | Défaut |
|---|---|---|
customDisguiseData | Format LibsDisguises | aucun |
Exemple
disguise: custom:my_cool_disguise_name
customDisguiseData: player my_cool_disguise_name setskin {"id":"364acb6d-9050-46f7-b5fb-f8c3fd83a6fc","name":"Unknown","properties":[{"name":"textures","value":"ewogICJ0aW1lc3RhbXAiIDogMTYxMTk4ODA4Nzc1NSwKICAicHJvZmlsZUlkIiA6ICJkZGVkNTZlMWVmOGI0MGZlOGFkMTYyOTIwZjdhZWNkYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJEaXNjb3JkQXBwIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzliYmVkODQzNWY4YmYyNzhhZmUyNmU2NGZkOTI2YjhiMzc3MzJkODhlMzM0ODk3ZGJkNTI3ZDU2ZmY5MTk5MGUiCiAgICB9CiAgfQp9","signature":"ujLq1joYVktuQAp1xpFKlxQFUVinSePiDBiVCAxxix/mA5vP86i/eAOfb1mtGjaAZ6sO0l2olbzvycnGXNBtbAxgqprguROXY4tpWiePVTDmy3iD4GdOCxHAkYLoyMV5qTT4SNsldUFFuND8GSEgbNMltKDLmhNKwzm08iCigPfpeuYpwljgJPxu6ka54PKNaQu4doI0ZDZXKqq4hPhR3Bs2Sz9MI0SmdmQWwcCzUz3DFdVno27fmQ6LwqmT+eSoOv0EttVG/XMaTYQ5lhBY61mqf6WlJyYVUSfjJk1AbYsctu7dWM+sbY8jFq5ljvXJGGr5TyKi+fs8vHy06Z2go20QgTYOw+caFxFijAS6fgm3oY57VEO/+/9OLHdD+Z9BrWqQWcIIrVeIfxjue/yt4pyeVv9jX59hjNFjhcPEwotkxJ+vZ96WlTLWDG4BiqauDr2VeGyLlVaygO9ZU0wwsN65iSh91GI3tMIA5wbDR0Hts/9ABvt9eafHbowS+4SZXN0i9mYnKg7op1eiB8nMEAGsPJg3DwsmUrh3ACAapQ6eYHiJpo59RXDqKlRcXwo7wsEFp//5LgQWbPj0NP3nxnywdpozqSAeq6236qlhE9BT9eiyJ41V9sMelYFEWMlUAltR40NdbIrHB0J3nmfuLJz44/sTwWf6P1khOy//XX0="}],"legacy":false}

customModel
Définit le modèle personnalisé ModelEngine que le PNJ utilisera.
| Clé | Valeurs | Défaut |
|---|---|---|
customModel | String | aucun |
Exemple
customModel: MY_MODEL_ONE
arena
Définit le nom de fichier de l'arène pour laquelle le PNJ ouvrira un menu (nécessite l'interactionType ARENA_MASTER).
| Clé | Valeurs | Défaut |
|---|---|---|
arena | Filename | aucun |
Exemple
arena: my_arena.yml
command
Définit la commande que le PNJ exécutera (nécessite l'interactionType COMMAND). Les commandes sont exécutées en tant que joueur, pas en tant que console. N'incluez pas le slash initial (/).
| Clé | Valeurs | Défaut |
|---|---|---|
command | String | aucun |
Exemple
command: say Look at me running a command, how cool!
![]()
spawnLocation
Définit l'emplacement d'apparition des PNJ. Vous devriez le définir via la commande /em place npc <npcfilename.yml>.
| Clé | Valeurs | Défaut |
|---|---|---|
spawnLocation | String | aucun |
Exemple
spawnLocation: my_world,10,50,10,0,0
spawnLocations
Définit les emplacements d'apparition des PNJ. Vous devriez les définir via la commande /em place npc <npcfilename.yml>.
| Clé | Valeurs | Défaut |
|---|---|---|
spawnLocations | String List | aucun |
Exemple
spawnLocations:
- my_world,10,50,10,0,0
- my_world,-10,50,-10,0,0
instanced
Définit si le PNJ doit être instancié (pour une utilisation dans les donjons instanciés). Lorsqu'il est défini sur true, le PNJ est automatiquement cloné pour chaque instance de donjon, chaque clone existant dans le monde d'instance correspondant.
| Clé | Valeurs | Défaut |
|---|---|---|
instanced | Boolean | false |
Exemple
instanced: false
syncMovement
Définit si le mouvement du PNJ doit être synchronisé. Sert à contrôler si les mises à jour de position du PNJ sont synchronisées.
| Clé | Valeurs | Défaut |
|---|---|---|
syncMovement | Boolean | true |
Exemple
syncMovement: true
Exemple de configuration de PNJ
isEnabled: true
name: "&cRed Rubin"
role: "&a<Generic NPC>"
profession: NITWIT
greetings:
- Hiya!
- Hello!
dialog:
- Great conversation!
- Pleasure talking with you!
farewell:
- Goodbye!
- Laters!
canTalk: true
activationRadius: 4
interactionType: CHAT
timeout: 0
questFileName:
- my_quest.yml #npc interactionType must be set to CUSTOM_QUEST_GIVER
disguise: SKELETON
customDisguiseData: #used when a custom libsdisguise is being set
customModel: MODEL_ONE
arena: my_arena.yml #npc interactionType must be set to ARENA_MASTER
command: say Hello World! #npc interactionType must be set to COMMAND (do not include the leading slash)
spawnLocation: my_world,584,55,127,90,10 #remember that NPCs use pitch and yaw to set where they are looking at. this is also automatically set when running the /em place npc <npcfilename.yml> command, so make sure you pose where you want the NPC to be facing when running the command.

Spécial [1]
Voici la liste des types d'interaction de PNJ valides :
| Type | Description |
|---|---|
GUILD_GREETER | Ouvre le menu de sélection du bonus de compétence d'arme |
CHAT | Le clic droit fait défiler le dialog |
CUSTOM_SHOP | Ouvre le menu de la boutique personnalisée |
PROCEDURALLY_GENERATED_SHOP | Ouvre la boutique générée procéduralement |
BAR | Non implémenté. Indique au joueur que la fonctionnalité arrive bientôt. |
ARENA | Ne fait rien. Utilisez ARENA_MASTER à la place. |
QUEST_GIVER | Ouvre le menu des quêtes générées procéduralement |
CUSTOM_QUEST_GIVER | Ouvre le menu de quête pour une quête spécifique définie dans questFileName |
NONE | Aucune interaction |
SELL | Ouvre le menu de vente |
TELEPORT_BACK | Téléporte les joueurs vers le dernier emplacement hors monde elitemobs où ils se trouvaient |
SCRAPPER | Ouvre le menu de récupération (scrap) |
REPAIRMAN | Ouvre le menu de réparation |
ENCHANTER | Ouvre le menu d'enchantement |
REFINER | REMPLACÉ - Indique au joueur que la fonctionnalité a été remplacée ; les administrateurs sont invités à retirer le PNJ |
SMELTER | REMPLACÉ - Indique au joueur que la fonctionnalité a été remplacée ; les administrateurs sont invités à retirer le PNJ |
ENHANCER | REMPLACÉ - Indique au joueur que la fonctionnalité a été remplacée ; les administrateurs sont invités à retirer le PNJ |
UNBINDER | Ouvre le menu de déliaison |
ARENA_MASTER | Ouvre le menu d'arène pour l'arène définie dans arena |
COMMAND | Exécute la commande définie dans command |
SCROLL_APPLIER | Applique les parchemins d'objet élite aux objets |
ARROW_SHOP | Ouvre le menu de la boutique de flèches |
GAMBLING_BLACKJACK | Ouvre le jeu d'argent de blackjack |
GAMBLING_COINFLIP | Ouvre le jeu d'argent de pile ou face |
GAMBLING_SLOTS | Ouvre le jeu d'argent de machine à sous |
GAMBLING_HIGHERLOWER | Ouvre le jeu d'argent plus haut/plus bas |
Pour plus d'informations sur ce que font les types d'interaction SCRAPPER et similaires, cliquez ici.
Notes sur le comportement des PNJ
Les PNJ ont plusieurs comportements codés en dur qui ne peuvent pas être configurés :
- IA désactivée : les PNJ ne peuvent pas se déplacer de manière autonome. Ils restent à leur emplacement d'apparition.
- Affichage du rôle : le texte du rôle est affiché sur un support à armure invisible au-dessus du PNJ, à une hauteur fixe.
- Temps de recharge des dialogues : les PNJ attendent 3 secondes entre deux prises de parole pour éviter le chevauchement des messages.
- Cycle de vie des chunks : les PNJ disparaissent lorsque leur chunk est déchargé et réapparaissent lorsqu'il est rechargé.
