Permissions
Citizens Permissions
Section titled “Citizens Permissions”Citizens are part of Core. They use the ks.citizen.* scheme plus per-NPC interaction permissions that operators choose freely.
Permission Nodes
Section titled “Permission Nodes”| Permission | Default | Description |
|---|---|---|
ks.citizen | — | Parent node for the /kscitizen command; required to run any subcommand |
ks.citizen.admin | ❌ staff only | Required for every admin subcommand (create, remove, tp, respawn, marker, viewer, waypoints, reload, info, list) |
/kscitizen requires ks.citizen at the command-collection level, and each admin subcommand additionally requires ks.citizen.admin. In practice just grant ks.citizen.admin to staff — the parent node is auto-satisfied when the subcommand node resolves.
Command Permission Matrix
Section titled “Command Permission Matrix”| Command | Permission |
|---|---|
/kscitizen list [group] | ks.citizen.admin |
/kscitizen create <id> | ks.citizen.admin |
/kscitizen remove <id> | ks.citizen.admin |
/kscitizen tp <id> | ks.citizen.admin |
/kscitizen respawn <id> | ks.citizen.admin |
/kscitizen respawnall | ks.citizen.admin |
/kscitizen reload | ks.citizen.admin |
/kscitizen info <id> | ks.citizen.admin |
/kscitizen marker <id> [type] | ks.citizen.admin |
/kscitizen viewer | ks.citizen.admin |
/kscitizen wprecord <id> | ks.citizen.admin |
/kscitizen wpadd [seconds] | ks.citizen.admin |
/kscitizen wpundo | ks.citizen.admin |
/kscitizen wpdone | ks.citizen.admin |
Alias: /npc. Permission checks are the same regardless of which alias is used. Console commands bypass every check.
Showcase Mode
Section titled “Showcase Mode”When the server runs in read-only showcase mode, write operations are blocked even for players with ks.citizen.admin. Blocked in showcase mode:
/kscitizen create/kscitizen remove/kscitizen respawnall/kscitizen reload/kscitizen wprecord,wpadd,wpundo,wpdone
Read-only commands (list, tp, info, marker, viewer) remain available in showcase mode.
Per-Citizen Interaction Permissions (config-driven)
Section titled “Per-Citizen Interaction Permissions (config-driven)”Individual citizens can require a custom permission string for player interaction. The mod just passes whatever string you set to hasPermission() — no ks. prefix required.
{ "id": "vip_merchant", "permission": "citizen.interact.vip", "noPermissionMessage": "Only VIP members can talk to this merchant."}| Field | Description |
|---|---|
permission | String checked on interaction. Blocked players see noPermissionMessage. Leave null for open NPCs. |
noPermissionMessage | Message shown to players who lack the required permission. |
The prefix citizen.interact.* is convention — you can use vip.npc.merchant, rank.premium, anything.
LuckPerms Examples
Section titled “LuckPerms Examples”# Staff admin/lp user Steve permission set ks.citizen.admin true
# VIP-only NPC interaction/lp group vip permission set citizen.interact.vip trueMigration from Legacy Nodes
Section titled “Migration from Legacy Nodes”The old citizen.admin node is no longer checked by the command gate. Grant ks.citizen.admin instead. Per-NPC interaction strings (citizen.interact.* or any custom value) remain user-authored and are not affected by this migration.
Do not grant ks.citizen.admin to regular players. It provides full control over every NPC on the server — create, modify, delete, teleport to.