--- title: NPC Commands type: docs weight: 5 --- The NPC system includes 23 admin and debug commands for managing and testing NPCs. **Package:** `com.hypixel.hytale.server.npc.commands` ## Spawning Commands ### /npc spawn Spawns an NPC at a location: ``` /npc spawn [position] [--role ] [--name ] ``` **Arguments:** | Argument | Type | Description | |----------|------|-------------| | `npc_type` | String | NPC asset ID | | `position` | Position | Spawn location (default: player position) | | `--role` | String | Override default role | | `--name` | String | Custom display name | **Examples:** ``` /npc spawn villager /npc spawn guard ~ ~1 ~ --role patrol_guard /npc spawn merchant --name "Bob the Trader" ``` ### /npc despawn Removes an NPC: ``` /npc despawn ``` **Arguments:** | Argument | Type | Description | |----------|------|-------------| | `target` | NPC | Target NPC (raycast or selector) | ### /npc despawnall Removes all NPCs in radius: ``` /npc despawnall [radius] ``` **Arguments:** | Argument | Type | Description | |----------|------|-------------| | `radius` | Float | Radius in blocks (default: 50) | ## Information Commands ### /npc info Displays NPC information: ``` /npc info [target] ``` **Output:** ``` NPC Info: Villager (villager_001) Position: 100.5, 64.0, -200.3 Role: villager_role State: IDLE Health: 100/100 Target: None Current Instruction: Wander ``` ### /npc list Lists all NPCs: ``` /npc list [--radius ] [--type ] ``` **Arguments:** | Argument | Type | Description | |----------|------|-------------| | `--radius` | Float | Search radius | | `--type` | String | Filter by NPC type | ### /npc debug Toggles debug visualization: ``` /npc debug ``` **Modes:** | Mode | Description | |------|-------------| | `path` | Show pathfinding | | `sensors` | Show sensor ranges | | `state` | Show AI state | | `target` | Show targeting | | `all` | Show everything | | `off` | Disable debug | ## Behavior Commands ### /npc role Changes NPC role: ``` /npc role ``` **Examples:** ``` /npc role @nearest guard_role /npc role @e[type=villager] merchant_role ``` ### /npc state Forces NPC state: ``` /npc state ``` **States:** ``` /npc state @nearest IDLE /npc state @nearest ATTACKING /npc state @nearest FLEEING ``` ### /npc target Sets NPC target: ``` /npc target ``` **Examples:** ``` /npc target @nearest @p /npc target guard_01 @e[type=zombie,limit=1] ``` ### /npc cleartarget Clears NPC target: ``` /npc cleartarget ``` ## Movement Commands ### /npc moveto Commands NPC to move to position: ``` /npc moveto ``` **Examples:** ``` /npc moveto @nearest ~ ~ ~10 /npc moveto guard_01 100 64 -200 ``` ### /npc follow Commands NPC to follow entity: ``` /npc follow [distance] ``` **Examples:** ``` /npc follow @nearest @p 3.0 ``` ### /npc stop Stops NPC movement: ``` /npc stop ``` ### /npc patrol Sets patrol path: ``` /npc patrol [point3...] ``` **Examples:** ``` /npc patrol guard_01 0 64 0 10 64 0 10 64 10 0 64 10 ``` ### /npc home Sets NPC home position: ``` /npc home [position] ``` ## Blackboard Commands ### /npc blackboard get Gets blackboard value: ``` /npc blackboard get ``` **Examples:** ``` /npc blackboard get @nearest alert_level /npc blackboard get guard_01 home_position ``` ### /npc blackboard set Sets blackboard value: ``` /npc blackboard set ``` **Examples:** ``` /npc blackboard set @nearest alert_level 1.0 /npc blackboard set @nearest is_hostile true ``` ### /npc blackboard clear Clears blackboard: ``` /npc blackboard clear [key] ``` ## AI Commands ### /npc think Forces AI decision cycle: ``` /npc think ``` ### /npc instruction Forces instruction: ``` /npc instruction ``` **Examples:** ``` /npc instruction @nearest flee /npc instruction guard_01 attack ``` ### /npc sensor Toggles sensor: ``` /npc sensor ``` **Examples:** ``` /npc sensor @nearest visual false /npc sensor @nearest audio true ``` ## Faction Commands ### /npc faction Sets NPC faction: ``` /npc faction ``` **Examples:** ``` /npc faction @nearest town_guard /npc faction villager_01 merchants ``` ### /npc relation Sets faction relation: ``` /npc relation ``` **Relations:** `ALLIED`, `FRIENDLY`, `NEUTRAL`, `UNFRIENDLY`, `HOSTILE` **Examples:** ``` /npc relation guards bandits HOSTILE /npc relation merchants town_guard ALLIED ``` ## Command Permissions | Command | 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` | ## Registering Custom NPC Commands ```java public class MyNPCCommand extends AbstractCommand { public MyNPCCommand() { super("npc custom", "Custom NPC command"); withRequiredArg("target", "Target NPC", ArgTypes.NPC_REF); } @Override protected CompletableFuture execute(CommandContext ctx) { NPCEntity npc = ctx.get("target"); // Custom logic return null; } } // Register in plugin setup getCommandRegistry().register(new MyNPCCommand()); ``` ## Best Practices {{< callout type="info" >}} **Command Guidelines:** - Use selectors like `@nearest` for targeting NPCs - Debug commands are invaluable for testing AI - Blackboard commands allow runtime behavior modification - Use permission checks for admin commands {{< /callout >}}