StealABlockDocs v1.0.0
StealABlockReferenceConfiguration

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

plugins/alpha-stealblock/
  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: ...
KeyDefaultWhat it does
starting-balance50.0Money a player has the first time they appear in data.yml.
hologram-view-range3.0View range multiplier for block holograms and the community goal hologram.
auto-events.enabledtrueStarts a random event from the list every interval-minutes.
auto-events.events3 typesAny 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.*unsetPositions 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 &#00FF12 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.

The default reward command is 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.