Configuration
Everything in config.yml and the menu files, including the reward pack that ships with the plugin.
On this page
Reward mode
reward-mode selects which of two completely independent reward systems is active. Only one runs at a time, but switching back and forth doesn't erase the other mode's saved progress — each keeps its own separate data on disk.
DAILY
One reward per calendar day, no continuity requirement. A player can only claim their current day, once per calendar day — missing a day doesn't reset anything, it just sits there waiting to be claimed.
STREAK
Continuous claiming — a player can only claim the very next day in sequence, once per calendar day. Missing a day breaks the streak back to day 1 (subject to the grace period below).
reward-mode: "STREAK", but if this value is ever invalid/unparseable the plugin silently falls back to DAILY — not STREAK. Worth double-checking after a manual edit.Top-level config.yml keys
reward-mode: "STREAK" # DAILY or STREAK
colors:
accent: "#00FF12" # replaces legacy yellow/gold codes everywhere
storage:
type: "YAML" # not read by the plugin — see Storage below
mysql: { host, port, database, username, password }
join-notification:
enabled: true
delay-ticks: 40
auto-claim:
enabled: true
streak:
reset-on-miss: true
grace-period-hours: 6
title-message:
enabled: false
daily-menu: "daily.yml"
streak-menu: "streak.yml"
rewards-per-page: 4
| Key | Default | Behavior |
|---|---|---|
join-notification.enabled | true | Global switch. If on (and the player's own setting is also on), sends a reminder message join-notification.delay-ticks after join, but only if they have ≥1 reward currently claimable. |
auto-claim.enabled | true | Global switch. Actual auto-claiming on join additionally requires the player's own auto-claim setting and the alpharewards.autoclaim permission. |
streak.reset-on-miss | true | Whether missing a day breaks the streak at all (STREAK mode only). |
streak.grace-period-hours | 6 | Only matters when the last streak claim was exactly 2 days ago: if it's still within this many hours past midnight, the streak isn't broken yet. Has no effect for gaps of 0–1 days (never breaks) or 3+ days (always breaks). |
title-message.enabled | false | If true, shows an on-screen title/subtitle (0.5s fade-in, 2.5s stay, 0.5s fade-out) in addition to the chat message on every successful claim. |
daily-menu / streak-menu | daily.yml / streak.yml | Filenames (relative to menus/) used depending on the active reward-mode. |
rewards-per-page | 4 | How many reward-day slots are shown per GUI page; page count = ceil(total days ÷ this number). |
Colors
One setting controls the plugin's accent color:
colors:
accent: "#00FF12"
The default is green, #00FF12. If colors.accent is missing, an older colors.primary-gold value is used instead, so a config from before 2.0.0 keeps its colour.
- Legacy gold is remapped. The legacy yellow and gold codes
&eand&6in any message, menu name or lore turn into the accent colour, so nothing gold slips in. - Hex colours.
&#RRGGBBand<#RRGGBB>both work, together with the normal&codes. - No bold, underline, strikethrough or italic.
&l,&n,&mand&oare stripped from everything the plugin shows. Item names and lore also render without italics.
light-gold, dark-gold, text, error and so on) are not read. Colours that are not the accent are written straight into the menu and message files as hex.Storage
storage.type and storage.mysql.* are present in config.yml but nothing in the plugin currently reads them. Every player's data is saved to its own YAML file under playerdata/ regardless of what this section says. See FAQ.Menu files — daily.yml / streak.yml
Loaded recursively from plugins/AlphaRewards/menus/ — every .yml file found is cached by its relative path (e.g. daily.yml, settings/settings.yml). Shipped defaults: daily.yml defines days 1–7, streak.yml defines days 1–12.
| Key | Meaning |
|---|---|
title, rows | GUI title and inventory row count. |
navigation | previous-page / next-page / settings button slot, material, name, lore. |
reward-slots | List of inventory slots — one template cloned across every page. |
rewards.<day> | One entry per reward day, keyed by day number. |
Reward-day states
Each day has three independent visual states — available, claimed, locked — each with its own material, name, lore, glow, and optional status-line.
Material name, material also accepts basehead-<base64> for a custom player-head skin texture (Paper's PlayerProfile API).Command tiers
Each day's commands block has a default command list, plus any number of named permission-gated tiers (vip, mvp, etc.) each with their own permission and commands list. Commands run as console (support the {player} placeholder) and are dispatched on the correct thread automatically on Folia.
rewards:
1:
available: { material: CHEST, name: "...", lore: [...] }
claimed: { material: MINECART, name: "..." }
locked: { material: GRAY_DYE, name: "..." }
commands:
default:
- "give {player} iron_ingot 64"
vip:
permission: "alpharewards.tier.vip"
commands:
- "give {player} iron_ingot 128"
- "eco give {player} 500"
Shipped reward pack
Both menu files ship with the same first seven days. streak.yml continues to day 12. Each day lists the default reward, and the VIP, MVP and Elite tiers give two, three and four times as much.
| Day | Name | Default reward |
|---|---|---|
| 1 | Starter Supplies | 16 cooked beef, 32 torches, $100 |
| 2 | Iron Haul | 16 iron ingots, 32 coal, $150 |
| 3 | Redstone Pack | 32 redstone, 16 lapis lazuli, $150 |
| 4 | Travel Rations | 16 golden carrots, 32 arrows, $200 |
| 5 | Gold Rush | 16 gold ingots, 16 XP bottles, $250 |
| 6 | Flight Pack | 2 ender pearls, 16 firework rockets, $300 |
| 7 | Weekly Bonus | 2 diamonds, 2 golden apples, $500 |
| 8 | Nether Prep | 10 obsidian, 32 cooked porkchops, $350 |
| 9 | Enchanting Pack | 32 lapis lazuli, 32 XP bottles, $400 |
| 10 | Brewing Pack | 4 blaze rods, 16 nether wart, $500 |
| 11 | Trader's Purse | 16 emeralds, 2 diamonds, $600 |
| 12 | Grand Prize | 4 diamonds, 1 enchanted golden apple, 1 netherite scrap, $1,000 |
money give {player} <amount>, which is CMI's syntax. If your economy plugin uses something else, such as eco give {player} <amount>, change that line in every day and every tier, and update the lore to match. The lore is plain text, so it does not follow a command you edit.Player data & persistence
Per-player YAML files at plugins/AlphaRewards/playerdata/<uuid>.yml, holding: current-day, last-claim-date, streak-count, last-streak-date, claimed-days, and the two personal settings toggles. Cached in memory, loaded asynchronously on join, saved asynchronously after every claim/setting change, and flushed synchronously for everyone on plugin disable.
