Entidades en mazmorras
Una mazmorra tiene dos tipos de seres vivos, y se tratan de forma distinta.
| NPC | Mob de combate | |
|---|---|---|
| Entrada | Dungeon NPC Instance | Dungeon Mob Spawn |
| Qué es | Cualquier definición de entidad de Typewriter (las entidades propias de Typewriter, MythicMobsNPC, BetterModel, etc.) | Un mob vanilla real |
| Quién lo ve | Solo los miembros de la partida | Todos en el mundo, pero pertenece a la partida |
| Cuándo aparece | Mientras la partida existe | Una vez por partida, la primera vez que un miembro entra en su sala |
| Colocación | spawnLocation (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.
- 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.
- Añade un Dungeon NPC Instance y fija
definition. - 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 marcadorNPCen una plantilla de sala y haz que su camponpcapunte a la instancia.spawnLocationse 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
activityvacío (el NPC se queda quieto) salvo que sepas que la activity solo usa movimiento relativo. - MythicMobsNPC: usa
tickingdesactivado y una build reciente. Una definición de MythicMobsNPC contickingactivado crea un mob real por espectador. En mazmorras, pontickingen 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
NPCse abre cuando se hace clic derecho en su entidadnpcAnchor.
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
MOBde una plantilla de sala que apunte a la entrada.roomypositionsse ignoran. - Mazmorra fija: en
positions, cuando un miembro entra enroom. Conroomvacío no ocurre nada automáticamente: solo la acción Spawn Mobs hace aparecer la entrada.dungeonInstancerestringe 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
onDeathen la entrada: los triggers se ejecutan cada vez que muere uno de sus mobs, para los jugadores elegidos pordeathRecipients(por defectoKILLER_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.
perExtraPlayerañade mobs en cada emplazamiento por cada jugador a partir del segundo:count+perExtraPlayer× (jugadores − 1).maxCountes el tope (0= sin tope propio; siguen aplicándose 50 por emplazamiento y elmaxAliveMobsde la mazmorra).playerCountSourceindica quién cuenta:PRESENT_IN_ROOM(por defecto) los miembros del run presentes en la sala al activarse,RUN_MEMBERSlos miembros del run conectados. - Ritmo.
maxSimultaneouses 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.
waveses una lista ordenada. Cada oleada tiene sucounty superExtraPlayer, unentityTypeopcional (si no, el de la entrada; el equipamiento, los atributos y el nombre vienen siempre de la entrada), unstarty undelayTicks.AFTER_PREVIOUS_CLEAREDinicia la oleadadelayTicksdespués de derrotar las anteriores;AFTER_DELAYla iniciadelayTicksdespués del comienzo de la anterior, derrotada o no. Con oleadas, elcountde 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.
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
- Crea un Dungeon Loot Chest donde debe estar el cofre y activa
manualMode, para que no se coloque al empezar el run. - Crea una acción Loot Chest Trigger cuyo
chestEntrysea ese cofre. DejatriggerModeenONCE(una vez por run, aunque los disparadores se ejecuten para cada miembro). Añade un sonido y unparticleEffectsi quieres. - 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 conmoby pon la acción en sustriggers.
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ímite | Valor |
|---|---|
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 rechazados | ENDER_DRAGON, WITHER |
| Aparición | Una vez por partida y por sitio, sin reaparición |
allowedDungeonIds del NPC vacío | Todas las partidas de todas las mazmorras |
| Definición de MythicMobsNPC | ticking desactivado, MythicMobsNPC 5.0 o posterior |
| Mobs vivos = 0 | No es "sala limpia": el tope o una recarga pueden ocultar mobs pendientes |
| Plataforma | Solo Paper, sin Folia |
| Activity del NPC | Posiciones absolutas, no desplazadas |
| Mundo pacífico | Los mobs hostiles se rechazan |