Saltar al contenido principal

Entidades en mazmorras

Una mazmorra tiene dos tipos de seres vivos, y se tratan de forma distinta.

NPCMob de combate
EntradaDungeon NPC InstanceDungeon Mob Spawn
Qué esCualquier definición de entidad de Typewriter (las entidades propias de Typewriter, MythicMobsNPC, BetterModel, etc.)Un mob vanilla real
Quién lo veSolo los miembros de la partidaTodos en el mundo, pero pertenece a la partida
Cuándo apareceMientras la partida existeUna vez por partida, la primera vez que un miembro entra en su sala
ColocaciónspawnLocation (fija) o un marcador NPC (generada)room + positions (fija) o marcadores MOB (generada)

NPCs de una partida​

Un Dungeon NPC Instance muestra un NPC por partida, en el mundo de esa partida, solo a los miembros de esa partida. Un jugador que no es miembro (otra partida en el mismo mundo compartido, o un jugador que se fue) no ve nada. Un miembro que abandona la partida pierde el NPC de inmediato.

  1. Crea la definición de entidad como de costumbre (una entidad de Typewriter, un MythicMobsNPC, un BetterModel...). Elígela siempre por referencia, nunca escribiendo un id.
  2. Añade un Dungeon NPC Instance y fija definition.
  3. En una mazmorra fija, fija spawnLocation: la posición en el mundo plantilla. El hueco de la partida la desplaza. En una mazmorra generada, coloca un marcador NPC en una plantilla de sala y haz que su campo npc apunte a la instancia. spawnLocation se ignora.

allowedDungeonIds lista las dungeon instances cuyas partidas muestran el NPC. Vacío significa todas las partidas de todas las mazmorras. En una mazmorra fija, la misma spawnLocation se aplica a cada mazmorra afectada, así que restringe la lista cuando las mazmorras difieran. En una mazmorra generada, el NPC se muestra solo en una partida cuyo diseño tenga un marcador NPC que apunte a él. Si varios marcadores (o varias salas) nombran la misma instancia, solo cuenta el primero, en el orden del diseño.

group está vacío por defecto: la audience son los miembros de la partida, un NPC por partida. Elige una entrada group solo para compartir un NPC entre los miembros de ese grupo dentro de la misma partida.

Límites de los NPCs​

  • Las activities usan posiciones absolutas. Una activity de entidad (un camino que recorrer, una patrulla) no se desplaza al hueco ni al mundo de la partida. Deja activity vacío (el NPC se queda quieto) salvo que sepas que la activity solo usa movimiento relativo.
  • MythicMobsNPC: usa ticking desactivado y una build reciente. Una definición de MythicMobsNPC con ticking activado crea un mob real por espectador. En mazmorras, pon ticking en desactivado en la definición. El servidor mantiene entonces un mob portador por miembro, oculto a todos los que no son ese miembro, y un clic da exactamente una interacción para el jugador correcto. Esto necesita MythicMobsNPC 5.0 o posterior (corrección de visibilidad por partida); las builds anteriores muestran el portador a todos o duplicado.
  • Una cinemática reproducida por un MythicMobsNPC en una mazmorra no está probada.
  • El NPC se oculta más allá del alcance de visualización (showRange, o el valor por defecto de las entidades) y vuelve cuando el miembro se acerca. Es normal.
  • Anclajes de NPC de cofre: un Dungeon Loot Chest con colocación NPC se abre cuando se hace clic derecho en su entidad npcAnchor.

Mobs de combate​

Un Dungeon Mob Spawn hace aparecer mobs vanilla reales.

Cuándo. Una vez por partida, la primera vez que un miembro entra en la sala (mazmorra fija) o en la sala del marcador (mazmorra generada). Nunca reaparecen. Las oleadas se hacen con la acción Dungeon Spawn Mobs. En una mazmorra fija, la entrada a la sala los hace aparecer aunque el enterOnce de la sala esté desactivado, y solo una vez por partida.

Dónde.

  • Mazmorra generada: en cada marcador MOB de una plantilla de sala que apunte a la entrada. room y positions se ignoran.
  • Mazmorra fija: en positions, cuando un miembro entra en room. Con room vacío no ocurre nada automáticamente: solo la acción Spawn Mobs hace aparecer la entrada. dungeonInstance restringe la entrada a las partidas de una mazmorra.

Qué. entityType (cualquier mob; ENDER_DRAGON y WITHER se rechazan con una advertencia en el log), count (1 a 50 por colocación), spread (0 a 32 bloques), nombre, equipment con una probabilidad de drop por ranura, attributes (vida, daño, velocidad...) y randomizeData.

Seguro por defecto. blockDamage, dropVanillaLoot y dropExperience están todos desactivados. Los mobs no rompen ni queman nada (una explosión aún daña a los jugadores), sueltan solo el equipo que les diste (con una probabilidad de drop de 0 salvo que la subas) y no dan experiencia. El botín de una mazmorra sale de sus cofres. Los ítems soltados permanecen en el mundo tras la partida, así que mantén dropVanillaLoot desactivado en una mazmorra SHARED_WORLD_SLOTS.

Pertenecen a la partida. Se retiran cuando la partida termina. Un mob de una partida nunca ataca ni daña a los jugadores de otra partida, y los jugadores de otra partida no pueden dañarlo. Lo que un mob divide o en lo que se transforma (slimes, cubos de magma, un zombi ahogado, un vex invocado por un evocador) también pertenece a la partida.

Pacífico. El juego elimina de inmediato los mobs hostiles en un mundo en dificultad Pacífica, así que la extensión no los hace aparecer allí: solo se rechazan los mobs de clase hostil (zombis, pero también slimes, ghasts, phantoms, shulkers...). Los mobs neutrales y pasivos siguen apareciendo. El sitio queda pendiente, el rechazo se registra una vez por sitio y los mobs aparecen en una entrada posterior una vez subida la dificultad. Sube la dificultad del mundo o elige un tipo no hostil. Este comportamiento aún no está verificado en el juego.

Ítems y portales. Un mob de mazmorra nunca recoge ítems (el equipo soltado por un jugador se queda en el suelo) y no puede salir por un portal: permanece en el mundo de la partida y sigue contando para el tope.

Jugadores de otras partidas. Un mob de una partida nunca ataca ni daña a los jugadores de otra partida, y los jugadores de otra partida no deben poder dañarlo. En un mundo compartido (SHARED_WORLD_SLOTS) esto descansa en filtros y no en mundos separados, así que usa un modo aislado cuando importe.

El tope​

maxAliveMobs en la Dungeon Instance es el máximo de mobs vivos a la vez en una partida (150 por defecto, 500 como máximo; 0 significa que no aparece ningún mob). Una colocación que lo superara hace aparecer solo los mobs que caben y lo dice en el log del servidor. El resto queda pendiente (guardado con la partida, a través de las recargas) y aparece, hasta donde el tope lo permita entonces, la siguiente vez que un miembro entra en la sala, sin superar nunca en total el count de la entrada.

Muerte​

  • onDeath en la entrada: los triggers se ejecutan cada vez que muere uno de sus mobs, para los jugadores elegidos por deathRecipients (por defecto KILLER_OR_MEMBERS).
  • When a dungeon mob dies (on_dungeon_mob_death): un evento que puedes escuchar desde cualquier sitio, filtrado por mazmorra y por entrada de mob.
  • Solo cuentan los mobs que hizo la entrada. Un slime que se divide da una recompensa y un evento, no uno por pieza. Lo que sale de un mob (piezas, vexes, crías, refuerzos) va con la partida pero no ejecuta nada.

Saber que una sala está limpia​

Dungeon Mobs Alive (dungeon_mobs_alive) cuenta los mobs vivos de la partida, o de una entrada. 0 no significa que la sala esté limpia: el tope puede haber retenido algunos, y los mobs se cuentan de nuevo tras una recarga. Usa el evento de muerte y después una acción Dungeon Clear Room para decir que una sala está limpia.

Oleadas y adaptación al número de jugadores​

Por defecto aparece una sola oleada de golpe y el número de mobs no depende de los jugadores. Tres grupos de campos lo cambian.

  • Jugadores. perExtraPlayer añade mobs en cada emplazamiento por cada jugador a partir del segundo: count + perExtraPlayer × (jugadores − 1). maxCount es el tope (0 = sin tope propio; siguen aplicándose 50 por emplazamiento y el maxAliveMobs de la mazmorra). playerCountSource indica quién cuenta: PRESENT_IN_ROOM (por defecto) los miembros del run presentes en la sala al activarse, RUN_MEMBERS los miembros del run conectados.
  • Ritmo. maxSimultaneous es el máximo de mobs de un sitio vivos a la vez (0 = todos de golpe). Los siguientes aparecen a medida que mueren los primeros. Afecta a todo el sitio, no a cada emplazamiento.
  • Oleadas. waves es una lista ordenada. Cada oleada tiene su count y su perExtraPlayer, un entityType opcional (si no, el de la entrada; el equipamiento, los atributos y el nombre vienen siempre de la entrada), un start y un delayTicks. AFTER_PREVIOUS_CLEARED inicia la oleada delayTicks después de derrotar las anteriores; AFTER_DELAY la inicia delayTicks después del comienzo de la anterior, derrotada o no. Con oleadas, el count de la entrada ya no se usa. Una oleada cuyo tipo se rechaza se omite con un aviso y continúa la siguiente. La acción Dungeon Spawn Mobs inicia de inmediato la siguiente oleada de una entrada con oleadas.

Disparadores: onWaveStart y onWaveCleared en una oleada, onWaveCleared en la entrada (tras cada oleada) y onCleared en la entrada cuando todo el sitio queda despejado. Se ejecutan para cada miembro conectado del run, una vez por sitio y por evento. Los disparadores de muerte van primero. Un sitio queda despejado cuando todas las oleadas han empezado y no queda ningún mob vivo ni esperando hueco bajo el tope.

Recarga

Las oleadas no sobreviven a una recarga. Un sitio que aún debía mobs los hace aparecer en un solo lote (el count de la entrada) la próxima vez que un miembro entre en la sala, sin evento. Las oleadas no iniciadas se pierden.

Aparece un cofre cuando todos los mobs son derrotados​

  1. Crea un Dungeon Loot Chest donde debe estar el cofre y activa manualMode, para que no se coloque al empezar el run.
  2. Crea una acción Loot Chest Trigger cuyo chestEntry sea ese cofre. Deja triggerMode en ONCE (una vez por run, aunque los disparadores se ejecuten para cada miembro). Añade un sonido y un particleEffect si quieres.
  3. En el Dungeon Mob Spawn, añade la acción en onCleared. Para reaccionar desde otro sitio, crea un evento On Dungeon Mobs Cleared, fíltralo con mob y pon la acción en sus triggers.

El cofre aparece en el mundo del run cuando se derrota al último mob del sitio. Para un cofre tras cada oleada, usa en su lugar onWaveCleared de la oleada.

Límites de un vistazo​

LímiteValor
Mobs por colocación (count)1 a 50
Radio de dispersión (spread)0 a 32 bloques
Mobs vivos por partida (maxAliveMobs)150 por defecto, 500 como máximo
Tipos de mob rechazadosENDER_DRAGON, WITHER
ApariciónUna vez por partida y por sitio, sin reaparición
allowedDungeonIds del NPC vacíoTodas las partidas de todas las mazmorras
Definición de MythicMobsNPCticking desactivado, MythicMobsNPC 5.0 o posterior
Mobs vivos = 0No es "sala limpia": el tope o una recarga pueden ocultar mobs pendientes
PlataformaSolo Paper, sin Folia
Activity del NPCPosiciones absolutas, no desplazadas
Mundo pacíficoLos mobs hostiles se rechazan