Saltar al contenido principal

Changelog

1.2​

  • Dungeon Mob Spawn: lootTable, spawnParticle, adaptación al número de jugadores (perExtraPlayer, maxCount, playerCountSource), maxSimultaneous, waves y los disparadores onWaveCleared y onCleared.
  • Nueva entrada Dungeon Loot Table: una tabla de botín compartida por cofres y mobs.
  • Dungeon Loot Chest: lootTableRef y additionalLocations para colocar varios cofres desde una sola entrada (se ignora en una mazmorra generada).
  • Loot Chest Trigger: particleEffect, con ejes X, Y y Z separados y un centro. Los cuatro campos triggerParticle son heredados: solo se aplican si particleEffect no nombra ninguna partícula.
  • Nuevo evento On Dungeon Mobs Cleared.
  • Nueva entrada Dungeon Restrictions, vinculada con restrictions a una Dungeon Instance o una Dungeon Room: sin elytra, barco ni vagoneta, perla de Ender, fruta de chorus ni tridente con propulsión, comandos bloqueados, mensaje de rechazo y permiso de exención.
  • Requiere GUI (OmniGUI) 0.20. La nueva Dungeon Leaderboard Source usa el contrato de fuente de clasificación de GUI 0.20: con un GUI más antiguo, la clasificación de Dungeon no se carga. Actualiza primero GUI.
  • Ruptura de API para los addons: DungeonArtifactData, DungeonStats y PlayerDungeonStats pasan al paquete btcrenaud.dungeons.core, y DungeonArtifactEntry.getPlayerStats y DungeonArtifactEntry.update cambian de firma. Un addon compilado contra Dungeon 1.1.x debe recompilarse. Las mazmorras creadas en el panel web no se ven afectadas.
  • Estadísticas: 22 estadísticas por jugador (daño infligido y recibido, bajas de mobs, muertes, tiempo jugado, salas y oleadas despejadas, récords, finalizaciones en solitario y sin morir...). Se cuentan durante la partida y se abonan una sola vez por miembro, por artifact, con un total entre varios artifacts. El daño es el que realmente quitó vida, limitado a la vida del objetivo.
  • Dungeon Instance: statsMobScope elige qué mobs cuentan en las estadísticas, MARKED_ONLY (por defecto, los mobs creados por la partida) o ANY_MOB_IN_RUN_WORLD.
  • Nuevo fact Player Dungeon Statistic, y los placeholders dungeon_stat_<key> (con _raw para el número sin formato), dungeon_total_<key> y dungeon_inst_<id>_<key>. Los snippets content.dungeon_stats.duration_format y content.dungeon_stats.missing_value fijan cómo se escriben.
  • Nueva entrada Dungeon Leaderboard Source, para conectar al campo source de una clasificación de GUI (GUI 0.20): artifacts, scope (LIFETIME o CURRENT_RUN), rankBy, values, durationFormat, decimals, missingValue y unknownName. Tokens de fila: {value_<key>}, {value_<key>_raw} y {score_raw}.
  • Dungeon Instance: reconnectGrace (2 minutos por defecto). Un miembro que se desconecta conserva su sitio durante ese plazo y, si vuelve a tiempo, continúa con su barra lateral, sus ocultaciones y su modo de juego. Pasado el plazo, abandona la partida y vuelve a su punto de entrada al reconectarse. Consulta Desconexiones.
  • Dungeon Restrictions: gameMode (opcional, por ejemplo ADVENTURE; el modo propio del jugador se devuelve al salir; CREATIVE y SPECTATOR desactivan las estadísticas de combate), limitInteractions con allowedInteractions (CHEST, TRAPPED_CHEST y BARREL por defecto) y protectedEntities (marcos, soportes para armadura, cuadros), y messageRepeatDelay (2 segundos). limitInteractions también rechaza colocar bloques, cubos, vehículos, huevos generadores, fuego, polvo de hueso y usar herramientas sobre bloques.
  • Dungeon Restrictions: el impulso del tridente y la fruta de chorus se rechazan ahora desde el clic, no solo su efecto. Solo el permiso de exención exime a un jugador: un operador lo tiene mientras el nodo no esté explícitamente en false.
  • Dungeon Category: los campos de ranura unlockedLore y lockedLore pasan a llamarse unlockLore y lockLore. Las páginas guardadas con los nombres antiguos se siguen leyendo; si están ambos, gana el nuevo.
  • MMOProfiles: cuando el jugador elige un perfil, se vuelven a aplicar el regreso al punto de entrada y el modo de juego de origen.
  • Correcciones: runs_left ya no cuenta una muerte que saca al jugador de la partida (queda en deaths); waves_cleared solo cuenta los grupos que definen waves; %typewriter_dungeon_stat_current_health% muestra la vida actual durante una partida; el escritor de estadísticas ya no deja de guardar tras un error; una partida cerrada en una recarga porque ninguno de sus miembros está conectado cuenta el tiempo jugado de sus miembros ausentes.
  • No cambia nada en una mazmorra existente mientras no use estos campos. Para un cofre que aparece cuando todos los mobs han sido derrotados, consulta Entidades en las mazmorras.

1.1.1​

  • Paper 26.x: una partida en WORLD_PER_RUN podía fallar con The server did not create world 'dungeon_classic_...'. La copia de la plantilla conservaba el ID de mundo de la plantilla (data/paper/metadata.dat), así que el servidor la rechazaba como duplicado. Ahora la copia recibe su propio ID.

1.1​

  • Versión pública de la renovación descrita abajo. Corrección desde la 1.0: WORLD_PER_RUN ahora copia un mundo plantilla guardado al estilo de Paper 26.x (dimensions/minecraft/<name>).

1.0​

Es una reestructuración de la extensión, construida en torno a un modelo de partida. Consulta la nota de migración antes de actualizar un servidor que usaba 0.10.

Partidas y mundos​

  • Una partida tiene ahora su propia máquina de estados, su propio registro y su propio diario. Iniciar una partida es todo o nada: si falla un paso, no se conserva nada y se reembolsa el coste de entrada.
  • Tres modos de aislamiento, fijados por mazmorra con isolation: SLIME_CLONE, WORLD_PER_RUN, SHARED_WORLD_SLOTS y AUTO (por defecto). Un modo que no puede ejecutarse rechaza la partida. Consulta Partidas y aislamiento de mundo.
  • Los mundos guardados al estilo de Paper 26.x (dimensions/minecraft/<name>) se encuentran para SHARED_WORLD_SLOTS y se copian para WORLD_PER_RUN; un problema al preparar el mundo se registra en una sola línea en lugar de una traza completa.
  • Un typewriter reload o un Publish readopta las partidas en curso. Un reinicio del servidor las termina limpiamente.
  • cooldownSeconds es un límite de tiempo real: 0 o vacío significa sin límite.
  • Los mundos de partida huérfanos se purgan al arrancar con salvaguardas (nombre, archivo marcador, nunca un mundo cargado).
  • Se escriben las estadísticas: intentos, finalizaciones y mejor tiempo, por mazmorra y por jugador.
  • Se aplican damageMultiplier y los criteria de la mazmorra.

Mazmorras generadas​

Salas, eventos y facts​

  • Los menús se actualizan en vivo (autoRefreshTicks) y cuando cambia cualquier lobby.
  • El scoreboard de espera funciona. Los marcadores DUNGEON_LOBBY_SLOT colocan los lobbies. Los criteria de los huecos se evalúan para cada jugador.
  • Un menú de party puede nombrar su mazmorra (dungeonInstance); uno vacío atiende a toda mazmorra que ningún otro menú nombre.
  • Las parties de MMOCore, Parties y la extensión de party de Typewriter son de solo lectura.

Cofres​

  • Una tirada por jugador y cofre, visibility (AUTO, PER_PLAYER, SHARED), onDisappear, lootSelection y weightedPicks, animación del cofre, orientación a partir del yaw, bloques de CraftEngine y Nexo, cofres restaurados tras una recarga.

Entidades en mazmorras​

Textos para el jugador y campos nuevos​

  • Los textos de los menús, lobbies, barra lateral de la partida, cofres de botín y rechazos de lanzamiento son snippets (content.dungeon_menu., content.dungeon_lobby., content.dungeon_run.sidebar., content.dungeon_chest., content.dungeon_launch.). Los valores por defecto no cambian. Las respuestas de los comandos /typewriter dungeon ... también son snippets (content.dungeon_command.).
  • Nuevo campo lobbyIdleKickSeconds en la Dungeon Instance (por defecto 120).
  • Nuevos campos en Loot Chest Trigger: triggerSoundVolume, triggerSoundPitch, triggerParticleCount, triggerParticleSpread, triggerParticleSpeed. broadcastMessage acepta códigos de color.

Comandos​

  • Se eliminó el subcomando start, que nunca funcionó. Los comandos están documentados en el índice.

Límites conocidos​

  • Solo Paper. Folia no es compatible.
  • Las mazmorras generadas usan solo WORLD_PER_RUN.
  • Una cinemática de MythicMobsNPC en una mazmorra no está probada.

0.10​

La compilación independiente. Los triggers de sala, los dos facts de "en la mazmorra", la NPC instance y las estadísticas estaban declarados pero no activos.