Configuration
config.yml itself is nearly empty — almost everything that matters lives in its own dedicated file instead.
File layout
config.yml # just starting-balance — everything else lives below
messages.yml # every player-facing message, prefix, accent gradient
blocks.yml # the full block table — material, rarity, income, sell-value
milestones.yml # per-rarity collection milestones
sounds.yml # every plugin sound effect, individually toggleable
scoreboard.yml # sidebar scoreboard + TAB header/footer layout
arenas.yml # runtime — written by /asb create/setup, not hand-edited
data.yml # runtime — per-player balance/rebirth/prestige/credits data
schematics/ # WorldEdit .schem files pasted on Prestige
Core config.yml
starting-balance: 50.0
That's the entire file. Everything else — arenas, blocks, milestones, sounds, scoreboard, messages — is deliberately split into its own dedicated file rather than nested under one giant config.
Theme & accent color
Unlike the config-driven theme: block in AlphaStudio's other plugins, StealABlock's accent gradient is defined directly in code (ColorUtil.java) rather than config.yml:
// Author content with FF12 — it renders as a real two-stop gradient
// (light green -> a moderately deeper green) everywhere, automatically.
ACCENT_START = "70FF7E";
ACCENT_END = "00990F";
Recoloring the plugin's own in-game accent means editing these two constants and rebuilding — not a runtime config change. Message files still only ever author the flat �FF12 placeholder, same authoring convention as every other AlphaStudio plugin.
blocks.yml
One entry per block variant (so a single material like dirt takes 4 entries — normal/golden/diamond/rainbow). See Gameplay → Blocks & Rarity for how the multipliers work.
blocks:
dirt:
material: DIRT
display-name: "ᴅɪʀᴛ ʙʟᴏᴄᴋ"
rarity: COMMON
income: 1
sell-value: 10
golden_dirt:
material: DIRT
display-name: "FFFFFFɢᴏʟᴅᴇɴ ᴅɪʀᴛ ʙʟᴏᴄᴋ"
rarity: GOLDEN_COMMON
income: 10
sell-value: 100
rainbow_dirt:
material: DIRT
display-name: "FF0000ʀFFAA00ᴀFFFFFFɪFF12ɴ7FFFFʙAA00AAᴏFF77FFᴡ FFFFFFᴅɪʀᴛ ʙʟᴏᴄᴋ"
rarity: RAINBOW_COMMON
income: 200
sell-value: 2000
Rainbow-variant display names are hand-authored letter-by-letter with alternating colors (visible in the raw YAML above) rather than using a single gradient tag — that's what produces the true rainbow look letter-to-letter instead of a smooth two-color fade.
milestones.yml
common_index:
type: RARITY
target: COMMON
slot: 10
display-item: LIGHT_GRAY_CONCRETE
display-name: "FFFFFFᴄᴏᴍᴍᴏɴ ɪɴᴅᴇx"
lore-locked: [...] # shown while incomplete
lore-unlocked: [...] # shown once complete, claimable
lore-claimed: [...] # shown after claiming
credits: 10
commands: ["eco give %player% 100000"]
%progress%/%total% are available inside the lore lists to show live completion count. commands runs as console for every reward line — not limited to economy commands.
sounds.yml
Every plugin sound effect, individually toggleable with its own volume/pitch:
collect_block: {enabled: true, sound: ENTITY_ITEM_PICKUP, volume: 1.0, pitch: 1.0}
deliver_block: {enabled: true, sound: ENTITY_EXPERIENCE_ORB_PICKUP, volume: 1.0, pitch: 1.2}
sell: {enabled: true, sound: ENTITY_EXPERIENCE_ORB_PICKUP, volume: 1.0, pitch: 0.8}
open_gui / close_gui: {sound: UI_BUTTON_CLICK, ...}
error: {sound: ENTITY_VILLAGER_NO, ...}
success: {sound: ENTITY_PLAYER_LEVELUP, ...}
arena_join / arena_leave: {...}
storage_full: {sound: ENTITY_VILLAGER_NO, pitch: 0.5}
collect_money: {sound: ENTITY_ITEM_PICKUP, pitch: 1.5}
Scoreboard & TAB list
Fully customizable, independently toggleable. Supports both this plugin's &#RRGGBB accent syntax and MiniMessage tags like <shadow:#000000FF> (needs the server on 1.21.4+) in the same line.
scoreboard:
enabled: true
update-interval-ticks: 20
title: "<shadow:#000000FF>FF12ꜱᴛᴇᴀʟ ᴀ ʙʟᴏᴄᴋ</shadow>"
lines:
- "<shadow:#000000FF>ᴍᴏɴᴇʏ: FF12$%balance_formatted%</shadow>"
- "<shadow:#000000FF>ʀᴇʙɪʀᴛʜ: FF12%rebirth%</shadow>"
tablist:
enabled: true
update-interval-ticks: 20
header: [...]
footer: [...]
Full placeholder list for both sections is on Placeholders → Scoreboard placeholders.
Reload vs. restart
/asb reload re-reads config.yml, messages.yml, blocks.yml, milestones.yml, sounds.yml, and scoreboard.yml. It does not reload compiled Java — anything changed by updating the plugin jar itself needs a full server restart.
