All versions
3.1.0
Release
SmartWithdraw 3.1.02 months ago 148
Compatibility
Minecraft: Java Edition
26.2
26.1.x
1.21.x
Platforms
Paper
Purpur
Spigot
Changes
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
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:Xv1kaJcZ:wKzH6tgR"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Xv1kaJcZ:wKzH6tgR"
}

