Streaks
Duolingo-style login streaks for your server. Calendar GUI, milestone rewards, streak freezes.
Duolingo-style login streaks for your server. Calendar GUI, milestone rewards, streak freezes.
What is Streaks?
Streaks turns daily logins into a habit your players refuse to break. Every player's first join of the day grows their streak — miss a day and it's gone... unless they had a streak freeze, which they bought with in-game money. Retention mechanic and economy sink in one plugin.
Features
- Daily streaks with configurable day reset — pick the hour your server's "day" ends
- Calendar GUI — 28-day view: claimed days, today, missed days at a glance
- Milestone rewards — Vault money and/or console commands at any streak day you configure (day 3, 7, 14, 30...)
- Streak freezes — players buy freezes with Vault money; a missed day auto-consumes one and the streak survives. Built-in economy sink
- Loss-aversion reminders — join messages and an actionbar warning before the day resets if today's streak isn't claimed yet
- Leaderboard — /streaktop with player heads, top 10 current streaks
- PlaceholderAPI support — %streaks_current%, %streaks_best%, %streaks_freezes%, %streaks_total%
- Persistent — SQLite by default, MySQL optional; everything survives restarts
- Fully configurable — every message, every reward, freeze price and cap
Commands
| Command | Description | Permission |
|---|---|---|
| /streaks (alias: /streak) | Open your streak calendar | streaks.use (default: everyone) |
| /streaks freeze | Buy a streak freeze | streaks.use |
| /streaktop | Top 10 current streaks | streaks.use |
| /streaksadmin reload | Reload config and messages | streaks.admin (default: op) |
| /streaksadmin set <player> <days> | Set a player's streak (support) | streaks.admin |
Setup
- Drop the jar into plugins/ with Vault and an economy plugin (EssentialsX etc.)
- Start the server, edit plugins/Streaks/config.yml to taste (reset hour, milestones, freeze price)
- /streaksadmin reload — done
Config showcase
Code:
reset-hour: 0 # server "day" ends at midnight
freeze:
price: 5000.0 # Vault money per streak freeze
max-held: 3
milestones:
7:
money: 1000
commands:
- "give %player% diamond 3"
30:
money: 10000
commands:
- "give %player% netherite_ingot 1"
Requirements
- Paper 1.20.4+ (Java 17+)
- Vault + an economy plugin
- PlaceholderAPI optional (placeholders)
Found a bug or want a feature? Message me before leaving a review — I answer fast.
