Patrullas de NPCs y jefes
EliteMobs puede hacer que los NPCs configurados y los Jefes Personalizados sigan rutas creadas por el administrador mediante la navegación nativa de Minecraft. El mismo sistema permite controlar walk_to, hold y teleport desde Lua.
Flujo rápido de creación
- Genera o coloca el NPC o Jefe Personalizado.
- Míralo directamente desde un máximo de 12 bloques y ejecuta
/em patrol edit. - Sitúate en cada destino y ejecuta
/em patrol add. El nodo0es el punto de aparición configurado. - Usa
/em patrol mode LOOPpara volver del último nodo al primero, o/em patrol mode REVERSEpara recorrer la lista en sentido inverso. - Ejecuta
/em patrol savepara guardar la ruta y actualizar al actor.
El editor muestra el recorrido resuelto, no simples líneas rectas. También dispone de /em patrol undo, /em patrol remove, /em patrol status y /em patrol cancel. Todos los comandos son exclusivos para jugadores y requieren elitemobs.patrol.admin.
Si un archivo de NPC contiene varios spawnLocations, al guardar se crea un archivo secundario para la ubicación editada. Así, los desplazamientos relativos no se aplican a todas las copias.
Configuración
Los nodos son desplazamientos x,y,z desde el punto de aparición configurado, no coordenadas absolutas.
patrol:
enabled: true
mode: LOOP
speed: 1.0
virtualSpeed: 0.2
nodes:
- 0,0,0
- 1000,0,0
- 1000,0,250
| Clave | Valores | Predeterminado | Descripción |
|---|---|---|---|
patrol.enabled | true / false | true si hay nodos | Activa la ruta. |
patrol.mode | LOOP / REVERSE | LOOP | LOOP conecta el último nodo con el nodo 0; REVERSE vuelve por la lista. |
patrol.speed | número positivo | 1.0 | Multiplicador de velocidad de la navegación nativa. |
patrol.virtualSpeed | número positivo | velocidad observada | Bloques avanzados por tick cuando un actor persistente no tiene cuerpo cargado. Normalmente debe omitirse. |
patrol.nodes | al menos dos desplazamientos | ninguno | Destinos ordenados. Acepta cadenas x,y,z y mapas con x, y y z. |
No existe un límite público por tramo. Un tramo de 1000 bloques es válido. La antigua clave experimental patrol.maxLegDistance está obsoleta y no tiene efecto.
Búsqueda de rutas a larga distancia
Los tramos largos se resuelven automáticamente. EliteMobs solicita a MagmaCore una ruta progresiva por el terreno cargado, la divide en destinos cortos para la navegación nativa y vuelve a calcularla conforme avanza el actor.
- Las instantáneas de chunks cargados se capturan en el hilo del servidor mediante el sistema compartido de cargas de trabajo con presupuesto por tick de MagmaCore.
- La búsqueda A* limitada se ejecuta de forma asíncrona sobre esas instantáneas inmutables.
- El pathfinder nativo de Minecraft valida y recorre los tramos cortos finales.
- La planificación nunca fuerza la carga de chunks. Si falta el terreno siguiente, el actor espera al final de la última ruta verificada y continúa cuando esa zona vuelve a procesar entidades.
Así se pueden atravesar ciudades sin escanearlo todo en un tick ni atravesar edificios descargados en línea recta. Las criaturas voladoras y acuáticas usan búsquedas volumétricas; las terrestres requieren apoyo y espacio libre y evitan peligros habituales.
Comportamiento de los actores
- Las patrullas de NPCs activan automáticamente la IA del cuerpo y la sincronización de movimiento del modelo.
syncMovementsigue controlando modelos sin patrulla, pero no es un segundo interruptor de patrulla. - Los Jefes Personalizados necesitan
ai: true, velocidad positiva y no pueden ser pasajeros. - Los jefes pausan su patrulla durante el combate y la reanudan al terminar.
- Los NPCs persistentes y los jefes persistentes no instanciados conservan su posición segura en
patrol-state.ymldurante descargas de chunks y recargas. - Un actor solo se materializa en una zona que procese entidades. El terreno desconocido congela el tiempo de ruta.
- Un pasajero no puede tener patrulla; configura la montura.
Control mediante Lua
Estos métodos existen en context.npc y context.boss cuando el actor tiene una patrulla configurada. Las coordenadas son desplazamientos desde su punto de aparición y cada método devuelve si aceptó la solicitud.
| Método | Comportamiento |
|---|---|
patrol_pause() | Detiene la ruta actual sin perder su configuración. |
patrol_resume() | Cancela una espera o marcha temporal y reanuda la patrulla. |
walk_to(x, y, z) | Camina hasta el desplazamiento y después reanuda la patrulla. |
hold(x, y, z) | Camina hasta el desplazamiento y espera allí. |
teleport(x, y, z) | Se teletransporta si el destino procesa entidades y reanuda la ruta. |
return {
api_version = 1,
on_npc_interact = function(context)
context.npc:walk_to(40, 0, -12)
end
}
walk_to usa el mismo solucionador de larga distancia; no hace falta dividir manualmente el trayecto.
Diagnóstico
Mira al actor y ejecuta /em patrol status. Verás el estado, los nodos actual y objetivo, el progreso, la ubicación lógica, la velocidad virtual, si existe un cuerpo y el motivo de cualquier pausa. terrain_unavailable significa que faltan terrenos cargados que procesen entidades.