-
Notifications
You must be signed in to change notification settings - Fork 2
Account and Balance Model
Each player has one bank account container with several feature subsystems. This page describes what each account subsystem stores and how admins configure behavior around it.
Core account parts:
- Money:
BankMoneyInfo - Exp:
BankExpInfo - Items:
BankItemsInfo - PIN:
BankPinInfo - Loans:
BankLoansInfo - Permission cache:
BankPermissionInfo - Transaction history: money/exp transaction info classes
Load path creates info objects, loads persisted JSON by type, initializes runtime-only fields, then unlocks account.
- Money balance subsystem
- Exp balance subsystem
- Item storage subsystem
- PIN protection subsystem
- Loans subsystem
- Permission-cache subsystem
- Transaction history subsystem
Model behavior is controlled by config.yml, especially:
Bank.Money.*Bank.Exp.*Bank.Items.*Bank.Pin.EnabledBank.Loans.*
Admin tuning guidance:
- Use money/exp keys for economy behavior.
- Use item keys for capacity and tab behavior.
- Use loan keys for limits and repayment behavior.
- Use PIN keys only if your server needs account-level access confirmation.
Model-related commands include money/exp deposit/withdraw/send, open commands, and admin account mutation commands.
Permission-value prefixes influence model limits and rates:
bank.item.slots.bank.tabs.bank.loan.amount.bank.loan.interest.-
bank.money.interest.online.and related exp/offline variants
Persistent account segments are stored as JSON payloads keyed by player UUID and info-type mapping. Transient runtime fields (for example temporary cheque state and scroll positions) are not persisted.
Practical impact:
- If runtime GUI state looks wrong after relog, check config and permissions, not persisted account JSON.
- If balances or loans are wrong after restart, inspect backend payload records and logs.
- Player joins, account locks, loader hydrates all info types, and account unlocks.
- Offline interest is accumulated into offline fields and applied on next online load.
- If balances look stale after join, confirm lock release and loader completion.
- If permissions do not apply, trigger permission refresh by relogging or using admin permission update flow.
- System Architecture and Lifecycle
- Commands and Permissions
- Account and Balance Model
- Transactions and Money Flow Rules
- Storage and Persistence
- Configuration System
- GUI and Inventory Interactions
- Integrations and Access Modes
- Error Handling and Edge Cases
- Admin Operations and Troubleshooting
- Backup, Recovery, and Migration
- Version Compatibility and Known Limitations
- command_baltop.yml
- commands.yml
- config.yml
- convert.yml
- default_items.yml
- hiscores.yml
- inventories.yml
- itemblacklist.yml
- items.yml
- language.yml
- mysql.yml
- permissions.yml
- sounds.yml
- upgrade.yml
- Discord Support Config:
- command_baltop.yml
- commands.yml
- config.yml
- convert.yml
- default_items.yml
- hiscores.yml
- inventories.yml
- itemblacklist.yml
- items.yml
- language.yml
- mongo.yml
- mysql.yml
- permissions.yml
- sounds.yml Config:
- command_baltop.yml
- commands.yml
- config.yml
- convert.yml
- default_items.yml
- hiscores.yml
- inventories.yml
- itemblacklist.yml
- items.yml
- language.yml
- mongo.yml
- mysql.yml
- permissions.yml
- sounds.yml Config:
- command_baltop.yml
- commands.yml
- config.yml
- convert.yml
- default_items.yml
- hiscores.yml
- inventories.yml
- itemblacklist.yml
- items.yml
- language.yml
- mongo.yml
- mysql.yml
- permissions.yml
- sounds.yml