SmartWithdraw-3.1.0.jar
What's new
3.1.0 — Security Hardening & GUI Redesign
Security
- Notes are now built completely in memory before any balance is touched — if note creation fails for any reason, the transaction is aborted with nothing charged
- Deposit now credits balance first and only removes notes after the credit confirms — notes can no longer be lost to a failed economy call
- Economy return values (Vault EconomyResponse, PlayerPoints give/take) are now actually checked — a silent backend failure no longer proceeds as a successful transaction
- Paper API crash on non-Paper servers now caught at startup and falls back gracefully instead of crashing mid-withdrawal after the balance is already debited
- Per-tick dedupe guard added to right-click deposit and split listeners — a single physical click can no longer fire twice in the same server tick
- XP withdraw now refuses internally if balance is insufficient, not just relying on the caller to check first
- Tax percent clamped to 0–100 at config load — a misconfigured value can no longer produce a tax larger than the transaction itself
GUI Redesign
- New multi-page bank menu — Page 1 shows all currencies as their custom skull heads with live balance, Page 2 shows denomination buttons
- Denomination buttons now use the currency's custom skull head instead of plain paper
- Light gray stained glass border on all pages, all empty slots filled
- Back button returns to currency selection, close button on every page
- New "Deposit Held Note" button on the detail page
- Inspect menu expanded to 54 slots with all empty slots filled, backend and symbol removed from currency details
- Admin commands hidden from non-admin players in /sw help
- Denominations line removed from /sw help
Persistence
- Cooldowns now saved to cooldowns.yml and survive server restarts and crashes
- Daily withdrawal limits now saved to daily-limits.yml and survive server restarts and crashes
Transaction Logger
- Each log entry now has a unique 8-character transaction ID
- Log file kept open with a buffered writer — no longer opened and closed per entry
- Failed writes re-queued in memory instead of being silently dropped
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

