Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
DailyRewards
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 DailyRewards 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
/dailyclaims a reward once per cooldown (default 24 hours).- The reward is chosen by
weighted-random(default),random, orall. - 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.ymlacross 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 just 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 (the command simply errors in console and is
logged).
Commands
All under /daily (aliases: /dailyreward, /dailyrewards).
| Command | Description |
|---|---|
/daily |
Claim your daily reward. |
/daily give <player> [--force] |
Make a player claim. Runnable from console and command blocks. --force bypasses the cooldown (and does NOT consume the player's real timer). |
/daily reload |
Reload config.yml. |
/daily reset <player> |
Clear a player's cooldown. |
Tab-completion covers subcommands, online player names, and --force.
Console and automation
/daily give <player> is built to run from the server console and from command
blocks, so a scheduler or a returning Geyser setup can hand out rewards. The
target player must be online (items and {player} commands need a live player).
--force skips the cooldown check.
Bedrock players via Geyser just run /daily like everyone else - there is no
special handling.
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 give/reload/reset 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 - see below. |
messages.* |
(defaults) | All player-facing strings. |
A reward entry
rewards:
- id: rare-gem # identifier (used in logs)
weight: 9 # selection weight for weighted-random (higher = likelier)
items: # optional list of items to give
- material: DIAMOND # Bukkit material name; invalid names are logged + skipped
amount: 2
name: "&bLucky Diamond" # optional, supports & colour codes
lore: # optional
- "&7A rare find."
commands: # optional console commands; {player} = claimer's name
- "say {player} found a gem!"
message: "&bDaily reward: a rare gem!" # optional chat line
weight is only used by weighted-random. A single-entry pool always returns
that entry; if all weights are 0 the plugin falls back to a uniform pick so the
pool still pays out.
Messages
Supports & colour codes. Placeholders: {time} (human-readable remaining
cooldown like 5h 12m 3s) and {player}.
prefix, cooldown, claimed, no-reward, overflow-dropped,
overflow-denied.
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), load-tested on Paper 1.21.11; no Paper-only classes, no NMS, no dependencies.
Known gaps / honesty
- Not playtested in a live client/server - there is no Minecraft client in
this build environment. The plugin compiles cleanly, the jar bundles a valid
plugin.yml(version 1.0.0), and every class is Java-21 bytecode (class 65), but in-game behaviour has not been verified by hand. /daily giveand the item grant require the target to be online. There is no queued/offline delivery - an offline target is reported, not queued./daily resetresolves offline players via the server's offline-player cache, which only knows players who have joined before.- Reward console commands are fire-and-forget; DailyRewards does not check whether the downstream plugin actually succeeded (it only catches and logs exceptions). This is by design to keep it dependency-free.
Original concept by u/DiamondKing1437 on Reddit (r/Minecraft). Built by BeansNToast.


