Dungeon
La extensión Dungeon proporciona un framework completo para crear y gestionar mazmorras instanciadas, con detección de salas basada en polígonos, menús globales/de grupo, cofres de botín y sincronización de grupo.
Características
- Mundos instanciados — Mundos dedicados creados por cada partida de mazmorra, con generación basada en plantilla.
- Salas y disparadores — Salas basadas en polígonos con disparadores onEnter/onLeave, prioridad y criterios.
- Sistema de menús — Navegador global de mazmorras + sala de grupo con personalización completa del diseño de la interfaz.
- Cofres de botín — Cofres aleatorios con anclas de NPC, disparadores manuales y bloques virtuales del lado del cliente.
- Sistema de grupo — Sala integrada con estados listo/no listo. Adaptadores opcionales para MMOCore, Parties.
- Editor de salas — Editor de salas visual en el juego con bordes de partículas, manipulación de nodos y barra de herramientas.
Permisos
| Permission | Descripción |
|---|---|
typewriter.dungeon.admin | Administrar mazmorras y el editor de salas. |
Dependencias
| Extension | Requerido | Uso |
|---|---|---|
| GUI Extension | Requerido | Todos los menús usan el sistema de diseño de la GUI (layoutPool, mainLayoutId). Sin ella, no se abrirá ningún menú. |
| QuestExtension | Requerido | Dependencia de ejecución para la integración de misiones (Ref<QuestEntry>). |
| PartyExtension | Opcional | Plugin de grupo externo (Parties, MMOCore). Dungeon tiene una sala integrada que funciona de forma autónoma. |
| PlaceholderAPI | Opcional | Para la resolución de placeholders @Placeholder en los mensajes. |
Arquitectura
Entradas
- Definiciones — Dungeon Instance: reglas, costes y configuración de grupo. Category: agrupa las mazmorras en los menús. Room: huella poligonal con disparadores de entrada/salida. Room Config: conjunto de salas + punto de aparición. Loot Chest: contenedores de recompensa aleatorios.
- Acciones — Global Menu: navegar por todas las mazmorras. Party Menu: coordinación de la sala. Enter: lógica de entrada del jugador. Leave: lógica de salida del jugador. Close: cerrar la instancia. Loot Chest Trigger: activación manual de un cofre.
- Hechos — InDungeon Fact: comprobar si el jugador está dentro de una mazmorra. InDungeonInstance Fact: comprobar una mazmorra concreta.
Guía de inicio rápido
Paso 1 — Definir una sala
Usa /dungeon room my_room edit para entrar en el editor de salas visual. Coloca nodos para formar un límite poligonal. Guarda con tinte verde lima.
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"
Paso 2 — Agrupar salas en una configuración
dungeon_room_config:
id: "dungeon_layout"
name: "Default Layout"
rooms:
- "boss_room"
- "entrance_room"
spawnPoint:
x: 15
y: 65
z: 15
world: "dungeon_template"
Paso 3 — Definir la instancia de mazmorra
dungeon_instance:
id: "ancient_temple"
name: "Ancient Temple"
templateWorld: "dungeon_template"
roomConfigurations:
- "dungeon_layout"
minPartySize: 1
maxPartySize: 4
cooldownSeconds: 300
Paso 4 — Crear una categoría y un menú
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: []
Paso 5 — Activar el menú
Desde cualquier acción, comando, diálogo de NPC o disparador de entrada:
action:
type: dungeon_global_menu
id: "open_dungeons"
globalMenu: "dungeon_hub"
O mediante el comando: /dungeon global-menu main_dungeons
Comandos
| Comando | Descripción |
|---|---|
/dungeon global-menu <category> | Abrir el navegador global de mazmorras |
/dungeon party-menu <instance> | Abrir la sala de grupo de una instancia concreta |
/dungeon room <room> edit | Entrar en el editor de salas visual |
/dungeon room <room> addvertex | Añadir un nodo en el bloque apuntado |
/dungeon room <room> removevertexat <index> | Eliminar un nodo por índice |
/dungeon room <room> save | Guardar la sala y salir del editor |
/dungeon room <room> cancel | Cancelar la edición |
Placeholders
Todos los placeholders usan el prefijo %typewriter_dungeon_%.
| Placeholder | Descripción |
|---|---|
%typewriter_dungeon_players% | Número de jugadores en la mazmorra actual. |
%typewriter_dungeon_attempts% | Total de intentos en esta mazmorra (artefacto por jugador). |
%typewriter_dungeon_completions% | Número de finalizaciones (artefacto por jugador). |
%typewriter_dungeon_best_time% | Mejor tiempo de finalización formateado (artefacto por jugador). |