Patrulhas de NPCs e chefes
O EliteMobs permite que NPCs configurados e Chefes Personalizados sigam rotas criadas pelo administrador usando a navegação nativa do Minecraft. O mesmo sistema disponibiliza walk_to, hold e teleport para scripts Lua.
Fluxo rápido de criação
- Gere ou coloque o NPC ou Chefe Personalizado.
- Olhe diretamente para ele a até 12 blocos e execute
/em patrol edit. - Fique em cada destino e execute
/em patrol add. O nó0é o local de aparecimento configurado. - Use
/em patrol mode LOOPpara ligar o último nó ao primeiro ou/em patrol mode REVERSEpara percorrer a lista de volta. - Execute
/em patrol savepara gravar a rota e atualizar o ator.
O editor mostra o caminho resolvido, não apenas linhas retas. Também existem /em patrol undo, /em patrol remove, /em patrol status e /em patrol cancel. Todos os comandos são exclusivos para jogadores e exigem elitemobs.patrol.admin.
Se um arquivo de NPC tiver vários spawnLocations, o salvamento cria um arquivo secundário para o local editado. Isso evita aplicar os mesmos deslocamentos relativos a todas as cópias.
Configuração
Os nós são deslocamentos x,y,z a partir do local de aparecimento configurado, e não coordenadas absolutas.
patrol:
enabled: true
mode: LOOP
speed: 1.0
virtualSpeed: 0.2
nodes:
- 0,0,0
- 1000,0,0
- 1000,0,250
| Chave | Valores | Padrão | Descrição |
|---|---|---|---|
patrol.enabled | true / false | true quando há nós | Ativa a rota. |
patrol.mode | LOOP / REVERSE | LOOP | LOOP liga o último nó ao nó 0; REVERSE volta pela lista. |
patrol.speed | número positivo | 1.0 | Multiplicador de velocidade da navegação nativa. |
patrol.virtualSpeed | número positivo | velocidade observada | Blocos avançados por tick quando um ator persistente não tem corpo carregado. Normalmente deixe ausente. |
patrol.nodes | pelo menos dois deslocamentos | nenhum | Destinos ordenados. Aceita strings x,y,z e mapas com x, y e z. |
Não existe limite público de distância por trecho. Um trecho de 1.000 blocos é válido. A antiga chave experimental patrol.maxLegDistance está obsoleta e não tem efeito.
Busca de caminhos de longa distância
Trechos longos são resolvidos automaticamente. O EliteMobs pede ao MagmaCore uma rota progressiva pelo terreno carregado, divide-a em destinos curtos para a navegação nativa e recalcula conforme o ator avança.
- Snapshots de chunks carregados são capturados na thread do servidor pelo sistema compartilhado de cargas de trabalho com orçamento por tick do MagmaCore.
- A busca A* limitada é executada de forma assíncrona sobre snapshots imutáveis.
- O pathfinder nativo do Minecraft valida e percorre os trechos curtos finais.
- O planejamento nunca força o carregamento de chunks. Se o próximo terreno estiver indisponível, o ator espera no fim do último caminho verificado e continua quando a área voltar a processar entidades.
Isso permite cruzar cidades sem examinar tudo em um único tick nem atravessar prédios descarregados em linha reta. Criaturas voadoras e aquáticas usam buscas volumétricas; criaturas terrestres exigem apoio e espaço livre e evitam perigos comuns.
Comportamento dos atores
- Patrulhas de NPC ativam automaticamente a IA do corpo e a sincronização de movimento do modelo.
syncMovementcontinua útil fora de patrulhas, mas não é um segundo interruptor. - Chefes Personalizados exigem
ai: true, velocidade positiva e não podem ser passageiros. - Chefes pausam a patrulha durante o combate e retomam depois.
- NPCs persistentes e chefes persistentes não instanciados guardam a posição segura em
patrol-state.ymldurante descarregamentos e recargas. - Um ator só se materializa em uma área que processa entidades. Terreno desconhecido congela o tempo da rota.
- Um passageiro não pode ter patrulha; configure a montaria.
Controle por Lua
Estes métodos existem em context.npc e context.boss quando o ator tem patrulha configurada. As coordenadas são deslocamentos do local de aparecimento e cada método retorna se o pedido foi aceito.
| Método | Comportamento |
|---|---|
patrol_pause() | Para a rota atual sem apagar a configuração. |
patrol_resume() | Encerra uma espera ou caminhada temporária e retoma a patrulha. |
walk_to(x, y, z) | Caminha até o deslocamento e depois retoma a patrulha. |
hold(x, y, z) | Caminha até o deslocamento e permanece ali. |
teleport(x, y, z) | Teleporta quando o destino processa entidades e retoma a rota. |
return {
api_version = 1,
on_npc_interact = function(context)
context.npc:walk_to(40, 0, -12)
end
}
walk_to usa o mesmo solucionador de longa distância; não é preciso criar pontos intermediários manualmente.
Diagnóstico
Olhe para o ator e execute /em patrol status. A saída mostra estado, nós atual e alvo, progresso, localização lógica, velocidade virtual, presença do corpo e motivo de espera. terrain_unavailable significa que o planejador aguarda terreno carregado que processe entidades.