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
| Permission | Beschreibung |
|---|---|
typewriter.dungeon.admin | Dungeons und den Raumeditor verwalten. |
Abhängigkeiten
| Extension | Erforderlich | Verwendung |
|---|---|---|
| GUI Extension | Erforderlich | Alle Menüs verwenden das GUI-Layoutsystem (layoutPool, mainLayoutId). Ohne sie öffnet sich kein Menü. |
| QuestExtension | Erforderlich | Laufzeitabhängigkeit für die Quest-Integration (Ref<QuestEntry>). |
| PartyExtension | Optional | Externes Gruppen-Plugin (Parties, MMOCore). Dungeon hat eine integrierte Lobby, die eigenständig funktioniert. |
| PlaceholderAPI | Optional | Zur Auflösung von @Placeholder-Platzhaltern in Nachrichten. |
Architektur
Einträge
- Definitionen — Dungeon Instance: Regeln, Kosten und Gruppenkonfiguration. Category: gruppiert Dungeons in Menüs. Room: Polygon-Grundriss mit Eintritts-/Austrittsauslösern. Room Config: Raumsatz + Erscheinungspunkt. Loot Chest: zufällige Belohnungsbehälter.
- Aktionen — Global Menu: alle Dungeons durchsuchen. Party Menu: Lobby-Koordination. Enter: Beitrittslogik des Spielers. Leave: Austrittslogik des Spielers. Close: Instanz herunterfahren. Loot Chest Trigger: manuelle Aktivierung einer Kiste.
- Fakten — InDungeon Fact: prüfen, ob der Spieler in einem Dungeon ist. InDungeonInstance Fact: einen bestimmten Dungeon prüfen.
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
| Befehl | Beschreibung |
|---|---|
/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> edit | In den visuellen Raumeditor gelangen |
/dungeon room <room> addvertex | Knoten am anvisierten Block hinzufügen |
/dungeon room <room> removevertexat <index> | Knoten nach Index entfernen |
/dungeon room <room> save | Raum speichern und Editor verlassen |
/dungeon room <room> cancel | Bearbeitung abbrechen |
Platzhalter
Alle Platzhalter verwenden das Präfix %typewriter_dungeon_%.
| Platzhalter | Beschreibung |
|---|---|
%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). |