Configuration
On this page(6)
SnRewards ships with the following YAML files. New keys are auto-merged on boot; your edits and comments are preserved.
rewards.yml and streak.yml are written once and never touched again. Apply any change with /rewards reload.
config.yml
# ============================================================
# SnRewards - configuration
# Managed by SnLib: new keys are auto-merged on boot; your values and
# comments are preserved. Do NOT add a config-version key (retired).
# Set update-configs: false to freeze this file (SnLib only warns about
# missing keys instead of inserting them).
# Sections marked "# sn:extensible" are yours: entries you delete there
# stay deleted.
# ============================================================
# Active language code; loads lang/messages_<code>.yml (falls back to en).
lang: en
# Master switch of the SnLib auto-updater for this plugin's managed files.
update-configs: true
# Runtime debug output (also toggleable live via /rewards debug).
debug:
# Master toggle of the debug output.
enabled: false
# Verbosity threshold: OFF, INFO, DEBUG or TRACE.
level: DEBUG
# Category filter; an empty list lets every category through.
categories: []
# ------------------------------------------------------------
# Main command.
# ------------------------------------------------------------
command:
# Aliases of /rewards. Re-read on /rewards reload.
aliases: [recompensas, recompensa]
# Aliases of /streak. Re-read on /rewards reload.
streak-aliases: [racha]
# ------------------------------------------------------------
# Database. type=sqlite needs nothing else; type=mysql reads host/port/etc.
# ------------------------------------------------------------
database:
# sqlite or mysql
type: sqlite
# MySQL connection (ignored when type is sqlite).
host: localhost
port: 3306
database: snrewards
username: root
password: ""
# ------------------------------------------------------------
# Streak. The daily login streak of /streak.
# ------------------------------------------------------------
streak:
# Timezone of the streak day (any IANA zone id). Invalid values fall back to UTC.
# Set the zone and the reset time before players start claiming: the pair in force is pinned in
# streak-clock.txt (plugin folder) at the first streak claim, because a stored claim is only a date. A later
# change here is ignored with a console warning; to switch on purpose, delete streak-clock.txt and run /rewards reload.
timezone: UTC
# Wall-clock time at which the streak day turns, HH:mm. Invalid values fall back to 00:00.
reset-time: "00:00"
# Streak days a player may skip without losing the streak. 0 loses it after one missed day, 1 lets a player skip one day.
grace-days: 0
# Start again at day 1 after the last day is claimed. false leaves the streak complete until an admin resets it.
restart-on-complete: true
# ------------------------------------------------------------
# Limits.
# ------------------------------------------------------------
limits:
# Minimum milliseconds between two claim clicks of one player. 0 disables the click cooldown.
# Values above 60000 (one minute) are lowered to 60000 with a console warning.
click-cooldown-ms: 750
# ------------------------------------------------------------
# Notifications.
# ------------------------------------------------------------
notifications:
# Tell a player on join how many rewards they can claim. Nothing is sent when none are ready.
rewards-on-join: true
# Tell a player on join that a streak day is ready to claim, or that the streak was lost.
streak-on-join: true
# Ticks to wait after a join before the notices go out (20 = 1 second). A player whose data has not loaded by then is skipped.
# Values above 6000 (5 minutes) are lowered to 6000 with a console warning.
join-delay-ticks: 60
rewards.yml
# ============================================================
# SnRewards - rank rewards
# Written once and never updated by SnRewards.
# The entries below are examples. Apply changes with /rewards reload.
#
# Every top-level key is the id of one reward, and the order of this file
# is the order of the menu. An id uses letters, digits, '_' or '-' and
# ignores case. The id 'all' is reserved.
#
# FIELDS (all optional)
# permission Permission needed to claim. Empty or missing: everyone.
# cooldown Seconds between two claims. 0: no cooldown.
# one-time true: the reward can be claimed once, ever.
# required-slots Free inventory slots needed to claim. -1: no check.
# requirements Extra conditions, see below. All of them must pass.
# actions Action lines run on a claim. {player} is the claimer.
# Examples: "[console] give {player} diamond 5",
# "[message] &aEnjoy!", "[sound] ENTITY_PLAYER_LEVELUP".
# display-name Name of the reward in the menu.
# contents Lore lines that describe the prize.
# style Menu item set. 'reward' uses the reward-available,
# reward-cooldown ... items of guis/rewards.yml; another
# value x uses x-available ... when the menu defines them.
#
# REQUIREMENTS
# A list of conditions that can read PlaceholderAPI values (quote the
# expression, it starts with '%'). Each one shows a line in the menu
# while the reward is locked: 'success' when it is met, 'fail' when not.
# requirements:
# - expression: "%player_level% >= 30"
# success: "&a- Level 30 reached"
# fail: "&c- Reach level 30"
# Operators: >= <= > < == != = Join with && and ||, group with ( ).
# A requirement that cannot be parsed (an unclosed quote, '!==', two
# operators, a quote that does not wrap a whole value), or that holds a
# placeholder that does not resolve (on a side the check actually
# evaluates: '||' and '&&' stop at the first side that decides), counts
# as not met.
#
# A field with an invalid value (a permission that is not a single value,
# a cooldown that is negative, a decimal or not a number, a requirements
# list that is not a list) or a field SnRewards does not define (a
# misspelled one) makes the console name the reward and skip it.
# ============================================================
starter:
# Empty permission: every player can claim it, once.
permission: ""
cooldown: 0
one-time: true
required-slots: 2
display-name: "₢f2&lStarter Kit"
contents:
- "&7- &f16x Bread"
- "&7- &f1x Iron Pickaxe"
actions:
- "[console] give {player} bread 16"
- "[console] give {player} iron_pickaxe 1"
style: reward
vip:
permission: "snrewards.reward.vip"
cooldown: 86400
one-time: false
required-slots: 2
display-name: "&a&lVIP Reward"
contents:
- "&7- &f8x Diamond"
- "&7- &f4x Golden Apple"
actions:
- "[console] give {player} diamond 8"
- "[console] give {player} golden_apple 4"
style: reward
mvp:
permission: "snrewards.reward.mvp"
cooldown: 86400
one-time: false
required-slots: 2
display-name: "&b&lMVP Reward"
contents:
- "&7- &f16x Diamond"
- "&7- &f8x Golden Apple"
actions:
- "[console] give {player} diamond 16"
- "[console] give {player} golden_apple 8"
style: reward
elite:
permission: "snrewards.reward.elite"
cooldown: 86400
one-time: false
required-slots: 2
display-name: "&6&lElite Reward"
contents:
- "&7- &f32x Diamond"
- "&7- &f1x Netherite Ingot"
actions:
- "[console] give {player} diamond 32"
- "[console] give {player} netherite_ingot 1"
style: reward
streak.yml
# ============================================================
# SnRewards - streak path
# Written once and never updated by SnRewards.
# The entries below are examples. Apply changes with /rewards reload.
#
# The streak is a path of days. A player claims one day per streak day,
# in order, from the /streak menu. When to claim and how many days can be
# skipped is set in config.yml, under 'streak'.
#
# Every entry of 'days' is one day of the path:
# day Position on the path, 1 or more. Required.
# Days must run 1, 2, 3 ... with none missing. A repeated
# number is skipped. A number nobody wrote, and an entry
# with no valid 'day', stay on the path as a day that
# cannot be claimed (so no progress is overwritten); at
# most 366 days. The console names each case on reload.
# contents Lore lines that describe the prize.
# actions Action lines run on a claim. {player} is the claimer and
# {day} the claimed day.
# Examples: "[console] give {player} diamond 5",
# "[message] &aEnjoy!", "[sound] ENTITY_PLAYER_LEVELUP".
# required-slots Free inventory slots needed to claim. -1: no check.
# requirements Extra conditions. All of them must pass to claim.
# milestone true: the menu draws the day with the milestone items.
#
# A day with an invalid field (a requirements value that is not a list,
# a required-slots that is not a whole number) or a field SnRewards does
# not define (a misspelled one) is named in the console. It keeps its place
# on the path, so no player's progress changes, but it cannot be claimed
# until you fix it and run /rewards reload.
#
# REQUIREMENTS
# A list of conditions that can read PlaceholderAPI values (quote the
# expression, it starts with '%'). Every one must be met to claim the day;
# until then the day stays locked. 'success' and 'fail' are the lines for
# a met and an unmet condition; the streak menu does not draw them yet.
# requirements:
# - expression: "%player_level% >= 30"
# success: "&a- Level 30 reached"
# fail: "&c- Reach level 30"
# Operators: >= <= > < == != = Join with && and ||, group with ( ).
# A requirement that cannot be parsed (an unclosed quote, '!==', two
# operators, a quote that does not wrap a whole value), or that holds a
# placeholder that does not resolve (on a side the check actually
# evaluates: '||' and '&&' stop at the first side that decides), counts
# as not met.
# ============================================================
days:
- day: 1
required-slots: 1
contents: ["&7- &f8x Bread"]
actions: ["[console] give {player} bread 8"]
- day: 2
required-slots: 1
contents: ["&7- &f4x Iron Ingot"]
actions: ["[console] give {player} iron_ingot 4"]
- day: 3
required-slots: 1
contents: ["&7- &f16x Cooked Beef"]
actions: ["[console] give {player} cooked_beef 16"]
- day: 4
required-slots: 1
contents: ["&7- &f4x Gold Ingot"]
actions: ["[console] give {player} gold_ingot 4"]
- day: 5
required-slots: 1
contents: ["&7- &f8x Experience Bottle"]
actions: ["[console] give {player} experience_bottle 8"]
- day: 6
required-slots: 1
contents: ["&7- &f1x Diamond"]
actions: ["[console] give {player} diamond 1"]
- day: 7
milestone: true
required-slots: 2
contents: ["&7- &f3x Diamond", "&7- &f2x Golden Apple"]
actions: ["[console] give {player} diamond 3", "[console] give {player} golden_apple 2"]
- day: 8
required-slots: 1
contents: ["&7- &f32x Coal"]
actions: ["[console] give {player} coal 32"]
- day: 9
required-slots: 1
contents: ["&7- &f8x Iron Ingot"]
actions: ["[console] give {player} iron_ingot 8"]
- day: 10
required-slots: 1
contents: ["&7- &f4x Emerald"]
actions: ["[console] give {player} emerald 4"]
- day: 11
required-slots: 1
contents: ["&7- &f32x Cooked Beef"]
actions: ["[console] give {player} cooked_beef 32"]
- day: 12
required-slots: 1
contents: ["&7- &f8x Gold Ingot"]
actions: ["[console] give {player} gold_ingot 8"]
- day: 13
required-slots: 1
contents: ["&7- &f16x Experience Bottle"]
actions: ["[console] give {player} experience_bottle 16"]
- day: 14
milestone: true
required-slots: 2
contents: ["&7- &f6x Diamond", "&7- &f4x Golden Apple"]
actions: ["[console] give {player} diamond 6", "[console] give {player} golden_apple 4"]
- day: 15
required-slots: 1
contents: ["&7- &f32x Bread"]
actions: ["[console] give {player} bread 32"]
- day: 16
required-slots: 1
contents: ["&7- &f16x Iron Ingot"]
actions: ["[console] give {player} iron_ingot 16"]
- day: 17
required-slots: 1
contents: ["&7- &f8x Emerald"]
actions: ["[console] give {player} emerald 8"]
- day: 18
required-slots: 1
contents: ["&7- &f48x Cooked Beef"]
actions: ["[console] give {player} cooked_beef 48"]
- day: 19
required-slots: 1
contents: ["&7- &f12x Gold Ingot"]
actions: ["[console] give {player} gold_ingot 12"]
- day: 20
required-slots: 1
contents: ["&7- &f24x Experience Bottle"]
actions: ["[console] give {player} experience_bottle 24"]
- day: 21
milestone: true
required-slots: 2
contents: ["&7- &f10x Diamond", "&7- &f6x Golden Apple"]
actions: ["[console] give {player} diamond 10", "[console] give {player} golden_apple 6"]
- day: 22
required-slots: 1
contents: ["&7- &f64x Coal"]
actions: ["[console] give {player} coal 64"]
- day: 23
required-slots: 1
contents: ["&7- &f24x Iron Ingot"]
actions: ["[console] give {player} iron_ingot 24"]
- day: 24
required-slots: 1
contents: ["&7- &f12x Emerald"]
actions: ["[console] give {player} emerald 12"]
- day: 25
required-slots: 1
contents: ["&7- &f4x Diamond"]
actions: ["[console] give {player} diamond 4"]
- day: 26
required-slots: 1
contents: ["&7- &f16x Gold Ingot"]
actions: ["[console] give {player} gold_ingot 16"]
- day: 27
required-slots: 1
contents: ["&7- &f32x Experience Bottle"]
actions: ["[console] give {player} experience_bottle 32"]
- day: 28
required-slots: 1
contents: ["&7- &f6x Diamond"]
actions: ["[console] give {player} diamond 6"]
- day: 29
required-slots: 1
contents: ["&7- &f16x Emerald"]
actions: ["[console] give {player} emerald 16"]
- day: 30
milestone: true
required-slots: 2
contents: ["&7- &f20x Diamond", "&7- &f1x Netherite Ingot"]
actions: ["[console] give {player} diamond 20", "[console] give {player} netherite_ingot 1"]
guis/rewards.yml
# ============================================================
# SnRewards - the rank rewards menu
# Managed by SnLib: new keys are auto-merged on boot; your values and
# comments are preserved.
# Colours: &a legacy codes, &#RRGGBB and <#RRGGBB> hex, [rgb] gradients.
# ============================================================
title: "₢f2&lRewards"
# Ticks between repaints of the whole menu. This is what flips a reward from
# cooldown to available and ticks the countdown while the menu is open.
# 0 turns the repaint off (states then update only when the menu is reopened).
update-interval: 20
# Page buttons and the rewards list need it. Do not turn it off.
pagination: true
# Only the four basic mouse clicks claim a reward. Number keys, drop and
# double clicks do nothing.
strict-clicks: true
# ------------------------------------------------------------
# LAYOUT
# f = filler d = a reward cell s = streak button c = close
# p = previous page n = next page (space) = empty
# The rewards of rewards.yml fill the d cells left to right, top to bottom,
# in the order of that file. To fill them in another order, add a quoted
# paged-flow: arrow grid over the layout (SnLib 1.42.0): one arrow per d
# cell, pointing at the cell of the next reward.
# ------------------------------------------------------------
layout:
- "ffffsffff"
- "fdddddddf"
- "fdddddddf"
- "fdddddddf"
- "fdddddddf"
- "pfffcfffn"
paged-key: d
# ------------------------------------------------------------
# REWARD TEMPLATES
# The plugin paints every reward with ONE template per state:
# reward-available the player can claim it now
# reward-cooldown claimed before, the cooldown is still running
# reward-no-permission the player lacks the reward's permission
# reward-claimed a one-time reward already claimed
# reward-locked a requirement of the reward is not met
# reward-loading the player's data is still loading
# A reward with "style: vip" in rewards.yml uses vip-available,
# vip-cooldown ... and falls back to the reward-* template of that state
# when the menu has no template for it.
#
# Placeholders:
# {name} display-name of the reward
# {contents} the contents lines of the reward, one lore line each
# {status} the state word, from the status: section of lang/messages_en.yml
# {countdown} time left on the cooldown (filled in the cooldown state only)
# {requirements} one line per requirement of the reward (filled in the locked state only)
# {reward_id} id of the reward in rewards.yml
#
# A state template only decides how the reward LOOKS: its click-actions are
# ignored. Every reward reacts to a click through reward-entry below, so a
# click on a cooldown or locked reward answers with the reason in chat.
# ------------------------------------------------------------
templates:
# Carries the click of every reward cell. Keep "[reward-claim] {reward_id}".
# Do not add display-name or lore here: a lore line added here is appended to the state's lore.
# The material only shows if a state template is missing.
reward-entry:
material: BARRIER
click-actions:
- "[reward-claim] {reward_id}"
reward-available:
material: ENDER_CHEST
display-name: "{name}"
glow: true
flags:
- HIDE_ENCHANTS
lore:
- "&7Status: {status}"
- ""
- "&7Contents:"
- "{contents}"
- ""
- "&eClick to claim!"
reward-cooldown:
material: CLOCK
display-name: "{name}"
lore:
- "&7Status: {status}"
- ""
- "&7Contents:"
- "{contents}"
- ""
- "&7Available again in &f{countdown}"
reward-no-permission:
material: BARRIER
display-name: "{name}"
lore:
- "&7Status: {status}"
- ""
- "&7Contents:"
- "{contents}"
- ""
- "&cYou do not have access to this reward."
reward-claimed:
material: MINECART
display-name: "{name}"
lore:
- "&7Status: {status}"
- ""
- "&7Contents:"
- "{contents}"
- ""
- "&7You already claimed this reward."
reward-locked:
material: IRON_BARS
display-name: "{name}"
lore:
- "&7Status: {status}"
- ""
- "&7Contents:"
- "{contents}"
- ""
- "&7Requirements:"
- "{requirements}"
reward-loading:
material: PAPER
display-name: "{name}"
lore:
- "&7Loading your rewards..."
# ------------------------------------------------------------
# STATIC ITEMS
# ------------------------------------------------------------
items:
filler:
key: f
material: GRAY_STAINED_GLASS_PANE
display-name: " "
# Runs /streak as the player, which opens the daily streak menu.
streak:
key: s
material: BLAZE_POWDER
display-name: "₢f2&lDaily Streak"
lore:
- "&7Log in every day to earn bigger prizes."
- ""
- "&eClick to open your streak!"
click-actions:
- "[sound] UI_BUTTON_CLICK"
- "[player] snrewards:streak"
close:
key: c
material: BARRIER
display-name: "&cClose"
click-actions:
- "[sound] UI_BUTTON_CLICK"
- "[close]"
previous-page:
key: p
material: ARROW
display-name: "₢f2Previous Page"
click-actions:
- "[previous-page]"
- "[sound] UI_BUTTON_CLICK"
nav-disabled:
material: GRAY_STAINED_GLASS_PANE
display-name: "&7No previous page"
lore:
- "&8You are on the first page"
next-page:
key: n
material: ARROW
display-name: "₢f2Next Page"
click-actions:
- "[next-page]"
- "[sound] UI_BUTTON_CLICK"
nav-disabled:
material: GRAY_STAINED_GLASS_PANE
display-name: "&7No next page"
lore:
- "&8You are on the last page"
guis/streak.yml
# ============================================================
# SnRewards - the daily streak menu (/streak)
# Managed by SnLib: new keys are auto-merged on boot; your values and
# comments are preserved.
# Colours: &a legacy codes, &#RRGGBB and <#RRGGBB> hex, [rgb] gradients.
# ============================================================
title: "₢f2&lDaily Streak"
# The path is longer than one page, so the menu pages it.
pagination: true
# Only the four basic mouse clicks claim a day. Number keys, drop and
# double clicks do nothing.
strict-clicks: true
# Ticks between repaints. A day that unlocks at the next reset flips from
# waiting to available while the menu is open. 0 turns the repaint off.
update-interval: 20
# ------------------------------------------------------------
# LAYOUT
# f = filler d = a day cell t = rewards button
# p = previous page n = next page c = close (space) = empty
# The plugin never names a slot: move, add or remove cells freely. Each
# page shows as many days as there are d cells (19 here), and page 2 starts
# again on the first cell of the path.
# ------------------------------------------------------------
layout:
- "fffftffff"
- "dfdddfddd"
- "dfdfdfdfd"
- "dddfdddfd"
- "ffpfcfnff"
# The layout letter whose cells hold the days.
paged-key: d
# ------------------------------------------------------------
# PATH (paged-flow)
# Which d cell shows which day. This grid sits over the layout above, one
# character per cell, and every d cell holds an arrow pointing to the cell
# that shows the NEXT day (v down, ^ up, > right, < left). A blank cell
# marks the last day of the page. Day 1 is the one cell no arrow points to.
# Rows must stay 9 characters wide and quoted.
#
# With the arrows below, a page reads like this (numbers are the page's
# days, . is a cell that is not a day):
#
# 1 . 7 8 9 . 15 16 17
# 2 . 6 . 10 . 14 . 18
# 3 4 5 . 11 12 13 . 19
#
# Edit the arrows to reshape the path. Deleting the key does not stick:
# SnLib puts a missing key of this file back on every boot and reload.
# If the arrows do not form one path through every d cell, the console says
# why and the cells fall back to that left-to-right order.
# ------------------------------------------------------------
paged-flow:
- " "
- "v >>v >>v"
- "v ^ v ^ v"
- ">>^ >>^ "
- " "
items:
filler:
material: GRAY_STAINED_GLASS_PANE
display-name: " "
key: f
# Opens the rank rewards menu.
rewards-button:
material: CHEST
display-name: "₢f2&lRank Rewards"
lore:
- "&7Claim the rewards of your rank."
key: t
click-actions:
- "[sound] UI_BUTTON_CLICK"
- "[player] snrewards:rewards"
previous-page:
material: ARROW
display-name: "₢f2Previous Page"
key: p
click-actions:
- "[previous-page]"
- "[sound] UI_BUTTON_CLICK"
nav-disabled:
material: GRAY_STAINED_GLASS_PANE
display-name: "&7No previous page"
lore:
- "&8You are on the first page"
next-page:
material: ARROW
display-name: "₢f2Next Page"
key: n
click-actions:
- "[next-page]"
- "[sound] UI_BUTTON_CLICK"
nav-disabled:
material: GRAY_STAINED_GLASS_PANE
display-name: "&7No next page"
lore:
- "&8You are on the last page"
close:
material: BARRIER
display-name: "&cClose"
key: c
click-actions:
- "[sound] UI_BUTTON_CLICK"
- "[close]"
# ------------------------------------------------------------
# DAY TEMPLATES
# The plugin draws every day cell from one of these, by the day's state for
# the viewer. A day marked milestone: true in streak.yml uses the
# milestone-* twin of its state.
# day-claimed already claimed
# day-available claimable now
# day-waiting claimable at the next reset
# day-locked further along the path
# day-loading shown while the player's data is still loading
# Placeholders: {day} the day number {contents} the lore lines of the
# day in streak.yml {status} the state word from the status: section of
# lang/messages_en.yml {countdown} time until the next reset (waiting only).
# material also accepts texture-<base64>, texture:<base64> and
# basehead-<base64> to use a custom player head.
# ------------------------------------------------------------
templates:
# Carries the click of every day cell: the plugin claims the clicked day or
# answers why it cannot. Its own look is never drawn, so give it no
# display-name or lore (they would replace the name and lore of every day).
day:
material: PAPER
click-actions:
- "[sound] UI_BUTTON_CLICK"
- "[streak-claim] {day}"
day-claimed:
material: LIME_STAINED_GLASS_PANE
display-name: "&a&lDay {day}"
lore:
- "&7Status: {status}"
- ""
- "{contents}"
day-available:
material: CHEST
glow: true
display-name: "₢f2&lDay {day}"
lore:
- "&7Status: {status}"
- ""
- "{contents}"
- ""
- "&eClick to claim"
day-waiting:
material: CLOCK
display-name: "&e&lDay {day}"
lore:
- "&7Status: {status}"
- "&7Unlocks in &f{countdown}"
- ""
- "{contents}"
day-locked:
material: RED_STAINED_GLASS_PANE
display-name: "&c&lDay {day}"
lore:
- "&7Status: {status}"
- ""
- "{contents}"
day-loading:
material: GRAY_STAINED_GLASS_PANE
display-name: "&7Day {day}"
lore:
- "&7Loading..."
milestone-claimed:
material: EMERALD_BLOCK
display-name: "&a&lMilestone - Day {day}"
lore:
- "&7Status: {status}"
- ""
- "{contents}"
milestone-available:
material: ENDER_CHEST
glow: true
display-name: "₢f2&lMilestone - Day {day}"
lore:
- "&7Status: {status}"
- ""
- "{contents}"
- ""
- "&eClick to claim"
milestone-waiting:
material: GOLD_BLOCK
display-name: "&e&lMilestone - Day {day}"
lore:
- "&7Status: {status}"
- "&7Unlocks in &f{countdown}"
- ""
- "{contents}"
milestone-locked:
material: OBSIDIAN
display-name: "&c&lMilestone - Day {day}"
lore:
- "&7Status: {status}"
- ""
- "{contents}"
lang/messages_en.yml
# ============================================================
# SnRewards - language file (English)
# Managed by SnLib: new keys merge in on boot, your values are kept.
# ============================================================
# Prefix prepended to every single-line message sent via sn.lang().send(...)
prefix: "₢f2&lSnRewards &8| &7"
# snlib.* is SnLib's shared command contract (14 keys; the two help.group-*
# keys exist since SnLib 1.36.0). Every Sn plugin ships
# this block UNCHANGED: SnLib bundles NEUTRAL defaults for any key you omit and
# merges them in on boot, so an incomplete block leaks unbranded lines. Shipping
# the FULL block is what keeps the whole fleet visually identical. Placeholders
# {plugin} {usage} {description} {page} {total} {min} {max} {value} {command}
# {group} {path} are filled by SnLib. NEVER put {prefix} here (it is auto-prepended).
snlib:
no-permission: "&cYou do not have permission to use this command."
usage: "&cUsage: &e{usage}"
invalid-number: "&cInvalid number: &e{value}"
invalid-value: "&cInvalid value: &e{value}"
out-of-range: "&cValue must be between &e{min} &cand &e{max}&c: &e{value}"
number-too-small: "&cValue must be at least &e{min}&c: &e{value}"
player-not-found: "&cPlayer not found: &e{value}"
unknown-subcommand: "&cUnknown subcommand: &e{value}"
reload-done: "&aConfiguration reloaded."
help:
header: "&8&m----------&r ₢f2&l{plugin} &8&m----------"
# Branded no-separator form. SnLib's neutral default is "&e{usage} &7{description}".
entry: "₢f2{usage} &7{description}"
footer: "&7Page &f{page}&7/&f{total} &8- ₢f2/{command} help <page>"
# Own help of a groupHelp() command group (/<cmd> admin <module> help).
group-header: "&8&m----------&r ₢f2&l{group} &8&m----------"
group-footer: "&7Page &f{page}&7/&f{total} &8- ₢f2{path} help <page>"
# Your own plugin messages. Do NOT write {prefix} in any value: SnLib
# auto-prepends the prefix above to every single-line message sent via
# sn.lang().send(...).
messages:
# Rank rewards (/rewards).
# {name} = display name of the reward, {reward} = its id in rewards.yml.
rewards:
# Sent when a claim is clicked before the player's data finished loading.
loading: "&7Your rewards are still loading, try again in a moment."
# Sent when claims are clicked faster than limits.click-cooldown-ms allows, or while a claim of the
# same player is still being written. Used by the rewards menu and the streak menu. Empty: no message.
too-fast: "&cSlow down, you are clicking too fast."
# Sent after a successful claim, once its actions ran.
claimed: "&aYou claimed {name}&a!"
# Sent when the player lacks the permission of the reward.
no-permission: "&cYou do not have access to {name}&c."
# Sent while the reward is on cooldown. {time} = time left.
cooldown: "&cYou can claim {name} &cagain in &e{time}&c."
# Sent when a requirement of the reward is not met.
locked: "&cYou do not meet the requirements of {name}&c."
# Sent when a one-time reward was already claimed.
one-time-claimed: "&cYou already claimed {name}&c. It can only be claimed once."
# Sent when the inventory lacks free slots. {missing} = slots still to free, {required} = slots the reward needs.
inventory-full: "&cFree &e{missing} &cmore inventory slot(s) to claim {name}&c."
# Sent when another claim of the same reward (another menu or server) was saved first; nothing is given.
already-claimed: "&c{name} &cwas already claimed a moment ago."
# Sent when the claim could not be saved; nothing is given.
error: "&cYour claim of {name} &ccould not be saved. Nothing was given, try again later."
# Daily streak (/streak).
# {day} = the streak day, {countdown} = time until the next streak day starts.
streak:
# Sent when a day is clicked before the player's data finished loading.
loading: "&7Your streak is still loading, try again in a moment."
# Sent after a successful claim, once its actions ran.
claimed: "&aYou claimed streak day &f{day}&a!"
# Sent instead of claimed for a milestone day.
claimed-milestone: "₢f2&lMilestone! &aYou claimed streak day &f{day}&a!"
# Sent once when a missed day breaks the streak. {day} = the day the streak had reached.
lost: "&cYou missed a day and lost your streak at day &f{day}&c. It starts again from day 1."
# Sent when the day that unlocks at the next reset is clicked.
not-available-yet: "&eDay &f{day} &eunlocks in &f{countdown}&e."
# Sent when a later day is clicked while another one is claimable. {next} = the day to claim now.
claim-next-first: "&cClaim day &f{next} &cfirst."
# Sent when a locked day is clicked after today's day was claimed.
already-claimed-today: "&cYou already claimed today's streak day. Come back in &f{countdown}&c."
# Sent when a claimed day is clicked, or when another claim (another menu or server) was saved first.
already-claimed: "&cDay &f{day} &cis already claimed."
# Sent when every day is claimed and streak.restart-on-complete is false.
complete: "&aYou completed the whole streak path!"
# Sent when a requirement of the day is not met.
locked: "&cYou do not meet the requirements of day &f{day}&c."
# Sent when the inventory lacks free slots. {missing} = slots still to free.
inventory-full: "&cFree &e{missing} &cmore inventory slot(s) to claim day &f{day}&c."
# Sent when the claim could not be saved; nothing is given.
error: "&cYour claim of day &f{day} &ccould not be saved. Nothing was given, try again later."
# Rewards menu (/rewards). Item names and lore live in guis/rewards.yml.
rewards-menu:
# Sent instead of the menu when guis/rewards.yml is not loaded.
unavailable: "&cThe rewards menu is not available right now. Tell an administrator."
# Streak menu (/streak).
streak-menu:
# Sent when guis/streak.yml could not be loaded, so the menu does not open.
unavailable: "&cThe streak menu is not available right now. Tell an administrator."
# Notices sent shortly after a player joins (notifications.* in config.yml).
# The lost-streak notice is messages.streak.lost.
join:
# Sent when rewards are ready. {count} = how many rewards the player can claim now.
rewards-ready: "&aYou have &f{count} &areward(s) ready to claim. Use &f/rewards&a."
# Sent when a streak day is claimable. {day} = the day to claim.
streak-ready: "&aYour streak day &f{day} &ais ready to claim. Use &f/streak&a."
# Admin commands (/rewards reset, setstreak, resetstreak). {player} = the target's name.
admin:
# Sent after /rewards reset <player> <reward>. {reward} = the reward id.
reset-reward: "&aReset reward &f{reward} &afor &f{player}&a."
# Sent after /rewards reset <player> all.
reset-all: "&aReset every reward of &f{player}&a."
# Sent when the player had no claim record to remove.
reset-nothing: "&e{player} &7had no claim records to reset."
# Sent when the reset could not be saved; the details are in the console.
reset-failed: "&cCould not reset the rewards of &f{player}&c. Check the console."
# Sent after /rewards setstreak. {day} = the day the streak was set to.
streak-set: "&aSet the streak of &f{player} &ato day &f{day}&a."
# Sent when the day is above the streak path. {day} = the day typed, {max} = the number of days on the path.
streak-out-of-range: "&cThe streak path has &e{max} &cday(s), so day &e{day} &cdoes not exist. Choose a day from 0 to &e{max}&c."
# Sent after /rewards resetstreak, and after /rewards setstreak with day 0.
streak-reset: "&aReset the streak of &f{player}&a."
# Sent when the streak could not be saved; the details are in the console.
streak-failed: "&cCould not change the streak of &f{player}&c. Check the console."
# Short state words. Each is substituted into the {status} slot of the menus under guis/ and
# into the PlaceholderAPI output, so a restyle here applies everywhere at once.
status:
# States of a rank reward.
reward-available: "&aAvailable"
reward-cooldown: "&eOn cooldown"
reward-no-permission: "&cNo permission"
reward-claimed: "&7Claimed"
reward-locked: "&cLocked"
# States of a streak day.
day-claimed: "&7Claimed"
day-available: "&aAvailable"
day-waiting: "&eWaiting"
day-locked: "&cLocked"
# Whether today's streak day can still be claimed.
today-available: "&aAvailable"
today-claimed: "&7Claimed"
# Unit suffixes of every countdown ("1d 2h 5m 30s"): reward cooldowns, the time until the next
# streak day, the menus and the PlaceholderAPI output.
time:
days: "d"
hours: "h"
minutes: "m"
seconds: "s"