Saltar al contenido principal

Dungeon

Mazmorras instanciadas con salas de grupo, menús GUI, cofres de botín y un editor de salas en el juego.

De pagov1.2Combate y mobs
RequiereTypeWriter0.9Quest (TypeWriter extension)GUIMMOCoreopcionalPartiesopcionalAdvanced Slime PaperopcionalPlaceholderAPIopcional

Descripción general​

Dungeon permite que una party juegue una copia privada de una mazmorra. Cada recorrido es una partida (run): tiene su propio mundo (o su propio hueco en un mundo compartido), sus propios miembros, su propio límite de tiempo, sus propios cofres, NPCs y mobs, y termina limpiamente, devolviendo a todos al lugar de donde vinieron.

Una mazmorra se describe con una sola entrada Dungeon Instance. Los jugadores la eligen en un menú global (un explorador de mazmorras agrupadas en una categoría), se unen a un lobby en el menú de party, se marcan como listos y se teletransportan dentro cuando termina la cuenta atrás. El personal y las misiones también pueden enviar a un jugador directamente con la acción Dungeon Enter o con un comando.

Hay dos tipos de mazmorra:

  • Fija: construyes la mazmorra una vez en un mundo plantilla. Las salas son zonas que dibujas en el juego, y todo ocurre en los lugares que fijas. Es la mazmorra clásica.
  • Generada: construyes plantillas de sala (pequeñas estructuras con puertas y marcadores) y un generador monta un diseño nuevo para cada partida, desde la sala de inicio hasta la sala del jefe. La misma semilla da siempre la misma mazmorra. Consulta Mazmorras generadas.

Ambos tipos comparten las mismas partidas, menús, cofres, NPCs, mobs, eventos y facts.

Solo Paper

Dungeon está pensado para Paper. No es compatible con Folia: el plugin oficial de Typewriter no funciona allí.

Características​

  • Partidas y grupos: una partida por grupo, varias partidas de la misma mazmorra a la vez (maxSimultaneousInstances), un límite de tiempo, costes de entrada, fin de la partida al completarla, por tiempo agotado, por partida vacía o por cierre de un administrador. Consulta Partidas y aislamiento de mundo.
  • Tres modos de aislamiento: SLIME_CLONE, WORLD_PER_RUN y SHARED_WORLD_SLOTS, elegidos por mazmorra con el campo isolation.
  • Mazmorras fijas: salas con triggers onEnter / onLeave, modifiers, criteria y prioridad.
  • Mazmorras generadas: plantillas de sala, tipos de conector, pools de salas, un generador, afijos y un editor en el juego para capturar salas y colocar puertas y marcadores.
  • Menú global y menú de party: layouts de la extensión GUI, actualizados en vivo mientras los jugadores entran y salen de los lobbies.
  • Cofres de botín: cofres de bloque o anclados a un NPC, reales o del lado del cliente, un inventario por jugador o compartido, botín ponderado o independiente.
  • NPCs por partida: un NPC mostrado solo a los miembros de una partida, a partir de cualquier definición de entidad de Typewriter. Consulta Entidades en mazmorras.
  • Mobs de combate: mobs vanilla reales que aparecen una vez por partida, con equipo, atributos, reglas de drops y triggers al morir, acotados por un tope.
  • Eventos, facts y acciones: eventos de inicio, finalización, entrada a sala, salida de sala y muerte de mob; facts para "está en una mazmorra" y "mobs vivos"; acciones para completar una partida, limpiar una sala y hacer aparecer una oleada.
  • Estadísticas: 22 estadísticas por jugador (partidas, mejor tiempo, bajas de mobs, daño infligido y recibido, muertes, oleadas despejadas...), legibles con placeholders y un fact, y clasificables en una clasificación de GUI. Consulta Estadísticas.
  • Seguro ante recargas: un typewriter reload o un Publish mantiene las partidas en marcha. Un reinicio del servidor las termina.
  • Parties de otros plugins: lee la party de MMOCore, Parties o la extensión de party de Typewriter para que los amigos entren juntos.

Instalación​

  1. Instala la extensión GUI desde su página. Ambos menús de Dungeon usan sus layouts.
  2. Asegúrate de que la extensión Quest de TypeWriter está instalada.
  3. Prepara lo que necesite tu modo de aislamiento (consulta Partidas y aislamiento de mundo):
    • Mazmorra fija: un mundo plantilla, como carpeta en la raíz de tu servidor (junto a world), por ejemplo dungeon_temple. El nombre puede usar letras, dígitos, _ y -, hasta 64 caracteres.
    • Mazmorra generada: sin mundo plantilla. La extensión crea un mundo vacío para cada partida.
    • Clon Slime: Advanced Slime Paper con la plantilla como mundo slime cargado.
  4. Descarga Dungeon desde las tiendas (consulta los botones del panel superior) y coloca el JAR en plugins/Typewriter/extensions/.
  5. Reinicia el servidor.
  6. Opcional: instala MMOCore o Parties para soporte de parties externas, y PlaceholderAPI para los placeholders.

¿Actualizas desde 0.10? Lee primero la nota de migración.

Primeros pasos​

Esta guía construye una mazmorra fija con un menú de lobby y un cofre. Para una mazmorra generada, empieza con Mazmorras generadas.

  1. En el panel web, abre una página manifest y añade una Dungeon Room Config. Colócate donde deban llegar los jugadores, haz clic en el editor de contenido de spawnPoint y confirma. Se capturan el mundo, las coordenadas y la dirección de la vista.
  2. Añade una Dungeon Instance. Pon en templateWorld el nombre de la carpeta del mundo, añade la room config a roomConfigurations y fija minPartySize y maxPartySize.
  3. Añade un Dungeon Artifact (estadísticas) y un Active Dungeon Instance Artifact (estado de las partidas), y enlázalos en artifact y runtimeArtifact. Sin el segundo, las partidas se guardan en un archivo runs.json de la extensión y se registra una advertencia al cargar. El campo partyLobbyArtifact ya no se usa: déjalo vacío.
  4. Añade una Dungeon Category. En instances, añade un hueco, fija dungeonInstance y elige los ítems de desbloqueado y bloqueado.
  5. En una página sequence, añade un Dungeon Global Menu y un Dungeon Party Menu. Diseña ambos layouts como se describe en Menús.
  6. Dispara el menú global desde un diálogo de NPC, un evento de comando o cualquier otro trigger. Publica.
  7. Añade un Dungeon Loot Chest para la instancia. Colócate donde deba estar el cofre, captura location y rellena lootTable.
  8. Añade una acción Dungeon Complete donde deba terminar la mazmorra (por ejemplo, al final de un diálogo tras el último cofre).
  9. Prueba: abre el menú, haz clic en la mazmorra, haz clic en el lobby, pulsa el botón de listo.
consejo

Para saltarte los menús y enviar a un jugador directamente, usa Dungeon Enter o /typewriter dungeon enter <instance>. Esto omite el lobby pero no las reglas: el tamaño del grupo (un solo jugador debe estar permitido por minPartySize), los criteria, el coste de entrada y el número de partidas simultáneas se comprueban todos.

Cómo funciona​

Una partida empieza cuando un lobby se lanza o cuando se ejecuta una acción Dungeon Enter. La extensión comprueba los criteria y el tamaño del grupo de cada jugador, reserva un lugar (un doble clic crea una sola partida), prepara el mundo, cobra el coste de entrada (todo o nada), teletransporta a los jugadores y después dispara onStart y aplica modifiers para cada miembro. Si algo falla por el camino, no se conserva nada: los jugadores se quedan donde estaban, se reembolsa el coste y se descarta el mundo.

Una partida termina cuando se ejecuta Dungeon Complete, cuando el límite de tiempo llega a cero, cuando se ejecuta Dungeon Close o /typewriter dungeon close, o cuando el último jugador se va, cambia de mundo o se desconecta. onEnd se dispara para cada miembro, se retiran los cofres, NPCs y mobs de la partida, los jugadores son teletransportados al punto de salida (o al lugar de donde vinieron) y se libera el mundo.

Si varios finales ocurren a la vez, solo gana uno, de modo que nunca hay dos onEnd ni un doble reembolso.

Recargas y reinicios​

Un typewriter reload o un Publish no pierde las partidas: se readoptan con sus miembros, mundo, fecha límite, estado de las salas (una sala once sigue gastada), cofres abiertos y los mobs ya aparecidos. onStart, los modifiers y los cofres no se repiten. Una mazmorra generada se reconstruye en memoria a partir de su semilla.

Un reinicio del servidor termina las partidas: los mundos de las partidas desaparecen, los jugadores son enviados a casa en su siguiente conexión y las carpetas de mundo sobrantes se purgan. Ninguno de los dos restaura los lobbies.

Desconexiones​

Un miembro que se desconecta de una mazmorra en curso conserva su sitio durante el reconnectGrace de la Dungeon Instance (2 minutos por defecto). Mientras tanto, la partida no se cierra y las estadísticas de ese miembro no se abonan. Un miembro que vuelve a tiempo reaparece donde estaba, con su barra lateral, sus ocultaciones y su modo de juego como antes. Cuando el plazo se agota, abandona la partida y, en su siguiente conexión, se le devuelve al lugar por el que entró. El límite de tiempo de la partida sigue corriendo.

Un miembro al que se espera sigue siendo miembro: si la partida termina mientras tanto, recibe su resultado como los demás, finalización y mejor tiempo incluidos, mientras que los disparadores onEnd solo se ejecutan para los miembros conectados. 0 significa sin plazo: una desconexión retira al jugador al instante. Un typewriter reload durante el plazo lo termina para los jugadores a los que se espera.

Con MMOProfiles instalado, el regreso se comprueba de nuevo cuando el jugador ha elegido un perfil. Un jugador que no está en ninguna partida y al que el perfil coloca en un mundo de mazmorra es devuelto al lugar por el que entró, y el modo de juego que una mazmorra había cambiado se devuelve, sea cual sea el modo que restauró el perfil. Un jugador que está en su partida (en plazo de gracia) simplemente continúa. Sin MMOProfiles no cambia nada.

Dungeon tiene dos menús. Ambos son acciones con un layoutPool de GUI y un mainLayoutId. Los ítems de los layouts funcionan como cualquier ítem de GUI. Los ítems cuyo buttonType sea uno de los valores siguientes los rellena Dungeon: se conserva tu ítem (material, nombre, lore) y se añade un comportamiento de clic. Escribe buttonType en mayúsculas, exactamente como se indica. Deja buttonPrefix vacío.

Ambos menús se repintan cada autoRefreshTicks (20 por defecto, mantenido entre 10 y 1200) y de inmediato, para cada jugador que los tenga abiertos, cada vez que cambia un lobby de las mazmorras que muestran. Un jugador ve entrar a otro sin hacer clic.

Para los tipos de layout, los campos de ítem (x, y, count, direction, gap, repeatY) y las acciones de clic, lee la guía de GUI. Una construcción paso a paso está en Diseñar los menús.

El Dungeon Global Menu muestra las mazmorras de una category. Se abre cuando se dispara la acción, o con /typewriter dungeon global-menu <category>.

buttonTypeComportamiento
DUNGEON_INSTANCE_SLOTMarca dónde aparece una mazmorra. Coloca uno por mazmorra, o usa count, direction, gap y repeatY para marcar una fila o un bloque. Cada marcador se sustituye por la siguiente mazmorra de la categoría. Los marcadores sobrantes quedan vacíos.
DUNGEON_FIND_PARTYEl clic izquierdo une al primer lobby no vacío que aún tenga sitio, entre las mazmorras desbloqueadas de la categoría, y abre el menú de party. Si el jugador ya está en un lobby de la categoría, lo abandona en su lugar.
DUNGEON_INFOSolo visualización. Úsalo para un ítem de ayuda.

Cómo se dibujan las mazmorras:

  • Las mazmorras se ordenan por su categoryPriority (la más baja primero), luego por id de entrada.
  • Un hueco se muestra con unlockedItem, unlockedName y unlockLore cuando sus criteria coinciden con el jugador (una lista vacía siempre coincide). Al hacer clic se abre el menú de party de esa mazmorra.
  • Un hueco cuyos criteria no coinciden se muestra con el aspecto de bloqueado y no se puede abrir. Los criteria se evalúan para cada jugador que abre el menú, y de nuevo cuando el jugador hace clic.
  • Los nombres y el lore pueden usar {dungeon_name}, {players} y {max}, además de placeholders de PlaceholderAPI. {players} es el tamaño del primer lobby de la mazmorra.
  • Coloca los marcadores DUNGEON_INSTANCE_SLOT en layouts simple, paginated o scrollable. Si el layout base es desplazable, las mazmorras se desplazan con él.
  • Sin ningún marcador DUNGEON_INSTANCE_SLOT, no se muestra ninguna mazmorra.

Menú de party​

El Dungeon Party Menu es el lobby. Se abre cuando un jugador hace clic en una mazmorra del menú global, y con /typewriter dungeon instance-menu <instance>. Disparar la propia acción no hace nada salvo mostrar una pista, así que no la conectes a un NPC.

Qué menú atiende a qué mazmorra. Un menú de party cuyo dungeonInstance nombra la mazmorra la atiende. Un menú de party con dungeonInstance vacío atiende a toda mazmorra que ningún otro menú nombre. Un menú escrito para otra mazmorra nunca se abre en su lugar: cuando ninguno encaja, se informa al jugador y el log del servidor dice No dungeon_party_menu serves '<instance>'. Así puedes tener un menú por mazmorra, un menú compartido, o ambos.

Una mazmorra tiene tantos lobbies como su maxSimultaneousInstances. Cada lobby es un ítem: lobbyItem con el nombre de lobbyName y descrito con lobbyLore. Dónde se dibujan los lobbies:

  • Con marcadores DUNGEON_LOBBY_SLOT en un layout simple (igual que DUNGEON_INSTANCE_SLOT, usa count, direction y gap para marcar varios), cada marcador se sustituye por el siguiente lobby.
  • Sin ningún marcador, el lobby n se coloca en la columna lobbyOffsetX + (n mod 9) y la fila lobbyOffsetY + (n div 9), contando desde 0.

Hacer clic en un lobby te une a él.

Placeholder en lobbyName y lobbyLoreValor
{index}Número del lobby, desde 1.
{players}, {max}Jugadores en el lobby y maxPartySize.
{player_names}Nombres de los miembros, envueltos en el prefijo y sufijo de listo o no listo. Solo lore.
{ready_players}, {not_ready_players}Recuentos. Solo lore.

readyPlayerPrefix, readyPlayerSuffix, notReadyPlayerPrefix y notReadyPlayerSuffix colorean los nombres de {player_names}.

buttonTypeComportamiento
DUNGEON_LOBBY_SLOTMarca dónde aparece un lobby.
DUNGEON_READYAlterna el estado de listo. Si al jugador le falta el coste de entrada, nadie se marca como listo y el lobby recibe el missingItemsMessage de la mazmorra.
DUNGEON_LEAVEAbandona el lobby y vuelve al menú global de donde venía el jugador.
DUNGEON_AUTO_FILLSe une al primer lobby no vacío con un sitio libre.

Cuando empieza la partida:

  1. Todos en el lobby deben estar listos y el lobby debe tener al menos minPartySize jugadores.
  2. Corre una cuenta atrás de startCooldownSeconds. Se detiene si alguien deja de estar listo. Con 0, la partida empieza de inmediato.
  3. Se comprueban los criteria de cada jugador y después los costes de entrada. Con entryCostMode LEADER, paga el primer jugador del lobby. Con GROUP, paga todo el mundo. Los ítems solo se cobran si a nadie le falta nada.
  4. Se crea la partida y los jugadores son teletransportados al punto de aparición.

Un lobby que espera sin cuenta atrás durante lobbyIdleKickSeconds (120 segundos por defecto) se vacía. Un administrador puede iniciar un lobby a mano con /typewriter dungeon force-start <instance>, que dispensa del tamaño mínimo del grupo y de los criteria.

Mientras los jugadores esperan, el menú de party puede mostrar un scoreboard de espera (enableWaitingScoreboard, scoreboardTitle, scoreboardWaiting con {missing}, scoreboardCountdown con {time}).

Parties de otros plugins. Si MMOCore (con su propio módulo de party), Parties o la extensión de party de Typewriter está instalada, Dungeon lee sus parties y nunca las crea, fusiona ni modifica. Cuando un jugador se une a un lobby, toda su party se une con él si el lobby tiene sitio para todos. MMOCore se usa en exclusiva cuando está presente.

Comandos usados por los botones​

Los botones no usan un comando del servidor: llaman a un manejador interno del sistema de menús, así que los jugadores no necesitan permiso y no hay nada que escribir a mano.

Configuración​

La extensión no tiene archivo de configuración. La mayoría de los ajustes están en las entradas. Los mensajes de las entradas de acción (Enter, Leave, Close, Complete) y de la dungeon instance (missingItemsMessage) son campos. El retraso de inactividad de un lobby es el campo lobbyIdleKickSeconds de la dungeon instance (por defecto 120, 2 minutos).

Todo otro texto que lee un jugador es un snippet de Typewriter, así que nada está fijo en el código: cámbialos o tradúcelos en el panel web (snippets). Los valores son MiniMessage, y los placeholders {...} se sustituyen como se indica. Si mantienes los valores por defecto, nada cambia.

FamiliaClaves (tras el prefijo)
content.dungeon_menu.invalid_action, action_failed, in_instance, party_in_instance, global_in_instance, locked, lobby_unavailable, left_lobby, not_in_lobby, no_lobby_available, left_party, no_party_found, no_party_menu ({dungeon}), no_category, party_needs_dungeon
content.dungeon_lobby.idle_kick ({seconds}, {minutes}), party_sync, missing_items_fallback ({PlayerName}, {MissingQuantity}, {ItemName}; se usa cuando missingItemsMessage está vacío), scoreboard_syncing
content.dungeon_run.sidebar.time_left ({seconds}), quest ({number}). Una línea de la barra lateral es texto plano: se eliminan las etiquetas MiniMessage.
content.dungeon_chest.default_title (título de un cofre cuyo containerTitle está vacío), trigger_chest_missing, trigger_not_manual
content.dungeon_launch.prefix (se antepone a cada texto de la familia), no_online_member, already_in_run ({player}), no_room_configuration, group_size ({size}, {min}, {max}), criteria_not_met ({player}), missing_cost y missing_cost_leader ({player}, {amount}, {item}), max_runs_reached, isolation_unavailable, generation_failed ({text}), failed
content.dungeon_stats.Cómo escriben los placeholders de estadísticas: duration_format (tokens {h}, {m}, {mm}, {ss}, {SSS}; por defecto {mm}:{ss}) y missing_value (lo que se escribe para un valor que aún no existe; por defecto -).
content.dungeon_command.Las respuestas de los comandos /typewriter dungeon ...: only_players.close, only_players.enter, only_players.leave, only_players.menu, only_players.force_start, only_players.edit_room (enviado a la consola), not_in_run, close.done, close.already_closing, enter.done ({dungeon}), leave.done ({dungeon}), instance_menu.join_failed, instance_menu.joined ({dungeon}), global_menu.not_configured ({category}), force_start.not_in_lobby, force_start.done ({dungeon}), room.invalid_index ({index})
content.dungeon_room., content.dungeon_room_template., content.dungeon_generated.Editores de salas y rechazos de mazmorras generadas.

Las respuestas de los comandos /typewriter dungeon ... también son snippets, aunque los comandos son solo para el personal. Las respuestas del editor de salas (addnode, removenode, save...) están en content.dungeon_room., y el texto de un enter rechazado es un snippet de content.dungeon_launch..

Los artifacts guardan datos en plugins/Typewriter/:

ArtifactContenido
Dungeon ArtifactEstadísticas por mazmorra y por jugador (artifactId por defecto dungeon_data).
Active Dungeon Instance ArtifactEstado de las partidas en curso, para que una recarga no las pierda.
Dungeon Room TemplateLa estructura guardada de una sala de una mazmorra generada.
Dungeon Party Lobby ArtifactInerte. Se mantiene para que las páginas antiguas sigan cargando.

Comandos​

Todos los comandos de Dungeon están bajo /typewriter dungeon (/tw dungeon). Cada uno requiere el permiso typewriter.dungeon.admin y debe ejecutarlo un jugador.

ComandoDescripción
/typewriter dungeon enter <instance>Crea una partida solo para ti y te teletransporta a ella. El tamaño del grupo, los criteria, el coste de entrada y el límite de partidas siguen aplicándose.
/typewriter dungeon leave <instance>Te retira de tu partida de esa mazmorra y te devuelve al lugar de donde viniste.
/typewriter dungeon close <instance>Termina tu propia partida de esa mazmorra (cierre de administrador).
/typewriter dungeon global-menu <category>Abre el menú global configurado para la categoría.
/typewriter dungeon instance-menu <instance>Te une al primer lobby con sitio para tu grupo y abre el menú de party.
/typewriter dungeon force-start <instance>Inicia el lobby en el que estás sin esperar a los listos, la cuenta atrás, el tamaño mínimo del grupo ni los criteria.
/typewriter dungeon room <room> editAbre el editor de salas en el juego para una Dungeon Room.
/typewriter dungeon room <room> addnodeAñade un nodo a tus pies.
/typewriter dungeon room <room> removenodeElimina el último nodo.
/typewriter dungeon room <room> removenodeat <index>Elimina un nodo por su número, desde 1.
/typewriter dungeon room <room> saveGuarda la sala.
/typewriter dungeon room <room> cancelDescarta la edición.

leave y close requieren que estés en una partida del dungeon que nombras; si no, responden «You are not in a run of this dungeon» (el snippet content.dungeon_command.not_in_run). El antiguo subcomando start ya no existe: usa enter.

Las plantillas de sala de las mazmorras generadas se editan desde el panel web (el editor de contenido del campo artifactId), no con un comando. Consulta Mazmorras generadas.

Editor de salas (mazmorras fijas)​

edit abre un editor con una barra de herramientas en tu hotbar: la vara de blaze del hueco 1 añade un nodo (en el bloque que miras, o a tus pies al agacharte), la redstone del hueco 2 elimina el último nodo y el tinte lima del hueco 8 guarda y sale. Pulsar agacharse dos veces sale sin guardar. Los nodos se muestran como bloques con un contorno de partículas; agáchate y haz clic en un nodo para eliminarlo. Un nodo forma una sala puntual (radio de 0,5 bloques), dos forman una línea, tres o más un polígono. La extensión vertical sale del nodo más bajo y del más alto, más verticalMargin.

Permisos​

PermisoConcede
typewriter.dungeon.adminTodos los comandos /typewriter dungeon, incluido el editor de salas.

Los jugadores no necesitan ningún permiso para usar los menús.

Estadísticas​

Dungeon cuenta lo que hace cada jugador durante una partida y lo conserva, para cada Dungeon Artifact, en forma de 22 estadísticas. Los contadores de una partida se guardan mientras dura y cada miembro se abona una sola vez, cuando abandona la partida o esta termina; no se escribe nada en disco golpe a golpe, y un typewriter reload conserva los contadores de las partidas en curso. Una mazmorra que comparte su artifact con otra alimenta las mismas estadísticas.

ClaveUnidadContenido
runs_startedcantidadPartidas empezadas, contadas al comenzar aunque la partida se pierda.
runs_completedcantidadPartidas terminadas con el jugador todavía dentro.
best_timeduraciónMenor tiempo de una partida completada (un récord: sin valor antes de la primera finalización).
runs_timed_outcantidadPartidas cuyo límite de tiempo se agotó con el jugador todavía dentro.
runs_leftcantidadPartidas que el jugador abandonó por sí mismo, o cuyo plazo de reconexión se agotó. Una muerte que saca al jugador de la partida no se cuenta aquí (queda en deaths).
mob_killscantidadMobs matados.
damage_dealtvidaDaño infligido a mobs, tal como quitó vida realmente: un golpe de 100 a un objetivo que tenía 2 de vida cuenta 2.
damage_takenvidaDaño recibido, con el mismo límite (la vida y la absorción que tenía el jugador).
deathscantidadMuertes.
time_playedduraciónTiempo pasado en partidas.
completion_ratetasaruns_completed sobre runs_started, calculado al leerlo y escrito como porcentaje.
current_healthvidaVida actual del jugador. Solo tiene valor durante una partida: nunca se guarda.
best_run_killscantidadMayor número de mobs matados en una sola partida (un récord).
best_run_damagevidaMayor daño infligido en una sola partida (un récord).
flawless_completionscantidadPartidas completadas sin ninguna muerte.
solo_completionscantidadPartidas completadas que empezaron con un solo miembro.
best_time_soloduraciónMenor tiempo de una partida en solitario completada.
health_regainedvidaVida realmente recuperada, nunca más de la que faltaba.
rooms_enteredcantidadSalas en las que se entró; una sala visitada dos veces en una partida cuenta una vez.
rooms_clearedcantidadSalas despejadas con Dungeon Clear Room, para los miembros que están en la sala.
chests_openedcantidadCofres de botín abiertos, una vez por cofre para el jugador que generó su botín.
waves_clearedcantidadOleadas despejadas. Solo cuentan las oleadas reales: los grupos de un Dungeon Mob Spawn que definen waves.

Unidades: una vida se expresa en puntos de vida (un corazón son dos), una duración se escribe como mm:ss salvo que los snippets digan otra cosa, y una tasa se escribe como porcentaje.

Lo que cuenta:

  • Solo los miembros de una partida activa, dentro del mundo de su partida, en SURVIVAL o ADVENTURE. Un jugador en CREATIVE o SPECTATOR no cuenta para nada, de modo que un admin que observa una partida no puede encabezar una clasificación.
  • Los mobs que cuentan los fija statsMobScope en la Dungeon Instance. MARKED_ONLY (por defecto): solo los mobs creados por la partida (marcados dungeon_mob_run); los trozos de un slime que se divide nunca cuentan como bajas. ANY_MOB_IN_RUN_WORLD: también los demás mobs del mundo de la partida, como un jefe colocado por otro plugin. Se rechaza con SHARED_WORLD_SLOTS, cuyo mundo contiene otras partidas: allí se usa MARKED_ONLY y se escribe una advertencia al cargar.
  • Las estadísticas se cuentan por artifact. Entre varios artifacts, los totales suman los contadores y conservan el mejor récord; dos artifacts con el mismo artifactId son un solo archivo y cuentan una vez.

Léelas con los placeholders, con el fact Player Dungeon Statistic, o clasifícalas en una clasificación de GUI con una Dungeon Leaderboard Source (GUI 0.20 o posterior).

Placeholders​

Los placeholders de PlaceholderAPI usan el prefijo %typewriter_dungeon_…%. Los placeholders sobre la partida actual devuelven 0 o un valor vacío cuando el jugador no está en una partida. Excepción: %typewriter_dungeon_stat_KEY% y su forma _raw solo se resuelven durante una partida; fuera de ella se muestran tal cual. Solo dungeon_total_KEY y dungeon_inst_ID_KEY funcionan fuera de una partida.

PlaceholderDevuelve
%typewriter_dungeon_remaining%Segundos restantes en la partida del jugador.
%typewriter_dungeon_remaining_formatted%Tiempo restante como mm:ss.
%typewriter_dungeon_players%Jugadores en la partida del jugador.
%typewriter_dungeon_max%maxPartySize de la mazmorra del jugador.
%typewriter_dungeon_list%Nombres de los jugadores de la partida, separados por comas.
%typewriter_dungeon_player_N_name%Nombre del N-ésimo jugador de la partida (desde 1).
%typewriter_dungeon_player_N_health%, …_maxhealth%, …_healthpercent%Vida, vida máxima y porcentaje del N-ésimo jugador.
%typewriter_dungeon_player_health_N%Nombre: vida/máx del N-ésimo jugador.
%typewriter_dungeon_lobby_time%Segundos restantes de la cuenta atrás del lobby del jugador. Añade _formatted para mm:ss.
%typewriter_dungeon_attempts%, %typewriter_dungeon_completions%, %typewriter_dungeon_best%Partidas, finalizaciones y mejor tiempo del jugador en la mazmorra en la que está.
%typewriter_dungeon_total_attempts%, …_total_completions%, …_total_ratio%Totales de todas las mazmorras y el porcentaje de finalización.
%typewriter_dungeon_inst_ID_attempts%, …_completions%, …_best%Las mismas estadísticas para la mazmorra cuyo id de entrada es ID. El id no debe contener un guion bajo.
%typewriter_dungeon_stat_KEY%, …_stat_KEY_raw%Cualquier estadística del jugador, en el artifact de la mazmorra en la que está. KEY es la clave de la tabla, por ejemplo %typewriter_dungeon_stat_mob_kills%. _raw da el número sin formato de la unidad (milisegundos, puntos de vida, por mil), 0 si no hay valor.
%typewriter_dungeon_total_KEY%, …_total_KEY_raw%La misma estadística sobre todas las mazmorras.
%typewriter_dungeon_inst_ID_KEY%, …_inst_ID_KEY_raw%La misma estadística para la mazmorra cuyo id de entrada es ID.

current_health solo tiene valor en dungeon_stat_current_health, durante una partida. Una duración se escribe con el snippet content.dungeon_stats.duration_format y un valor ausente con content.dungeon_stats.missing_value.

Las estadísticas provienen del Dungeon Artifact enlazado en el campo artifact de la mazmorra. Dungeon las escribe él mismo (los intentos cuando empieza una partida, las finalizaciones y el mejor tiempo cuando se completa). El mejor tiempo de un jugador se guarda una vez por artifact, entre todas las mazmorras que lo comparten: da a cada mazmorra su propio artifact cuando cada una necesite su propio mejor tiempo. Las estadísticas se guardan por perfil de MMOProfiles cuando ese plugin está instalado y, si no, por jugador. No hay nada que configurar.

Entradas​

39 entradas, generadas a partir del código fuente de la extensión.

Acciones9
Eventos6
Hechos4
Audiencias1
Entidades1
Grupos1
Artefactos4
Manifiestos13

Solución de problemas​

El menú no se abre. Falta la extensión GUI, o mainLayoutId no coincide con el id de un layout de layoutPool. Instala GUI y comprueba el id.

Las mazmorras no aparecen en el menú global. El layout no tiene ningún ítem con buttonType en DUNGEON_INSTANCE_SLOT, o los marcadores están en un tipo de layout distinto de simple, paginated o scrollable.

Un botón no hace nada o no parece un botón. buttonType distingue mayúsculas de minúsculas y debe ser DUNGEON_FIND_PARTY, DUNGEON_INFO, DUNGEON_INSTANCE_SLOT, DUNGEON_LOBBY_SLOT, DUNGEON_READY, DUNGEON_LEAVE o DUNGEON_AUTO_FILL. Un botón global en el menú de party, o al revés, se ignora.

Una mazmorra aparece como bloqueada. Los criteria de su hueco en la categoría no coinciden con este jugador. Compruébalos con los facts del jugador, o vacía la lista.

Al hacer clic en una mazmorra no se muestra nada y no se abre ningún menú. Ningún menú de party atiende la mazmorra. Busca No dungeon_party_menu serves en el log del servidor y crea uno con dungeonInstance vacío o uno que nombre la mazmorra.

"The dungeon cannot be started on this server." El modo de aislamiento de la mazmorra no puede ejecutarse aquí (por ejemplo SLIME_CLONE sin Advanced Slime Paper), o no puede alojar una mazmorra generada. No hay alternativa a otro modo. Consulta Partidas y aislamiento de mundo.

"The group has N player(s): this dungeon needs X to Y." Se usó el lobby o el comando enter con un grupo fuera de minPartySize a maxPartySize. Un administrador puede usar force-start desde un lobby.

"All the runs of this dungeon are taken." Ya hay maxSimultaneousInstances partidas activas.

Los jugadores llegan a un mundo nuevo vacío. templateWorld no coincide con una carpeta de mundo en la raíz del servidor. El log dice Cannot teleport player … world '…' not found cuando el mundo no se puede cargar en absoluto.

Los jugadores siguen siendo expulsados de la partida. Salir del mundo de la partida, incluso por comando, saca al jugador de ella. Cuando se va el último jugador, la partida termina.

Un cofre de botín disparado por Loot Chest Trigger nunca vuelve. El triggerMode por defecto ONCE es una vez por partida. Usa REPEATABLE para dispararlo varias veces en la misma partida. La siguiente partida empieza limpia.

Un NPC nunca se muestra. En una mazmorra generada, el NPC solo aparece mediante un marcador NPC de una sala de la partida. En una mazmorra fija, comprueba allowedDungeonIds y spawnLocation. Consulta Entidades en mazmorras.

Una sala está vacía de mobs aunque no haya ningún mob vivo. El tope maxAliveMobs puede haber retenido algunos, y una recarga hace que la extensión vuelva a contar. No uses Dungeon Mobs Alive para decidir que una sala está limpia: usa el evento de muerte de mob.