
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
Dependencias: Plataforma: Paper / Folia (Spigot y otras bifurcaciones obsoletas de Bukkit no son compatibles) Versión de Java: Java 21+…
Dependencias: Plataforma: Paper / Folia (Spigot y otras bifurcaciones obsoletas de Bukkit no son compatibles) Versión de Java: Java 21+ (para las compilaciones más recientes se requiere Java 25) Versión de Minecraft: 1.
Dependencias:
Plataforma: Paper / Folia (Spigot y otras bifurcaciones obsoletas de Bukkit no son compatibles)
Versión de Java: Java 21+ (para las compilaciones más recientes se requiere Java 25)
Versión de Minecraft: 1.19.4 – 1.21.x
Bibliotecas adicionales: PlaceholdersAPI (recomendado para la integración de variables en la interfaz de acciones)
La creación de personajes no jugadores (NPC) interactivos en los servidores de Minecraft tradicionalmente conlleva costes de hardware considerables. Las soluciones obsoletas registran los NPC como entidades de servidor completas (Entity), lo que obliga al núcleo a procesar su inteligencia artificial, las colisiones físicas, la búsqueda de rutas y la carga de chunks. Esto provoca una caída crítica del indicador TPS (Ticks Per Second) a medida que aumenta el número de personajes. El plugin FancyNpcs ofrece un método alternativo, basado en paquetes, para el renderizado de personajes virtuales, lo que permite mantener cientos de figuras interactivas sin ningún impacto en el rendimiento del hilo del servidor.
Arquitectura por paquetes y compatibilidad con Folia
La principal particularidad técnica de FancyNpcs reside en que los personajes creados existen exclusivamente en la memoria del plugin y en el lado de los clientes conectados. El servidor no los añade a la base de datos del mundo ni los procesa en el ciclo general de actualización de entidades.
Cuando un jugador se acerca a las coordenadas establecidas, el plugin intercepta el tráfico de red y envía al cliente los paquetes ClientboundAddPlayerPacket (para modelos humanos) o ClientboundAddEntityPacket (para otras criaturas). El comportamiento posterior, el equipamiento y el estado de visualización se actualizan mediante los paquetes ClientboundSetEntityDataPacket (metadatos) y ClientboundSetEquipmentPacket (equipamiento). Para el servidor, estos personajes no existen: son «proyecciones virtuales» para los usuarios finales.
Este enfoque convierte a FancyNpcs en la elección ideal para servidores multihilo basados en Folia. Dado que Folia divide el mundo en regiones separadas, cada una de las cuales funciona en su propio hilo, los plugins de NPC tradicionales a menudo provocan bloqueos mutuos y errores críticos debido a los intentos de interacción entre hilos de distintas regiones. FancyNpcs procesa los datos de forma asíncrona y envía los paquetes directamente a los jugadores, evitando por completo los conflictos con el planificador de tareas de Folia.
Opciones de personalización del aspecto
El plugin admite una amplia variedad de tipos de entidades y efectos visuales. Los jugadores pueden crear NPC con la forma de cualquier mob vanilla (Player, Cow, Zombie, Skeleton, Villager, Pig, etc.) y ajustar su aspecto con precisión.
Gestión de skins (para modelos humanos)
Para los personajes de tipo player hay disponibles varias fuentes para cargar texturas:
@mirror: el skin del NPC copia dinámicamente el skin del jugador que lo está mirando en ese momento.Nombre o UUID de una cuenta con licencia: el plugin envía automáticamente una solicitud a los servidores de sesión de Mojang para cargar la textura correspondiente.
Enlace directo a un recurso web (URL): posibilidad de cargar cualquier archivo .png de terceros desde un servidor web.
Archivos locales: imágenes colocadas previamente en la carpeta /plugins/FancyNpcs/skins/.
Indicador
--slim: activa el uso del modelo de brazos delgados (estilo Alex) para los skins cargados mediante enlaces.
Efectos visuales y atributos
Brillo (Glowing): añade un contorno de color alrededor del personaje. El color está vinculado a los colores de equipo vanilla (Team Colors).
Equipamiento (Equipment): a los personajes se les puede dar cualquier objeto en la mano izquierda o derecha, así como ponerles casco, peto, grebas y botas.
Poses (Poses): se admiten estados de visualización específicos, como estar sentado, tumbado (imitación de dormir en una cama), nadar y arrastrarse.
Tamaño (Scale): en las nuevas versiones del plugin se ha implementado la compatibilidad con el escalado de entidades (cambio del tamaño físico del modelo).
Sistema de comandos y sintaxis
La gestión de los personajes se realiza exclusivamente mediante comandos en el chat del juego o la consola del servidor. La siguiente tabla contiene una descripción de la sintaxis básica:
Comando | Descripción y parámetros | Ejemplo de uso |
| Creación de un nuevo personaje |
|
| Eliminación de un personaje existente |
|
| Cambio del skin (nombre, url o @mirror) |
|
| Equipa al NPC con el objeto que sostiene el jugador |
|
| Activa el brillo de color alrededor del modelo |
|
| Hace que el personaje gire la cabeza hacia los jugadores |
|
| Establece poses específicas o variantes de mobs |
|
Para la administración global del plugin se utilizan los comandos de la plataforma:
/fancynpcs reload— recarga las configuraciones del sistema./fancynpcs save— escribe de forma forzada el estado actual de todos los NPC en el disco, en el archivo de la base de datos.
Sistema de acciones interactivas (Actions)
FancyNpcs incluye un mecanismo de scripting de acciones integrado que se activa al interactuar el jugador con el personaje. Las acciones se pueden configurar para distintos tipos de clic (LEFT_CLICK, RIGHT_CLICK, ANY_CLICK).
El plugin ofrece los siguientes tipos de acciones para ejecutar:
message: envío de un mensaje al jugador. Admite MiniMessage (colores Hex) y variables de PlaceholdersAPI.player_command: ejecución de un comando en nombre del jugador.player_command_as_op: ejecución de un comando en nombre del jugador con la concesión temporal de permisos de operador (para activar comandos que un jugador normal no puede usar).console_command: ejecución de un comando por la consola del servidor. La variable {player} se reemplaza automáticamente por el nombre del jugador.send_to_server: traslado instantáneo del jugador a otro servidor de la red BungeeCord o Velocity.wait: crea una pausa entre acciones (retardo en ticks del servidor).block_until_done: impide las pulsaciones repetidas sobre el NPC hasta que finalice el escenario de acciones actual.execute_random_action: selección aleatoria de una de las siguientes acciones de la lista.
Ejemplo de creación de un escenario interactivo complejo para un NPC llamado Bob:
Añadir un mensaje de bienvenida:
/npc action Bob RIGHT_CLICK add message <yellow>¡Bienvenido a nuestro servidor, %player_name%!</yellow>Añadir una pausa de 40 ticks (2 segundos):
/npc action Bob RIGHT_CLICK add wait 40Teletransportar al jugador al spawn mediante la consola:
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
Gracias a la posibilidad de añadir varios pasos sucesivos y de regular la cola mediante add_before, add_after y move_up/move_down, los administradores pueden construir auténticos árboles de diálogo o mecánicas complejas de transición entre servidores de lobby sin instalar plugins adicionales como Denizen o MyCommand.
Estructura de los archivos de configuración
Todos los datos se almacenan en el directorio plugins/FancyNpcs/. El funcionamiento del plugin se basa en dos archivos:
1. config.yml
Este archivo define el comportamiento global del plugin y contiene los siguientes ajustes:
turn_to_player_distance(5 por defecto): radio en bloques dentro del cual el personaje gira la cabeza hacia los jugadores. Reducir este parámetro optimiza la transmisión de paquetes de red en las zonas concurridas.visibility_distance(20 por defecto): distancia en bloques a la que se envían al cliente los paquetes de aparición de los NPC. Reducirla ayuda a ocultar a los personajes tras los muros o la niebla de renderizado para ahorrar FPS a los jugadores.enable_autosave: guardado automático y periódico de los cambios en el disco.
2. npcs.yml
En este archivo el plugin almacena la base de datos de los NPC creados. Cada personaje se describe mediante un bloque de datos independiente:
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>¡Bienvenido!</green>" |
Advertencia: La edición manual del archivo npcs.yml está muy desaconsejada por el riesgo de corromper la sintaxis o de definir incorrectamente las coordenadas. Cualquier cambio en la configuración de los NPC debe realizarse exclusivamente mediante los comandos dentro del juego y, a continuación, guardarse con /fancynpcs save.
Conclusión
El plugin FancyNpcs es una solución moderna y eficiente para crear personajes decorativos e interactivos en los servidores de Minecraft Java Edition. Elimina el principal problema de las herramientas antiguas: el consumo de tiempo de procesador del servidor para el mantenimiento de las entidades.
La principal limitación del plugin es la ausencia total de inteligencia artificial. Como los personajes son proyecciones virtuales del lado del cliente, no pueden desplazarse por el mundo por sí mismos, interactuar con bloques ni atacar a otros mobs.
En comparación con el clásico plugin Citizens, que admite mecánicas de movimiento complejas (navegación por puntos de ruta) e integración con sistemas de combate (mod Sentinel), FancyNpcs es inferior en cuanto a la flexibilidad de la inteligencia artificial. Sin embargo, Citizens genera una carga colosal sobre el hilo principal del servidor y resulta prácticamente inviable para su uso en Folia. FancyNpcs ofrece una alternativa ideal para servidores de lobby, hubs de Velocity y grandes proyectos SMP, donde de los personajes solo se requiere una presencia estática, un buen aspecto y una rápida ejecución de comandos al hacer clic.
Instalación
Una instalación típica lleva unos 5 minutos. El proceso es el mismo; solo cambian el loader y el build correspondiente.
- 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.








