Configuration
Main sections
| Section | Purpose |
|---|---|
| license-key | Your Storefront license key. |
| preset | Active classic shop preset (folder in presets/). |
| compact-numbers | 1.2K / 3.4M style numbers in menus and messages. |
| currencies | Turn money (Vault) and shards on or off. |
| shards | Starting balance, change log, /shards pay and the leaderboard. |
| shard-arenas | Wand, default payout and permission-based reward tiers. |
| shop | Click cooldown and the purchase log. |
| daily-shop | Item shop preset, chat broadcast and Discord webhook. |
| storage | SQLite (default) or MySQL. Needs a full restart. |
Apply changes with /storefront reload. If a file has a mistake, the reload is refused and the previous configuration keeps running.
Default config
license-key: "PUT-LICENSE-HERE"
# ============================================================
# Storefront
# Paper / Folia 26.1+
#
# Colors in every message and menu:
# Legacy: &a, &c, &l ...
# HEX: &#RRGGBB
# ============================================================
# Shop layout. Each preset is a folder in plugins/Storefront/presets/.
# Copy a preset folder to make your own, then set its folder name here.
preset: donut
# 1.2K / 3.4M style numbers in menus and messages. false = 1,200 / 3,400,000
compact-numbers: true
currencies:
# Money uses Vault. Needs Vault + an economy plugin (EssentialsX, CMI, ...).
money:
enabled: true
# Shards are built in and stored in the Storefront database.
shards:
enabled: true
shards:
# Shards a new player starts with.
starting-balance: 0
# Keep a history of every shard change in the database (sf_shard_log).
log-changes: true
pay:
# /shards pay <player> <amount>
enabled: false
minimum: 1
cooldown-seconds: 5
# Percentage removed from every payment (0-90).
tax-percent: 0
# Payments of at least this amount must be confirmed. 0 = never ask.
confirm-above: 10000
top:
size: 10
refresh-seconds: 60
# Shards for killing another player.
kill-rewards:
enabled: true
amount: 10
# No reward for killing the same player again within this time (prevents kill farming). 0 = off.
same-victim-cooldown-seconds: 300
# No reward when both players connect from the same IP address (alternate accounts).
ignore-same-ip: true
sound:
sound: ""
# ------------------------------------------------------------
# Shard arenas - players earn shards for staying inside an area.
# /storefront arena wand left click = corner 1, right click = corner 2
# /storefront arena create <name> [seconds] [shards]
# /storefront arena list | info | set | redefine | delete
# Arenas are saved in arenas.yml. Create as many as you want.
# ------------------------------------------------------------
shard-arenas:
enabled: true
wand-material: BLAZE_ROD
# Used by arenas that don't set their own (seconds inside -> shards paid).
default-interval-seconds: 60
default-amount: 1
# Leaving the arena resets the timer.
reset-on-leave: true
# Titles and texts are in messages.yml (arena-enter-title, arena-reward, ...).
sounds:
enter:
sound: BLOCK_NOTE_BLOCK_BELL
exit:
sound: ENTITY_PLAYER_LEVELUP
reward:
sound: ENTITY_ITEM_PICKUP
# Permission-based rewards: a player receives the highest amount of any tier they have
# the permission for. Add, rename or remove tiers freely.
# Example (LuckPerms): /lp group <group> permission set storefront.arena.tier.1
tiers:
tier-1:
permission: storefront.arena.tier.1
amount: 10
tier-2:
permission: storefront.arena.tier.2
amount: 20
# Shard booster: a consumable item that multiplies shard arena payouts for a set time.
# Give it with /storefront booster give <player> [amount] [multiplier] [hours],
# for example as a shop, crate or store reward. Right click to use. One booster at a time.
shard-booster:
enabled: true
material: POTION
multiplier: 4
duration-seconds: 86400
glow: true
# Also multiply shards from player kills.
affects-kill-rewards: false
# %multiplier%, %hours%, %duration%
name: "d0de7Shard Booster"
lore:
- "&7Shard booster: &ax%multiplier% &7shards for &f%hours%h&7!"
- ""
- "&fRight click to use"
# /afk menu: every shard arena with a teleport point (/storefront arena setteleport <name>).
afk-menu:
title: "񬠜ᴀꜰᴋ ᴀʀᴇᴀѕ"
rows: 6
# %index% = position in the list, %arena% = arena name
area-name-format: "ᴀꜰᴋ %index%"
# Areas fill these slots in order (0 = top-left). Default: the first five rows (0-44).
area-slots: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44]
# %area_name%, %arena%, %interval%
area-item:
material: ITEM_FRAME
name: "ρCE8%area_name%"
lore:
- "&7Click to go to this"
- "&7AFK area."
previous-page:
slot: 45
material: ARROW
name: ""ee80ʙᴀᴄᴋ"
lore:
- "&7Click to go to the previous page"
next-page:
slot: 53
material: ARROW
name: ""ee80ɴᴇхᴛ"
lore:
- "&7Click to go to the next page"
random-area:
slot: 49
material: AMETHYST_BLOCK
name: ""ee80ᴀꜰᴋ"
lore:
- "&7Click to teleport to a random AFK area"
page-sound:
sound: UI_BUTTON_CLICK
filler:
enabled: false
material: BLACK_STAINED_GLASS_PANE
name: " "
teleport:
# Players with storefront.afk.instant skip the countdown. Moving to another block cancels it.
delay-seconds: 5
countdown-sound:
sound: BLOCK_NOTE_BLOCK_PLING
shop:
# Minimum time between two clicks in a Storefront menu.
click-cooldown-ms: 150
# Save every purchase in the database (sf_purchases).
log-purchases: true
# Rotating item shop (/dailyshop). Presets live in plugins/Storefront/daily-presets/.
daily-shop:
enabled: true
preset: fortnite
announce:
# Chat message to everyone online when new items arrive.
broadcast: true
# Optional Discord webhook that posts the new items. Leave empty to turn it off.
webhook-url: ""
webhook-title: "New items in the shop"
# Changing storage settings needs a full server restart.
storage:
# sqlite = local file (default). mysql = MySQL/MariaDB, required to share shards between servers.
type: sqlite
mysql:
host: "localhost"
port: 3306
database: "storefront"
username: "root"
password: ""
use-ssl: true
pool-size: 6
Messages
messages.yml holds every message. %prefix% works in any message, and an empty message ("") turns it off. Missing keys fall back to the defaults after updates.