Aller au contenu principal

Dungeon

Donjons instanciés avec salons de groupe, menus GUI, coffres de butin et éditeur de salles en jeu.

Payantesv1.2Combat et mobs
NécessiteTypeWriter0.9Quest (TypeWriter extension)GUIMMOCorefacultatifPartiesfacultatifAdvanced Slime PaperfacultatifPlaceholderAPIfacultatif

Vue d'ensemble​

Dungeon permet à un groupe de jouer une copie privée d'un donjon. Chaque traversée est une partie (« run ») : elle a son propre monde (ou son propre emplacement dans un monde partagé), ses propres membres, sa propre limite de temps, ses propres coffres, PNJ et mobs, et elle se termine proprement en renvoyant tout le monde là d'où il venait.

Un donjon est décrit par une seule entrée Dungeon Instance. Les joueurs le choisissent dans un menu global (un navigateur de donjons regroupés dans une catégorie), rejoignent un lobby dans le menu de groupe, se déclarent prêts, et sont téléportés à la fin du compte à rebours. Le personnel et les quêtes peuvent aussi envoyer directement un joueur dans un donjon avec l'action Dungeon Enter ou une commande.

Il existe deux types de donjon :

  • Fixe : vous construisez le donjon une fois dans un monde modèle. Les salles sont des zones que vous dessinez en jeu, et tout se passe aux endroits que vous définissez. C'est le donjon classique.
  • Généré : vous construisez des modèles de salles (petites structures avec des portes et des marqueurs) et un générateur assemble un nouvel agencement pour chaque partie, de la salle de départ à la salle du boss. La même graine donne toujours le même donjon. Voir Donjons générés.

Les deux types partagent les mêmes parties, menus, coffres, PNJ, mobs, événements et facts.

Paper uniquement

Dungeon cible Paper. Il n'est pas pris en charge sur Folia : le plugin Typewriter officiel n'y fonctionne pas.

Fonctionnalités​

  • Parties et groupes : une partie par groupe, plusieurs parties du même donjon en même temps (maxSimultaneousInstances), une limite de temps, des coûts d'entrée, une fin de partie par réussite, expiration du temps, partie vide ou fermeture par un administrateur. Voir Parties et isolation des mondes.
  • Trois modes d'isolation : SLIME_CLONE, WORLD_PER_RUN et SHARED_WORLD_SLOTS, choisis par donjon avec le champ isolation.
  • Donjons fixes : salles avec déclencheurs onEnter / onLeave, modificateurs, critères et priorité.
  • Donjons générés : modèles de salles, types de connecteurs, pools de salles, un générateur, des affixes, et un éditeur en jeu pour capturer les salles et placer portes et marqueurs.
  • Menu global et menu de groupe : dispositions de l'extension GUI, rafraîchies en direct pendant que les joueurs rejoignent et quittent les lobbies.
  • Coffres de butin : coffres en bloc ou ancrés sur un PNJ, réels ou côté client, un inventaire par joueur ou partagé, butin pondéré ou indépendant.
  • PNJ par partie : un PNJ visible uniquement par les membres d'une partie, à partir de n'importe quelle définition d'entité Typewriter. Voir Entités dans les donjons.
  • Mobs de combat : de vrais mobs vanilla qui apparaissent une fois par partie, avec équipement, attributs, règles de drop et déclencheurs à la mort, bornés par un plafond.
  • Événements, facts et actions : événements de début, de réussite, d'entrée dans une salle, de sortie d'une salle et de mort d'un mob ; facts « est dans un donjon » et « mobs en vie » ; actions pour terminer une partie, vider une salle et lancer une vague.
  • Statistiques : 22 statistiques par joueur (runs, meilleur temps, kills de mobs, dégâts infligés et subis, morts, vagues nettoyées...), lisibles avec des placeholders et un fact, et classables dans un classement GUI. Voir Statistiques.
  • Résistant aux rechargements : un typewriter reload ou une publication conserve les parties en cours. Un redémarrage du serveur les termine.
  • Groupes d'autres plugins : lit le groupe de MMOCore, Parties ou de l'extension de groupe Typewriter pour que les amis entrent ensemble.

Installation​

  1. Installez l'extension GUI depuis sa page. Les deux menus de Dungeon utilisent ses dispositions.
  2. Assurez-vous que l'extension Quest de TypeWriter est installée.
  3. Préparez ce dont votre mode d'isolation a besoin (voir Parties et isolation des mondes) :
    • Donjon fixe : un monde modèle, sous forme de dossier à la racine du serveur (à côté de world), par exemple dungeon_temple. Le nom peut contenir des lettres, des chiffres, _ et -, jusqu'à 64 caractères.
    • Donjon généré : pas de monde modèle. L'extension crée un monde vide pour chaque partie.
    • Clone Slime : Advanced Slime Paper avec le modèle chargé comme monde slime.
  4. Téléchargez Dungeon depuis les boutiques (voir les boutons du panneau ci-dessus) et placez le JAR dans plugins/Typewriter/extensions/.
  5. Redémarrez le serveur.
  6. Facultatif : installez MMOCore ou Parties pour la prise en charge des groupes externes, et PlaceholderAPI pour les placeholders.

Vous mettez à jour depuis la 0.10 ? Lisez d'abord la note de migration.

Premiers pas​

Ce pas-à-pas construit un donjon fixe avec un menu de lobby et un coffre. Pour un donjon généré, commencez par Donjons générés.

  1. Dans le panel web, ouvrez une page manifest et ajoutez une Dungeon Room Config. Placez-vous là où les joueurs doivent arriver, cliquez sur l'éditeur de contenu spawnPoint et confirmez. Le monde, les coordonnées et la direction du regard sont capturés.
  2. Ajoutez une Dungeon Instance. Définissez templateWorld sur le nom du dossier du monde, ajoutez la room config dans roomConfigurations, et définissez minPartySize et maxPartySize.
  3. Ajoutez un Dungeon Artifact (statistiques) et un Active Dungeon Instance Artifact (état des parties), et liez-les dans artifact et runtimeArtifact. Sans le second, les parties sont conservées dans un fichier runs.json de l'extension et un avertissement est écrit au chargement. Le champ partyLobbyArtifact n'est plus utilisé : laissez-le vide.
  4. Ajoutez une Dungeon Category. Dans instances, ajoutez un emplacement, définissez dungeonInstance et choisissez les objets déverrouillé et verrouillé.
  5. Sur une page sequence, ajoutez un Dungeon Global Menu et un Dungeon Party Menu. Dessinez les deux dispositions comme décrit dans Menus.
  6. Déclenchez le menu global depuis un dialogue de PNJ, un événement de commande ou tout autre déclencheur. Publiez.
  7. Ajoutez un Dungeon Loot Chest pour l'instance. Placez-vous là où le coffre doit se trouver, capturez location et remplissez lootTable.
  8. Ajoutez une action Dungeon Complete là où le donjon doit se terminer (par exemple à la fin d'un dialogue après le dernier coffre).
  9. Testez : ouvrez le menu, cliquez sur le donjon, cliquez sur le lobby, appuyez sur le bouton prêt.
astuce

Pour éviter les menus et envoyer un seul joueur directement dans un donjon, utilisez Dungeon Enter ou /typewriter dungeon enter <instance>. Le lobby est ignoré, mais pas les règles : la taille du groupe (un seul joueur doit être autorisé par minPartySize), les critères, le coût d'entrée et le nombre de parties simultanées sont tous vérifiés.

Fonctionnement​

Une partie démarre quand un lobby se lance ou quand une action Dungeon Enter s'exécute. L'extension vérifie les critères et la taille du groupe de chaque joueur, réserve une place (un double clic ne crée qu'une partie), prépare le monde, prélève le coût d'entrée (tout ou rien), téléporte les joueurs, puis déclenche onStart et applique modifiers pour chaque membre. Si quelque chose échoue en chemin, rien n'est conservé : les joueurs restent où ils étaient, le coût est remboursé et le monde est jeté.

Une partie se termine quand Dungeon Complete s'exécute, quand la limite de temps atteint zéro, quand Dungeon Close ou /typewriter dungeon close s'exécute, ou quand le dernier joueur part, change de monde ou se déconnecte. onEnd se déclenche pour chaque membre, les coffres, PNJ et mobs de la partie sont retirés, les joueurs sont téléportés au point de sortie (ou là d'où ils venaient), et le monde est libéré.

Une seule fin l'emporte quand plusieurs se produisent en même temps : vous n'obtenez donc jamais deux onEnd ni un double remboursement.

Rechargements et redémarrages​

Un typewriter reload ou une publication ne fait pas perdre les parties : elles sont réadoptées avec leurs membres, leur monde, leur échéance, l'état des salles (une salle once reste consommée), les coffres ouverts et les mobs déjà apparus. onStart, les modificateurs et les coffres ne sont pas rejoués. Un donjon généré est reconstruit en mémoire à partir de sa graine.

Un redémarrage du serveur termine les parties : les mondes des parties ont disparu, les joueurs sont renvoyés chez eux à leur prochaine connexion et les dossiers de mondes restants sont purgés. Les lobbies ne sont restaurés ni par l'un ni par l'autre.

Déconnexions​

Un membre qui se déconnecte d'un donjon en cours garde sa place pendant le reconnectGrace de la Dungeon Instance (2 minutes par défaut). Pendant ce temps, la run ne se ferme pas et les statistiques de ce membre ne sont pas versées. Un membre qui revient à temps réapparaît là où il était, avec sa sidebar, ses masquages et son mode de jeu comme avant. Quand le délai expire, il quitte la run, et à sa prochaine connexion il est renvoyé là d'où il est entré. La limite de temps de la run continue de courir.

Un membre qu'on attend reste un membre : si la run se termine entre-temps, il reçoit son issue comme les autres, réussite et meilleur temps compris, alors que les déclencheurs onEnd ne s'exécutent que pour les membres en ligne. 0 signifie aucun délai : une déconnexion retire le joueur aussitôt. Un typewriter reload pendant le délai y met fin pour les joueurs attendus.

Avec MMOProfiles installé, le retour est vérifié de nouveau une fois le profil choisi. Un joueur qui n'est dans aucune run et que le profil place dans un monde de donjon est renvoyé là d'où il est entré, et le mode de jeu qu'un donjon avait changé est rendu, quel que soit le mode restauré par le profil. Un joueur qui est dans sa run (en délai de grâce) reprend simplement. Sans MMOProfiles, rien ne change.

Dungeon possède deux menus. Les deux sont des actions avec un layoutPool GUI et un mainLayoutId. Les objets des dispositions fonctionnent comme n'importe quel objet GUI. Les objets dont le buttonType est l'une des valeurs ci-dessous sont complétés par Dungeon : votre objet (matériau, nom, lore) est conservé et un comportement de clic est ajouté. Écrivez buttonType en majuscules, exactement comme indiqué. Laissez buttonPrefix vide.

Les deux menus se redessinent tous les autoRefreshTicks (20 par défaut, borné entre 10 et 1200) et immédiatement, pour chaque joueur qui les a ouverts, dès qu'un lobby des donjons qu'ils affichent change. Un joueur voit un autre joueur rejoindre sans cliquer.

Pour les types de disposition, les champs d'objet (x, y, count, direction, gap, repeatY) et les actions de clic, lisez le guide GUI. Une construction pas à pas se trouve dans Concevoir les menus.

Le Dungeon Global Menu affiche les donjons d'une category. Il s'ouvre quand l'action est déclenchée, ou avec /typewriter dungeon global-menu <category>.

buttonTypeComportement
DUNGEON_INSTANCE_SLOTMarque l'endroit où apparaît un donjon. Placez-en un par donjon, ou utilisez count, direction, gap et repeatY pour marquer une rangée ou un bloc. Chaque marqueur est remplacé par le donjon suivant de la catégorie. Les marqueurs en trop restent vides.
DUNGEON_FIND_PARTYUn clic gauche rejoint le premier lobby non vide qui a encore de la place, parmi les donjons déverrouillés de la catégorie, et ouvre le menu de groupe. Si le joueur est déjà dans un lobby de la catégorie, il le quitte à la place.
DUNGEON_INFOAffichage seulement. Utilisez-le pour un objet d'aide.

Comment les donjons sont dessinés :

  • Les donjons sont triés par categoryPriority (le plus bas d'abord), puis par id d'entrée.
  • Un emplacement s'affiche avec unlockedItem, unlockedName et unlockLore quand ses criteria correspondent au joueur (une liste vide correspond toujours). Cliquer dessus ouvre le menu de groupe de ce donjon.
  • Un emplacement dont les criteria ne correspondent pas s'affiche avec l'apparence verrouillée et ne peut pas être ouvert. Les critères sont évalués pour chaque joueur qui ouvre le menu, et à nouveau quand le joueur clique.
  • Les noms et le lore peuvent utiliser {dungeon_name}, {players} et {max}, ainsi que les placeholders PlaceholderAPI. {players} est la taille du premier lobby du donjon.
  • Placez les marqueurs DUNGEON_INSTANCE_SLOT dans des dispositions simple, paginated ou scrollable. Si la disposition de base est défilante, les donjons défilent avec elle.
  • Sans aucun marqueur DUNGEON_INSTANCE_SLOT, aucun donjon n'est affiché.

Le Dungeon Party Menu est le lobby. Il s'ouvre quand un joueur clique sur un donjon dans le menu global, et avec /typewriter dungeon instance-menu <instance>. Déclencher l'action elle-même ne fait rien d'autre qu'afficher une indication : ne la reliez donc pas à un PNJ.

Quel menu sert quel donjon. Un menu de groupe dont le dungeonInstance nomme le donjon le sert. Un menu de groupe dont le dungeonInstance est vide sert tous les donjons qu'aucun autre menu ne nomme. Un menu écrit pour un autre donjon n'est jamais ouvert à la place : quand aucun ne convient, le joueur en est informé et le journal du serveur indique No dungeon_party_menu serves '<instance>'. Vous pouvez donc avoir un menu par donjon, un menu partagé, ou les deux.

Un donjon a autant de lobbies que son maxSimultaneousInstances. Chaque lobby est un objet : lobbyItem nommé avec lobbyName et décrit avec lobbyLore. Où les lobbies sont dessinés :

  • Avec des marqueurs DUNGEON_LOBBY_SLOT dans une disposition simple (comme pour DUNGEON_INSTANCE_SLOT, utilisez count, direction et gap pour en marquer plusieurs), chaque marqueur est remplacé par le lobby suivant.
  • Sans aucun marqueur, le lobby n est placé à la colonne lobbyOffsetX + (n mod 9) et à la ligne lobbyOffsetY + (n div 9), en comptant à partir de 0.

Cliquer sur un lobby le rejoint.

Placeholder dans lobbyName et lobbyLoreValeur
{index}Numéro du lobby, à partir de 1.
{players}, {max}Joueurs dans le lobby, et maxPartySize.
{player_names}Noms des membres, entourés du préfixe et du suffixe prêt ou pas prêt. Lore uniquement.
{ready_players}, {not_ready_players}Compteurs. Lore uniquement.

readyPlayerPrefix, readyPlayerSuffix, notReadyPlayerPrefix et notReadyPlayerSuffix colorent les noms dans {player_names}.

buttonTypeComportement
DUNGEON_LOBBY_SLOTMarque l'endroit où apparaît un lobby.
DUNGEON_READYBascule l'état prêt. Si le joueur n'a pas le coût d'entrée, personne n'est marqué prêt et le lobby reçoit le missingItemsMessage du donjon.
DUNGEON_LEAVEQuitte le lobby et revient au menu global d'où venait le joueur.
DUNGEON_AUTO_FILLRejoint le premier lobby non vide ayant une place libre.

Quand la partie démarre :

  1. Tous les membres du lobby doivent être prêts et le lobby doit compter au moins minPartySize joueurs.
  2. Un compte à rebours de startCooldownSeconds s'écoule. Il s'arrête si quelqu'un annule son état prêt. Avec 0, la partie démarre immédiatement.
  3. Les critères sont vérifiés pour chaque joueur, puis les coûts d'entrée. Avec entryCostMode à LEADER, le premier joueur du lobby paie. Avec GROUP, tout le monde paie. Les objets ne sont prélevés que si personne ne manque de rien.
  4. La partie est créée et les joueurs sont téléportés au point d'apparition.

Un lobby qui attend sans compte à rebours pendant lobbyIdleKickSeconds (120 secondes par défaut) est vidé. Un administrateur peut lancer un lobby à la main avec /typewriter dungeon force-start <instance>, ce qui ignore la taille minimale du groupe et les critères.

Pendant que les joueurs attendent, le menu de groupe peut afficher un scoreboard d'attente (enableWaitingScoreboard, scoreboardTitle, scoreboardWaiting avec {missing}, scoreboardCountdown avec {time}).

Groupes d'autres plugins. Si MMOCore (avec son propre module de groupe), Parties ou l'extension de groupe Typewriter est installé, Dungeon lit ses groupes et ne les crée, fusionne ou modifie jamais. Quand un joueur rejoint un lobby, tout son groupe le rejoint avec lui si le lobby a la place pour tous. MMOCore est utilisé seul quand il est présent.

Commandes utilisées par les boutons​

Les boutons n'utilisent pas de commande serveur : ils appellent un gestionnaire interne du système de menus, les joueurs n'ont donc besoin d'aucune permission et il n'y a rien à saisir à la main.

Configuration​

L'extension n'a pas de fichier de configuration. La plupart des réglages se trouvent sur les entrées. Les messages des entrées d'action (Enter, Leave, Close, Complete) et de l'instance de donjon (missingItemsMessage) sont des champs. Le délai d'inactivité d'un lobby est le champ lobbyIdleKickSeconds de l'instance de donjon (par défaut 120, soit 2 minutes).

Tous les autres textes que lit un joueur sont des snippets Typewriter : rien n'est figé dans le code, vous pouvez donc les modifier ou les traduire dans le panel web (snippets). Les valeurs sont en MiniMessage, et les placeholders {...} sont remplacés comme indiqué. Gardez les valeurs par défaut et rien ne change.

FamilleClés (après le préfixe)
content.dungeon_menu.invalid_action, action_failed, in_instance, party_in_instance, global_in_instance, locked, lobby_unavailable, left_lobby, not_in_lobby, no_lobby_available, left_party, no_party_found, no_party_menu ({dungeon}), no_category, party_needs_dungeon
content.dungeon_lobby.idle_kick ({seconds}, {minutes}), party_sync, missing_items_fallback ({PlayerName}, {MissingQuantity}, {ItemName} ; utilisé quand missingItemsMessage est vide), scoreboard_syncing
content.dungeon_run.sidebar.time_left ({seconds}), quest ({number}). Une ligne de barre latérale est du texte brut : les balises MiniMessage sont retirées.
content.dungeon_chest.default_title (titre d'un coffre dont containerTitle est vide), trigger_chest_missing, trigger_not_manual
content.dungeon_launch.prefix (placé devant chaque texte de la famille), no_online_member, already_in_run ({player}), no_room_configuration, group_size ({size}, {min}, {max}), criteria_not_met ({player}), missing_cost et missing_cost_leader ({player}, {amount}, {item}), max_runs_reached, isolation_unavailable, generation_failed ({text}), failed
content.dungeon_stats.L'écriture des placeholders de statistiques : duration_format (jetons {h}, {m}, {mm}, {ss}, {SSS} ; par défaut {mm}:{ss}) et missing_value (ce qui est écrit pour une valeur qui n'existe pas encore ; par défaut -).
content.dungeon_command.Les réponses des commandes /typewriter dungeon ... : only_players.close, only_players.enter, only_players.leave, only_players.menu, only_players.force_start, only_players.edit_room (envoyé à la console), not_in_run, close.done, close.already_closing, enter.done ({dungeon}), leave.done ({dungeon}), instance_menu.join_failed, instance_menu.joined ({dungeon}), global_menu.not_configured ({category}), force_start.not_in_lobby, force_start.done ({dungeon}), room.invalid_index ({index})
content.dungeon_room., content.dungeon_room_template., content.dungeon_generated.Éditeurs de salles et refus de donjons générés.

Les réponses des commandes /typewriter dungeon ... sont elles aussi des snippets, même si ces commandes sont réservées au staff. Les réponses de l'éditeur de salles (addnode, removenode, save...) se trouvent dans content.dungeon_room., et le texte d'un enter refusé est un snippet de content.dungeon_launch..

Les artifacts stockent des données sous plugins/Typewriter/ :

ArtifactContenu
Dungeon ArtifactStatistiques par donjon et par joueur (artifactId par défaut dungeon_data).
Active Dungeon Instance ArtifactÉtat des parties en cours, pour qu'un rechargement ne les perde pas.
Dungeon Room TemplateLa structure enregistrée d'une salle d'un donjon généré.
Dungeon Party Lobby ArtifactInerte. Conservé pour que les anciennes pages se chargent encore.

Commandes​

Toutes les commandes de Dungeon se trouvent sous /typewriter dungeon (/tw dungeon). Chacune exige la permission typewriter.dungeon.admin et doit être exécutée par un joueur.

CommandeDescription
/typewriter dungeon enter <instance>Crée une partie pour vous seul et vous y téléporte. La taille du groupe, les critères, le coût d'entrée et la limite de parties s'appliquent toujours.
/typewriter dungeon leave <instance>Vous retire de votre partie de ce donjon et vous ramène là d'où vous veniez.
/typewriter dungeon close <instance>Termine votre propre partie de ce donjon (fermeture par un administrateur).
/typewriter dungeon global-menu <category>Ouvre le menu global configuré pour la catégorie.
/typewriter dungeon instance-menu <instance>Rejoint le premier lobby ayant de la place pour votre groupe et ouvre le menu de groupe.
/typewriter dungeon force-start <instance>Lance le lobby où vous êtes sans attendre l'état prêt, le compte à rebours, la taille minimale du groupe ni les critères.
/typewriter dungeon room <room> editOuvre l'éditeur de salle en jeu pour une Dungeon Room.
/typewriter dungeon room <room> addnodeAjoute un nœud à vos pieds.
/typewriter dungeon room <room> removenodeRetire le dernier nœud.
/typewriter dungeon room <room> removenodeat <index>Retire un nœud par son numéro, à partir de 1.
/typewriter dungeon room <room> saveEnregistre la salle.
/typewriter dungeon room <room> cancelAnnule la modification.

leave et close exigent que vous soyez dans une partie du donjon nommé, sinon ils répondent « You are not in a run of this dungeon » (le snippet content.dungeon_command.not_in_run). L'ancienne sous-commande start n'existe plus : utilisez enter.

Les modèles de salles des donjons générés se modifient depuis le panel web (l'éditeur de contenu du champ artifactId), pas avec une commande. Voir Donjons générés.

Éditeur de salles (donjons fixes)​

edit ouvre un éditeur avec une barre d'outils dans votre barre rapide : le bâton de blaze en emplacement 1 ajoute un nœud (sur le bloc que vous regardez, ou à vos pieds en vous accroupissant), la redstone en emplacement 2 retire le dernier nœud, et la teinture verte en emplacement 8 enregistre et quitte. Un double appui sur accroupissement quitte sans enregistrer. Les nœuds sont affichés comme des blocs avec un contour de particules ; accroupissez-vous et cliquez sur un nœud pour le supprimer. Un nœud donne une salle ponctuelle (rayon de 0,5 bloc), deux donnent une ligne, trois ou plus un polygone. L'étendue verticale vient du nœud le plus bas et du plus haut, plus verticalMargin.

Permissions​

PermissionAccorde
typewriter.dungeon.adminToutes les commandes /typewriter dungeon, y compris l'éditeur de salles.

Les joueurs n'ont besoin d'aucune permission pour utiliser les menus.

Statistiques​

Dungeon compte ce que fait chaque joueur pendant une run et le conserve, pour chaque Dungeon Artifact, sous la forme de 22 statistiques. Les compteurs d'une run sont gardés pendant sa durée et chaque membre est versé une seule fois, quand il quitte la run ou qu'elle se termine ; rien n'est écrit sur le disque coup par coup, et un typewriter reload conserve les compteurs des runs en cours. Un donjon qui partage son artefact avec un autre alimente les mêmes statistiques.

CléUnitéContenu
runs_startednombreRuns commencées, comptées au démarrage même si la run est perdue.
runs_completednombreRuns terminées avec le joueur encore dedans.
best_timeduréePlus court temps d'une run terminée (un record : aucune valeur avant la première réussite).
runs_timed_outnombreRuns dont la limite de temps a expiré avec le joueur encore dedans.
runs_leftnombreRuns que le joueur a quittées de lui-même, ou dont le délai de reconnexion a expiré. Une mort qui fait sortir le joueur de la run n'est pas comptée ici (elle reste dans deaths).
mob_killsnombreMobs tués.
damage_dealtvieDégâts infligés aux mobs, tels qu'ils ont réellement retiré de la vie : un coup de 100 sur une cible qui avait 2 PV compte 2.
damage_takenvieDégâts subis, avec la même limite (les PV et l'absorption que le joueur avait).
deathsnombreMorts.
time_playedduréeTemps passé en run.
completion_ratetauxruns_completed rapporté à runs_started, calculé à la lecture et écrit en pourcentage.
current_healthviePV du joueur à l'instant. N'a de valeur que pendant une run : jamais enregistré.
best_run_killsnombrePlus grand nombre de mobs tués dans une seule run (un record).
best_run_damageviePlus grands dégâts infligés dans une seule run (un record).
flawless_completionsnombreRuns terminées sans aucune mort.
solo_completionsnombreRuns terminées qui ont commencé avec un seul membre.
best_time_soloduréePlus court temps d'une run solo terminée.
health_regainedvieVie réellement regagnée, jamais plus que ce qui manquait.
rooms_enterednombreSalles où le joueur est entré ; une salle visitée deux fois dans une run compte une fois.
rooms_clearednombreSalles nettoyées avec Dungeon Clear Room, pour les membres présents dans la salle.
chests_openednombreCoffres de butin ouverts, une fois par coffre pour le joueur qui a généré son butin.
waves_clearednombreVagues nettoyées. Seules les vraies vagues comptent : les groupes d'un Dungeon Mob Spawn qui définissent waves.

Unités : une vie est en points de vie (un cœur vaut deux), une durée s'écrit mm:ss sauf réglage contraire des snippets, et un taux s'écrit en pourcentage.

Ce qui compte :

  • Seuls les membres d'une run active, dans le monde de leur run, en SURVIVAL ou ADVENTURE. Un joueur en CREATIVE ou SPECTATOR ne compte pour rien : un admin qui observe une run ne peut pas dominer un classement.
  • Les mobs comptés se règlent avec statsMobScope sur la Dungeon Instance. MARKED_ONLY (par défaut) : seulement les mobs créés par la run (marqués dungeon_mob_run) ; les morceaux d'un slime qui se divise ne comptent jamais comme des kills. ANY_MOB_IN_RUN_WORLD : aussi les autres mobs du monde de la run, comme un boss posé par un autre plugin. Refusé avec SHARED_WORLD_SLOTS, dont le monde contient d'autres runs : MARKED_ONLY y est utilisé et un avertissement est écrit au chargement.
  • Les statistiques sont comptées par artefact. Sur plusieurs artefacts, les totaux additionnent les compteurs et gardent le meilleur record ; deux artefacts de même artifactId ne font qu'un fichier et comptent une fois.

Lisez-les avec les placeholders, avec le fact Player Dungeon Statistic, ou classez-les dans un classement GUI avec une Dungeon Leaderboard Source (GUI 0.20 ou plus récent).

Placeholders​

Les placeholders PlaceholderAPI utilisent le préfixe %typewriter_dungeon_…%. Les placeholders relatifs à la partie en cours renvoient 0 ou une valeur vide quand le joueur n'est pas dans une partie. Exception : %typewriter_dungeon_stat_KEY% et sa forme _raw ne se résolvent que pendant une partie ; hors partie, ils restent affichés tels quels. Seuls dungeon_total_KEY et dungeon_inst_ID_KEY fonctionnent hors partie.

PlaceholderRenvoie
%typewriter_dungeon_remaining%Secondes restantes dans la partie du joueur.
%typewriter_dungeon_remaining_formatted%Temps restant au format mm:ss.
%typewriter_dungeon_players%Joueurs dans la partie du joueur.
%typewriter_dungeon_max%maxPartySize du donjon du joueur.
%typewriter_dungeon_list%Noms des joueurs de la partie, séparés par des virgules.
%typewriter_dungeon_player_N_name%Nom du N-ième joueur de la partie (à partir de 1).
%typewriter_dungeon_player_N_health%, …_maxhealth%, …_healthpercent%Vie, vie maximale et pourcentage du N-ième joueur.
%typewriter_dungeon_player_health_N%Nom: vie/max du N-ième joueur.
%typewriter_dungeon_lobby_time%Secondes restantes sur le compte à rebours du lobby du joueur. Ajoutez _formatted pour mm:ss.
%typewriter_dungeon_attempts%, %typewriter_dungeon_completions%, %typewriter_dungeon_best%Tentatives, réussites et meilleur temps du joueur pour le donjon où il se trouve.
%typewriter_dungeon_total_attempts%, …_total_completions%, …_total_ratio%Totaux sur tous les donjons, et pourcentage de réussite.
%typewriter_dungeon_inst_ID_attempts%, …_completions%, …_best%Les mêmes statistiques pour le donjon dont l'id d'entrée est ID. L'id ne doit pas contenir de tiret bas.
%typewriter_dungeon_stat_KEY%, …_stat_KEY_raw%N'importe quelle statistique du joueur, dans l'artefact du donjon où il se trouve. KEY est la clé du tableau, par exemple %typewriter_dungeon_stat_mob_kills%. _raw donne le nombre brut de l'unité (millisecondes, points de vie, pour mille), 0 s'il n'y a pas de valeur.
%typewriter_dungeon_total_KEY%, …_total_KEY_raw%La même statistique sur tous les donjons.
%typewriter_dungeon_inst_ID_KEY%, …_inst_ID_KEY_raw%La même statistique pour le donjon dont l'id d'entrée est ID.

current_health n'a de valeur que dans dungeon_stat_current_health, pendant une run. Une durée s'écrit avec le snippet content.dungeon_stats.duration_format et une valeur manquante avec content.dungeon_stats.missing_value.

Les statistiques proviennent du Dungeon Artifact lié dans le champ artifact du donjon. Dungeon les écrit lui-même (tentatives au démarrage d'une partie, réussites et meilleur temps à la réussite d'une partie). Le meilleur temps d'un joueur est conservé une seule fois par artifact, sur tous les donjons qui le partagent : donnez à chaque donjon son propre artifact quand chacun doit avoir son meilleur temps. Les statistiques sont rangées par profil MMOProfiles quand ce plugin est installé, sinon par joueur. Il n'y a rien à configurer.

Entrées​

39 entrées, générées depuis la source de l'extension.

Actions9
Événements6
Faits4
Audiences1
Entités1
Groupes1
Artefacts4
Manifestes13

Dépannage​

Le menu ne s'ouvre pas. L'extension GUI est absente, ou mainLayoutId ne correspond pas à l'id d'une disposition de layoutPool. Installez GUI, puis vérifiez l'id.

Les donjons n'apparaissent pas dans le menu global. La disposition n'a aucun objet avec buttonType défini sur DUNGEON_INSTANCE_SLOT, ou les marqueurs sont dans un type de disposition autre que simple, paginated ou scrollable.

Un bouton ne fait rien ou ne ressemble pas à un bouton. buttonType est sensible à la casse et doit être l'un de DUNGEON_FIND_PARTY, DUNGEON_INFO, DUNGEON_INSTANCE_SLOT, DUNGEON_LOBBY_SLOT, DUNGEON_READY, DUNGEON_LEAVE ou DUNGEON_AUTO_FILL. Un bouton global dans le menu de groupe, ou l'inverse, est ignoré.

Un donjon s'affiche comme verrouillé (Locked). Les criteria de son emplacement dans la catégorie ne correspondent pas à ce joueur. Vérifiez-les avec les facts du joueur, ou videz la liste.

Cliquer sur un donjon n'affiche rien et aucun menu ne s'ouvre. Aucun menu de groupe ne sert le donjon. Cherchez No dungeon_party_menu serves dans le journal du serveur, puis créez-en un avec un dungeonInstance vide ou un qui nomme le donjon.

« The dungeon cannot be started on this server. » Le mode d'isolation du donjon ne peut pas fonctionner ici (par exemple SLIME_CLONE sans Advanced Slime Paper), ou il ne peut pas contenir un donjon généré. Il n'y a pas de repli vers un autre mode. Voir Parties et isolation des mondes.

« The group has N player(s): this dungeon needs X to Y. » Le lobby ou la commande enter a été utilisé avec un groupe hors de minPartySize à maxPartySize. Un administrateur peut utiliser force-start depuis un lobby.

« All the runs of this dungeon are taken. » maxSimultaneousInstances parties sont déjà actives.

Les joueurs arrivent dans un nouveau monde vide. templateWorld ne correspond à aucun dossier de monde à la racine du serveur. Le journal indique Cannot teleport player … world '…' not found quand le monde ne peut pas du tout être chargé.

Les joueurs sont sans cesse éjectés de la partie. Quitter le monde de la partie, même par une commande, retire le joueur de celle-ci. Le départ du dernier joueur termine la partie.

Un coffre de butin déclenché par Loot Chest Trigger ne revient jamais. Le triggerMode par défaut ONCE signifie une fois par partie. Utilisez REPEATABLE pour le déclencher plusieurs fois dans la même partie. La partie suivante repart de zéro.

Un PNJ n'apparaît jamais. Dans un donjon généré, le PNJ n'apparaît que via un marqueur NPC d'une salle de la partie. Dans un donjon fixe, vérifiez allowedDungeonIds et spawnLocation. Voir Entités dans les donjons.

Une salle est vide de mobs alors qu'aucun mob n'est en vie. Le plafond maxAliveMobs a pu en retenir certains, et un rechargement fait recompter l'extension. N'utilisez pas Dungeon Mobs Alive pour décider qu'une salle est vidée : utilisez l'événement de mort d'un mob.

Extensions associées​