375 lines
5.7 KiB
Markdown
375 lines
5.7 KiB
Markdown
---
|
|
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 >}}
|