This commit is contained in:
2026-01-20 20:33:59 +01:00
commit b16a40e431
583 changed files with 87339 additions and 0 deletions

View File

@@ -0,0 +1,374 @@
---
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 <npc_type> [position] [--role <role>] [--name <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 <target>
```
**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 <radius>] [--type <type>]
```
**Arguments:**
| Argument | Type | Description |
|----------|------|-------------|
| `--radius` | Float | Search radius |
| `--type` | String | Filter by NPC type |
### /npc debug
Toggles debug visualization:
```
/npc debug <mode>
```
**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 <target> <role>
```
**Examples:**
```
/npc role @nearest guard_role
/npc role @e[type=villager] merchant_role
```
### /npc state
Forces NPC state:
```
/npc state <target> <state>
```
**States:**
```
/npc state @nearest IDLE
/npc state @nearest ATTACKING
/npc state @nearest FLEEING
```
### /npc target
Sets NPC target:
```
/npc target <npc> <target_entity>
```
**Examples:**
```
/npc target @nearest @p
/npc target guard_01 @e[type=zombie,limit=1]
```
### /npc cleartarget
Clears NPC target:
```
/npc cleartarget <target>
```
## Movement Commands
### /npc moveto
Commands NPC to move to position:
```
/npc moveto <target> <position>
```
**Examples:**
```
/npc moveto @nearest ~ ~ ~10
/npc moveto guard_01 100 64 -200
```
### /npc follow
Commands NPC to follow entity:
```
/npc follow <npc> <target> [distance]
```
**Examples:**
```
/npc follow @nearest @p 3.0
```
### /npc stop
Stops NPC movement:
```
/npc stop <target>
```
### /npc patrol
Sets patrol path:
```
/npc patrol <target> <point1> <point2> [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 <target> [position]
```
## Blackboard Commands
### /npc blackboard get
Gets blackboard value:
```
/npc blackboard get <target> <key>
```
**Examples:**
```
/npc blackboard get @nearest alert_level
/npc blackboard get guard_01 home_position
```
### /npc blackboard set
Sets blackboard value:
```
/npc blackboard set <target> <key> <value>
```
**Examples:**
```
/npc blackboard set @nearest alert_level 1.0
/npc blackboard set @nearest is_hostile true
```
### /npc blackboard clear
Clears blackboard:
```
/npc blackboard clear <target> [key]
```
## AI Commands
### /npc think
Forces AI decision cycle:
```
/npc think <target>
```
### /npc instruction
Forces instruction:
```
/npc instruction <target> <instruction>
```
**Examples:**
```
/npc instruction @nearest flee
/npc instruction guard_01 attack
```
### /npc sensor
Toggles sensor:
```
/npc sensor <target> <sensor> <enabled>
```
**Examples:**
```
/npc sensor @nearest visual false
/npc sensor @nearest audio true
```
## Faction Commands
### /npc faction
Sets NPC faction:
```
/npc faction <target> <faction>
```
**Examples:**
```
/npc faction @nearest town_guard
/npc faction villager_01 merchants
```
### /npc relation
Sets faction relation:
```
/npc relation <faction1> <faction2> <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<Void> 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 >}}