Aller au contenu principal

Empaqueteur de donjons

webapp_banner.jpg

Que sont les donjons ?​

Vous trouverez des informations sur les donjons, y compris sur les donjons prédéfinis, ici.


Qu'est-ce que l'empaqueteur de donjons ?

Le format de package permet de distribuer des donjons, événements, modèles, arènes, PNJ, objets et autres contenus EliteMobs. La commande d'export ne rassemble qu'une partie des dossiers acceptés par l'importateur ; ajoutez manuellement les autres fichiers nécessaires avant de distribuer l'archive.

Pourquoi utiliser les packages de donjon ?
  • Donjons instanciés ! Les donjons instanciés ne peuvent être créés qu'avec le système de packages de donjon.
  • Sauvegardes sûres des minidonjons ! Si vous créez un package de donjon, vous pourrez le déployer et le redéployer sur n'importe quel serveur, à tout moment et pour n'importe quelle raison.
  • Faciles à activer et désactiver ! Vous pouvez toujours faire /em setup et désactiver ou réactiver les packages de donjon, temporairement ou définitivement.
  • Faciles à partager ! Si vous souhaitez partager vos créations, les packages de donjon peuvent simplement être compressés et envoyés à d'autres personnes. Il existe un salon Discord dédié aux créations de la communauté si cela vous intéresse !
  • Téléportations ! Les packages de combat installés avec listedInTeleports: true apparaissent dans la page de téléportation de /em, sauf les défis d'enchantement. Configurez leurs destinations ; le menu ne crée pas les coordonnées à votre place.

Créer des donjons

Les réglages suivants servent à créer un fichier de configuration qui doit être placé dans le dossier content_packages. Ces réglages servent spécifiquement à créer des donjons et ne sont pas nécessaires si vous souhaitez simplement utiliser l'empaqueteur de donjons pour distribuer du contenu autre que des donjons, comme un pack d'objets ou d'événements.

Plugins requis​

Aucun. La protection des donjons est gérée par EliteMobs lui-même : régler protect: true applique au monde du package la suite de protection propre à EliteMobs, sans qu'aucun plugin de régions ne soit impliqué.

WorldGuard reste une dépendance facultative (soft dependency). Lorsqu'il est installé, ses drapeaux de région spécifiques à EliteMobs deviennent disponibles, mais il n'est pas nécessaire pour qu'un package de donjon soit protégé.

Créer un donjon, étape par étape​

EliteMobs avait autrefois deux grands types de donjons : ceux basés sur un monde et ceux basés sur une schematic.

Les donjons basés sur une schematic étaient associés à une construction schematic. Ils sont désormais abandonnés et ne sont plus pris en charge.

Tous les donjons EliteMobs sont maintenant basés sur un monde.

Fichier pack.meta requis​

Votre package de donjon doit inclure un fichier pack.meta, qui est simplement un fichier .txt renommé avec l'extension .meta. Ce fichier ne doit contenir qu'un seul mot, indiquant à quel plugin le package est destiné (par ex. « elitemobs », écrit en minuscules). Le fichier pack.meta doit se trouver à la racine de votre package, aux côtés de tous les autres dossiers.


Valeurs globales​

Les valeurs suivantes s'appliquent à tous les donjons

isEnabled​

Définit si le package de donjon est activé.

CléValeursDéfautObligatoire
isEnabledBooléentrue✅
Exemple
isEnabled: true

name​

Définit le nom du contenu. Accepte les codes de couleur.

CléValeursDéfautObligatoire
nameChaîneaucun✅
Exemple
name: '&c[lvl 999] &aThe Green Dungeon'

create_packager_name.jpg


contentType​

Définit le type de donjon.

CléValeursDéfautObligatoire
contentTypeOPEN_DUNGEON / INSTANCED_DUNGEON / DYNAMIC_DUNGEON / HUB / META_PACKAGE / ITEMS_PACKAGE / EVENTS_PACKAGE / MODELS_PACKAGEaucun✅
Exemple
contentType: INSTANCED_DUNGEON

SCHEMATIC_DUNGEON n'est plus pris en charge

La configuration reconnaît encore cette ancienne valeur, mais le chargeur ne crée plus de donjon à partir d'elle. Utilisez l'un des types basés sur un monde indiqués ci-dessus.

customInfo​

Ancien champ d'information, toujours lu, enregistré et traduit. Le menu /em setup actuel utilise setupMenuDescription ; modifier customInfo ne change pas sa description.

CléValeursDéfautObligatoire
customInfoListe de chaînesaucun✅
Exemple
customInfo:
- '&aThe best dungeon.'
- '&aMade by: CoolPlayer'

create_packager_custominfo.jpg


setupMenuDescription​

Définit la description du package dans /em setup. Accepte les codes de couleur.

CléValeursDéfautObligatoire
setupMenuDescriptionListe de chaînesaucun❌
Exemple
setupMenuDescription:
- '&2A cool dungeon for levels 10-20!'
- '&2Features 3 bosses and custom loot!'

Définit le lien de téléchargement manuel affiché dans /em setup quand le contenu manque et qu'aucun identifiant de package Nightbreak n'est disponible. Ce champ seul n'active ni téléchargement automatique ni mises à jour Nightbreak pour un package personnalisé.

CléValeursDéfautObligatoire
downloadLinkChaînechaîne vide❌
Exemple
downloadLink: http://www.example.org

create_packager_downloadlink.jpg


dungeonSizeCategory​

Définit l'étiquette de taille du package. contentType détermine s'il est instancié ; cette catégorie ne change pas son mode de fonctionnement.

CléValeursDéfautObligatoire
dungeonSizeCategorySpécial [1]LAIR❌
Exemple
dungeonSizeCategory: MINIDUNGEON

create_packager_size.jpg

Spécial [1]

Afficher le tableau
CléDescription
LAIRLes repaires sont un type de petit donjon centré sur un seul grand combat de boss.
SANCTUMLes sanctuaires sont l'équivalent instancié des repaires. Cela signifie qu'ils s'articulent autour d'un unique combat de boss colossal.
MINIDUNGEONLes minidonjons sont un type de donjon de taille moyenne qui contient généralement 3 à 15 minibosses et un grand boss, ainsi que de nombreux mobs « de remplissage » destinés à être « farmés » par les joueurs pour obtenir des pièces et de l'équipement.
DUNGEONLes donjons sont l'équivalent instancié des minidonjons. C'est le type de donjon MMORPG le plus traditionnel, où les joueurs forment un groupe et traversent une succession de mobs de remplissage et de minibosses pour affronter un boss final.
RAIDÉtiquette de taille reconnue. N'active aucun système de raid ni type de contenu distinct.
ADVENTURELes aventures sont des cartes d'aventure complètes. Elles comprennent des lignes de quêtes, des PNJ, un grand nombre de minibosses et de boss, et peuvent même contenir leurs propres arènes ou donjons.
ARENALes arènes sont des zones de survie par vagues dans lesquelles les joueurs sont récompensés lorsqu'ils viennent à bout des vagues.
OTHERTout ce qui n'entre pas déjà dans les catégories précédentes.
REALMÉtiquette de grands mondes riches en contenu. contentType détermine si le monde est partagé ou instancié.

Pour des descriptions plus détaillées, consultez Donjons


protect​

Définit si EliteMobs inscrit le monde dans le système de protection de MagmaCore. Celui-ci bloque la destruction et la pose de blocs par les joueurs, la combustion, l'inflammation, la plupart des disparitions de blocs, la décomposition des feuilles, la poudre d'os, le vidage des seaux, les modifications de pancartes, l'accès aux conteneurs pris en charge sauf aux coffres au trésor enregistrés, l'ouverture des portes, trappes et portillons, les interactions avec les œufs de dragon et pots de fleurs, la manipulation des cadres et porte-armures, les modifications de blocs par les entités et les apparitions de créatures autres que CUSTOM. La glace givrée peut toujours fondre. Les potions jetables et persistantes de Tissage lancées par les joueurs sont aussi bloquées. allowExplosionBlockDamage, allowLiquidFlow et allowElytra règlent leurs protections respectives. Les paramètres globaux des donjons contrôlent les tirs alliés et les multiplicateurs de dégâts environnementaux. Avec preventFlyToggleInDungeons: true dans CombatTag.yml (valeur par défaut), la protection empêche aussi les joueurs non opérateurs de se mettre à voler. Les administrateurs peuvent utiliser /em protection bypass pour les actions qui autorisent ce contournement.

Avec protect: false, cette protection n'est pas enregistrée. Le monde reste géré par EliteMobs : appartenance au donjon, cycle de vie des instances, systèmes de combat et autres fonctions restent actifs. Désactiver la protection ne transforme pas le donjon en monde de survie ordinaire.

CléValeursDéfautObligatoire
protectBooléentrue❌
Exemple
protect: true

dungeonVersion​

Définit la version du package. Incrémentez-la dans la configuration distribuée à chaque mise à jour. Nightbreak compare cette valeur pour les packages installés admissibles ; l'argument de version de /em package ne l'écrit pas.

CléValeursDéfautObligatoire
dungeonVersionEntier0❌
Exemple
dungeonVersion: 1

playerInfo​

Définit les informations destinées aux joueurs dans les menus de téléportation sous forme de livre, d'inventaire ou de dialogue. Accepte les codes de couleur et les espaces réservés $bossCount, $lowestTier et $highestTier. Le package doit être admissible dans ce menu et avoir listedInTeleports: true.

CléValeursDéfautObligatoire
playerInfoChaîneaucun❌
Exemple
playerInfo: 'Difficulty: &a1-man easy content!'

create_packager_playerinfo.jpg


regionEnterMessage​

Ancien champ de message d'entrée, toujours lu, enregistré et traduit. Les gestionnaires actuels d'entrée dans les donjons ne le lisent pas ; le définir n'envoie pas de message.

CléValeursDéfautObligatoire
regionEnterMessageChaîneaucun❌
Exemple
regionEnterMessage: '&aYou have entered the dungeon!'

create_packager_enter.jpg


regionLeaveMessage​

Ancien champ de message de sortie, toujours lu, enregistré et traduit. Les gestionnaires actuels de sortie des donjons ne le lisent pas ; le définir n'envoie pas de message.

CléValeursDéfautObligatoire
regionLeaveMessageChaîneaucun❌
Exemple
regionLeaveMessage: '&aYou have left the dungeon!'

create_packager_leave.jpg


hasCustomModels​

Signale que le package de donjon est livré avec des modèles personnalisés (pour ModelEngine ou FreeMinecraftModels). La clé est lue et écrite, mais rien dans EliteMobs n'agit actuellement dessus : les modèles sont installés uniquement du fait de la présence du dossier models dans le package. Considérez-la comme un marqueur documentaire.

CléValeursDéfautObligatoire
hasCustomModelsBooléenfalse❌
Exemple
hasCustomModels: false

dungeonConfigFolderName​

Définit le nom des dossiers utilisés pour les fichiers associés à ce donjon.

Obligatoire pour les donjons instanciés !

CléValeursDéfautObligatoire
dungeonConfigFolderNameChaîneaucun❌
Exemple
dungeonConfigFolderName: my_dungeon_folder

anchorPoint​

Point de référence pour les coordonnées relatives, hérité de l'époque des schematics. Le parseur de package lit toujours anchorPoint et calculatedRotation, mais aucune commande ni fonctionnalité actuelle ne les utilise. La commande /em relativecoords, qui mesurait à partir de l'ancre, a été supprimée dans EliteMobs 9.0.5. Positionnez plutôt les boss, coffres et PNJ avec les emplacements définis dans leurs propres fichiers.

CléValeursDéfautObligatoire
anchorPointLocalisationaucun❌
calculatedRotationEntier (degrés)0❌
Exemple
anchorPoint: my_dungeon_world,100,64,100,0,0
calculatedRotation: 0

contentLevel​

Définit le niveau de contenu que le donjon doit afficher dans le menu EM.

CléValeursDéfautObligatoire
contentLevelEntier0❌
Exemple
contentLevel: 20

enchantmentChallenge​

Marque le package comme défi d'enchantement solo. Il est enregistré dans une liste distincte et exclu du menu de téléportation ordinaire. Il lui faut une configuration instanciée valide, une copie de monde, un point de départ et des objectifs réalisables.

CléValeursDéfautObligatoire
enchantmentChallengeBooléenfalse❌
Exemple
enchantmentChallenge: false

song​

Définit si le donjon doit avoir une bande sonore.

CléValeursDéfautObligatoire
songChaîneaucun❌

name= Identifiant du son que le client doit jouer, par exemple elitemobs:dark_cathedral.ambient, et non chemin d'un fichier audio. length= La durée de la bande sonore en millisecondes. EliteMobs la convertit en ticks en interne, elle doit donc correspondre à la durée réelle du son, sans quoi la piste redémarrera trop tôt ou trop tard.

Les deux parties sont séparées par un espace. Une piste seule est répétée. Avec deux pistes séparées par ->, la première est jouée une fois puis la seconde se répète ; chacune utilise name=/length=. Les clients doivent déjà disposer du son dans leur pack de ressources. Ce réglage ne distribue pas le pack.

Exemple
song: name=elitemobs:dark_cathedral.ambient length=93830

Forme à deux pistes :

song: name=elitemobs:intro length=12000->name=elitemobs:dark_cathedral.ambient length=93830

dungeonLockoutMinutes​

Définit le délai de récupération des récompenses par boss instancié, pour le joueur et les membres de son groupe concernés, en minutes. Il n'empêche pas l'entrée dans le donjon. La valeur par défaut est 4320, soit 72 heures ; 0 le désactive pour ce package. Les joueurs concernés ne reçoivent pas non plus d'XP de compétence du boss pendant ce délai.

CléValeursDéfautObligatoire
dungeonLockoutMinutesEntier4320❌
Exemple
dungeonLockoutMinutes: 1440

containedPackages​

Définit la liste des packages de donjon contenus dans un meta package. Cette valeur est utilisée lorsque contentType est réglé sur META_PACKAGE, afin de lister tous les sous-packages appartenant au donjon plus vaste.

CléValeursDéfautObligatoire
containedPackagesListe de chaînesaucun❌
Exemple
containedPackages:
- my_dungeon_adventure.yml
- my_dungeon_sanctum.yml
- my_dungeon_boss_fight.yml

customItemFilenames​

Définit les fichiers d'un package d'objets. Une liste non nulle, même vide, force contentType à ITEMS_PACKAGE. Le chargeur vérifie ensuite les listes d'événements puis de modèles, qui peuvent remplacer ce type. Définissez seulement la liste adaptée à votre package.

CléValeursDéfautObligatoire
customItemFilenamesListe de chaînesaucun❌
Exemple
customItemFilenames:
- my_custom_sword.yml
- my_custom_armor.yml

customEventFilenames​

Définit les fichiers d'un package d'événements. Une liste non nulle, même vide, force contentType à EVENTS_PACKAGE après la vérification des objets. Une liste de modèles peut encore remplacer ce type.

CléValeursDéfautObligatoire
customEventFilenamesListe de chaînesaucun❌
Exemple
customEventFilenames:
- my_custom_event.yml

modelNames​

Définit les noms d'un package de modèles. Une liste non nulle, même vide, force contentType à MODELS_PACKAGE après les vérifications des objets et événements.

CléValeursDéfautObligatoire
modelNamesListe de chaînesaucun❌
Exemple
modelNames:
- my_custom_model

Anciens champs de donjons schematic conservés​

relativeBossLocations, relativeTreasureChestLocations, schematicName, defaultSchematicRotation, corner1 et corner2 restent dans l'analyseur pour les anciens fichiers. Ils ne placent pas le contenu des packages actuels, partagés ou instanciés. Utilisez les positions des définitions de boss et de coffres ainsi que la copie de monde. anchorPoint et calculatedRotation sont conservés de la même façon ; voir anchorPoint.

Clés traduisibles​

Six des valeurs ci-dessus sont enregistrées auprès du système de traduction au chargement du package : name, customInfo, playerInfo, regionEnterMessage, regionLeaveMessage et le name de chaque entrée de difficulties. Sur un serveur fonctionnant dans une langue autre que l'anglais, elles sont recherchées dans le CSV de cette langue, et le texte que vous écrivez dans le YAML est ce à quoi la colonne anglaise est comparée. Rédigez-les en anglais si vous voulez que votre package soit traduisible.


Packages de donjon basés sur un monde​

Les valeurs suivantes ne s'appliquent qu'aux donjons basés sur un monde.


worldName​

Définit le nom du monde qui doit être empaqueté.

CléValeursDéfautObligatoire
worldNameChaîneaucun✅
Exemple
worldName: my_minecraft_world

wormholeWorldName​

Définit un monde secondaire que le package charge avec le même environnement et les mêmes protections que le principal. Les routes entre mondes doivent être créées séparément ; ce nom ne crée pas de portails.

CléValeursDéfautObligatoire
wormholeWorldNameChaîneaucun❌
Exemple
wormholeWorldName: my_minecraft_world_wormhole

environment​

Définit l'environnement du monde.

CléValeursDéfautObligatoire
environmentEnvironnementNORMAL❌
Exemple
environment: NORMAL

teleportLocation​

Définit le point d'entrée d'un donjon partagé ou le point d'attente d'une instance. Pour une instance, le monde de la position est remplacé par celui de la copie ; sans position d'attente, le code utilise le point de départ. Le format est monde,x,y,z,yaw,pitch.

CléValeursDéfautObligatoire
teleportLocationChaîneaucun✅
Exemple
teleportLocation: my_minecraft_world,-1.5,68,0.5,0.0,0.0

allowExplosionBlockDamage​

Autorise ou empêche les dégâts d'explosion aux blocs dans un monde de donjon protégé. L'activer ne transforme pas les explosions vanilla en explosions d'élite. La régénération EliteMobs traite les explosions d'élite suivies si doExplosionRegen est activé. Elle commence après une minute et restaure un bloc enregistré par tick ; sa durée totale dépend de la zone endommagée. Les autres explosions peuvent laisser des dégâts permanents.

CléValeursDéfautObligatoire
allowExplosionBlockDamageBooléenfalse❌
Exemple
allowExplosionBlockDamage: true

allowLiquidFlow​

Définit si l'eau et la lave peuvent s'écouler lorsque la protection du monde est active. Cela n'autorise pas le vidage des seaux, contrôlé séparément par la protection.

CléValeursDéfautObligatoire
allowLiquidFlowBooléentrue❌
Exemple
allowLiquidFlow: false

allowElytra​

Définit si le vol en élytre est autorisé dans le monde protégé du package. Avec false, la protection annule son démarrage et interrompt le vol lors de l'entrée dans le monde ou des déplacements. Elle ne tourne pas sur une minuterie à chaque tick. Les administrateurs bénéficiant du contournement de protection sont exemptés.

CléValeursDéfautObligatoire
allowElytraBooléenfalse❌
Exemple
allowElytra: true

listedInTeleports​

Définit si un package de combat installé apparaît dans les téléportations de /em. false masque cette entrée, mais n'interdit pas l'accès par d'autres routes ou commandes. Les défis d'enchantement sont exclus indépendamment de cette valeur.

CléValeursDéfautObligatoire
listedInTeleportsBooléentrue❌
Exemple
listedInTeleports: false

teleportLocationOffset​

Définit un décalage pour le point de téléportation du package de donjon.

Cette clé est analysée mais actuellement inutilisée : rien dans EliteMobs ne lit le décalage obtenu, la définir n'a donc aucun effet sur l'endroit où les joueurs atterrissent. Ajustez plutôt teleportLocation lui-même.

CléValeursDéfautObligatoire
teleportLocationOffsetChaîneaucun❌
Exemple
teleportLocationOffset: my_minecraft_world,0.5,2,0.5,0.0,0.0

Donjons instanciés​

Les donjons instanciés créent un nouveau monde chaque fois qu'un groupe de joueurs veut terminer un donjon, et le suppriment une fois terminé. Pour que cela fonctionne correctement, vous devez placer un dossier suivant le dungeonConfigFolderName dans le dossier de configuration world_blueprints d'EliteMobs.

Placez une dimension exportée dans world_blueprints/<dungeonConfigFolderName>/<worldName>/. Le validateur exige un seul emplacement de terrain contenant des régions .mca, à la racine ou dans le sous-dossier ancien DIM-1/DIM1 correspondant. Il accepte les mondes anciens complets, les exports de terrain seul et les exports de dimensions modernes. level.dat n'est pas obligatoire pour tous les formats acceptés. Les conteneurs dimensions de serveur entier, les formats mélangés et les liens ou fichiers non ordinaires sont rejetés. Un export moderne nécessite un serveur utilisant le stockage moderne.

Travaillez sur une copie d'export déchargée et conservez le terrain, les entités, les points d'intérêt et les données de cette dimension. Le clonage omet uid.dat, session.lock et les métadonnées d'identité par dimension de Paper. Il ne modifie pas la copie de référence. Les mondes d'instance utilisent le format <worldName>_<number>. Le démarrage conserve les restes d'un plantage ; le cycle de vie d'une instance ne nettoie que les mondes qu'elle a créés. Avant de supprimer un reste manuellement, vérifiez son origine et qu'aucune instance active ne l'utilise.

Les valeurs suivantes ne s'appliquent qu'aux donjons instanciés. Notez que tous les donjons instanciés sont des donjons de monde, ils utilisent donc également les valeurs des donjons de monde.


startLocation​

Définit le point de téléportation de départ du donjon instancié. C'est là que les joueurs seront téléportés au lancement du donjon instancié avec /em start. Un package instancié ou dynamique sans startLocation valide ne se charge pas.

CléValeursDéfautObligatoire
startLocationChaîneaucun✅
Exemple
startLocation: my_minecraft_world,10.5,70,10.5,0.0,0.0

permission​

Définit la permission requise pour entrer dans l'instance du donjon.

CléValeursDéfautObligatoire
permissionChaîneaucun❌
Exemple
permission: elitedungeon.mypermission

minPlayerCount​

Définit le nombre minimum de joueurs requis pour lancer un donjon.

CléValeursDéfautObligatoire
minPlayerCountEntier1❌
Exemple
minPlayerCount: 1

maxPlayerCount​

Définit le nombre maximum de joueurs autorisés dans un donjon.

CléValeursDéfautObligatoire
maxPlayerCountEntier5❌
Exemple
maxPlayerCount: 5

dungeonObjectives​

Définit les objectifs nécessaires pour terminer le donjon. Tous doivent être accomplis pendant l'état ONGOING de l'instance pour déclencher la victoire.

CléValeursDéfautObligatoire
dungeonObjectivesListe de chaînesaucun✅
Exemples

Utilisez des objectifs de mort explicites : filename=boss.yml:amount=X. Sans amount, une mort suffit. Seules les morts de boss de cette instance comptent, avec le nom du fichier de leur première phase.

dungeonObjectives:
- filename=dungeon_final_boss.yml
- filename=dungeon_miniboss_one.yml
- filename=dungeon_miniboss_two.yml
dungeonObjectives:
- filename=dungeon_guard.yml:amount=5

La forme boss.yml sans filename= est aussi acceptée comme filename=boss.yml pour les anciens packages. Préférez la forme explicite dans les nouveaux.

Le nom de fichier doit se terminer par .yml et amount doit être un nombre entier d'au moins 1. Chaque champ ne peut apparaître qu'une fois. Un champ inconnu, un nom de fichier manquant ou une quantité invalide empêche le chargement du package, et l'erreur de la console nomme le fichier et l'objectif.

Les objectifs de pourcentage ne sont pas pris en charge

Les objectifs de pourcentage ne sont pas pris en charge et sont rejetés au chargement de la définition du donjon. Utilisez des objectifs de mort explicites comme filename=boss.yml:amount=2. Un objectif obligatoire invalide fait rejeter la définition ; il n'est jamais retiré silencieusement des conditions de victoire.


difficulties​

Définit la liste des difficultés du donjon instancié.

Obligatoire pour les donjons instanciés !

CléValeursDéfautObligatoire
difficultiesSpécial [1]aucun❌
Exemples
difficulties:
- levelSync: 25
id: 0
name: normal
- levelSync: 20
id: 1
name: hard
- levelSync: 15
id: 2
name: mythic

create_packager_difficulty.jpg

Spécial [1]

Afficher le tableau

Définir les difficultés d'un donjon instancié crée automatiquement différentes options de difficulté à l'entrée du donjon.

Utilisez id pour les filtres de difficulté des pouvoirs et du butin. name est le nom traduisible affiché aux joueurs. Les ID explicites 0, 1 et 2 sont recommandés pour Normal, Hard et Mythic. Le système reconnaît aussi Easy/Medium/Hard comme ces trois paliers lorsque le package utilise ces noms ; les ID inconnus conservent une correspondance exacte. Sans id, le système le déduit du nom d'origine avant traduction.

Les difficultés se présentent sous forme de liste comportant les champs suivants :

CléDescriptionValeursObligatoire
nameNom de la difficulté affiché aux joueurs.Chaîne✅
idID de la difficulté, utilisé dans les custom bosses et les custom items pour la fonctionnalité basée sur la difficulté.Chaîne❌
levelSyncPlafonne le palier d'objet dans le traitement des objets du joueur mis en cache. Ne modifie pas l'équipement et ne plafonne pas tous les calculs de dégâts et de défense.Niveau absolu (25) ou valeur entre guillemets relative à contentLevel ('+5', '-3')❌

Synchronisation relative : un levelSync commençant par + ou - est ajouté à contentLevel, avec un minimum de 1. Par exemple, contentLevel: 40 avec levelSync: '-5' fixe le plafond en cache à 35. Mettez les valeurs relatives entre guillemets : YAML retire le signe initial de +5 sans guillemets, ce qui en fait le niveau absolu 5. Les donjons dynamiques calculent ces décalages à partir du niveau choisi. Une valeur invalide désactive la synchronisation avec 0 et produit un avertissement.

Les calculs actuels d'attaque de mêlée, de défense d'armure et d'armes à projectiles peuvent lire les niveaux bruts des objets. Ce réglage ne plafonne pas non plus les contributions des enchantements de l'équipement. Consultez la difficulté des donjons instanciés avant de fonder l'équilibrage sur cette synchronisation.

Donjons dynamiques​

Les donjons dynamiques étendent les donjons instanciés : leur contenu s'adapte au niveau choisi par le joueur. Le menu part du niveau de combat actuel du joueur. Il commence au plus grand de 5 et du niveau de combat moins 5, puis propose des incréments de cinq niveaux jusqu'au niveau de combat plus 5, sans dépasser 200. Le rang de guilde ne débloque pas ces choix.

Pour les boss d'un donjon dynamique, utilisez level: dynamic. Le niveau choisi s'applique aux boss EliteMobs de l'instance, pas à chaque entité vanilla ou récompense. Utilisez scalability: scalable pour les objets personnalisés qui doivent accepter le niveau de récompense et vérifiez le traitement du butin concerné ; le butin pondéré des boss et les récompenses fixes explicites peuvent conserver leur niveau d'origine.

Les valeurs suivantes sont nécessaires pour les donjons dynamiques.
Puisque tous les donjons dynamiques sont aussi des donjons instanciés, ils utilisent en plus toutes les valeurs et tous les réglages des donjons instanciés.


contentType​

Définit le type de donjon. Cette valeur doit être réglée sur DYNAMIC_DUNGEON.

CléValeursDéfautObligatoire
contentTypeOPEN_DUNGEON / INSTANCED_DUNGEON / DYNAMIC_DUNGEON / HUB / META_PACKAGE / ITEMS_PACKAGE / EVENTS_PACKAGE / MODELS_PACKAGEaucun✅
Exemple
contentType: DYNAMIC_DUNGEON

contentLevel​

Les donjons dynamiques préconçus définissent cette valeur sur -1. Un donjon dynamique n'utilise pas cette valeur : contentType: DYNAMIC_DUNGEON rend le package dynamique, ses espaces réservés $lowestTier et $highestTier affichent 5 et 200, et les valeurs relatives de levelSync utilisent le niveau que les joueurs sélectionnent.

CléValeursDéfautObligatoire
contentLevelEntier0❌
Exemple
contentLevel: -1

difficulties​

Définit la liste des difficultés disponibles et la synchronisation de niveau du donjon dynamique.

Obligatoire pour les donjons instanciés !

CléValeursDéfautObligatoire
difficultiesSpécial [1]aucun✅
Exemples
difficulties:
- levelSync: '+5'
name: normal
id: 0
- levelSync: '+0'
name: hard
id: 1
- levelSync: '-5'
name: mythic
id: 2

create_packager_difficulty.jpg

Spécial [1]

Afficher le tableau

Définir les difficultés d'un donjon instancié crée automatiquement différentes options de difficulté à l'entrée du donjon.

Utilisez id pour les filtres de difficulté des pouvoirs et du butin. name est le nom traduisible affiché aux joueurs. Les ID explicites 0, 1 et 2 sont recommandés pour Normal, Hard et Mythic. Le système reconnaît aussi Easy/Medium/Hard comme ces trois paliers lorsque le package utilise ces noms ; les ID inconnus conservent une correspondance exacte. Sans id, le système le déduit du nom d'origine avant traduction.

Les valeurs signées de levelSync entre guillemets définissent un plafond relatif pour les objets du joueur mis en cache. Elles ne changent pas le niveau choisi des boss, n'améliorent pas l'équipement de bas niveau et ne plafonnent pas tous les calculs de combat.

Par exemple, "+0" fixe ce plafond au niveau choisi du donjon, "+5" cinq niveaux au-dessus et "-5" cinq niveaux en dessous, avec un minimum de 1. Les limites décrites dans la section des donjons instanciés s'appliquent toujours.

Les difficultés se présentent sous forme de liste comportant les champs suivants :

CléDescriptionValeursObligatoire
nameNom de la difficulté affiché aux joueurs.Chaîne✅
idID de la difficulté, utilisé dans les custom bosses et les custom items pour la fonctionnalité basée sur la difficulté.Chaîne❌
levelSyncPlafonne le palier d'objet en cache ; ce n'est pas un plafond universel de l'équipement.Entier pour un plafond absolu, ou décalage signé entre guillemets comme '+5'❌

Utiliser meta_pack.yml pour les grands donjons​

Il peut arriver que vous travailliez sur un grand donjon qui en contient d'autres, plus petits, permettant aux joueurs de circuler entre eux via le monde du donjon principal. Le donjon d'aventure EliteMobs Primis en est un excellent exemple.

Primis propose un vaste monde où les joueurs peuvent explorer et accomplir des quêtes, mais il comprend aussi deux donjons instanciés au sein de son monde, dont l'un constitue le combat de boss final. Dans ce genre de cas, il y aura plusieurs fichiers de package de donjon, même s'ils appartiennent tous au même donjon global.

Pour gérer cela, nous utilisons un fichier de meta package de donjon. Ce fichier fait office de répertoire central : il indique le donjon principal et liste tout le contenu de donjon supplémentaire qui lui est associé.

Cet exemple montre le regroupement des packages de Primis. Sa version est illustrative, ce n'est pas la version publiée actuelle de Primis :

isEnabled: true
name: '&2[000-020] The Primis Adventure!'
customInfo:
- The tutorial adventure for players
- new to EliteMobs!
downloadLink: https://discord.gg/9f5QSka
dungeonSizeCategory: LAIR
environment: NORMAL
protect: true
contentType: META_PACKAGE
containedPackages:
- primis_adventure.yml
- primis_blood_temple_sanctum.yml
- primis_gladius_invasion_dungeon.yml
setupMenuDescription:
- '&2A soft tutorial adventure for players between levels 0-20!'
- '&2Adventures are massive maps with quests,'
- '&2many bosses and npcs, among other things!'
- '&2Also has custom models!'
dungeonVersion: 1

Comme vous pouvez le voir, le fichier de meta package de donjon ressemble beaucoup à un package de donjon ordinaire, à quelques différences majeures près. Le contentType: est réglé sur META_PACKAGE, et il existe un réglage supplémentaire appelé containedPackages:. Ce réglage liste tous les autres packages de donjon qui font partie du donjon global.

Énumérez le nom exact du fichier de chaque enfant dans containedPackages. Incluez ces configurations et leur contenu dans l'archive. Le meta package recherche les définitions déjà chargées et ignore les entrées manquantes ; cette liste n'ajoute ni ne télécharge les fichiers.

Utilisez le dungeonVersion du meta package pour la publication groupée. Les vérifications Nightbreak ignorent les enfants énumérés et comparent la version du parent admissible. Déclarer des enfants n'ajoute pas de téléchargement ou de mise à jour Nightbreak à un meta package YAML personnalisé.

Les enfants peuvent toujours apparaître dans le menu de téléportation du joueur /em, distinct du menu administratif /em setup. Réglez listedInTeleports: false pour chaque enfant dont vous souhaitez masquer l'entrée.

Par exemple, dans le cas du donjon Primis :

Désactivez les entrées de téléportation du menu pour primis_blood_temple_sanctum.yml et primis_gladius_invasion_dungeon.yml. Laissez les options de téléportation activées pour primis_adventure.yml, car il s'agit du hub principal où les joueurs commencent leur périple et accèdent aux autres donjons. Les joueurs entrent alors par la téléportation de l'aventure et suivent ses routes configurées pour rejoindre les donjons enfants.

Pour nommer le fichier, nous recommandons la convention de nommage suivante :

your_dungeon_name_meta_pack.yml


Pour les objectifs de butin de Normal, Hard et Mythic, consultez l'équilibrage automatique du butin de classe et des enchantements. Ce guide décrit les profils d'équipement selon le rang de l'affrontement, le budget réel d'enchantements, la présentation réutilisable des récompenses et les commandes de vérification administrative. Les valeurs de vie et de dégâts ci-dessous règlent le combat indépendamment de la qualité des récompenses.

Créer un mob de donjon moyen​

Utilisez normalizedCombat: true pour le combat normalisé. Vie et dégâts dépendent toujours du niveau, des multiplicateurs, de l'équipement et des compétences des joueurs, ainsi que des réglages de combat. Ces exemples sont des points de départ d'équilibrage, pas des nombres fixes de coups nécessaires pour tuer.

Pour les donjons, normalizeRegionalBosses: true dans MobCombatSettings.yml (la valeur par défaut) active le combat normalisé des boss régionaux ; les boss de donjons instanciés l'utilisent également. Un scaledCombat: true explicite dans le fichier du boss est prioritaire pour les calculs du combat échelonné. Les recommandations ci-dessous supposent un combat normalisé sans cette dérogation.

normalizedCombat: true
healthMultiplier: 1.0 #Starting point; verify with intended player loadouts.
damageMultiplier: 1.0 #Damage scales with the player's health and defenses; playtest this value.

Remarque : étant donné que 1.0 est la valeur par défaut pour les points de vie et les dégâts, vous pouvez simplement omettre de définir healthMultiplier ou damageMultiplier et régler normalizedCombat sur true.

Créer des packs de remplissage​

Les packs de remplissage sont nombreux mais peu dangereux :

normalizedCombat: true
healthMultiplier: 0.7 #Starting point for weaker mobs.
damageMultiplier: 0.5 #Damage scales with the player's health and defenses; playtest this value.

Créer des renforts​

Les renforts doivent mourir très facilement, mais représenter un danger en termes de dégâts (ces valeurs sont recommandées pour 4 entités de mêlée ou plus, l'usage réel peut varier) :

normalizedCombat: true
healthMultiplier: 0.25 #Starting point for fragile reinforcements.
damageMultiplier: 0.6 #Damage scales with the player's health and defenses; playtest this value.

Créer des minibosses​

Les minibosses doivent tenir bon et poser un défi mécanique aux joueurs. Cela doit être une épreuve d'habileté qui dure un certain temps, mais sans être extrêmement mortelle :

normalizedCombat: true
healthMultiplier: 3.0 #Starting point for minibosses.
damageMultiplier: 1.2 #Damage scales with the player's health and defenses; playtest this value.

Créer des boss​

Les boss constituent un véritable défi, l'aboutissement d'une montée en tension dans un donjon et une vraie épreuve d'habileté où tout se joue. Les affrontements doivent être longs et la mort doit être une menace bien présente.

normalizedCombat: true
healthMultiplier: 7.0 #Starting point for bosses; check the health ceiling.
damageMultiplier: 1.4 #Damage scales with the player's health and defenses; playtest this value.

Ces valeurs recommandées ne sont que des estimations approximatives, et les valeurs finales doivent être ajustées en fonction des affrontements concernés.

Pour les boss finaux, vérifiez la durée de l'affrontement avec les tailles de groupe, équipements et compétences prévus avant d'augmenter healthMultiplier.

Attention au plafond de points de vie avant d'augmenter healthMultiplier

La vie de base et le résultat après multiplicateur sont plafonnés par settings.attribute.maxHealth.max du serveur, 2048 par défaut. Avec ce plafond, 7.0 l'atteint au niveau 36, 10.0 au 33 et 40.0 au 23. Le facteur lié au groupe de l'instance multiplie ensuite ce résultat et reste soumis au même plafond : un boss déjà au plafond ne gagne donc aucune vie avec un groupe plus nombreux. Les dégâts ont leurs propres calculs et plafonds, distincts du plafond de vie. Consultez healthMultiplier pour le calcul de base et la modification de la limite du serveur.


Empaqueter du contenu EliteMobs pour la distribution

Enfin, vous voudrez probablement empaqueter votre donjon, que ce soit pour l'archiver ou pour le distribuer.

EliteMobs dispose d'un système d'import qui permet aux administrateurs d'importer, d'installer et de désinstaller rapidement du contenu. Vous pouvez voir comment il fonctionne ici.

Distribuer des resource packs de donjon​

Depuis EliteMobs 9.6.0, les donjons peuvent être distribués avec leurs propres resource packs. Ils permettent d'utiliser des textures ou modèles personnalisés pour le butin et d'ajouter des sons, comme dans The Hallowed Haunt.

Pour distribuer un resource pack avec votre donjon, créez-le comme un pack standard. Vous pouvez prendre pour modèle le pack par défaut qu'EliteMobs exporte au démarrage dans plugins/EliteMobs/resource_pack/em_rsp_defaults/. Distribuez-le décompressé dans un dossier portant le nom de votre donjon, par exemple my_cool_dungeon_rsp. Placez-y les fichiers normalement contenus dans le ZIP, puis mettez ce dossier dans un autre nommé resource_pack, comme celui où EliteMobs stocke son pack par défaut.

Conservez vos modifications dans un pack séparé. Au démarrage, EliteMobs compare la somme de contrôle du pack inclus à .rsp_checksum et remplace em_rsp_defaults si le pack inclus a changé ou si la somme sauvegardée ou le dossier manque. Il ne calcule pas la somme de vos fichiers modifiés : ils peuvent survivre à un redémarrage, mais une réexportation ultérieure les remplace.

Une fois vos fichiers organisés, la structure de répertoires devrait ressembler à ceci :

resource_pack
└── my_cool_dungeon_rsp
└── [resource pack files]

L'importateur place ce dossier dans plugins/EliteMobs/resource_pack/. L'import ne l'envoie pas aux clients ; incluez-le dans le pack distribué par le fournisseur de ressources de votre serveur.

Rogner les mondes​

Supprimer les chunks inutilisés réduit la taille du téléchargement. L'exemple utilise le plugin WorldBorder ; vérifiez ses versions compatibles avant de l'utiliser sur votre serveur. Le rognage supprime définitivement les chunks, alors travaillez sur une copie d'export avec une sauvegarde.

Details

Conseil Si vous faites cela pour la première fois, il peut être judicieux de créer une sauvegarde de votre monde au cas où quelque chose se passerait mal.

Une fois le plugin installé, rendez-vous au milieu du monde ou de la zone précise que vous souhaitez rogner. Exécutez ensuite la commande /wb set x, où x représente la taille approximative du rayon souhaité pour votre zone.

Details

Conseil Si /wb ne fonctionne pas chez vous, essayez /worldborder:wb.

Après avoir exécuté cette commande, volez jusqu'aux bords de votre monde pour vérifier que la bordure du monde a bien été définie et couvre la taille prévue. Vous saurez que vous avez atteint le bord de la bordure du monde lorsque vous serez repoussé, accompagné d'un message dans le chat.

trim_pic_1.jpg

Sur l'image ci-dessus, nous cherchons à rogner le monde autour des blocs violets, en ne laissant que quelques chunks autour d'eux. Pour ce faire, nous nous plaçons au milieu de la zone violette sur les carrés rouges et exécutons /wb set 50, ce qui place la bordure du monde juste au-delà de la zone violette.

Utilisez ensuite /wb trim [freq] [pad]. La fréquence est le nombre de chunks traités par seconde ; la marge est exprimée en blocs, pas en chunks, comme le montre l'implémentation de la commande. /wb trim 200 20 traite 200 chunks par seconde avec une marge de 20 blocs autour de la bordure. Vérifiez l'opération avant /wb trim confirm, puis inspectez la copie rognée.

Vous pouvez retirer la bordure de ce monde avec /wb clear, ou la conserver.

Rogner le dossier du monde​

Créez une sauvegarde et travaillez sur une copie d’exportation séparée, avec le monde source déchargé. Conservez toute la structure, y compris le terrain, les entités, les points d’intérêt et les données du monde. Une liste minimale de fichiers peut supprimer du terrain, des cadres, des porte-armures ou d’autres éléments créés.

La structure dépend de la version de Minecraft et du serveur. Les anciens formats peuvent utiliser DIM-1 pour le Nether et DIM1 pour l'End ; les modernes peuvent utiliser un conteneur dimensions/<namespace>/<key>/. Pour une copie de référence instanciée, exportez une seule dimension au format accepté par WorldBlueprint, pas le conteneur entier de plusieurs dimensions. Conservez sa structure et vérifiez la copie sur un autre serveur avant distribution. Retirez les verrous temporaires et données privées uniquement de la copie d'export, après avoir identifié leurs chemins pour cette version.

Exécuter la commande de packaging​

EliteMobs dispose de la commande /em package <dungeonName> <version>, qui nécessite elitemobs.package. Elle recherche un sous-dossier nommé dungeonName dans chacun des dossiers ci-dessous, copie ce qu'elle trouve dans exports/<dungeonName>/, puis compresse le tout dans exports/<dungeonName>_packaged.zip.

Les dossiers qu'elle analyse sont, dans l'ordre :

custombosses, customevents, npcs, npc_scripts, transport_routes, customitems, customquests, customarenas, customspawns, customtreasurechests, wormholes, world_blueprints, powers, behaviors

Tout ce qu'elle ne trouve pas affiche un avis « no subdirectory » et est ignoré, ce qui est normal pour un package qui n'utilise pas tous les types de contenu.

Pour cette raison, il est fortement recommandé de conserver le contenu que vous souhaitez empaqueter dans des dossiers portant le même nom que celui de votre package. Sinon, vous devrez rassembler et empaqueter les fichiers manuellement selon la structure de fichiers destinée à la distribution.

La commande ne collecte pas content_packages, worldcontainer, models, scripts, enchantments ou resource_pack et ne crée pas pack.meta. Ajoutez les fichiers nécessaires au dossier d'export avant de créer le ZIP final. L'argument <version> doit être un entier, mais il ne modifie pas dungeonVersion ; changez ce champ vous-même.

Avant la copie, la commande valide les copies de monde existantes référencées par les définitions de packages chargées correspondantes. Elle peut s'arrêter sur un format invalide ou incompatible avec le serveur. Cette vérification ne garantit pas la présence de toutes les configurations, de tous les boss ou de tous les fichiers nécessaires.

Chaque exécution construit d'abord l'export dans un dossier temporaire. En cas de réussite, elle remplace exports/<dungeonName>/ et exports/<dungeonName>_packaged.zip : les fichiers que vous aviez ajoutés à la main dans le dossier d'export précédent sont donc supprimés. Conservez ces ajouts ailleurs et recopiez-les après chaque exécution. Si aucun des dossiers de contenu n'existe, ou si un dossier ou fichier de contenu est un lien symbolique, la commande affiche Failed to zip package!, enregistre la raison dans la console et laisse l'export précédent intact.

Ajouter le fichier de package de donjon​

Si vous créez un donjon, ajoutez manuellement sa configuration au dossier nouvellement généré dans exports. Le fichier doit suivre le format décrit plus haut et se trouver dans un dossier content_packages. Consultez la structure des fichiers ci-dessous.

Veillez à compresser votre donjon une fois terminé !

Structure des fichiers​

Si vous avez tout fait correctement, la structure des fichiers devrait ressembler à cet exemple, où nous avons appelé le donjon my_cool_dungeon :

Exemple de structure de fichiers de my_cool_dungeon
  • my_cool_dungeon.zip
    • pack.meta (contient elitemobs)
    • content_packages
      • my_cool_dungeon.yml <- C'est ici que va votre fichier de configuration de package de donjon
    • worldcontainer
      • [Vos dossiers de monde vont ici]
    • wormholes
      • my_cool_dungeon
        • [Vos wormholes vont ici]
    • npcs
      • my_cool_dungeon
        • [Vos PNJ vont ici]
    • customtreasurechests
      • my_cool_dungeon
        • [Vos coffres au trésor vont ici]
    • customquests
      • my_cool_dungeon
        • [Vos quêtes vont ici]
    • customitems
      • my_cool_dungeon
        • [Vos objets personnalisés vont ici]
    • custombosses
      • my_cool_dungeon
        • [Vos custom bosses vont ici]
    • customarenas
      • my_cool_dungeon
        • [Vos arènes personnalisées vont ici]
    • powers
      • my_cool_dungeon
        • [Vos pouvoirs personnalisés vont ici]
    • world_blueprints
      • my_cool_dungeon
        • [Votre dossier de monde va ici, utilisé pour les donjons instanciés]
    • customevents
      • my_cool_dungeon
        • [Vos événements personnalisés vont ici]
    • customspawns
      • my_cool_dungeon
        • [Vos apparitions personnalisées vont ici]
    • models
      • [Vos modèles au format bbmodel vont ici, accepte les dossiers]
    • scripts
      • [Vos scripts Lua FreeMinecraftModels vont ici]
    • resource_pack
      • my_cool_dungeon_rsp
        • [Vos fichiers de resource pack vont ici]

Distribuez le ZIP terminé pour l'importer par plugins/EliteMobs/imports/, puis rechargez et vérifiez /em setup. Testez une installation propre avant de le partager, y compris les boss, quêtes, fichiers Lua, modèles et copies de monde référencés.

Dossiers de premier niveau reconnus​

L'importateur ne comprend qu'un ensemble fixe de noms de premier niveau. Pour un package EliteMobs (pack.meta contenant elitemobs), ce sont :

DossierEmplacement d'installation
content_packagesplugins/EliteMobs/content_packages
dungeonpackagesplugins/EliteMobs/content_packages (alias hérité)
custombossesplugins/EliteMobs/custombosses
customitemsplugins/EliteMobs/customitems
customtreasurechestsplugins/EliteMobs/customtreasurechests
customeventsplugins/EliteMobs/customevents
customspawnsplugins/EliteMobs/customspawns
customquestsplugins/EliteMobs/customquests
customarenasplugins/EliteMobs/customarenas
npcsplugins/EliteMobs/npcs
npc_scriptsplugins/EliteMobs/npc_scripts
transport_routesplugins/EliteMobs/transport_routes
behaviorsplugins/EliteMobs/behaviors
enchantmentsplugins/EliteMobs/enchantments
wormholesplugins/EliteMobs/wormholes
powersplugins/EliteMobs/powers
world_blueprintsplugins/EliteMobs/world_blueprints
resource_packplugins/EliteMobs/resource_pack
worldcontainerle conteneur de mondes du serveur
models ou modelengineDossier de modèles de FreeMinecraftModels s'il est activé, sinon dossier blueprints de ModelEngine s'il est activé ; si aucun n'est activé, dossier de modèles de FreeMinecraftModels
scriptsplugins/FreeMinecraftModels/scripts
elitemobsplugins/EliteMobs, fusionné selon la même structure que ce dossier de données
freeminecraftmodelsplugins/FreeMinecraftModels, fusionné selon la même structure que ce dossier de données. Un dossier models qu'il contient va dans le dossier de modèles que lit FreeMinecraftModels
betterstructuresplugins/BetterStructures, fusionné selon la même structure que ce dossier de données
pack.metainstallé nulle part : il n'est lu que pour identifier le package

Utilisez les dossiers elitemobs, freeminecraftmodels et betterstructures pour les fichiers qui n'ont pas de nom de premier niveau propre, par exemple freeminecraftmodels/enchantments pour les enchantements FreeMinecraftModels utilisés par vos objets. Après qu'une importation a placé des fichiers dans son dossier, FreeMinecraftModels recharge son contenu importé. BetterStructures se recharge une fois son propre démarrage terminé ; les versions sans ce point d'entrée de rechargement enregistrent un avertissement vous demandant d'exécuter /bs reload.

Une entrée inconnue à la racine rejette tout le package et conserve l'archive pour correction. Écartez les fichiers readme, captures d'écran et dossiers __MACOSX de la racine. Si une écriture échoue, l'importateur tente de rétablir toutes les destinations modifiées par cette archive ; examinez les avertissements de restauration avant de réessayer.

schematics rejette aussi une archive EliteMobs, avec un avertissement supplémentaire indiquant que les donjons schematic ont été supprimés dans EliteMobs 9.0.

Distribuez les configurations avec isEnabled: false si les administrateurs doivent les installer par /em setup. Préparez et vérifiez une copie d'export déchargée de chaque monde. Conservez les fichiers du serveur de création et contrôlez la configuration exportée ; ne supposez pas que la commande réinitialise l'état d'installation.

Partager avec la communauté les packages de donjon que vous avez créés

Discord comporte une section #community_dungeons où les gens peuvent partager leurs créations de minidonjons. N'hésitez pas à contribuer !