AlphaRewardsDocs v2.0.0
AlphaRewardsReferenceConfiguration

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).

The shipped config.yml default is 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
KeyDefaultBehavior
join-notification.enabledtrueGlobal 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.enabledtrueGlobal switch. Actual auto-claiming on join additionally requires the player's own auto-claim setting and the alpharewards.autoclaim permission.
streak.reset-on-misstrueWhether missing a day breaks the streak at all (STREAK mode only).
streak.grace-period-hours6Only 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.enabledfalseIf 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-menudaily.yml / streak.ymlFilenames (relative to menus/) used depending on the active reward-mode.
rewards-per-page4How 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.

The other colour keys older configs carried (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

MySQL is not implemented. 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.

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.

KeyMeaning
title, rowsGUI title and inventory row count.
navigationprevious-page / next-page / settings button slot, material, name, lore.
reward-slotsList 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.

Instead of a vanilla 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"
Tier order in the file matters. Tiers are evaluated top-to-bottom and each matching tier overwrites the previous match — there's no early exit on "best match." List tiers lowest → highest in the file, or a player with a lower-tier permission could end up overriding a higher one that was defined earlier. See Permissions → Tier order.

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.

DayNameDefault reward
1Starter Supplies16 cooked beef, 32 torches, $100
2Iron Haul16 iron ingots, 32 coal, $150
3Redstone Pack32 redstone, 16 lapis lazuli, $150
4Travel Rations16 golden carrots, 32 arrows, $200
5Gold Rush16 gold ingots, 16 XP bottles, $250
6Flight Pack2 ender pearls, 16 firework rockets, $300
7Weekly Bonus2 diamonds, 2 golden apples, $500
8Nether Prep10 obsidian, 32 cooked porkchops, $350
9Enchanting Pack32 lapis lazuli, 32 XP bottles, $400
10Brewing Pack4 blaze rods, 16 nether wart, $500
11Trader's Purse16 emeralds, 2 diamonds, $600
12Grand Prize4 diamonds, 1 enchanted golden apple, 1 netherite scrap, $1,000
The money part runs 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.