Zum Hauptinhalt springen

Dungeon

Die Dungeon-Erweiterung bietet ein umfassendes Framework zum Erstellen und Verwalten instanzierter Dungeons mit polygonbasierter Raumerkennung, globalen/Gruppen-Menüs, Beutekisten und Gruppensynchronisation.

Funktionen

  • Instanzierte Welten — Dedizierte Welten, die pro Dungeon-Durchlauf mit vorlagenbasierter Generierung erstellt werden.
    • Räume und Auslöser — Polygonbasierte Räume mit onEnter/onLeave-Auslösern, Priorität und Kriterien.
    • Menüsystem — Globaler Dungeon-Browser + Gruppen-Lobby mit vollständiger Anpassung des Interface-Layouts.
    • Beutekisten — Zufällige Kisten mit NPC-Ankern, manuellen Auslösern und virtuellen clientseitigen Blöcken.
    • Gruppensystem — Integrierte Lobby mit Bereit/Nicht-bereit-Zuständen. Optionale Adapter für MMOCore, Parties.
    • Raumeditor — Visueller In-Game-Raumeditor mit Partikelkanten, Knotenmanipulation und Werkzeugleiste.

Berechtigungen

PermissionBeschreibung
typewriter.dungeon.adminDungeons und den Raumeditor verwalten.

Abhängigkeiten

ExtensionErforderlichVerwendung
GUI ExtensionErforderlichAlle Menüs verwenden das GUI-Layoutsystem (layoutPool, mainLayoutId). Ohne sie öffnet sich kein Menü.
QuestExtensionErforderlichLaufzeitabhängigkeit für die Quest-Integration (Ref<QuestEntry>).
PartyExtensionOptionalExternes Gruppen-Plugin (Parties, MMOCore). Dungeon hat eine integrierte Lobby, die eigenständig funktioniert.
PlaceholderAPIOptionalZur Auflösung von @Placeholder-Platzhaltern in Nachrichten.

Architektur

Einträge

Schnellstart-Anleitung

Schritt 1 — Einen Raum definieren

Verwende /dungeon room my_room edit, um in den visuellen Raumeditor zu gelangen. Platziere Knoten, um eine polygonale Grenze zu bilden. Speichere mit Hellgrünem Farbstoff.

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"

Schritt 2 — Räume in einer Konfiguration gruppieren

dungeon_room_config:
id: "dungeon_layout"
name: "Default Layout"
rooms:
- "boss_room"
- "entrance_room"
spawnPoint:
x: 15
y: 65
z: 15
world: "dungeon_template"

Schritt 3 — Die Dungeon-Instanz definieren

dungeon_instance:
id: "ancient_temple"
name: "Ancient Temple"
templateWorld: "dungeon_template"
roomConfigurations:
- "dungeon_layout"
minPartySize: 1
maxPartySize: 4
cooldownSeconds: 300

Schritt 4 — Eine Kategorie und ein Menü erstellen

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: []

Schritt 5 — Das Menü auslösen

Von jeder Aktion, jedem Befehl, NPC-Dialog oder Eintragsauslöser:

action:
type: dungeon_global_menu
id: "open_dungeons"
globalMenu: "dungeon_hub"

Oder per Befehl: /dungeon global-menu main_dungeons

Befehle

BefehlBeschreibung
/dungeon global-menu <category>Den globalen Dungeon-Browser öffnen
/dungeon party-menu <instance>Die Gruppen-Lobby für eine bestimmte Instanz öffnen
/dungeon room <room> editIn den visuellen Raumeditor gelangen
/dungeon room <room> addvertexKnoten am anvisierten Block hinzufügen
/dungeon room <room> removevertexat <index>Knoten nach Index entfernen
/dungeon room <room> saveRaum speichern und Editor verlassen
/dungeon room <room> cancelBearbeitung abbrechen

Platzhalter

Alle Platzhalter verwenden das Präfix %typewriter_dungeon_%.

PlatzhalterBeschreibung
%typewriter_dungeon_players%Anzahl der Spieler im aktuellen Dungeon.
%typewriter_dungeon_attempts%Gesamtzahl der Versuche in diesem Dungeon (Artefakt pro Spieler).
%typewriter_dungeon_completions%Anzahl der Abschlüsse (Artefakt pro Spieler).
%typewriter_dungeon_best_time%Beste formatierte Abschlusszeit (Artefakt pro Spieler).