
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
Dépendances : Plateforme : Paper / Folia (Spigot et autres forks obsolètes de Bukkit ne sont pas pris en charge) Version de Java : Java 21+…
Dépendances : Plateforme : Paper / Folia (Spigot et autres forks obsolètes de Bukkit ne sont pas pris en charge) Version de Java : Java 21+ (Java 25 est requis pour les builds les plus récents) Version de Minecraft : 1.
Dépendances :
Plateforme : Paper / Folia (Spigot et autres forks obsolètes de Bukkit ne sont pas pris en charge)
Version de Java : Java 21+ (Java 25 est requis pour les builds les plus récents)
Version de Minecraft : 1.19.4 – 1.21.x
Bibliothèques supplémentaires : PlaceholdersAPI (recommandé pour l'intégration de variables dans l'interface des actions)
La création de personnages non-joueurs (NPC) interactifs sur les serveurs Minecraft s'accompagne traditionnellement de coûts matériels importants. Les solutions obsolètes enregistrent les NPC comme des entités serveur à part entière (Entity), ce qui oblige le cœur à traiter leur intelligence artificielle, leurs collisions physiques, la recherche de chemin et le chargement des chunks. Cela entraîne une baisse critique de l'indicateur TPS (Ticks Per Second) à mesure que le nombre de personnages augmente. Le plugin FancyNpcs propose une méthode alternative, basée sur les paquets, pour le rendu de personnages virtuels, ce qui permet de maintenir des centaines de figures interactives sans aucun impact sur les performances du thread serveur.
Architecture par paquets et compatibilité avec Folia
La principale particularité technique de FancyNpcs réside dans le fait que les personnages créés existent exclusivement dans la mémoire du plugin et du côté des clients connectés. Le serveur ne les ajoute pas à la base de données du monde et ne les traite pas dans le cycle général de mise à jour des entités.
Lorsqu'un joueur s'approche des coordonnées définies, le plugin intercepte le trafic réseau et envoie au client les paquets ClientboundAddPlayerPacket (pour les modèles humains) ou ClientboundAddEntityPacket (pour les autres créatures). Le comportement ultérieur, l'équipement et l'état d'affichage sont mis à jour à l'aide des paquets ClientboundSetEntityDataPacket (métadonnées) et ClientboundSetEquipmentPacket (équipement). Pour le serveur, ces personnages n'existent pas — ce sont des « projections virtuelles » destinées aux utilisateurs finaux.
Cette approche fait de FancyNpcs un choix idéal pour les serveurs multithreads basés sur Folia. Comme Folia divise le monde en régions distinctes, chacune fonctionnant dans son propre thread, les plugins NPC traditionnels provoquent souvent des interblocages et des erreurs critiques en raison des tentatives d'interaction entre les threads de différentes régions. FancyNpcs traite les données de manière asynchrone et envoie les paquets directement aux joueurs, évitant totalement les conflits avec le planificateur de tâches de Folia.
Possibilités de personnalisation de l'apparence
Le plugin prend en charge un large éventail de types d'entités et d'effets visuels. Les joueurs peuvent créer des NPC sous la forme de n'importe quels mobs vanilla (Player, Cow, Zombie, Skeleton, Villager, Pig, etc.) et affiner leur apparence.
Gestion des skins (pour les modèles humains)
Pour les personnages de type player, plusieurs sources de chargement de textures sont disponibles :
@mirror: le skin du NPC copie dynamiquement le skin du joueur qui le regarde à ce moment-là.Nom ou UUID d'un compte sous licence : le plugin envoie automatiquement une requête aux serveurs de session Mojang pour charger la texture correspondante.
Lien direct vers une ressource web (URL) : possibilité de charger n'importe quel fichier .png tiers depuis un serveur web.
Fichiers locaux : images préalablement placées dans le dossier /plugins/FancyNpcs/skins/.
Indicateur
--slim: active l'utilisation du modèle de bras fins (style Alex) pour les skins chargés via des liens.
Effets visuels et attributs
Brillance (Glowing) : ajoute un contour coloré autour du personnage. La couleur est liée aux couleurs d'équipe vanilla (Team Colors).
Équipement (Equipment) : on peut donner aux personnages n'importe quels objets dans la main gauche ou droite, ainsi que leur faire porter un casque, un plastron, des jambières et des bottes.
Poses (Poses) : des états d'affichage spécifiques sont pris en charge, tels que s'asseoir, s'allonger (imitation du sommeil dans un lit), nager et ramper.
Taille (Scale) : dans les nouvelles versions du plugin, la prise en charge de la mise à l'échelle des entités (modification de la taille physique du modèle) est implémentée.
Système de commandes et syntaxe
La gestion des personnages s'effectue exclusivement à l'aide de commandes dans le chat du jeu ou la console du serveur. Le tableau ci-dessous contient une description de la syntaxe de base :
Commande | Description et paramètres | Exemple d'utilisation |
| Création d'un nouveau personnage |
|
| Suppression d'un personnage existant |
|
| Modification du skin (nom, url ou @mirror) |
|
| Équipe le NPC de l'objet que tient le joueur |
|
| Active la brillance colorée autour du modèle |
|
| Oblige le personnage à tourner la tête vers les joueurs |
|
| Définit des poses spécifiques ou des variantes de mobs |
|
Pour l'administration globale du plugin, les commandes de plateforme sont utilisées :
/fancynpcs reload— recharge les configurations système./fancynpcs save— écrit de force l'état actuel de tous les NPC sur le disque dans le fichier de base de données.
Système d'actions interactives (Actions)
FancyNpcs contient un mécanisme de script d'actions intégré, qui s'active lors de l'interaction d'un joueur avec le personnage. Les actions peuvent être configurées pour différents types de clics (LEFT_CLICK, RIGHT_CLICK, ANY_CLICK).
Le plugin propose les types d'actions suivants à exécuter :
message: envoi d'un message au joueur. Prend en charge MiniMessage (couleurs Hex) et les variables PlaceholdersAPI.player_command: exécution d'une commande au nom du joueur.player_command_as_op: exécution d'une commande au nom du joueur avec attribution temporaire des droits d'opérateur (pour activer des commandes qu'un joueur ordinaire ne peut pas utiliser).console_command: exécution d'une commande par la console du serveur. La variable {player} est automatiquement remplacée par le nom du joueur.send_to_server: déplacement instantané du joueur vers un autre serveur du réseau BungeeCord ou Velocity.wait: crée une pause entre les actions (délai en ticks serveur).block_until_done: empêche les clics répétés sur le NPC jusqu'à la fin du scénario d'actions en cours.execute_random_action: choix aléatoire de l'une des actions suivantes dans la liste.
Exemple de création d'un scénario interactif complexe pour un NPC nommé Bob :
Ajout d'un message de bienvenue :
/npc action Bob RIGHT_CLICK add message <yellow>Bienvenue sur notre serveur, %player_name%!</yellow>Ajout d'une pause de 40 ticks (2 secondes) :
/npc action Bob RIGHT_CLICK add wait 40Téléportation du joueur au spawn via la console :
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
Grâce à la possibilité d'ajouter plusieurs étapes successives et de régler la file d'attente à l'aide de add_before, add_after et move_up/move_down, les administrateurs peuvent construire de véritables arbres de dialogue ou des mécaniques complexes de transition entre serveurs de lobby sans installer de plugins supplémentaires tels que Denizen ou MyCommand.
Structure des fichiers de configuration
Toutes les données sont stockées dans le répertoire plugins/FancyNpcs/. Le fonctionnement du plugin repose sur deux fichiers :
1. config.yml
Ce fichier définit le comportement global du plugin et contient les paramètres suivants :
turn_to_player_distance(5 par défaut) : rayon en blocs à l'intérieur duquel le personnage tourne la tête vers les joueurs. La réduction de ce paramètre optimise la transmission des paquets réseau dans les zones très fréquentées.visibility_distance(20 par défaut) : distance en blocs à laquelle les paquets d'apparition des NPC sont envoyés au client. La réduction permet de masquer les personnages derrière les murs ou le brouillard de rendu pour économiser les FPS des joueurs.enable_autosave: enregistrement automatique et périodique des modifications sur le disque.
2. npcs.yml
Dans ce fichier, le plugin stocke la base de données des NPC créés. Chaque personnage est décrit par un bloc de données distinct :
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>Bienvenue !</green>" |
Avertissement : La modification manuelle du fichier npcs.yml est fortement déconseillée en raison du risque de corruption de la syntaxe ou de définition incorrecte des coordonnées. Toute modification de la configuration des NPC doit être effectuée exclusivement via les commandes en jeu, puis enregistrée à l'aide de /fancynpcs save.
Conclusion
Le plugin FancyNpcs est une solution moderne et performante pour créer des personnages décoratifs et interactifs sur les serveurs Minecraft Java Edition. Il élimine le principal problème des anciens outils — la consommation de temps processeur du serveur pour la gestion des entités.
La principale limitation du plugin est l'absence totale d'intelligence artificielle. Comme les personnages sont des projections virtuelles côté client, ils ne peuvent pas se déplacer seuls dans le monde, interagir avec les blocs ou attaquer d'autres mobs.
Comparé au plugin classique Citizens, qui prend en charge des mécaniques de déplacement complexes (navigation par points de passage) et l'intégration avec des systèmes de combat (mod Sentinel), FancyNpcs est inférieur en matière de flexibilité de l'intelligence artificielle. Cependant, Citizens crée une charge colossale sur le thread principal du serveur et est pratiquement inutilisable sur Folia. FancyNpcs offre une alternative idéale pour les serveurs de lobby, les hubs Velocity et les grands projets SMP, où l'on n'attend des personnages qu'une présence statique, une belle apparence et une exécution rapide des commandes au clic.
Installation
Une installation classique prend environ 5 minutes. Le déroulé est le même ; seuls le loader et le build correspondant changent.
- 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.








