Skip to main content

Bank (/vault bank)

The bank introduces a second independent balance per player (stored in bank_balances.yml) separate from the wallet. Players can deposit funds to generate interest or withdraw them when needed.

Accessing the Bank

Open from:
  • Slot 13 🏦 Bank of the main /vault menu (VaultMenuService.java:79-97, material GOLD_BLOCK)
  • Command /vault bank
The GUI is managed by BankMenuService with a 45-slot inventory.

GUI Layout

Quick Picks with Shift ×10

The 4 percentage buttons behave differently when pressing Shift + Click (BankMenuService.java:270–280): Quick picks use niceRound() to round to friendly multiples (5 / 10 / 100 / 1,000 / 10,000 / 100,000 / 1,000,000…).

Bank Transactions

Each operation records a TxType in the transaction log (BankService.java:85–106):
  • BANK_DEPOSIT — On deposit: withdraws from wallet → adds to bank_balance
  • BANK_WITHDRAW — On withdrawal: subtracts from bank_balance → deposits into wallet
The bank_balances.yml file stores a balances.<UUID>: value map and optionally teams.<teamId> for team banks. It is persisted with save() after each operation.

Interest and Tax Configuration

Interest (applyInterest)

Asynchronous scheduler (runTaskTimerAsynchronously) that applies percent_per_period% on the full bank_balance every every_minutes minutes. Records TxType.INTEREST for every player with balance > 0. If enabled: false, no task is scheduled regardless of the percentage value.

Progressive Tax (applyTax)

Only applies to the portion of the balance STRICTLY ABOVE THE THRESHOLD. Example:
  • threshold = 1,000,000 ; balance = 1,500,000
  • Only 500,000 is taxed × 0.1% = 500
Records TxType.TAX and subtracts from bank_balance.