Saltar al contenido principal

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

PermissionDescripción
typewriter.dungeon.adminAdministrar mazmorras y el editor de salas.

Dependencias

ExtensionRequeridoUso
GUI ExtensionRequeridoTodos los menús usan el sistema de diseño de la GUI (layoutPool, mainLayoutId). Sin ella, no se abrirá ningún menú.
QuestExtensionRequeridoDependencia de ejecución para la integración de misiones (Ref<QuestEntry>).
PartyExtensionOpcionalPlugin de grupo externo (Parties, MMOCore). Dungeon tiene una sala integrada que funciona de forma autónoma.
PlaceholderAPIOpcionalPara la resolución de placeholders @Placeholder en los mensajes.

Arquitectura

Entradas

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

ComandoDescripció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> editEntrar en el editor de salas visual
/dungeon room <room> addvertexAñadir un nodo en el bloque apuntado
/dungeon room <room> removevertexat <index>Eliminar un nodo por índice
/dungeon room <room> saveGuardar la sala y salir del editor
/dungeon room <room> cancelCancelar la edición

Placeholders

Todos los placeholders usan el prefijo %typewriter_dungeon_%.

PlaceholderDescripció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).