Daily Rewards
A dependency-FREE daily reward plugin. Players run /daily to claim, once per cooldown, a reward picked from a configured pool. Rewards grant items and/or run console commands, so money, crate keys, ranks, and anything else are handed out through whatever other plugin you already run - without depending on Vault or any economy library.
The point: an old daily-reward plugin died when a runtime dependency rotted. This one has zero external/runtime dependencies - it uses only the Bukkit API. Nothing to break.
What it does
/daily claims a reward once per cooldown (default 24 hours).
- The reward is chosen by
weighted-random (default), random, or all.
- Each reward can give items, run console commands (with a
{player} placeholder), and show a message - any combination.
- Cooldowns persist per player UUID in
cooldowns.yml across restarts.
- If a player's inventory is full, overflow items are dropped at their feet (configurable to deny instead).
Why no economy dependency
Instead of calling Vault or an economy API at compile time, reward entries can list console commands. Want to pay 500 coins? Add eco give {player} 500 to that reward's commands. Want to give a crate key? crate give {player} vote 1. DailyRewards dispatches the command as the console - it does not know or care which plugin handles it, and it will not fail to load if that plugin is missing.
Commands
All under /daily (aliases: /dailyreward, /dailyrewards).
| Command |
Description |
/daily |
Claim your daily reward. |
/daily give <player> [--force] |
Make a player claim (console + command-block runnable). --force bypasses the cooldown. |
/daily reload |
Reload config.yml. |
/daily reset <player> |
Clear a player's cooldown. |
Tab-completion covers subcommands, online players, and --force. /daily give runs from console/command blocks (target must be online).
Permissions
| Permission |
Default |
Grants |
dailyrewards.use |
true |
Claim with /daily. |
dailyrewards.admin |
op |
give, reload, reset (includes dailyrewards.use). |
The console always passes permission checks, so admin subcommands work from console and command blocks out of the box.
Configuration (config.yml)
| Key |
Default |
Meaning |
cooldown-seconds |
86400 |
Seconds between claims per player. |
reward-mode |
weighted-random |
weighted-random, random, or all. |
overflow |
drop |
drop overflow at the player's feet, or deny (skip) it. |
rewards |
(sample pool) |
The reward pool. |
messages.* |
(defaults) |
All player-facing strings. |
A reward entry supports an id, a weight (for weighted-random), an optional list of items (material/amount/name/lore, with & colour codes), an optional list of commands ({player} placeholder), and an optional message. A single-entry pool always pays out; if all weights are 0 it falls back to a uniform pick. Messages support & colours and {time} / {player} placeholders.
Compatibility
Paper / Spigot / Bukkit / Purpur, Minecraft 1.21.1-1.21.11. One jar, built against the 1.21.1 API (Java 21, class 65); no Paper-only classes, no NMS, no dependencies.
Notes
/daily give and item grants require the target to be online - there is no queued/offline delivery.
/daily reset resolves offline players via the server's offline-player cache (only players who have joined before).
- Reward console commands are fire-and-forget by design (exceptions are caught and logged) to keep the plugin dependency-free.
Original concept by u/DiamondKing1437 on Reddit (r/Minecraft). Built by BeansNToast.
Permissions
| Permission |
Default |
Grants |
dailyrewards.use |
true |
Claim with /daily. |
dailyrewards.admin |
op |
give, reload, reset (includes dailyrewards.use). |
The console always passes permission checks, so admin subcommands work from console and command blocks out of the box.
Configuration (config.yml)
| Key |
Default |
Meaning |
cooldown-seconds |
86400 |
Seconds between claims per player. |
reward-mode |
weighted-random |
weighted-random, random, or all. |
overflow |
drop |
drop overflow at the player's feet, or deny (skip) it. |
rewards |
(sample pool) |
The reward pool. |
messages.* |
(defaults) |
All player-facing strings. |
A reward entry supports an id, a weight (for weighted-random), an optional list of items (material/amount/name/lore, with & colour codes), an optional list of commands ({player} placeholder), and an optional message. A single-entry pool always pays out; if all weights are 0 it falls back to a uniform pick. Messages support & colours and {time} / {player} placeholders.
Compatibility
Paper / Spigot / Bukkit / Purpur, Minecraft 1.21.1-1.21.11. One jar, built against the 1.21.1 API (Java 21, class 65); no Paper-only classes, no NMS, no dependencies.
Notes
/daily give and item grants require the target to be online - there is no queued/offline delivery.
/daily reset resolves offline players via the server's offline-player cache (only players who have joined before).
- Reward console commands are fire-and-forget by design (exceptions are caught and logged) to keep the plugin dependency-free.
Original concept by u/DiamondKing1437 on Reddit (r/Minecraft). Built by BeansNToast.