Configuration
Core options live in config.yml. Arenas, blocks, milestones, sounds, the scoreboard and messages each have their own file.
On this page
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 # balance a new player starts with
hologram-view-range: 3.0 # 1.0 = 16 blocks; raise it so holograms are visible from further away
auto-events:
enabled: true
interval-minutes: 60 # how often a random event starts
event-duration-seconds: 300 # how long each automatic event lasts
events: # types to pick from
- DOUBLE_INCOME
- LIGHTNING_STORM
- FUSION_FRENZY
locations: # written by the setup wand, not edited by hand
balance_top: ...
rebirth_top: ...
| Key | Default | What it does |
|---|---|---|
starting-balance | 50.0 | Money a player has the first time they appear in data.yml. |
hologram-view-range | 3.0 | View range multiplier for block holograms and the community goal hologram. |
auto-events.enabled | true | Starts a random event from the list every interval-minutes. |
auto-events.events | 3 types | Any of DOUBLE_INCOME, DOUBLE_STEAL, RARE_BOOST, SPEED_ROUND, SHIELD_HOUR, LIGHTNING_STORM, FUSION_FRENZY. An unknown name is skipped with a console warning; an empty list disables the scheduler. |
locations.* | unset | Positions of the Balance Top and Rebirth Top holograms. Set them with the wand in /asb setup. |
Everything else — arenas, blocks, milestones, sounds, scoreboard, messages — is 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
milestones:
common_hunter: # ids: common_hunter, rare_explorer, epic_champion, ...
type: RARITY
target: COMMON
slot: 10
display-item: IRON_PICKAXE
display-name: "FFFFFFᴄᴏᴍᴍᴏɴ ʜᴜɴᴛᴇʀ"
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.
eco give %player% <amount>. The console runs it, so it pays through whichever plugin owns that command. It does not touch the in-game balance that /money shows. If nothing on your server answers eco (CMI, for one, uses money give <player> <amount>), the cash part of a milestone does nothing, so edit those lines.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.
