Fixed async database writes — Interest and loan managers no longer write to the database from async threads, preventing potential data corruption on busy servers
Fixed race condition on web API — Deposit, withdraw, send and loan operations now re-fetch account data atomically, closing a window where two simultaneous requests could overdraw an account
Fixed SQL transfer safety — Sending money between players is now wrapped in a single database transaction. A server crash mid-transfer will no longer cause money to vanish
Fixed permission conflict with LuckPerms — Permissions no longer default to true, so eBanks will no longer overwrite your LuckPerms setup on install. You will need to grant ebanks.use, ebanks.web and ebanks.loan to your member group once after updating
Fixed orphaned debt collector mobs — Collector mobs left over from a server crash are now automatically removed on startup
Fixed SQLite connection pool — Replaced single shared connection with a pool of 4 connections, improving stability under concurrent load
Added web API input validation — Monetary inputs on the web interface are now validated and capped, preventing potential economy abuse
New Features
Send money to offline players — You can now transfer money to a player's bank account even when they are not online, via both the in-game GUI and the web interface. They will see the transaction in their history when they log in
Internal Improvements
Web server refactored from a single 1,250 line class into three focused classes for easier future maintenance
Debt collector attributes extracted to named constants
Memory leak fixed in loan manager for long-running servers
As always, your existing data is fully compatible — no migration needed. Back up your ebanks.db before updating as good practice.