Dungeon
L'extension Dungeon fournit un framework complet pour créer et gérer des donjons instanciés, avec détection de salles basée sur des polygones, menus globaux/de groupe, coffres de butin et synchronisation de groupe.
Fonctionnalités
- Mondes instanciés — Mondes dédiés créés à chaque partie de donjon, avec génération basée sur un modèle.
- Salles et déclencheurs — Salles basées sur des polygones avec déclencheurs onEnter/onLeave, priorité et critères.
- Système de menus — Navigateur global de donjons + hall de groupe avec personnalisation complète de la disposition de l'interface.
- Coffres de butin — Coffres aléatoires avec ancres de PNJ, déclencheurs manuels et blocs virtuels côté client.
- Système de groupe — Hall intégré avec états prêt/pas prêt. Adaptateurs optionnels pour MMOCore, Parties.
- Éditeur de salles — Éditeur de salles visuel en jeu avec arêtes en particules, manipulation de nœuds et barre d'outils.
Permissions
| Permission | Description |
|---|---|
typewriter.dungeon.admin | Administrer les donjons et l'éditeur de salles. |
Dépendances
| Extension | Requis | Utilisation |
|---|---|---|
| GUI Extension | Requis | Tous les menus utilisent le système de disposition de la GUI (layoutPool, mainLayoutId). Sans elle, aucun menu ne s'ouvrira. |
| QuestExtension | Requis | Dépendance d'exécution pour l'intégration des quêtes (Ref<QuestEntry>). |
| PartyExtension | Optionnel | Plugin de groupe externe (Parties, MMOCore). Dungeon dispose d'un hall intégré qui fonctionne de manière autonome. |
| PlaceholderAPI | Optionnel | Pour la résolution des placeholders @Placeholder dans les messages. |
Architecture
Entrées
- Définitions — Dungeon Instance : règles, coûts et configuration de groupe. Category : regroupe les donjons dans les menus. Room : empreinte polygonale avec déclencheurs d'entrée/sortie. Room Config : ensemble de salles + point d'apparition. Loot Chest : conteneurs de récompenses aléatoires.
- Actions — Global Menu : parcourir tous les donjons. Party Menu : coordination du hall. Enter : logique d'entrée du joueur. Leave : logique de sortie du joueur. Close : arrêter l'instance. Loot Chest Trigger : activation manuelle d'un coffre.
- Faits — InDungeon Fact : vérifier si le joueur est dans un donjon. InDungeonInstance Fact : vérifier un donjon précis.
Guide de démarrage rapide
Étape 1 — Définir une salle
Utilisez /dungeon room my_room edit pour entrer dans l'éditeur de salles visuel. Placez des nœuds pour former une limite polygonale. Sauvegardez avec de la teinture vert clair.
dungeon_room:
id: "boss_room"
name: "Boss Arena"
nodes:
- {x: 10, y: 64, z: 10}
- {x: 20, y: 64, z: 10}
- {x: 20, y: 64, z: 20}
- {x: 10, y: 64, z: 20}
priority: 1
onEnter:
- "boss_spawn_trigger"
Étape 2 — Regrouper des salles dans une configuration
dungeon_room_config:
id: "dungeon_layout"
name: "Default Layout"
rooms:
- "boss_room"
- "entrance_room"
spawnPoint:
x: 15
y: 65
z: 15
world: "dungeon_template"
Étape 3 — Définir l'instance de donjon
dungeon_instance:
id: "ancient_temple"
name: "Ancient Temple"
templateWorld: "dungeon_template"
roomConfigurations:
- "dungeon_layout"
minPartySize: 1
maxPartySize: 4
cooldownSeconds: 300
Étape 4 — Créer une catégorie et un menu
dungeon_category:
id: "main_dungeons"
name: "Main Dungeons"
instances:
- dungeonInstance: "ancient_temple"
unlockedItem: STONE_BRICKS
unlockedName: "<gold>Ancient Temple</gold>"
unlockedLore:
- "<gray>Players: {players}/{max}"
dungeon_global_menu:
id: "dungeon_hub"
category: "main_dungeons"
inventoryTitle: "<bold><gold>⚔ Dungeons</gold></bold>"
layoutPool:
- id: "main"
type: simple
items: []
Étape 5 — Déclencher le menu
Depuis n'importe quelle action, commande, dialogue de PNJ ou déclencheur d'entrée :
action:
type: dungeon_global_menu
id: "open_dungeons"
globalMenu: "dungeon_hub"
Ou via la commande : /dungeon global-menu main_dungeons
Commandes
| Commande | Description |
|---|---|
/dungeon global-menu <category> | Ouvrir le navigateur global de donjons |
/dungeon party-menu <instance> | Ouvrir le hall de groupe d'une instance précise |
/dungeon room <room> edit | Entrer dans l'éditeur de salles visuel |
/dungeon room <room> addvertex | Ajouter un nœud au bloc visé |
/dungeon room <room> removevertexat <index> | Retirer un nœud par index |
/dungeon room <room> save | Sauvegarder la salle et quitter l'éditeur |
/dungeon room <room> cancel | Annuler l'édition |
Placeholders
Tous les placeholders utilisent le préfixe %typewriter_dungeon_%.
| Placeholder | Description |
|---|---|
%typewriter_dungeon_players% | Nombre de joueurs dans le donjon actuel. |
%typewriter_dungeon_attempts% | Total des tentatives sur ce donjon (artefact par joueur). |
%typewriter_dungeon_completions% | Nombre de complétions (artefact par joueur). |
%typewriter_dungeon_best_time% | Meilleur temps de complétion formaté (artefact par joueur). |