Permissions
Bank Permissions
Section titled “Bank Permissions”The Bank uses the unified ks.<mod>.<scope>.<action> scheme. User nodes default to allowed (the code uses hasPermission(node, true)), admin nodes default to deny. Feature gates and rank-based page caps are configured via LuckPerms strings that server operators choose freely.
Admin Permission
Section titled “Admin Permission”| Permission | Default | Description |
|---|---|---|
ks.bank.admin | ❌ staff only | Every /ksbankadmin subcommand (panel, open, give, adminupgrade, reset, log, reload) and the admin UI |
User Permissions
Section titled “User Permissions”| Permission | Command | Default | Description |
|---|---|---|---|
ks.bank.user.page | /ksbank page <n> | ✅ allowed | Switch to a specific bank page |
ks.bank.user.upgrade | /ksbank upgrade | ✅ allowed | Purchase a bank page upgrade |
ks.bank.user.history | /ksbank history | ✅ allowed | View bank transaction history |
ks.bank.user.open | /ksbank open | ✅ allowed | Open the bank UI (default entry point) |
All four nodes default to “allowed” — admins only need to revoke them to gate specific subcommands behind groups.
Feature Permissions (config-driven)
Section titled “Feature Permissions (config-driven)”The permissions section of config.json lets you attach custom permission strings to in-game bank actions. When the string is empty, the feature is open to everyone; when set, players without the node see lockedMessage.
| Feature | Config Path | Default |
|---|---|---|
| Upgrade | permissions.upgrade.permission | "" (everyone) |
| Transfer | permissions.transfer.permission | "" (everyone) |
| Withdraw | permissions.withdraw.permission | "" (everyone) |
| Deposit | permissions.deposit.permission | "" (everyone) |
Example — VIP-only upgrades:
"permissions": { "upgrade": { "permission": "bank.vip.upgrade", "lockedMessage": "Requires VIP rank to upgrade!" }}The permission string can be anything admins pick (bank.vip.upgrade, vip.bank.upgrade, etc.) — it’s not validated against any list.
Rank-Based Page Limits
Section titled “Rank-Based Page Limits”The permissions.rankPages map controls how many bank pages players can unlock per rank. Each entry maps a permission node to a max-page count.
| Permission | Max Pages |
|---|---|
bank.pages.3 | 3 |
bank.pages.5 | 5 |
bank.pages.7 | 7 |
bank.pages.10 | 10 |
Resolution:
- The service scans every
rankPagesentry against the player’s permissions. - Player gets the highest matching value across all their nodes.
- Capped at the global
maxPagesconfig value. - Empty
rankPages/ no match → player can upgrade up tomaxPages.
LuckPerms Examples
Section titled “LuckPerms Examples”# Staff admin/lp user Steve permission set ks.bank.admin true
# Lock page switching to a specific group/lp group default permission set ks.bank.user.page false
# Rank-based page caps/lp group vip permission set bank.pages.5 true/lp group premium permission set bank.pages.10 true
# Gate upgrades behind VIP/lp group vip permission set bank.vip.upgrade truePermission Hierarchy Example
Section titled “Permission Hierarchy Example”Owner / Admin └── ks.bank.admin └── bank.pages.10
VIP └── bank.pages.7 └── bank.vip.upgrade (if upgrade is gated)
Default └── (user nodes default-allowed; no extra setup needed)Migration from Legacy Nodes
Section titled “Migration from Legacy Nodes”Earlier releases used the single bank.admin permission. It is no longer checked. Replace any LuckPerms grants of bank.admin with ks.bank.admin.