Daily Streak

Rewards players for maintaining a daily active-playtime streak. Configurable rewards, PlaceholderAPI support, leaderboard, and a full async developer API.

Downloads Java Paper License

divider

About

DailyStreak turns consistent play into real rewards. It tracks active playtime — not just logins — toward a daily streak, hands out fully configurable rewards for showing up, and exposes everything through PlaceholderAPI and a clean developer API. Drop it in, edit a config, done.

Streak Tracking

DailyStreak measures genuine active playtime, not just whether a player logged in and alt-tabbed away. A day only counts once a player has actually put in the required time, so streaks reflect real engagement — not clock-farming.

Reward

Every streak day can carry its own reward, with support for multiple commands per day — items, economy payouts, permissions, anything your server needs. Admins can add, replace, remove, or list reward commands entirely from in-game, no restart required.

Leaderboard & Placeholder

/streak top gives players a live leaderboard to compete over, while a full set of PlaceholderAPI placeholders — current streak, highest streak, today's progress, remaining playtime — plug straight into scoreboards, tab lists, and chat formats from any other plugin.

Commands

Command Description
/streak / /streak info Show current streak information
/streak progress Show today's active playtime progress
/streak top Show the leaderboard
/streak reload Reload config, rewards, and messages
/streak reset <player> Reset a player's streak
/streak set <player> <days> Set a player's streak
/streak give <player> <days> Add days to a player's streak
/streak reward add <day> <command> Append a reward command
/streak reward set <day> <command> Replace reward commands for a day
/streak reward remove <day> <index> Remove a reward command by index
/streak reward list List reward commands
/streak debug Show runtime diagnostics
/streak migrate Ensure database schema exists

divider

Permission

Permission Description
dailystreak.use Basic player commands
dailystreak.admin All admin actions
dailystreak.reload Reload command
dailystreak.reward Reward editor commands
dailystreak.modify Reset, set, and give commands
dailystreak.top Leaderboard command

divider

Placeholder

Used internally in DailyStreak's own messages and reward commands: %player% %uuid% %streak% %highest_streak% %today% %today_playtime% %required_playtime% %remaining_playtime% %completed_today%

Registered with PlaceholderAPI for use in other plugins (scoreboards, tab lists, chat formats): %dailystreak_streak% %dailystreak_highest_streak% %dailystreak_today_playtime% %dailystreak_remaining_playtime% %dailystreak_completed_today%

divider

Developer Api

DailyStreakApi api = DailyStreakApiProvider.get();

api.getCurrentStreak(player.getUniqueId()).thenAccept(streak ->
    player.sendMessage("Current streak: " + streak)
);

Every API method that reads or mutates persistent data returns a CompletableFuture and is safe to call from the main thread.

divider

Installation

Standard Installion

  1. Download the latest DailyStreak-*.jar from the Files tab on this page.
  2. Drop it into your server's plugins/ folder.
  3. Restart or reload your server.
  4. Edit plugins/DailyStreak/config.yml to taste, then run /streak reload.

⚠️ Requires Java 21 and Paper 1.20+. Optional: PlaceholderAPI for cross-plugin placeholders.

divider

Features

  • Real activity tracking — measures active playtime, not just logins
  • Configurable rewards — per-day, multi-command reward chains
  • Built-in leaderboard/streak top, no extra plugin needed
  • PlaceholderAPI support — 5 placeholders exposed for other plugins
  • Async developer API — thread-safe CompletableFuture-based hooks
  • Full admin toolkit — reset, set, give, reward editor, debug, migrate

divider

FAQ

Does this work with any Paper server? Yes — DailyStreak avoids version-pinned internals and sticks to stable Bukkit/Paper APIs, so it targets forward compatibility across Paper 1.20+.

Do I need PlaceholderAPI? No — it's optional. Without it, DailyStreak's own internal placeholders still work in its messages and reward commands; PlaceholderAPI just exposes them to other plugins.

Can I use this on a pay-to-win server? Not if you're selling streak-related advantages (paid resets, day-skips, boosted rewards) for real money — see the License section below.

Is the developer API safe to call from the main thread? Yes — every method that reads or writes persistent data returns a CompletableFuture and is safe to call from the main thread.

divider

License

DailyStreak is source-available, not permissively licensed:

  • ✅ Free to use, self-host, and modify on any server that doesn't sell gameplay advantages
  • ✅ Free to fork and contribute back
  • ✅ Free to redistribute (unmodified or modified), provided the license travels with it
  • ❌ May not be used on servers selling streak-related advantages for real money
  • ❌ May not be sold, sublicensed, or bundled into a paid plugin without permission

Full text: LICENSE

divider

🐛 Report a bug or request a feature 💬 Ask a question 📦 Source code

The Daily Streak Team

profile avatar
  • 1
    Projects
  • 19
    Downloads