Skip to content

FAQ & Troubleshooting

Players can open the bank in two ways:

  1. NPC Interaction: Walk up to a bank NPC and press F to interact
  2. Command: Use /ksbank (works if the config allows command-based opening)

The recommended setup is using a bank NPC via the KyuubiSoft Citizens system.

This is configured via defaultPages (starting pages) and maxPages (maximum) in config.json. Players start with defaultPages and can unlock more via /ksbank upgrade (costs currency) or /ksbank adminupgrade (free, admin only).

Can I change the number of slots per page?

Section titled “Can I change the number of slots per page?”

Yes — set slotsPerPage in config.json. Default is 45. Changes apply to all pages. Note: changing this on a live server may cause items to shift if reducing the slot count.

Yes. The bank uses an auto-save system with a configurable interval (autoSaveIntervalSeconds). Additionally, player data is saved on disconnect and server shutdown. The dirty-flag system ensures only modified data is written.

Not directly from the bank. Players need to withdraw items to their inventory first, then trade normally. The bank uses DelegateItemContainer with server-side validation — items can only enter/leave through the bank UI.


The bank integrates with VaultUnlocked — any economy provider registered through VaultUnlocked works automatically. This includes:

  • EcotaleCoins
  • Custom economy plugins
  • Multiple providers simultaneously (multi-currency)

The integration uses reflection, so VaultUnlocked is optional — the bank works without it (upgrades are disabled).

If configured, players can drag coin items (e.g., Coin_Gold) into the bank. The bank detects them and converts them to the matching economy currency automatically. Configure coins in the coins section of config.json or via the admin panel (Coins tab).

Can I set different upgrade costs per page?

Section titled “Can I set different upgrade costs per page?”

Yes — use the upgrade.defaultCosts array in config.json:

"upgrade": {
"defaultCosts": [0, 100, 250, 500, 1000]
}

Index 0 = cost for page 1 (usually 0), index 1 = cost for page 2, etc. If a player unlocks a page beyond the array length, the last value is used.

Can different ranks have different page limits?

Section titled “Can different ranks have different page limits?”

Yes — use LuckPerms permissions. Configure rank-based limits in the permissions.rankPages section:

"permissions": {
"rankPages": {
"bank.pages.7": 7,
"bank.pages.10": 10
}
}

The bank checks LuckPerms permissions and applies the highest matching value, capped at maxPages.

Use the admin panel (/ksbank admin → Economy tab) or add it to config.json:

"upgrade": {
"providerCosts": {
"MyProvider": [0, 50, 100, 200]
},
"providerDisplayNames": {
"MyProvider": "Gold Coins"
}
}

How do I prevent certain items from being stored?

Section titled “How do I prevent certain items from being stored?”

Use the restriction system. Two modes available:

  • Blacklist (default): Block specific items — everything else allowed
  • Whitelist: Only allow specific items — everything else blocked

Configure via admin panel (Restrict tab) or in config.json:

{
"restrictionMode": "blacklist",
"restrictedItems": ["Lootbag_*", "Quest_Item_*", "Pet_Egg_*"]
}

Wildcard patterns (*) are supported.

Check these causes:

  1. Restriction list: The item might be blacklisted (or not whitelisted). Check /ksbank admin → Restrict tab
  2. Slot validation: The DelegateItemContainer enforces restrictions server-side — even drag-and-drop is validated
  3. Item type: Some special engine items may not be storable

Currently restrictions are global (all pages share the same rules). Per-page restrictions are not yet implemented.


World Banking creates separate bank inventories per world group. A player’s bank in “survival” worlds is completely separate from their bank in “creative” worlds.

In config.json under worldGroups:

"worldGroups": {
"survival": ["flat_world", "adventure"],
"creative": ["creative_*"]
}

Pattern matching is case-insensitive and uses contains logic. Worlds not assigned to any group share the global bank.

If the new world belongs to a different world group, the bank UI automatically shows that group’s inventory. The player’s items in the previous group are untouched.


  1. Create a citizen in citizens.json (KyuubiSoft Core):
{
"id": "Banker",
"displayName": "Banker",
"position": [100, 95, 100],
"npcRoleId": "KS_Citizen_Idle",
"dialogId": "bank_dialog"
}
  1. The bank plugin automatically registers a page opener for bank NPCs
  2. Players press F on the NPC to open the bank

Yes — create as many citizen entries as needed. All bank NPCs open the same bank UI for the interacting player.


Use /ksbank admin. Requires the bank.admin permission.

The admin panel has 8 tabs:

TabFeatures
GeneralDefault pages, max pages, slots per page, auto-save interval
EconomyAdd/edit/remove economy providers, display names
RanksConfigure rank-based page limits (LuckPerms)
CoinsAdd/edit/remove coin-to-currency definitions
RestrictBlacklist/whitelist mode, add/remove restricted items
PlayersSearch players, view stats, add/remove pages, inspect banks
HistoryView transaction logs per player with timestamps
WorldsConfigure world groups for separate bank inventories

Yes — use /ksbank open <player> to open their bank in read/write mode. You can add, remove, and rearrange items.

Use /ksbank reset <player>. This removes ALL items and resets page count to defaultPages.


  • Check if the bank plugin is loaded: look for [KyuubiSoft Bank] in server logs
  • Verify the bank NPC exists and has the correct dialog/page opener
  • Check permissions if using LuckPerms
  • Check auto-save interval — if the server crashes between saves, recent changes may be lost
  • Verify data/ folder has write permissions
  • Check transaction history (/ksbank log <player>) for withdrawal entries
  • Ensure VaultUnlocked is installed and has an active economy provider
  • Check provider name matches exactly (case-sensitive)
  • Verify the economy plugin is loaded before the bank plugin
  • The bank uses native Hytale ItemGrid — ensure no other plugins interfere with inventory containers
  • Try /ksbank reload to refresh the configuration
  • Restart the server if the issue persists

”Maximum pages reached” but player should have more

Section titled “”Maximum pages reached” but player should have more”
  • Check rank-based limits in the admin panel (Ranks tab)
  • Verify the player has the correct LuckPerms permission (bank.rank.<rank>)
  • The effective limit is the HIGHEST matching rank limit or maxPages, whichever is greater
  • Transactions are stored in transactions.db (SQLite)
  • Verify the file exists and has write permissions
  • History only records actions AFTER the transaction system was enabled
  • Offline player lookup requires UUID — usernames may not resolve if the player has never joined
  • Use /ksbank open <uuid> with the player’s UUID for reliable access