Permissions
Permissions
Section titled “Permissions”The Quest System uses the shared ks.<mod>.<scope>.<action> scheme. Player commands gate on ks.quest.user.*; every admin subcommand is gated by a single ks.quest.admin node on the parent collection.
Permission Nodes
Section titled “Permission Nodes”| Permission | Description | Suggested Default |
|---|---|---|
ks.quest.user.use | Open the Quest Book (/ksquest) | ✅ all players |
ks.quest.user.settings | Open the Quest Tracker settings (/ksquestsettings) | ✅ all players |
ks.quest.admin | Every /ksquestadmin subcommand + the /testquest command | ❌ staff only |
Player Commands
Section titled “Player Commands”| Command | Aliases | Permission | Description |
|---|---|---|---|
/ksquest | ksquests, ksquestbook, kqb, questbook, qb | ks.quest.user.use | Opens the Quest Book UI |
/ksquest settings | — | ks.quest.user.settings | Opens the Quest Tracker settings sub-page |
/ksquestsettings | — | ks.quest.user.settings | Opens the Quest Tracker settings directly |
Admin Commands
Section titled “Admin Commands”/ksquestadmin (alias qadmin) is an AbstractCommandCollection. The parent requires ks.quest.admin; subcommand-level permission nodes are not auto-generated (canGeneratePermission() = false), so a single grant covers every subcommand below.
All admin subcommands require ks.quest.admin:
| Command | Console | Description |
|---|---|---|
/ksquestadmin reload | ✅ | Reloads quest configuration from disk |
/ksquestadmin panel | ❌ | Opens the admin panel UI |
/ksquestadmin start <player> <questId> | ✅ | Starts a quest for a player |
/ksquestadmin complete <player> <questId> | ✅ | Force-completes a quest |
/ksquestadmin reset <player> <questId> | ✅ | Resets a quest for a player |
/ksquestadmin setstreak <player> <days> | ✅ | Sets a player’s streak |
/ksquestadmin resetdaily | ✅ | Forces a daily quest reset |
/ksquestadmin resetweekly | ✅ | Forces a weekly quest reset |
/ksquestadmin spawnmerchant [npcType] | ❌ | Spawns an NPC at your location |
/ksquestadmin spawntemplemerchant [npcType] | ❌ | Spawns NPC at the Forgotten Temple |
/ksquestadmin tokens [amount] | ❌ | Gives quest tokens to yourself |
/ksquestadmin debugmode | ❌ | Toggles live debug output |
/ksquestadmin export <type> [id] | ✅ | Exports quest data as JSON |
/ksquestadmin import <file> [overwrite] | ✅ | Imports quest data from JSON |
/ksquestadmin test <questId> [player] | ❌ | Starts a quest in test mode |
/ksquestadmin testfirstjoin | ❌ | Simulates first-join trigger |
/ksquestadmin teststart | ❌ | Starts tutorial_welcome for yourself |
/ksquestadmin testzone <zone> | ❌ | Simulates entering a zone |
/ksquestadmin testnpc <npcId> | ❌ | Simulates NPC interaction |
/ksquestadmin resetme | ❌ | Resets all your quest data |
/ksquestadmin debug | ❌ | Shows quest debug info for yourself |
The standalone /testquest <questId> [player] command also requires ks.quest.admin and is equivalent to /ksquestadmin test.
Showcase Mode
Section titled “Showcase Mode”Several admin subcommands additionally check Showcase Mode via ShowcaseCompat. When an account is flagged as a showcase account, these subcommands refuse to run even if the caller has ks.quest.admin:
/ksquestadmin reload/ksquestadmin start,complete,reset/ksquestadmin setstreak,resetdaily,resetweekly/ksquestadmin spawnmerchant,spawntemplemerchant/ksquestadmin tokens,debugmode/ksquestadmin resetme,export,import
Console-execution bypasses the showcase check. This prevents accidental data modification on demo servers.
Console vs Player Execution
Section titled “Console vs Player Execution”Commands marked with ✅ in the Console column accept execution from the server console without any permission check. Typical uses:
- NPC dialog macros — NPCs start quests via
/ksquestadmin start PlayerName quest_id - Automated scripts — scheduled tasks manage quests from the host shell
- Bulk operations — exporting/importing quest data from the CLI
Setting Up Permissions
Section titled “Setting Up Permissions”Player nodes are granted by default. To restrict or lock them down, or to give staff admin access:
# Staff groupgroup.staff.permission.ks.quest.admin: true
# Lock player commands to a specific groupgroup.default.permission.ks.quest.user.use: truegroup.default.permission.ks.quest.user.settings: true