FrozenStats
The ultimate replica of DonutSMP Stats
FrozenStats
> # FrozenStats ❄️
A stats GUI plugin for Minecraft — styled like DonutSMP Stats. Built with Maven, using the exact same architecture as the original DonutStats source.
---
Supported Versions
- Minecraft 1.21 – 1.21.11
Supported Server Software
| Software | Supported | |----------|-----------| | Paper | ✅ | | Spigot | ✅ | | Purpur | ✅ | | Folia | ✅ (`folia-supported: true`) |
---
Features
- Stats GUI identical to DonutSMP (Money, Total Money Paid, Kills, Deaths, Playtime, Blocks, Mobs, Shop stats) - Shards replaced with "Total Money Paid" — tracks the lifetime total of all Vault deposits made to the player - Full `&#RRGGBB` hex colour support in all config text - PlaceholderAPI support — every lore line runs through PAPI - Configurable sounds (all keys are registry-safe for 1.21) - `/stats`, `/stats <player>`, `/stats reload` - Offline player support + tab completion with offline player cache
---
Commands & Permissions
| Command | Permission | Default | |---------|-----------|---------| | `/stats` | `stats.use` | `true` | | `/stats <player>` | `stats.other` | `op` | | `/stats reload` | `stats.reload` | `op` |
---
Soft Dependencies
- Vault — for all `%holorams_*%`, `%donutshop_*%`, `%donutsell_*%`, and `%frozenstats_*%` placeholders - Vault — for current balance display and lifetime total-paid tracking
---
Total Money Paid — How it Works
FrozenStats tracks the cumulative total money ever paid/deposited to each player via Vault.
Data is stored in `plugins/FrozenStats/data/totalpaid.yml` (UUID → double).
PlaceholderAPI placeholders
| Placeholder | Description | |-------------|-------------| | `%frozenstats_total_paid%` | Vault-formatted total (e.g. `$1,234.56`) | | `%frozenstats_total_paid_short%` | Short form (e.g. `1.2k`, `3.4M`) | | `%frozenstats_total_paid_raw%` | Raw double value |
Recording payments from another plugin
If you have a custom shop or reward plugin, call FrozenStats' API to record each payment:
```java Plugin fs = Bukkit.getPluginManager().getPlugin("FrozenStats"); if (fs instanceof FrozenStats frozenStats) { frozenStats.recordPayment(player.getUniqueId(), amount); } ```
Config Files
| File | Purpose | |------|---------| | `config.yml` | Messages & sound keys | | `gui.yml` | All GUI items (rows, title, slots, materials, names, lore) | | `data/totalpaid.yml` | Auto-generated — stores lifetime payment data per UUID |