Full Changelog:
Releases · SrCodexStudio/shinoburankup
Placeholder [ShinobuRankup]:
shinoburankup/placeholders-info.md at main · SrCodexStudio/shinoburankup
⚠️ TESTING BUILD — Backup your server before installing. Report bugs on GitHub.
What's New in v3.5.1
Full MiniMessage Support
MiniMessage tags now work EVERYWHERE — GUI lore, item names, ranks.yml, gui/ranks.yml, and language files. Use , gradient:red:blue, ,
<#FF0000> and all MiniMessage formatting alongside legacy &c codes and &#RRGGBB hex. Previously only chat messages supported MiniMessage while GUI
elements displayed tags as raw text. Fixed by routing all item text through the MiniMessage parser.
Economy Race Condition Fix
- Added anti-spam guard: concurrent /rankup attempts now instantly rejected with "already processing" message
- Added atomic double-check balance verification on the main thread immediately before withdrawal
- Fixed withdraw failure mapping: now shows "Need $X, have $Y" instead of generic "Economy error"
- Bypass permissions (shinoburankup.bypass.*) removed from wildcard — must be granted explicitly
FREE Version Security Patch
- Fixed build chain: proguardFree now properly depends on setFree task
- Added reflection-hardened dual validation (const val EDITION_CODE immune to runtime reflection)
- Defense-in-depth: rank limit enforced at 3 layers (loading, cache, runtime)