Aller au contenu principal

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

PermissionDescription
typewriter.dungeon.adminAdministrer les donjons et l'éditeur de salles.

Dépendances

ExtensionRequisUtilisation
GUI ExtensionRequisTous les menus utilisent le système de disposition de la GUI (layoutPool, mainLayoutId). Sans elle, aucun menu ne s'ouvrira.
QuestExtensionRequisDépendance d'exécution pour l'intégration des quêtes (Ref<QuestEntry>).
PartyExtensionOptionnelPlugin de groupe externe (Parties, MMOCore). Dungeon dispose d'un hall intégré qui fonctionne de manière autonome.
PlaceholderAPIOptionnelPour la résolution des placeholders @Placeholder dans les messages.

Architecture

Entrées

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

CommandeDescription
/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> editEntrer dans l'éditeur de salles visuel
/dungeon room <room> addvertexAjouter un nœud au bloc visé
/dungeon room <room> removevertexat <index>Retirer un nœud par index
/dungeon room <room> saveSauvegarder la salle et quitter l'éditeur
/dungeon room <room> cancelAnnuler l'édition

Placeholders

Tous les placeholders utilisent le préfixe %typewriter_dungeon_%.

PlaceholderDescription
%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).