Pular para o conteúdo principal

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

  1. Gere ou coloque o NPC ou Chefe Personalizado.
  2. Olhe diretamente para ele a até 12 blocos e execute /em patrol edit.
  3. Fique em cada destino e execute /em patrol add. O nó 0 é o local de aparecimento configurado.
  4. Use /em patrol mode LOOP para ligar o último nó ao primeiro ou /em patrol mode REVERSE para percorrer a lista de volta.
  5. Execute /em patrol save para 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
ChaveValoresPadrãoDescrição
patrol.enabledtrue / falsetrue quando há nósAtiva a rota.
patrol.modeLOOP / REVERSELOOPLOOP liga o último nó ao nó 0; REVERSE volta pela lista.
patrol.speednúmero positivo1.0Multiplicador de velocidade da navegação nativa.
patrol.virtualSpeednúmero positivovelocidade observadaBlocos avançados por tick quando um ator persistente não tem corpo carregado. Normalmente deixe ausente.
patrol.nodespelo menos dois deslocamentosnenhumDestinos 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. syncMovement continua ú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.yml durante 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étodoComportamento
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.