Files
Documentation/content/world/entities/npc/npc-commands.fr.md
2026-01-20 20:33:59 +01:00

375 lines
6.2 KiB
Markdown

---
title: Commandes NPC
type: docs
weight: 5
---
Le système NPC inclut 23 commandes admin et debug pour gérer et tester les NPCs.
**Package:** `com.hypixel.hytale.server.npc.commands`
## Commandes de Spawn
### /npc spawn
Fait apparaître un NPC à une position :
```
/npc spawn <npc_type> [position] [--role <role>] [--name <name>]
```
**Arguments :**
| Argument | Type | Description |
|----------|------|-------------|
| `npc_type` | String | ID d'asset NPC |
| `position` | Position | Position de spawn (défaut: position du joueur) |
| `--role` | String | Remplacer le rôle par défaut |
| `--name` | String | Nom d'affichage personnalisé |
**Exemples :**
```
/npc spawn villager
/npc spawn guard ~ ~1 ~ --role patrol_guard
/npc spawn merchant --name "Bob le Marchand"
```
### /npc despawn
Supprime un NPC :
```
/npc despawn <target>
```
**Arguments :**
| Argument | Type | Description |
|----------|------|-------------|
| `target` | NPC | NPC cible (raycast ou sélecteur) |
### /npc despawnall
Supprime tous les NPCs dans un rayon :
```
/npc despawnall [radius]
```
**Arguments :**
| Argument | Type | Description |
|----------|------|-------------|
| `radius` | Float | Rayon en blocs (défaut: 50) |
## Commandes d'Information
### /npc info
Affiche les informations d'un NPC :
```
/npc info [target]
```
**Sortie :**
```
NPC Info: Villageois (villager_001)
Position: 100.5, 64.0, -200.3
Role: villager_role
State: IDLE
Health: 100/100
Target: None
Current Instruction: Wander
```
### /npc list
Liste tous les NPCs :
```
/npc list [--radius <radius>] [--type <type>]
```
**Arguments :**
| Argument | Type | Description |
|----------|------|-------------|
| `--radius` | Float | Rayon de recherche |
| `--type` | String | Filtrer par type de NPC |
### /npc debug
Active/désactive la visualisation debug :
```
/npc debug <mode>
```
**Modes :**
| Mode | Description |
|------|-------------|
| `path` | Afficher le pathfinding |
| `sensors` | Afficher les portées des capteurs |
| `state` | Afficher l'état IA |
| `target` | Afficher le ciblage |
| `all` | Tout afficher |
| `off` | Désactiver le debug |
## Commandes de Comportement
### /npc role
Change le rôle du NPC :
```
/npc role <target> <role>
```
**Exemples :**
```
/npc role @nearest guard_role
/npc role @e[type=villager] merchant_role
```
### /npc state
Force l'état du NPC :
```
/npc state <target> <state>
```
**États :**
```
/npc state @nearest IDLE
/npc state @nearest ATTACKING
/npc state @nearest FLEEING
```
### /npc target
Définit la cible du NPC :
```
/npc target <npc> <target_entity>
```
**Exemples :**
```
/npc target @nearest @p
/npc target guard_01 @e[type=zombie,limit=1]
```
### /npc cleartarget
Efface la cible du NPC :
```
/npc cleartarget <target>
```
## Commandes de Mouvement
### /npc moveto
Ordonne au NPC de se déplacer vers une position :
```
/npc moveto <target> <position>
```
**Exemples :**
```
/npc moveto @nearest ~ ~ ~10
/npc moveto guard_01 100 64 -200
```
### /npc follow
Ordonne au NPC de suivre une entité :
```
/npc follow <npc> <target> [distance]
```
**Exemples :**
```
/npc follow @nearest @p 3.0
```
### /npc stop
Arrête le mouvement du NPC :
```
/npc stop <target>
```
### /npc patrol
Définit un chemin de patrouille :
```
/npc patrol <target> <point1> <point2> [point3...]
```
**Exemples :**
```
/npc patrol guard_01 0 64 0 10 64 0 10 64 10 0 64 10
```
### /npc home
Définit la position d'origine du NPC :
```
/npc home <target> [position]
```
## Commandes Blackboard
### /npc blackboard get
Obtient une valeur du blackboard :
```
/npc blackboard get <target> <key>
```
**Exemples :**
```
/npc blackboard get @nearest alert_level
/npc blackboard get guard_01 home_position
```
### /npc blackboard set
Définit une valeur du blackboard :
```
/npc blackboard set <target> <key> <value>
```
**Exemples :**
```
/npc blackboard set @nearest alert_level 1.0
/npc blackboard set @nearest is_hostile true
```
### /npc blackboard clear
Efface le blackboard :
```
/npc blackboard clear <target> [key]
```
## Commandes IA
### /npc think
Force un cycle de décision IA :
```
/npc think <target>
```
### /npc instruction
Force une instruction :
```
/npc instruction <target> <instruction>
```
**Exemples :**
```
/npc instruction @nearest flee
/npc instruction guard_01 attack
```
### /npc sensor
Active/désactive un capteur :
```
/npc sensor <target> <sensor> <enabled>
```
**Exemples :**
```
/npc sensor @nearest visual false
/npc sensor @nearest audio true
```
## Commandes de Faction
### /npc faction
Définit la faction du NPC :
```
/npc faction <target> <faction>
```
**Exemples :**
```
/npc faction @nearest town_guard
/npc faction villager_01 merchants
```
### /npc relation
Définit la relation entre factions :
```
/npc relation <faction1> <faction2> <relation>
```
**Relations :** `ALLIED`, `FRIENDLY`, `NEUTRAL`, `UNFRIENDLY`, `HOSTILE`
**Exemples :**
```
/npc relation guards bandits HOSTILE
/npc relation merchants town_guard ALLIED
```
## Permissions des Commandes
| Commande | Permission |
|----------|------------|
| `/npc spawn` | `hytale.command.npc.spawn` |
| `/npc despawn` | `hytale.command.npc.despawn` |
| `/npc info` | `hytale.command.npc.info` |
| `/npc debug` | `hytale.command.npc.debug` |
| `/npc role` | `hytale.command.npc.role` |
| `/npc blackboard` | `hytale.command.npc.blackboard` |
## Enregistrer des Commandes NPC Personnalisées
```java
public class MyNPCCommand extends AbstractCommand {
public MyNPCCommand() {
super("npc custom", "Commande NPC personnalisée");
withRequiredArg("target", "NPC cible", ArgTypes.NPC_REF);
}
@Override
protected CompletableFuture<Void> execute(CommandContext ctx) {
NPCEntity npc = ctx.get("target");
// Logique personnalisée
return null;
}
}
// Enregistrer dans le setup du plugin
getCommandRegistry().register(new MyNPCCommand());
```
## Bonnes Pratiques
{{< callout type="info" >}}
**Directives des Commandes :**
- Utilisez des sélecteurs comme `@nearest` pour cibler les NPCs
- Les commandes debug sont précieuses pour tester l'IA
- Les commandes blackboard permettent la modification du comportement à l'exécution
- Utilisez les vérifications de permissions pour les commandes admin
{{< /callout >}}