
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
Dependências: Plataforma: Paper / Folia (Spigot e outros forks obsoletos do Bukkit não são suportados) Versão do Java: Java 21+ (para as…
Dependências: Plataforma: Paper / Folia (Spigot e outros forks obsoletos do Bukkit não são suportados) Versão do Java: Java 21+ (para as builds mais recentes é necessário o Java 25) Versão do Minecraft: 1.19.4 – 1.21.x
Dependências:
Plataforma: Paper / Folia (Spigot e outros forks obsoletos do Bukkit não são suportados)
Versão do Java: Java 21+ (para as builds mais recentes é necessário o Java 25)
Versão do Minecraft: 1.19.4 – 1.21.x
Bibliotecas adicionais: PlaceholdersAPI (recomendado para a integração de variáveis na interface de ações)
A criação de personagens não jogáveis (NPC) interativos nos servidores de Minecraft é tradicionalmente acompanhada de custos consideráveis de hardware. As soluções obsoletas registam os NPC como entidades de servidor completas (Entity), o que obriga o núcleo a processar a sua inteligência artificial, as colisões físicas, a procura de caminhos e o carregamento de chunks. Isto leva a uma queda crítica do indicador TPS (Ticks Per Second) à medida que o número de personagens aumenta. O plugin FancyNpcs oferece um método alternativo, baseado em pacotes, para a renderização de personagens virtuais, o que permite manter centenas de figuras interativas sem qualquer impacto no desempenho da thread do servidor.
Arquitetura por pacotes e compatibilidade com o Folia
A principal particularidade técnica do FancyNpcs consiste no facto de os personagens criados existirem exclusivamente na memória do plugin e do lado dos clientes ligados. O servidor não os adiciona à base de dados do mundo nem os processa no ciclo geral de atualização das entidades.
Quando um jogador se aproxima das coordenadas definidas, o plugin interceta o tráfego de rede e envia ao cliente os pacotes ClientboundAddPlayerPacket (para modelos humanos) ou ClientboundAddEntityPacket (para outras criaturas). O comportamento subsequente, o equipamento e o estado de exibição são atualizados através dos pacotes ClientboundSetEntityDataPacket (metadados) e ClientboundSetEquipmentPacket (equipamento). Para o servidor, estes personagens não existem — são «projeções virtuais» destinadas aos utilizadores finais.
Esta abordagem torna o FancyNpcs a escolha ideal para servidores multithread baseados no Folia. Uma vez que o Folia divide o mundo em regiões separadas, cada uma funcionando na sua própria thread, os plugins de NPC tradicionais provocam frequentemente deadlocks e erros críticos devido às tentativas de interação entre threads de regiões diferentes. O FancyNpcs processa os dados de forma assíncrona e envia os pacotes diretamente aos jogadores, evitando por completo os conflitos com o agendador de tarefas do Folia.
Opções de personalização do aspeto
O plugin suporta uma ampla variedade de tipos de entidades e efeitos visuais. Os jogadores podem criar NPC com a forma de quaisquer mobs vanilla (Player, Cow, Zombie, Skeleton, Villager, Pig, etc.) e ajustar o seu aspeto ao pormenor.
Gestão de skins (para modelos humanos)
Para os personagens do tipo player estão disponíveis várias fontes para carregar texturas:
@mirror: a skin do NPC copia dinamicamente a skin do jogador que está a olhar para ele nesse momento.Nome ou UUID de uma conta licenciada: o plugin envia automaticamente um pedido aos servidores de sessão da Mojang para carregar a textura correspondente.
Ligação direta a um recurso web (URL): possibilidade de carregar qualquer ficheiro .png de terceiros a partir de um servidor web.
Ficheiros locais: imagens previamente colocadas na pasta /plugins/FancyNpcs/skins/.
Flag
--slim: ativa a utilização do modelo de braços finos (estilo Alex) para as skins carregadas através de ligações.
Efeitos visuais e atributos
Brilho (Glowing): adiciona um contorno colorido em redor do personagem. A cor está associada às cores de equipa vanilla (Team Colors).
Equipamento (Equipment): aos personagens podem ser dados quaisquer itens na mão esquerda ou direita, bem como vestir-lhes capacete, peitoral, perneiras e botas.
Poses (Poses): são suportados estados de exibição específicos, como estar sentado, deitado (imitação de dormir numa cama), nadar e rastejar.
Tamanho (Scale): nas novas versões do plugin está implementado o suporte ao redimensionamento das entidades (alteração do tamanho físico do modelo).
Sistema de comandos e sintaxe
A gestão dos personagens é feita exclusivamente através de comandos no chat do jogo ou na consola do servidor. A tabela abaixo contém a descrição da sintaxe básica:
Comando | Descrição e parâmetros | Exemplo de utilização |
| Criação de um novo personagem |
|
| Remoção de um personagem existente |
|
| Alteração da skin (nome, url ou @mirror) |
|
| Equipa o NPC com o item que o jogador tem na mão |
|
| Ativa o brilho colorido em redor do modelo |
|
| Faz com que o personagem vire a cabeça para os jogadores |
|
| Define poses específicas ou variantes de mobs |
|
Para a administração global do plugin utilizam-se os comandos da plataforma:
/fancynpcs reload— recarrega as configurações do sistema./fancynpcs save— grava forçadamente o estado atual de todos os NPC no disco, no ficheiro da base de dados.
Sistema de ações interativas (Actions)
O FancyNpcs contém um mecanismo de scripting de ações integrado, que é ativado na interação do jogador com o personagem. As ações podem ser configuradas para diferentes tipos de clique (LEFT_CLICK, RIGHT_CLICK, ANY_CLICK).
O plugin oferece os seguintes tipos de ações para executar:
message: envio de uma mensagem ao jogador. Suporta MiniMessage (cores Hex) e variáveis do PlaceholdersAPI.player_command: execução de um comando em nome do jogador.player_command_as_op: execução de um comando em nome do jogador com a concessão temporária de permissões de operador (para ativar comandos que um jogador comum não pode utilizar).console_command: execução de um comando pela consola do servidor. A variável {player} é automaticamente substituída pelo nome do jogador.send_to_server: transferência instantânea do jogador para outro servidor na rede BungeeCord ou Velocity.wait: cria uma pausa entre ações (atraso em ticks do servidor).block_until_done: impede cliques repetidos no NPC até à conclusão do cenário de ações atual.execute_random_action: seleção aleatória de uma das ações seguintes na lista.
Exemplo de criação de um cenário interativo complexo para um NPC chamado Bob:
Adicionar uma mensagem de boas-vindas:
/npc action Bob RIGHT_CLICK add message <yellow>Bem-vindo ao nosso servidor, %player_name%!</yellow>Adicionar uma pausa de 40 ticks (2 segundos):
/npc action Bob RIGHT_CLICK add wait 40Teletransportar o jogador para o spawn através da consola:
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
Graças à possibilidade de adicionar vários passos consecutivos e de ajustar a fila com add_before, add_after e move_up/move_down, os administradores podem construir verdadeiras árvores de diálogo ou mecânicas complexas de transição entre servidores de lobby sem instalar plugins adicionais como o Denizen ou o MyCommand.
Estrutura dos ficheiros de configuração
Todos os dados são armazenados no diretório plugins/FancyNpcs/. O funcionamento do plugin baseia-se em dois ficheiros:
1. config.yml
Este ficheiro define o comportamento global do plugin e contém as seguintes configurações:
turn_to_player_distance(predefinição 5): raio em blocos dentro do qual o personagem vira a cabeça para os jogadores. A redução deste parâmetro otimiza a transmissão de pacotes de rede nas zonas movimentadas.visibility_distance(predefinição 20): distância em blocos à qual são enviados ao cliente os pacotes de aparecimento dos NPC. A redução ajuda a ocultar os personagens atrás de paredes ou do nevoeiro de renderização, poupando os FPS dos jogadores.enable_autosave: gravação automática e periódica das alterações no disco.
2. npcs.yml
Neste ficheiro o plugin armazena a base de dados dos NPC criados. Cada personagem é descrito por um bloco de dados separado:
YAML
Bob: id: 104 type: PLAYER world: world x: 10.5 y: 64.0 z: -25.5 yaw: 90.0 pitch: 0.0 glowing: false turn_to_player: true skin: value: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUv..." signature: "d3G8h...==" actions: RIGHT_CLICK: - type: MESSAGE value: "<green>Bem-vindo!</green>" |
Aviso: A edição manual do ficheiro npcs.yml é fortemente desaconselhada devido ao risco de danificar a sintaxe ou de definir incorretamente as coordenadas. Quaisquer alterações à configuração dos NPC devem ser efetuadas exclusivamente através dos comandos dentro do jogo e, em seguida, gravadas com /fancynpcs save.
Conclusão
O plugin FancyNpcs é uma solução moderna e eficiente para criar personagens decorativos e interativos nos servidores de Minecraft Java Edition. Elimina o principal problema das ferramentas antigas — o consumo de tempo de processador do servidor para a manutenção das entidades.
A principal limitação do plugin é a ausência total de inteligência artificial. Como os personagens são projeções virtuais do lado do cliente, não conseguem deslocar-se sozinhos pelo mundo, interagir com blocos ou atacar outros mobs.
Em comparação com o clássico plugin Citizens, que suporta mecânicas de movimento complexas (navegação por waypoints) e a integração com sistemas de combate (mod Sentinel), o FancyNpcs é inferior em termos de flexibilidade da inteligência artificial. No entanto, o Citizens cria uma carga colossal sobre a thread principal do servidor e é praticamente inutilizável no Folia. O FancyNpcs oferece uma alternativa ideal para servidores de lobby, hubs Velocity e grandes projetos SMP, onde dos personagens se exige apenas uma presença estática, um bom aspeto e uma rápida execução dos comandos ao clicar.
Instalação
Uma instalação típica leva cerca de 5 minutos. O fluxo é o mesmo; só mudam o loader e o build correspondente.
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.








