
Streaker
A plugin that will get players to join your server
Streaker
Streaker is a production-ready Paper/Purpur plugin that adds daily login streaks, milestone rewards, animated inventory GUI, PlaceholderAPI placeholders, async SQL persistence, Caffeine caching, and HikariCP pooling.
Features
- Daily streak claims based on the server timezone.
- Configurable reset grace for missed days.
- Reward milestones such as 7, 14, 30, 60, and 100 days.
- Multiple reward commands, chance, multipliers, messages, and conditions.
- SQLite, MySQL, and MariaDB support.
- Async database operations with prepared statements.
- Caffeine cache and debounced batched profile saves.
- Animated configurable GUI designs.
- PlaceholderAPI expansion.
- JUnit 5 and MockBukkit test setup.
Commands
| Command | Permission | Description |
|---|---|---|
/streak | streaker.command.menu | Opens the main streak menu. |
/streak menu | streaker.command.menu | Opens the main streak menu. |
/streak stats | streaker.command.stats | Shows personal stats. |
/streak rewards | streaker.command.rewards | Opens rewards view. |
/streak top | streaker.command.top | Shows leaderboard. |
/streak reload | streaker.admin.reload | Reloads configuration asynchronously. |
/streak reset <player> | streaker.admin.reset | Resets current streak. |
/streak set <player> <value> | streaker.admin.set | Sets current streak. |
/streak add <player> <value> | streaker.admin.add | Adds streak days. |
/streak remove <player> <value> | streaker.admin.remove | Removes streak days. |
Placeholders
| Placeholder | Value |
|---|---|
%streak_current% | Current streak. |
%streak_best% | Best streak. |
%streak_next_reward% | Next configured reward. |
%streak_days_until_reward% | Days until next reward. |
%streak_total_rewards% | Total granted rewards. |
%streak_last_claim% | Last claim date. |
Installation
- Build with
./gradlew build. - Put
build/libs/Streaker-1.0.0.jarinto the serverpluginsfolder. - Start the server once to generate configs.
- Edit
config.yml,database.yml,rewards.yml,messages.yml, andmenus.yml. - Run
/streak reloador restart the server.
Configuration
Primary files:
config.ymlcontrols timezone, claim behavior, cache, write-behind, notifications, and leaderboard size.database.ymlselects SQLite, MySQL, or MariaDB and tunes HikariCP.rewards.ymldefines milestone rewards.menus.ymldefines GUI layouts.messages.ymldefines MiniMessage output.
Example reward:
rewards:
30:
name: "<gradient:#ff512f:#f09819>Monthly Inferno</gradient>"
icon: "CHEST"
chance: 100.0
multiplier: 1.0
commands:
- "crate key give %player% legendary 1"
API
RuntimeContext implements StreakerApi:
CompletableFuture<StreakProfile> profile(UUID uuid, String playerName);
CompletableFuture<ClaimResult> claim(Player player);
CompletableFuture<StreakProfile> setStreak(UUID uuid, String playerName, int value);
Documentation
- Architecture
- Database
- GUI
- Optimization
- Media prompts
- Project audit
FAQ
Does Streaker block the main thread?
No. SQL and config IO run asynchronously. Bukkit-only work is returned to the main thread.
Can rewards run more than once for the same milestone?
No. Reward history has a unique key per player, reward, and streak day.
Can I use PlaceholderAPI in commands?
Yes. Install PlaceholderAPI and keep rewards.placeholderapi enabled.
Roadmap
- Redis sync for multi-server networks.
- Web dashboard.
- Seasonal reward campaigns.
- In-game GUI editor.
Support
Open an issue with your Paper version, Streaker version, database type, config snippet, and relevant logs.
