--- title: Système NPC type: docs weight: 10 --- Le système NPC (Non-Player Character) fournit un framework complet pour créer des personnages de jeu intelligents avec un comportement autonome, une prise de décision et des capacités de navigation. **Package:** `com.hypixel.hytale.server.npc` {{< cards >}} {{< card link="npc-basics" title="Bases NPC" subtitle="Création et configuration des NPCs" >}} {{< card link="npc-components" title="Composants NPC" subtitle="Composants de base et données" >}} {{< card link="npc-ai" title="IA NPC" subtitle="Blackboard, décisions et capteurs" >}} {{< card link="npc-movement" title="Mouvement NPC" subtitle="Navigation et pathfinding" >}} {{< card link="npc-commands" title="Commandes NPC" subtitle="Commandes admin et debug" >}} {{< /cards >}} ## Vue d'Ensemble de l'Architecture Le système NPC est construit sur plusieurs sous-systèmes interconnectés : ``` NPCEntity ├── Blackboard (état/mémoire partagé) ├── Role (template comportemental) │ ├── Instructions (objectifs haut niveau) │ ├── Sensors (perception) │ └── Actions (comportements) ├── DecisionMaker (logique IA) │ ├── Evaluators (vérification conditions) │ └── Options (sélection actions) └── Movement ├── MotionController (exécution mouvement) ├── PathFollower (suivi de chemin) └── NavigationGraph (pathfinding A*) ``` ## Exemple Rapide ```java // Enregistrer un événement lié aux NPCs getEventRegistry().register(NPCSpawnEvent.class, event -> { NPCEntity npc = event.getNPC(); // Accéder au blackboard pour l'état Blackboard blackboard = npc.getBlackboard(); // Obtenir le rôle actuel Role role = npc.getRole(); // Vérifier si le NPC a une cible if (blackboard.hasTarget()) { Entity target = blackboard.getTarget(); } }); ``` ## Classes Principales | Classe | Description | |--------|-------------| | `NPCEntity` | Classe de base pour tous les NPCs | | `NPCPlugin` | Point d'entrée plugin pour le système NPC | | `Blackboard` | Conteneur d'état partagé pour les données NPC | | `Role` | Définit le template de comportement NPC | | `DecisionMaker` | Logique de décision IA | | `MotionController` | Exécution des mouvements | | `PathFollower` | Suivi et parcours de chemin | ## Sous-packages | Package | Fichiers | Description | |---------|----------|-------------| | `corecomponents/` | 327 | Composants ECS de base pour NPCs | | `asset/` | 152 | Configuration des assets NPC | | `util/` | 50 | Classes utilitaires | | `blackboard/` | 30 | Gestion d'état | | `movement/` | 27 | Comportements de mouvement | | `systems/` | 25 | Systèmes ECS | | `commands/` | 23 | Commandes admin | | `decisionmaker/` | 22 | Logique de décision IA | | `sensorinfo/` | 20 | Système de perception | | `role/` | 17 | Définitions de rôles | | `instructions/` | 14 | Comportements haut niveau | | `navigation/` | 12 | Pathfinding |