Configuration
SnMiniGames ships with the following YAML files. config.yml and lang/messages_en.yml are managed: new keys are auto-merged on boot and your edits and comments are preserved. games/parkour.yml, games/tntrun.yml, games/tnttag.yml and games/spleef.yml are seeded once and never auto-merged, so the setup commands and your edits fully own them.
Every minigame gets its own games/<game>.yml holding its enabled flag, queue settings, maps and rewards. Settings shared by every game, such as the leave item appearance and the two setup wands, live in config.yml instead.
Translating the command help
On first boot SnLib adds a top-level commands: block to lang/messages_en.yml. It holds the description of every command and the visible label of every argument, so you translate the whole help without touching the source. It covers the per-game setup commands too, which is what /mg admin <game> help prints.
Editing an entry is permanent: your value is never overwritten. Delete an entry to restore the default on the next boot. Renaming an argument label, such as <map> to <mapa>, changes only what players see. The command is still typed the same way.
The block is generated from the commands actually registered, so a game disabled in its games/<game>.yml contributes no entries.
config.yml
# ============================================================
# SnMiniGames - 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).
# ============================================================
# 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 /minigames 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 /minigames. Re-read on /minigames reload.
aliases: [mg]
# ------------------------------------------------------------
# Player state snapshots (crash-safe restore).
# ------------------------------------------------------------
snapshots:
# Folder inside the plugin data folder where durable per-player state
# snapshots are written before any in-game mutation.
folder: snapshots
# ------------------------------------------------------------
# Admin map setup wand.
# ------------------------------------------------------------
setup-wand:
# Material of the setup wand item.
material: BLAZE_ROD
# Display name of the setup wand item.
name: "₢f2&lSetup Wand"
# ------------------------------------------------------------
# Admin region wand (cuboid selection, used by arena games such as
# TNT Run). Left-click one corner, right-click the other; the box
# edges are rendered with particles while you select.
# Given with /minigames admin wand region.
# ------------------------------------------------------------
region-wand:
# Appearance of the region wand item.
item:
material: GOLDEN_AXE
display-name: "₢f2&lRegion Wand"
lore:
- "&7Left click: &fpos1"
- "&7Right click: &fpos2"
glow: true
# Permission required to USE the wand (empty = anyone holding it).
permission: "snminigames.admin.setup"
particle:
# Edge particle. DUST honours the color and size below.
type: DUST
# Only for DUST: "R, G, B" or "#RRGGBB".
color: "#8354f2"
# Only for DUST: dust size, clamped 0.1 - 4.0.
size: 1.2
# Distance between edge points in blocks. Min 0.1.
step: 0.5
# Render refresh period in ticks. Min 1.
interval-ticks: 5
# Max distance (blocks) from a viewer to the box for particles to be shown.
render-distance: 64
# OWNER_ONLY = only the selecting admin sees the edges; WORLD = everyone near.
visibility: OWNER_ONLY
# Max particle points per refresh per viewer; bigger boxes render sparser.
particle-budget: 2000
# Above this block volume only the 8 corners are marked.
max-render-volume: 250000
# Max selectable arena volume in blocks; 0 = unlimited. This is the safety cap
# that keeps a TNT Run arena from growing into a region too big to restore.
max-volume: 250000
# Session timeout in ticks; 0 = never expires.
timeout-ticks: 0
# Send no selection messages at all.
silent: false
# ------------------------------------------------------------
# Leave item (hotbar item that leaves the round on right-click).
# Material and name are framework-level: a single item is registered for
# every minigame. Whether each game hands it out and in which hotbar slot
# is per-game, under leave-item in that game's file (games/<game>.yml).
# ------------------------------------------------------------
leave-item:
# Material of the leave item.
material: BARRIER
# Display name of the leave item.
name: "&cLeave"
# ------------------------------------------------------------
# Queue / round start.
# ------------------------------------------------------------
queue:
# 3-2-1 countdown sound spec: "SOUND_ID [volume] [pitch]" (blank = none).
countdown-sound: "BLOCK_NOTE_BLOCK_PLING 1.0 1.0"
# ------------------------------------------------------------
# In-game restrictions.
# ------------------------------------------------------------
in-game:
# Commands an in-game player may still run (lowercase, without the slash).
# The leave command is ALWAYS allowed regardless of this list.
allowed-commands: []games/parkour.yml
# ============================================================
# SnMiniGames - Parkour game
# Seeded once by SnLib and NEVER auto-merged: your structure and values
# are kept. The setup wand (/minigames admin parkour ...) writes maps
# back into this file.
# ============================================================
# Whether the Parkour game is active. When false it is not registered:
# it will not appear in /minigames list, /minigames join or PlaceholderAPI.
enabled: true
# Display name of the game, shown wherever {game} appears. Supports color
# codes and the full SnLib text pipeline.
display-name: "₢f2&lParkour"
# ------------------------------------------------------------
# Queue and round staging (shared framework settings).
# ------------------------------------------------------------
queue:
# Seconds between automatic rounds. 0 disables auto-start (rounds then open
# only via /minigames admin start parkour).
auto-start-interval: 120
# Seconds the queue stays open before the round begins.
countdown: 30
# Minimum queued players for the round to begin; below this at countdown end
# the round is cancelled.
min-players: 2
# Maximum queued players; reaching it starts the round early.
max-players: 12
# Broadcast the "starts in" line every N seconds while the queue counts down.
announce-interval: 10
# Mini-lobby players are teleported to while they wait (world;x;y;z;yaw;pitch).
waiting-spawn: "world;0.5;65.0;0.5;0.0;0.0"
# Seconds a player must wait before rejoining after leaving or losing. 0 = none.
rejoin-cooldown: 15
# ------------------------------------------------------------
# Join gate.
# ------------------------------------------------------------
join:
# Require an empty inventory, armor and hands to join (prevents item smuggling).
require-empty-inventory: true
# ------------------------------------------------------------
# Start countdown (the 3-2-1 GO freeze before the race).
# ------------------------------------------------------------
start-countdown:
# Seconds of the pre-race freeze. 0 skips the freeze.
seconds: 3
# ------------------------------------------------------------
# Leave item (hotbar item that leaves the round on right-click).
# Material and name are framework-level and live in config.yml under
# leave-item; here you only choose whether this game hands it out and where.
# ------------------------------------------------------------
leave-item:
# Whether to give the leave item while in the round.
enabled: true
# Hotbar slot (0-8) the leave item occupies.
slot: 8
# ------------------------------------------------------------
# Map rotation across rounds: RANDOM (a random map each round) or
# SEQUENTIAL (maps picked in file order).
# ------------------------------------------------------------
map-rotation: RANDOM
# ------------------------------------------------------------
# Maps. Each entry is one parkour course, created in-game with
# /minigames admin parkour create <name>.
# Wand commands (select a block with the setup wand first):
# /minigames admin parkour setstart|addwaypoint|setwin <map>
# Standing-position commands (run where you stand):
# /minigames admin parkour setwaiting|setend|sethold <map>
# Also: delete <map>, setwinners <map> <count>, clearwaypoints <map>, list.
# Full command list: /minigames admin parkour help
# ------------------------------------------------------------
maps:
arena1:
# Where players spawn to begin the race (world;x;y;z;yaw;pitch).
start-spawn: "world;0.5;70.0;0.5;0.0;0.0"
# Ordered checkpoints. Stepping on one (its block or the block underfoot)
# sets it as the respawn point; only forward checkpoints count.
waypoints:
- "world;10.5;72.0;0.5;0.0;0.0"
- "world;20.5;75.0;3.5;0.0;0.0"
# Stepping on this block (or the block underfoot) finishes the race.
win-block: "world;30.5;80.0;5.5;0.0;0.0"
# Falling this many blocks below the last checkpoint's height sends the
# player back to that checkpoint.
fall-blocks: 5
# How many players must finish for the round to end. 1 ends at the first
# finisher; higher freezes each finisher at the hold spot until N finish
# (or the time limit).
winners: 1
# Maximum round length in seconds; 0 disables the limit.
time-limit: 300
# Everyone is teleported here when the round ends. Leave blank to send each
# player back to where they were before joining.
end-teleport: "world;0.5;64.0;0.5;0.0;0.0"
# (winners > 1) where each finisher is frozen while waiting for the rest.
finish-hold: "world;30.5;81.0;5.5;0.0;0.0"
# How far (blocks) a frozen finisher may drift from finish-hold before being
# pinned back. Minimum 0.5.
finish-hold-radius: 3.0
# Rewards by finish position (1 = first). Each position is a list of action
# strings run for that finisher, with placeholders {player}, {position},
# {game} and {map}. Rewards do NOT fire for a player who left before the
# round ended (offline finishers are skipped).
rewards:
1:
- "[console] eco give {player} 1000"
- "[broadcastmessage] &a{player}&a finished 1st in Parkour!"
2:
- "[console] eco give {player} 500"
3:
- "[console] eco give {player} 250"
# ------------------------------------------------------------
# Sounds for parkour events. Format: "SOUND_ID [volume] [pitch]"
# (blank or "none" = silent). The 3-2-1 start countdown sound is
# configured globally in config.yml (queue.countdown-sound).
# ------------------------------------------------------------
sounds:
# Played when a player joins the parkour queue.
join: "ENTITY_EXPERIENCE_ORB_PICKUP 1.0 1.0"
# Played when a player reaches a checkpoint.
checkpoint: "ENTITY_PLAYER_LEVELUP 1.0 1.2"
# Played when a player falls and is returned to their checkpoint.
fell: "ENTITY_VILLAGER_NO 1.0 1.0"
# Played to a player when they finish the course.
win: "UI_TOAST_CHALLENGE_COMPLETE 1.0 1.0"games/tntrun.yml
# ============================================================
# SnMiniGames - TNT Run game
# Seeded once by SnLib and NEVER auto-merged: your structure and values
# are kept. The setup commands (/minigames admin tntrun ...) write maps
# back into this file.
# ============================================================
# Whether the TNT Run game is active. When false it is not registered:
# it will not appear in /minigames list, /minigames join or PlaceholderAPI.
enabled: true
# Display name of the game, shown wherever {game} appears. Supports color
# codes and the full SnLib text pipeline.
display-name: "&#f25c05&lTNT Run"
# ------------------------------------------------------------
# Queue and round staging (shared framework settings).
# ------------------------------------------------------------
queue:
# Seconds between automatic rounds. 0 disables auto-start (rounds then open
# only via /minigames admin start tntrun).
auto-start-interval: 120
# Seconds the queue stays open before the round begins.
countdown: 30
# Minimum queued players for the round to begin; below this at countdown end
# the round is cancelled.
min-players: 2
# Maximum queued players; reaching it starts the round early.
max-players: 12
# Broadcast the "starts in" line every N seconds while the queue counts down.
announce-interval: 10
# Mini-lobby players are teleported to while they wait (world;x;y;z;yaw;pitch).
# Set it in-game with /minigames admin tntrun setwaiting <map>.
waiting-spawn: ""
# Seconds a player must wait before rejoining after leaving or losing. 0 = none.
rejoin-cooldown: 15
# ------------------------------------------------------------
# Join gate.
# ------------------------------------------------------------
join:
# Require an empty inventory, armor and hands to join (prevents item smuggling).
require-empty-inventory: true
# ------------------------------------------------------------
# Start countdown (the 3-2-1 GO freeze before the round).
# ------------------------------------------------------------
start-countdown:
# Seconds of the pre-round freeze. 0 skips the freeze.
seconds: 3
# ------------------------------------------------------------
# Leave item (hotbar item that leaves the round on right-click).
# Material and name are framework-level and live in config.yml under
# leave-item; here you only choose whether this game hands it out and where.
# ------------------------------------------------------------
leave-item:
# Whether to give the leave item while in the round.
enabled: true
# Hotbar slot (0-8) the leave item occupies.
slot: 8
# ------------------------------------------------------------
# Map rotation across rounds: RANDOM (a random map each round) or
# SEQUENTIAL (maps picked in file order).
# ------------------------------------------------------------
map-rotation: RANDOM
# ------------------------------------------------------------
# Maps. Each entry is one TNT Run arena, created in-game with
# /minigames admin tntrun create <name>.
# Region command (select a cuboid with /minigames admin wand region first):
# /minigames admin tntrun setregion <map>
# Standing-position commands (run where you stand):
# /minigames admin tntrun setstart|setwaiting|setend <map>
# Also: delete <map>, list, setelimy, setdelay, setdepth, setwinners, settimelimit.
# Full command list: /minigames admin tntrun help
#
# The arena restores itself: every block the round removes is put back when
# the round ends, on /minigames reload and on server shutdown.
# ------------------------------------------------------------
maps:
arena1:
# Arena cuboid (world;minX;minY;minZ;maxX;maxY;maxZ). ONLY blocks inside
# this region can disappear. Set it with the region wand + setregion.
region: ""
# Where players are teleported when the round starts (world;x;y;z;yaw;pitch).
# Its world MUST be the region's world or the round is aborted.
start-spawn: ""
# Y below which a player is eliminated.
elimination-y: 60
# Ticks between stepping on a block and its disappearance.
remove-delay: 4
# How many blocks deep to remove downward, counting the block you stepped on.
# 1 = classic (only the top block); 2 = the top block AND the one below it
# (a sand+TNT layer clears both). Stops at the first air/non-removable block.
remove-depth: 1
# Materials that may disappear. Empty list = any non-air block of the region.
# A material left out of the list also PROTECTS the column under it: the trail
# is cut from the block being walked on downward, never below a surface it is
# not allowed to take, so nothing is ever left floating.
removable-materials: []
# Survivors the round ends with (1 = last one standing).
winners: 1
# Maximum round length in seconds; 0 disables the limit.
time-limit: 300
# Where the SURVIVORS are teleported when the round ends. Leave blank to send
# each player back to where they were before joining. Eliminated players are
# restored the instant they fall (there is no spectator hold), so this spot
# only applies to whoever was still standing at the end.
end-teleport: ""
# Rewards by finish position (1 = the winner). Each position is a list of
# action strings run for that finisher, with placeholders {player},
# {position}, {game} and {map}. Rewards do NOT fire for a player who left
# before the round ended (offline finishers are skipped).
# Use CONSOLE/economy actions, not [give]: rewards run while the player is
# still in the round, so the pre-game inventory restore right afterwards
# would wipe any item handed out here.
# With winners > 1 the surviving players are TIED (TNT Run has no score to
# rank them by), so their relative positions are stable but not earned.
rewards:
1:
- "[console] eco give {player} 1000"
- "[broadcastmessage] &a{player}&a won TNT Run!"
2:
- "[console] eco give {player} 500"
3:
- "[console] eco give {player} 250"
# ------------------------------------------------------------
# Sounds for TNT Run events. Format: "SOUND_ID [volume] [pitch]"
# (blank or "none" = silent). The 3-2-1 start countdown sound is
# configured globally in config.yml (queue.countdown-sound).
# ------------------------------------------------------------
sounds:
# Played when a player joins the TNT Run queue.
join: "ENTITY_EXPERIENCE_ORB_PICKUP 1.0 1.0"
# Played to a player the moment they are eliminated.
eliminated: "ENTITY_GENERIC_EXPLODE 0.6 1.4"
# Played to the winner when the round ends.
win: "UI_TOAST_CHALLENGE_COMPLETE 1.0 1.0"games/tnttag.yml
particles.explode is a list of names tried in order, not a single value, and that is deliberate: Bukkit renamed the explosion particles in 1.20.5, so the two shipped names are the 1.21+ and the 1.20.x spelling of the same particle. The first one that exists on your server wins. If you replace them, keep both spellings when you care about running on both branches.
# ============================================================
# SnMiniGames - TNT Tag game
# Seeded once by SnLib and NEVER auto-merged: your structure and values
# are kept. The setup commands (/minigames admin tnttag ...) write maps
# back into this file.
# ============================================================
# Whether the TNT Tag game is active. When false it is not registered:
# it will not appear in /minigames list, /minigames join or PlaceholderAPI.
enabled: true
# Display name of the game, shown wherever {game} appears. Supports color
# codes and the full SnLib text pipeline.
display-name: "&#f2b705&lTNT Tag"
# ------------------------------------------------------------
# Queue and round staging (shared framework settings).
# ------------------------------------------------------------
queue:
# Seconds between automatic rounds. 0 disables auto-start (rounds then open
# only via /minigames admin start tnttag).
auto-start-interval: 120
# Seconds the queue stays open before the round begins.
countdown: 30
# Minimum queued players for the round to begin; below this at countdown end
# the round is cancelled.
min-players: 2
# Maximum queued players; reaching it starts the round early.
max-players: 12
# Broadcast the "starts in" line every N seconds while the queue counts down.
announce-interval: 10
# Mini-lobby players are teleported to while they wait (world;x;y;z;yaw;pitch).
# Set it in-game with /minigames admin tnttag setwaiting <map>.
waiting-spawn: ""
# Seconds a player must wait before rejoining after leaving or losing. 0 = none.
rejoin-cooldown: 15
# ------------------------------------------------------------
# Join gate.
# ------------------------------------------------------------
join:
# Require an empty inventory, armor and hands to join (prevents item smuggling).
require-empty-inventory: true
# ------------------------------------------------------------
# Start countdown (the 3-2-1 GO freeze before the round).
# ------------------------------------------------------------
start-countdown:
# Seconds of the pre-round freeze. 0 skips the freeze.
seconds: 3
# ------------------------------------------------------------
# Leave item (hotbar item that leaves the round on right-click).
# Material and name are framework-level and live in config.yml under
# leave-item; here you only choose whether this game hands it out and where.
# ------------------------------------------------------------
leave-item:
# Whether to give the leave item while in the round.
enabled: true
# Hotbar slot (0-8) the leave item occupies.
slot: 8
# ------------------------------------------------------------
# Map rotation across rounds: RANDOM (a random map each round) or
# SEQUENTIAL (maps picked in file order).
# ------------------------------------------------------------
map-rotation: RANDOM
# ------------------------------------------------------------
# Where the round counter is drawn: BOSSBAR (a bar at the top of the screen)
# or ACTIONBAR (one line above the hotbar). Anything else falls back to
# BOSSBAR. The line itself is messages.tnttag.counter in the lang file.
# ------------------------------------------------------------
counter-display: BOSSBAR
# Milliseconds of grace after RECEIVING the tag, before its holder can pass it
# on. Stops the instant tag-back. 0 disables the grace.
tag-cooldown: 1000
# How far (in blocks) a tagged player's swing looks for the player they hit.
# The tag is read two ways: from the damage event when the server has PvP ON,
# and - so the game also works with PvP OFF, where the server drops a
# player-on-player hit before any plugin sees it - from the swing animation,
# which is what this reach applies to. Raise it slightly if players complain
# that hits do not register; too high makes near-misses count. Clamped to 1-6.
tag-reach: 3.5
# Speed LEVEL of whoever is holding the TNT (1 = Speed I, the chaser runs faster
# than the runners). 0 gives no speed at all. Clamped to 0-5.
tag-speed: 1
# Knockback applied to a player who is hit, ONLY on a world where the server has
# PvP off. Nobody ever loses health in a round: with PvP ON the hit keeps its
# vanilla knockback (the damage is zeroed, not the hit), and with PvP OFF the
# server drops the hit entirely, so the plugin reproduces the push itself and
# this is its strength. 0.4 is what vanilla uses for a melee hit; 0 disables it.
# Note: if PvP is blocked by a REGION plugin instead of the world flag, the
# server still refuses the hit while this fallback stays off - disable PvP at the
# world level for the arena world.
hit-knockback: 0.4
# Seconds left on the counter at which the tick sound starts playing every
# second (sounds.tick). 0 silences it.
counter-tick-from: 5
# ------------------------------------------------------------
# Maps. Each entry is one TNT Tag arena, created in-game with
# /minigames admin tnttag create <name>.
# Region command (select a cuboid with /minigames admin wand region first):
# /minigames admin tnttag setregion <map>
# Standing-position commands (run where you stand):
# /minigames admin tnttag setstart|setwaiting|setend <map>
# Also: delete <map>, list, settaggers, setroundtime, setdecrement,
# setminroundtime, setgrace, setbreak, setwinners, settimelimit.
# Full command list: /minigames admin tnttag help
#
# TNT Tag NEVER modifies a block: the region is only the arena boundary, and
# the explosion is a particle plus a sound.
# ------------------------------------------------------------
maps:
arena1:
# Arena cuboid (world;minX;minY;minZ;maxX;maxY;maxZ). A player who steps
# outside it is teleported back to the start spawn (never eliminated).
# Set it with the region wand + setregion.
region: ""
# Where players are teleported when the round starts (world;x;y;z;yaw;pitch).
# Its world MUST be the region's world AND the spot MUST be inside the
# region, or the round is aborted (it is also the re-pin target).
start-spawn: ""
# How many players start each round tagged (holding the TNT).
taggers: 1
# Seconds of the FIRST round.
round-seconds: 30
# Seconds subtracted from each following round.
round-decrement: 5
# Floor of a round's length; round-decrement never takes it below this.
min-round-seconds: 10
# When the ONLY tagged player leaves mid-round the tag moves to a random
# survivor; if the counter had less than this many seconds left it is raised
# to this value, so the new holder gets a fair chance. 0 disables the floor.
reassign-grace: 5
# Seconds of observation after a detonation before the next round starts, so
# the survivors get to see who blew up instead of being tagged again the same
# tick. Nobody holds the TNT while it runs. 0 chains the rounds back to back.
# The break is played out where the round ended; opening the next round is what
# teleports the survivors back to start-spawn (that part happens with or without
# a break) and hands out the next TNT.
round-break: 3
# Survivors the round ends with (1 = last one standing).
winners: 1
# Maximum match length in seconds; 0 disables the limit.
time-limit: 300
# Where the SURVIVORS are teleported when the match ends. Leave blank to
# send each player back to where they were before joining. Exploded players
# are restored the instant they blow up (there is no spectator hold), so
# this spot only applies to whoever was still standing at the end.
end-teleport: ""
# Rewards by finish position (1 = the winner). Each position is a list of
# action strings run for that finisher, with placeholders {player},
# {position}, {game} and {map}. Rewards do NOT fire for a player who left
# before the match ended (offline finishers are skipped).
# Use CONSOLE/economy actions, not [give]: rewards run while the player is
# still in the round, so the pre-game inventory restore right afterwards
# would wipe any item handed out here.
rewards:
1:
- "[console] eco give {player} 1000"
- "[broadcastmessage] &a{player}&a won TNT Tag!"
2:
- "[console] eco give {player} 500"
3:
- "[console] eco give {player} 250"
# ------------------------------------------------------------
# Particles. Each entry is a LIST of org.bukkit.Particle names tried in
# order; the FIRST one that exists on this server wins. That is not
# decoration: Bukkit renamed the explosion particles in 1.20.5, so the two
# shipped names are the 1.21+ and the 1.20.x spelling of the SAME particle.
# An empty list (or no name that resolves) just skips the particle and keeps
# the sound.
# ------------------------------------------------------------
particles:
# Spawned at an exploding player's feet.
explode:
- "EXPLOSION" # 1.20.5+
- "EXPLOSION_LARGE" # 1.20.1 - 1.20.4
# ------------------------------------------------------------
# Sounds for TNT Tag events. Format: "SOUND_ID [volume] [pitch]"
# (blank or "none" = silent). The 3-2-1 start countdown sound is
# configured globally in config.yml (queue.countdown-sound).
# ------------------------------------------------------------
sounds:
# Played when a player joins the TNT Tag queue.
join: "ENTITY_EXPERIENCE_ORB_PICKUP 1.0 1.0"
# Played to a player the moment they receive the tag.
tagged: "ENTITY_TNT_PRIMED 1.0 1.0"
# Played at a player who is hit, ONLY where the plugin had to resolve the hit
# itself (PvP off). A hit the server resolves already plays vanilla's own hurt
# sound, so this one is not used there and would only double it.
hit: "ENTITY_PLAYER_HURT 1.0 1.0"
# Played at an exploding player's position (everyone nearby hears it).
explode: "ENTITY_GENERIC_EXPLODE 1.0 1.0"
# Played to every participant on each of the last counter-tick-from seconds.
tick: "BLOCK_NOTE_BLOCK_HAT 1.0 1.0"
# Played to each winner when the match ends.
win: "UI_TOAST_CHALLENGE_COMPLETE 1.0 1.0"games/spleef.yml
removable-materials is not just "what may be broken" - it is also the restriction burned onto the shovel, because players are in adventure mode and a client refuses to dig a block its item does not declare. That is why an empty list cannot mean "anything" the way it does in TNT Run: an empty restriction is a shovel that breaks nothing. Leave it blank and the map falls back to SNOW_BLOCK with a warning in the log.
Keep leave-item.slot off hotbar slot 0: that is where the shovel goes. If they collide the shovel steps aside to slot 1 and says so in the log.
# ============================================================
# SnMiniGames - Spleef game
# Seeded once by SnLib and NEVER auto-merged: your structure and values
# are kept. The setup commands (/minigames admin spleef ...) write maps
# back into this file.
# ============================================================
# Whether the Spleef game is active. When false it is not registered:
# it will not appear in /minigames list, /minigames join or PlaceholderAPI.
enabled: true
# Display name of the game, shown wherever {game} appears. Supports color
# codes and the full SnLib text pipeline.
display-name: "ec8f2&lSpleef"
# ------------------------------------------------------------
# Queue and round staging (shared framework settings).
# ------------------------------------------------------------
queue:
# Seconds between automatic rounds. 0 disables auto-start (rounds then open
# only via /minigames admin start spleef).
auto-start-interval: 120
# Seconds the queue stays open before the round begins.
countdown: 30
# Minimum queued players for the round to begin; below this at countdown end
# the round is cancelled.
min-players: 2
# Maximum queued players; reaching it starts the round early.
max-players: 12
# Broadcast the "starts in" line every N seconds while the queue counts down.
announce-interval: 10
# Mini-lobby players are teleported to while they wait (world;x;y;z;yaw;pitch).
# Set it in-game with /minigames admin spleef setwaiting <map>.
waiting-spawn: ""
# Seconds a player must wait before rejoining after leaving or losing. 0 = none.
rejoin-cooldown: 15
# ------------------------------------------------------------
# Join gate.
# ------------------------------------------------------------
join:
# Require an empty inventory, armor and hands to join (prevents item smuggling).
require-empty-inventory: true
# ------------------------------------------------------------
# Start countdown (the 3-2-1 GO freeze before the round).
# ------------------------------------------------------------
start-countdown:
# Seconds of the pre-round freeze. 0 skips the freeze.
seconds: 3
# ------------------------------------------------------------
# Leave item (hotbar item that leaves the round on right-click).
# Material and name are framework-level and live in config.yml under
# leave-item; here you only choose whether this game hands it out and where.
# Keep the slot away from 0: that is where the shovel goes.
# ------------------------------------------------------------
leave-item:
# Whether to give the leave item while in the round.
enabled: true
# Hotbar slot (0-8) the leave item occupies.
slot: 8
# ------------------------------------------------------------
# Map rotation across rounds: RANDOM (a random map each round) or
# SEQUENTIAL (maps picked in file order).
# ------------------------------------------------------------
map-rotation: RANDOM
# ------------------------------------------------------------
# The kit and the snowballs (game-level: every map shares them).
# ------------------------------------------------------------
# Digging tool handed to every player at hotbar slot 0. It is unbreakable and
# breaks a floor block in ONE click - no vanilla mining time is involved.
# The tool is automatically restricted to the map's removable-materials, which
# is what lets it dig at all: players are in adventure mode, where a client
# sends no dig packet for a block its item does not declare.
shovel-material: DIAMOND_SHOVEL
# How hard a snowball pushes the player it hits, 0.0 - 2.0. The default is the
# same strength vanilla uses for a melee hit. 0 disables the push (the hurt
# animation still plays). Nobody ever LOSES health in a round: melee does
# nothing at all, and a snowball only shoves.
snowball-knockback: 0.4
# ------------------------------------------------------------
# Maps. Each entry is one Spleef arena, created in-game with
# /minigames admin spleef create <name>.
# Region command (select a cuboid with /minigames admin wand region first):
# /minigames admin spleef setregion <map>
# Standing-position commands (run where you stand):
# /minigames admin spleef setstart|setwaiting|setend <map>
# Also: delete <map>, list, setelimy, setsnowballs, setmeltstart, setmeltrate,
# setwinners, settimelimit.
# Full command list: /minigames admin spleef help
#
# The arena restores itself: every block the round removes is put back when
# the round ends, on /minigames reload and on server shutdown.
# ------------------------------------------------------------
maps:
arena1:
# Arena cuboid (world;minX;minY;minZ;maxX;maxY;maxZ). ONLY blocks inside
# this region can be broken or melted. Set it with the region wand +
# setregion.
region: ""
# Where players are teleported when the round starts (world;x;y;z;yaw;pitch).
# Its world MUST be the region's world, and it must stand over the arena's
# horizontal footprint, or the round is aborted.
start-spawn: ""
# Y below which a player is eliminated.
elimination-y: 60
# Snowballs a SHOVEL break pays out, picked at random between the two.
# Blocks broken by a snowball (or melted) pay nobody: digging is the only
# way ammunition is minted. Set both with setsnowballs <map> <min> <max>.
snowballs-min: 1
snowballs-max: 3
# Anti-camping. Seconds of round before the floor starts melting on its own;
# 0 disables melting entirely, and then the arena is never scanned at round
# start either.
melt-start: 120
# Random floor blocks the melt takes per second once it has started.
melt-rate: 2
# The floor: which blocks the shovel, the snowballs and the melt may take.
# This list is ALSO the shovel's can-destroy restriction, so unlike TNT Run
# it can never be empty - an empty or unrecognised list falls back to
# SNOW_BLOCK. Edit it here and run /minigames reload.
removable-materials:
- SNOW_BLOCK
# Survivors the round ends with (1 = last one standing).
winners: 1
# Maximum round length in seconds; 0 disables the limit.
time-limit: 300
# Where the SURVIVORS are teleported when the round ends. Leave blank to send
# each player back to where they were before joining. Eliminated players are
# restored the instant they fall (there is no spectator hold), so this spot
# only applies to whoever was still standing at the end.
end-teleport: ""
# Rewards by finish position (1 = the winner). Each position is a list of
# action strings run for that finisher, with placeholders {player},
# {position}, {game} and {map}. Rewards do NOT fire for a player who left
# before the round ended (offline finishers are skipped).
# Use CONSOLE/economy actions, not [give]: rewards run while the player is
# still in the round, so the pre-game inventory restore right afterwards
# would wipe any item handed out here.
# With winners > 1 the surviving players are TIED (Spleef has no score to
# rank them by), so their relative positions are stable but not earned.
rewards:
1:
- "[console] eco give {player} 1000"
- "[broadcastmessage] &b{player}&b won Spleef!"
2:
- "[console] eco give {player} 500"
3:
- "[console] eco give {player} 250"
# ------------------------------------------------------------
# Sounds for Spleef events. Format: "SOUND_ID [volume] [pitch]"
# (blank or "none" = silent). The 3-2-1 start countdown sound is
# configured globally in config.yml (queue.countdown-sound).
# ------------------------------------------------------------
sounds:
# Played when a player joins the Spleef queue.
join: "ENTITY_EXPERIENCE_ORB_PICKUP 1.0 1.0"
# Played at a floor block the moment it is broken (shovel or snowball).
break: "BLOCK_SNOW_BREAK 1.0 1.0"
# Played at a player hit by a snowball, next to the hurt animation.
hit: "ENTITY_PLAYER_HURT 1.0 1.0"
# Played to a player the moment they are eliminated.
eliminated: "ENTITY_PLAYER_BIG_FALL 1.0 0.8"
# Played at each block the anti-camping melt takes. Blank by default on
# purpose: it fires every second for melt-rate blocks at once.
melt: ""
# Played to the winner when the round ends.
win: "UI_TOAST_CHALLENGE_COMPLETE 1.0 1.0"games/fastmine.yml
blocks is not just "what the column is made of" - it is also the restriction burned onto the five tools, because players are in adventure mode and a client refuses to dig a block its item does not declare. A map whose palette has no usable entry therefore refuses to start rather than falling back to anything, and says so in the log: unlike Spleef's floor, a silent fallback here would hide the typo behind a race that plays fine with the wrong blocks.
There is no region and no start-spawn: a FastMine arena is generated, not built. shafts is the whole layout, and its length is the map's capacity - the queue fills and starts at that many players however high queue.max-players is set. Keep queue.min-players at or below the shaft count or the round can never start on its own.
Keep leave-item.slot at 8: slots 0-4 are the kit. If they collide the tools shift one slot right rather than overwrite your way out of the round.
# ============================================================
# SnMiniGames - FastMine game
# Seeded once by SnLib and NEVER auto-merged: your structure and values
# are kept. The setup commands (/minigames admin fastmine ...) write maps
# back into this file.
# ============================================================
# Whether the FastMine game is active. When false it is not registered:
# it will not appear in /minigames list, /minigames join or PlaceholderAPI.
enabled: true
# Display name of the game, shown wherever {game} appears. Supports color
# codes and the full SnLib text pipeline.
display-name: "ce05a&lFastMine"
# ------------------------------------------------------------
# Queue and round staging (shared framework settings).
# ------------------------------------------------------------
queue:
# Seconds between automatic rounds. 0 disables auto-start (rounds then open
# only via /minigames admin start fastmine).
auto-start-interval: 120
# Seconds the queue stays open before the round begins.
countdown: 30
# Minimum queued players for the round to begin; below this at countdown end
# the round is cancelled. A map with FEWER SHAFTS than this can never start,
# so the round aborts at once and says so in the console.
min-players: 2
# Maximum queued players. FastMine also has a hard limit of its own: a map
# seats exactly as many players as it has shafts, and the smaller of the two
# wins - so a 4-shaft map fills at 4 and starts there, whatever this says.
max-players: 12
# Broadcast the "starts in" line every N seconds while the queue counts down.
announce-interval: 10
# Mini-lobby players are teleported to while they wait (world;x;y;z;yaw;pitch).
# Set it in-game with /minigames admin fastmine setwaiting <map>.
waiting-spawn: ""
# Seconds a player must wait before rejoining after leaving or losing. 0 = none.
rejoin-cooldown: 15
# ------------------------------------------------------------
# Join gate.
# ------------------------------------------------------------
join:
# Require an empty inventory, armor and hands to join (prevents item smuggling).
require-empty-inventory: true
# ------------------------------------------------------------
# Start countdown (the 3-2-1 GO freeze before the round).
# Players are already sealed in their shafts while it runs, and nobody can
# mine until it reaches GO.
# ------------------------------------------------------------
start-countdown:
# Seconds of the pre-round freeze. 0 skips the freeze.
seconds: 3
# ------------------------------------------------------------
# Leave item (hotbar item that leaves the round on right-click).
# Material and name are framework-level and live in config.yml under
# leave-item; here you only choose whether this game hands it out and where.
# Keep the slot at 8: slots 0-4 are where the five tools go, and the kit
# shifts right to avoid this one.
# ------------------------------------------------------------
leave-item:
# Whether to give the leave item while in the round.
enabled: true
# Hotbar slot (0-8) the leave item occupies.
slot: 8
# ------------------------------------------------------------
# Map rotation across rounds: RANDOM (a random map each round) or
# SEQUENTIAL (maps picked in file order).
# ------------------------------------------------------------
map-rotation: RANDOM
# ------------------------------------------------------------
# The kit (game-level: every map shares it).
# ------------------------------------------------------------
# Tier of the five tools handed out at hotbar slots 0-4: a pickaxe, an axe,
# a shovel, a hoe and a sword, all unbreakable. Mining runs at normal vanilla
# speed, so the tier IS the pace of the race.
# One of: WOODEN, STONE, IRON, GOLDEN, DIAMOND, NETHERITE.
# The tools are automatically restricted to each map's blocks palette, which
# is what lets them dig at all: players are in adventure mode, where a client
# sends no dig packet for a block its item does not declare.
tool-tier: DIAMOND
# Haste level granted for the whole round (1 = Haste I), 0-3. 0 = off, which
# is the default: the race is meant to be won by picking the right tool, not
# by out-hasting the block.
haste-level: 0
# Where each player sees their OWN progress: ACTIONBAR (a line above the
# hotbar) or BOSSBAR (a bar that fills as their column empties). Each player
# only ever sees their own.
counter-display: ACTIONBAR
# ------------------------------------------------------------
# Maps. Each entry is one FastMine arena, created in-game with
# /minigames admin fastmine create <name>.
#
# There is NO region and NO start spawn here, because nothing is built by
# hand: you stand where a shaft belongs and run
# /minigames admin fastmine addshaft <map>
# and the round GENERATES the 3x3 casing, the landing floor and a fresh
# random column at start - then puts every block back exactly as it was when
# the round ends, on /minigames reload and on server shutdown.
#
# The map seats EXACTLY as many players as it has shafts.
# Also: delete <map>, list, removeshaft, shafts, setwaiting, setend,
# setdepth, setcasing, settimelimit.
# Full command list: /minigames admin fastmine help
# ------------------------------------------------------------
maps:
arena1:
# Where each player is sealed in for the race (world;x;y;z;yaw;pitch).
# Add them with addshaft while standing on the spot; keep shafts at least
# 2 blocks apart (addshaft refuses anything closer - at a gap of 1 the
# neighbour's wall would be built through this shaft's column).
shafts: []
# Blocks in each player's column, which is also how deep the shaft is dug.
depth: 15
# The column palette: material -> weight. Each cell of each player's column
# is rolled INDEPENDENTLY from this table, so no two races are the same.
# Weights are plain positive integers and need not add up to anything.
# This list is ALSO the tools' can-destroy restriction, so it can never be
# empty - a map with no usable entry refuses to start. Pick materials the
# kit can actually mine; the defaults below give each of the five tools
# something it is the right answer to.
# Edit it here and run /minigames reload.
blocks:
STONE: 40
OAK_LOG: 20
DIRT: 20
HAY_BLOCK: 10
COBWEB: 10
# The 3x3 shaft wall and the floor the winner lands on. Glass keeps the
# race visible to everyone watching.
casing-material: GLASS
# Maximum round length in seconds; 0 disables the limit. When it runs out
# nobody wins and everyone is ranked by blocks mined.
time-limit: 300
# Where players are teleported when the round ends. Leave blank to send
# each player back to where they were before joining.
end-teleport: ""
# Rewards by finish position (1 = the winner). Each position is a list of
# action strings run for that finisher, with placeholders {player},
# {position}, {game} and {map}. Rewards do NOT fire for a player who left
# before the round ended (offline finishers are skipped).
# Use CONSOLE/economy actions, not [give]: rewards run while the player is
# still in the round, so the pre-game inventory restore right afterwards
# would wipe any item handed out here.
# Positions below the winner are ranked by blocks mined, and a tie goes to
# whoever reached that count first.
rewards:
1:
- "[console] eco give {player} 1000"
- "[broadcastmessage] &a{player}&a won FastMine!"
2:
- "[console] eco give {player} 500"
3:
- "[console] eco give {player} 250"
# ------------------------------------------------------------
# Sounds for FastMine events. Format: "SOUND_ID [volume] [pitch]"
# (blank or "none" = silent). The 3-2-1 start countdown sound is
# configured globally in config.yml (queue.countdown-sound).
# ------------------------------------------------------------
sounds:
# Played when a player joins the FastMine queue.
join: "ENTITY_EXPERIENCE_ORB_PICKUP 1.0 1.0"
# Played at each block a player mines. Blank by default on purpose: vanilla
# already plays the block's own break sound, and a race is a lot of breaks.
break: ""
# Played to the winner when the round ends.
win: "UI_TOAST_CHALLENGE_COMPLETE 1.0 1.0"lang/messages_en.yml
# ============================================================
# SnMiniGames - language file (English)
# Managed by SnLib: new keys merge in on boot, your values are kept.
# Your edits survive updates.
# ============================================================
# Prefix prepended to every single-line message sent via sn.lang().send(...)
prefix: "₢f2&lSnMiniGames &8| &7"
# snlib.* is SnLib's shared command contract (12 keys). 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}
# 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}"
# Only for open-ended numeric arguments (a minimum with no maximum). This plugin
# uses bounded ranges, so it is shipped for fleet consistency, not because it fires.
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&lSnMiniGames &8&m----------"
entry: "₢f2{usage} &7{description}"
footer: "&7Page &f{page}&7/&f{total} &8- ₢f2/{command} help <page>"
# 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:
players-only: "&cThis command can only be used by players."
# Command-tree feedback (the /mg command). Placeholders: {game} display name,
# {id} game id, {map} map id, {player} target name, {state} round-state word,
# {count}/{max} player counts, {reason} force-join failure token. The list.*
# lines are rendered with getList and sent WITHOUT the prefix.
commands:
# Sent when a resolved game id no longer maps to a registered game (defensive).
game-not-found: "&cThere is no game called &e{game}&c."
# Sent when /mg leave is used by a player who is not in a game.
not-in-game: "&cYou are not in a minigame."
list:
# Header printed before the per-game list entries.
header: "&8&m---------&r ₢f2&lMinigames &8&m---------"
# One line per registered game.
entry: "&8- ₢f2{game} &8(&7{state}&8) &7{count}&8/&7{max}"
admin:
start:
# Sent when a round was force-opened.
opened: "&aOpened a {game}&a round."
# Sent when a round for that game is already live.
already-running: "&cA {game}&c round is already running."
# Sent when the round could not be opened (waiting spawn unset or unavailable).
failed: "&cCould not open a {game}&c round; check its waiting spawn."
# Sent when the optional [map] token names no map of that game.
map-not-found: "&cThere is no map called &e{map}&c for {game}&c."
forcestart:
# Sent when the waiting round was force-started, skipping the countdown.
started: "&aForce-started the {game}&a round, skipping the countdown."
# Sent when there is no open round to force-start; points to /minigames admin start.
no-round: "&cThere is no {game}&c round open. Open one first with &f/minigames admin start {id}&c."
# Sent when the round has already left the queue (past WAITING).
already-started: "&cThe {game}&c round has already started."
# Sent when the waiting queue is empty, so forcing would start an empty round.
empty: "&cNobody is queued for the {game}&c round yet."
stop:
# Sent when the live round was stopped and every player restored.
stopped: "&aStopped the {game}&a round and restored every player."
# Sent when there is no live round to stop.
no-round: "&cThere is no {game}&c round running."
forcejoin:
# Sent when the player was forced into the round (the target got the queue message).
joined: "&aForced &f{player}&a into the {game}&a round."
# Sent when the force-join failed; {reason} is the failure token.
failed: "&cCould not force &f{player}&c into {game}&c (&e{reason}&c); they were told why."
# Sent when no game was given and the open round is ambiguous or absent.
specify-game: "&cSpecify a game: there is not exactly one open round."
# Scoped per-game setup help, shown by /minigames admin <game> help. Each game
# hides its own setup subcommands from the root help and exposes only that one
# command, so /minigames help stays readable as more minigames ship.
# Placeholders: {game} display name, {id} game id, {page}, {total}, {usage},
# {description}, {label} the root alias the sender typed (mg or minigames).
# The {usage} and {description} of each entry follow the top-level commands
# block SnLib seeds into this file, so translating a subcommand there also
# translates it here.
game-help:
# Header printed before the entries.
header: "&8&m---------&r ₢f2&l{game} &7setup &8(&7{page}&8/&7{total}&8)"
# One line per setup subcommand.
entry: "&e{usage} &7{description}"
# Footer, sent only when there is more than one page. Use {label} rather than a
# literal root name so the line echoes the alias the sender actually typed.
footer: "&7Page &f{page}&7/&f{total} &8- &7/{label} admin {id} help <page>"
# Sent when the game declares no setup subcommands at all.
empty: "&7{game}&7 has no setup commands."
# Queue and round-lifecycle messages, namespaced under queue.*.
# Placeholders: {game} display name, {id} game id, {time} seconds,
# {count} queued players, {max} max players, {n} countdown number.
queue:
# Broadcast when a round opens. The clickable [JOIN] runs the ROOT command
# (/minigames, never a config-removable alias). Keep the <click>/<hover> tags
# when editing, and keep the plain typed command at the end: it is the only
# way Bedrock (Geyser) players can join - their chat cannot click.
announce: "&7A {game}&7 round is starting! <click:run_command:'/minigames join {id}'><hover:show_text:'&aClick to join'>&a&l[JOIN]</hover></click> &8- &7or type &f/minigames join {id}"
# Broadcast instead of announce when the game id is not click-safe (no button).
announce-plain: "&7A {game}&7 round is starting! Type &f/minigames join {id}&7 to play."
# Broadcast every announce-interval seconds while the queue counts down.
starts-in: "&7{game}&7 starts in &e{time}s &8({count}/{max})"
# Broadcast when a player joins the queue.
player-joined: "&f{player}&7 joined the queue &8({count}/{max})"
# Broadcast when a player leaves the queue or the round.
player-left: "&f{player}&7 left the queue &8({count}/{max})"
# Broadcast when the round leaves the queue and begins.
round-starting: "&a{game}&7 is starting!"
# Broadcast when the round is cancelled for too few players.
round-cancelled: "&cNot enough players - the {game}&c round was cancelled."
# Sent when the queue is already at max players.
full: "&cThat round is already full."
# Sent when there is no open round for the game.
no-round: "&cThere is no {game}&c round open right now."
# Sent when the round has already left the queue.
queue-closed: "&cThe {game}&c round has already started."
# Sent when the player is already in a game.
already-in-game: "&cYou are already in a game."
# Sent when the player is still on rejoin cooldown.
on-cooldown: "&cYou must wait &e{time}s &cbefore rejoining."
# Sent when the player's inventory, armor or hands are not empty.
inventory-not-empty: "&cEmpty your inventory, armor and hands before joining."
# Sent when the player is inside a vehicle.
in-vehicle: "&cLeave your vehicle before joining."
# Sent when the player tries to join while dead.
not-allowed-dead: "&cYou cannot join while dead."
# Sent when the round could not be joined (spawn unset or snapshot failed).
join-error: "&cCould not join the round right now. Please try again."
# 3-2-1 countdown title shown each second (title;subtitle;fadeIn;stay;fadeOut in ticks).
countdown-title: "₢f2&l{n};&7Get ready!;0;20;0"
# GO title shown when the freeze ends (title;subtitle;fadeIn;stay;fadeOut in ticks).
countdown-go: "&a&lGO!;;0;20;10"
# In-game protection feedback (players in a round).
protection:
# Sent when an in-game player runs a command that is not whitelisted.
command-blocked: "&cYou cannot use that command while in a minigame."
# Parkour game feedback (players in a parkour round).
# Placeholders: {checkpoint} 1-based checkpoint number, {total} checkpoint
# count, {position} finish position, {player} finisher name, {game} display name.
parkour:
# Sent when a player reaches a checkpoint.
checkpoint: "&aCheckpoint &f{checkpoint}&7/&f{total}&a reached!"
# Title on reaching a checkpoint (title;subtitle;fadeIn;stay;fadeOut in ticks).
checkpoint-title: "₢f2&lCHECKPOINT;&7{checkpoint}/{total};0;20;10"
# Sent when a player falls and is returned to their last checkpoint.
fell: "&cYou fell - back to your last checkpoint."
# Title on falling (title;subtitle;fadeIn;stay;fadeOut in ticks).
fell-title: "&c&lYOU FELL;&7Back to your checkpoint;0;20;10"
# Sent to a player when they finish the course.
won: "&6You finished the parkour!"
# Title on finishing (title;subtitle;fadeIn;stay;fadeOut in ticks).
win-title: "&6&lFINISHED;&ePosition {position};0;40;10"
# Broadcast when a player finishes the course.
winner-broadcast: "&f{player}&7 finished &6{game}&7 in position &f{position}&7!"
# Sent to a finisher who must wait at the hold spot for the other winners.
finish-hold-wait: "&aYou finished! Waiting for the other players to arrive..."
# Broadcast when the round ends because it hit its time limit.
time-limit: "&c{game}&c round ended - the time limit was reached."
# TNT Run game feedback. Placeholders: {player} the player's name, {remaining}
# survivors left, {game} display name, {map} map id.
tntrun:
# Sent to a player the moment they are eliminated.
eliminated-self: "&cYou fell! You are out of the round."
# Title shown to an eliminated player (title;subtitle;fadeIn;stay;fadeOut in ticks).
eliminated-title: "&c&lELIMINATED;&7Better luck next round;0;40;10"
# Sent to the remaining participants when someone is eliminated.
eliminated: "&f{player}&7 was eliminated &8- &f{remaining}&7 left"
# Title shown to the winner when the round ends.
win-title: "&6&lWINNER;&eLast one standing!;0;40;10"
# Broadcast when the round ends with a winner.
winner-broadcast: "&f{player}&7 won &6{game}&7!"
# Broadcast when the round ends because it hit its time limit.
time-limit: "&c{game}&c round ended - the time limit was reached."
# Map setup feedback for /minigames admin tntrun ... The generic setup lines
# (invalid-map-name, map-exists, map-not-found, cannot-delete-active,
# map-deleted, waiting-set) are shared and live under messages.setup.
# Placeholders: {map} map id, {count} map count, {volume} arena block count,
# {world} arena world, {y}/{ticks}/{winners}/{seconds} the value that was set.
setup:
# Sent when a map is created; names the follow-up commands.
map-created: "&aCreated the map &f{map}&a. Select the arena with &f/minigames admin wand region&a, then &f/minigames admin tntrun setregion {map}&a; where you stand: &fsetstart&a, &fsetwaiting&a, &fsetend&a. Full list: &f/minigames admin tntrun help&a."
# Sent by setregion when the admin has no complete cuboid selected.
no-region-selection: "&cSelect the arena first: &f/minigames admin wand region&c, then left- and right-click the two corners."
# Sent when the arena region is set.
region-set: "&aArena of &f{map}&a set &8(&7{volume}&8 blocks in &7{world}&8)&a."
# Sent when the selection exceeds region-wand.max-volume in config.yml.
region-too-big: "&cThat selection is &e{volume}&c blocks; the arena cap is &e{max}&c. Select a smaller region or raise &fregion-wand.max-volume&c in config.yml."
# Sent when the start spawn is set.
start-set: "&aStart spawn of &f{map}&a set to your location."
# Sent when the end teleport is set.
end-set: "&aEnd teleport of &f{map}&a set to your location."
# Sent when the elimination height is set.
elimy-set: "&aElimination height of &f{map}&a set to &f{y}&a."
# Sent when the block removal delay is set.
delay-set: "&aRemoval delay of &f{map}&a set to &f{ticks}&a ticks."
# Sent when the block removal depth is set.
depth-set: "&aRemoval depth of &f{map}&a set to &f{depth}&a blocks."
# Sent when the survivor count is set.
winners-set: "&aSurvivors of &f{map}&a set to &f{winners}&a."
# Sent when the round time limit is set.
timelimit-set: "&aTime limit of &f{map}&a set to &f{seconds}&a seconds."
# Sent by list when no maps exist yet.
list-empty: "&7No TNT Run maps yet. Create one with &f/minigames admin tntrun create <name>&7."
# List header, printed before the per-map entries.
list-header: "&8&m---------&r &#f25c05&lTNT Run maps &8(&7{count}&8)"
# One line per map.
list-entry: "&8- &#f25c05{map} &8- region &7{region}&8, &7{winners}&8 survivors"
# TNT Tag game feedback. Placeholders: {player} a player's name, {from}/{to} the
# two sides of a tag pass, {remaining} survivors left, {time} seconds on the
# counter, {round} the round number, {tagged}/{alive} tagged and living players,
# {game} display name, {map} map id.
tnttag:
# The round counter, drawn on the bossbar or the actionbar per counter-display
# in games/tnttag.yml. Keep it SHORT: it has to fit a bossbar title.
counter: "&c&lTNT &f{time}s &8| &7Round &f{round} &8| &7IT: &c{tagged}&8/&f{alive}"
# Sent to every participant when a new, shorter round begins.
round-start: "&#f2b705Round &f{round}&#f2b705 - &f{time}s&#f2b705 on the clock!"
# Drawn on the counter surface during the observation break that follows a
# detonation (round-break in games/tnttag.yml). {round} is the round ABOUT to
# start. Keep it SHORT: it has to fit a bossbar title.
break-counter: "&7Next round in &f{time}s &8| &7Round &f{round} &8| &7Alive &f{alive}"
# Sent once to every survivor the moment the observation break starts. The break
# is played out where the round ended; the teleport back to the start spawn is
# what opens the next round, when this countdown reaches zero.
# Placeholders: {time} break length, {round} the round about to start.
break-start: "&7Round over. Round &f{round}&7 begins in &f{time}s&7."
# Sent to a player the moment they receive the tag.
tagged-self: "&cYou are IT! Hit another player to pass the TNT."
# Title shown to a player who just received the tag (title;subtitle;fadeIn;stay;fadeOut in ticks).
tagged-title: "&c&lYOU ARE IT;&7Pass the TNT!;0;30;10"
# Sent to everyone else when a player is tagged at the start of a round.
tagged-other: "&f{player}&7 is now &cIT&7!"
# Sent to everyone else when the tag is handed over because its holder left.
tag-reassigned: "&f{player}&7 picked up the loose TNT and is now &cIT&7!"
# Sent to the player who successfully passed the tag.
tag-passed: "&aYou passed the TNT to &f{player}&a!"
# Sent to the bystanders when the tag changes hands.
tag-moved: "&f{from}&7 passed the TNT to &f{to}&7!"
# Sent to a player the moment they explode.
exploded-self: "&cYou exploded! You are out of the round."
# Title shown to a player who just exploded.
exploded-title: "&c&lBOOM;&7You were holding the TNT;0;40;10"
# Sent to the survivors when someone explodes.
exploded: "&f{player}&7 exploded &8- &f{remaining}&7 left"
# Sent to a player who walked out of the arena and was put back inside.
out-of-arena: "&cStay inside the arena!"
# Title shown to each winner when the match ends.
win-title: "&6&lWINNER;&eLast one standing!;0;40;10"
# Broadcast when the match ends with a winner.
winner-broadcast: "&f{player}&7 won &6{game}&7!"
# Broadcast when the match ends because it hit its time limit.
time-limit: "&c{game}&c round ended - the time limit was reached."
# Map setup feedback for /minigames admin tnttag ... The generic setup lines
# (invalid-map-name, map-exists, map-not-found, cannot-delete-active,
# map-deleted, waiting-set) are shared and live under messages.setup.
# Placeholders: {map} map id, {count} map count, {volume} arena block count,
# {world} arena world, {taggers}/{seconds}/{winners} the value that was set.
setup:
# Sent when a map is created; names the follow-up commands.
map-created: "&aCreated the map &f{map}&a. Select the arena with &f/minigames admin wand region&a, then &f/minigames admin tnttag setregion {map}&a; where you stand: &fsetstart&a, &fsetwaiting&a, &fsetend&a. Full list: &f/minigames admin tnttag help&a."
# Sent by setregion when the admin has no complete cuboid selected.
no-region-selection: "&cSelect the arena first: &f/minigames admin wand region&c, then left- and right-click the two corners."
# Sent when the arena region is set.
region-set: "&aArena of &f{map}&a set &8(&7{volume}&8 blocks in &7{world}&8)&a."
# Sent when the selection exceeds region-wand.max-volume in config.yml.
region-too-big: "&cThat selection is &e{volume}&c blocks; the arena cap is &e{max}&c. Select a smaller region or raise &fregion-wand.max-volume&c in config.yml."
# Sent when the start spawn is set. It MUST be inside the arena region.
start-set: "&aStart spawn of &f{map}&a set to your location."
# Sent when the end teleport is set.
end-set: "&aEnd teleport of &f{map}&a set to your location."
# Sent when the tagger count is set.
taggers-set: "&aTaggers of &f{map}&a set to &f{taggers}&a."
# Sent when the first round's length is set.
roundtime-set: "&aFirst round of &f{map}&a set to &f{seconds}&a seconds."
# Sent when the per-round decrement is set.
decrement-set: "&aRound decrement of &f{map}&a set to &f{seconds}&a seconds."
# Sent when the round-length floor is set.
minroundtime-set: "&aShortest round of &f{map}&a set to &f{seconds}&a seconds."
# Sent when the reassign grace floor is set.
grace-set: "&aReassign grace of &f{map}&a set to &f{seconds}&a seconds."
# Sent when the between-rounds observation break is set.
break-set: "&aObservation break of &f{map}&a set to &f{seconds}&a seconds."
# Sent when the survivor count is set.
winners-set: "&aSurvivors of &f{map}&a set to &f{winners}&a."
# Sent when the match time limit is set.
timelimit-set: "&aTime limit of &f{map}&a set to &f{seconds}&a seconds."
# Sent by list when no maps exist yet.
list-empty: "&7No TNT Tag maps yet. Create one with &f/minigames admin tnttag create <name>&7."
# List header, printed before the per-map entries.
list-header: "&8&m---------&r &#f2b705&lTNT Tag maps &8(&7{count}&8)"
# One line per map.
list-entry: "&8- &#f2b705{map} &8- region &7{region}&8, &7{taggers}&8 IT, &7{winners}&8 survivors"
# Spleef game feedback. Placeholders: {player} the player's name, {remaining}
# survivors left, {game} display name, {map} map id.
spleef:
# Display name of the digging tool handed out at hotbar slot 0. It breaks a
# floor block in one click; the tool is unbreakable and cannot mine anything
# outside the arena.
shovel-name: "&b&lSpleef Shovel"
# Sent once to everyone when the anti-camping melt kicks in (melt-start in
# games/spleef.yml). From that second on, random floor blocks vanish by
# themselves, so standing still stops being an option.
melt-start: "ec8f2The floor is melting! &7Keep moving."
# Sent to a player the moment they are eliminated.
eliminated-self: "&cYou fell! You are out of the round."
# Title shown to an eliminated player (title;subtitle;fadeIn;stay;fadeOut in ticks).
eliminated-title: "&c&lELIMINATED;&7Better luck next round;0;40;10"
# Sent to the remaining participants when someone is eliminated.
eliminated: "&f{player}&7 was eliminated &8- &f{remaining}&7 left"
# Title shown to the winner when the round ends.
win-title: "&6&lWINNER;&eLast one standing!;0;40;10"
# Broadcast when the round ends with a winner.
winner-broadcast: "&f{player}&7 won &6{game}&7!"
# Broadcast when the round ends because it hit its time limit.
time-limit: "&c{game}&c round ended - the time limit was reached."
# Map setup feedback for /minigames admin spleef ... The generic setup lines
# (invalid-map-name, map-exists, map-not-found, cannot-delete-active,
# map-deleted, waiting-set) are shared and live under messages.setup.
# Placeholders: {map} map id, {count} map count, {volume} arena block count,
# {world} arena world, {floor} the map's floor materials,
# {y}/{min}/{max}/{seconds}/{blocks}/{winners} the value that was set.
setup:
# Sent when a map is created; names the follow-up commands.
map-created: "&aCreated the map &f{map}&a. Select the arena with &f/minigames admin wand region&a, then &f/minigames admin spleef setregion {map}&a; where you stand: &fsetstart&a, &fsetwaiting&a, &fsetend&a. Full list: &f/minigames admin spleef help&a."
# Sent by setregion when the admin has no complete cuboid selected.
no-region-selection: "&cSelect the arena first: &f/minigames admin wand region&c, then left- and right-click the two corners."
# Sent when the arena region is set.
region-set: "&aArena of &f{map}&a set &8(&7{volume}&8 blocks in &7{world}&8)&a."
# Sent when the selection exceeds region-wand.max-volume in config.yml.
region-too-big: "&cThat selection is &e{volume}&c blocks; the arena cap is &e{max}&c. Select a smaller region or raise &fregion-wand.max-volume&c in config.yml."
# Sent when the start spawn is set. It must stand OVER the arena region.
start-set: "&aStart spawn of &f{map}&a set to your location."
# Sent when the end teleport is set.
end-set: "&aEnd teleport of &f{map}&a set to your location."
# Sent when the elimination height is set.
elimy-set: "&aElimination height of &f{map}&a set to &f{y}&a."
# Sent when the shovel ammunition payout is set.
snowballs-set: "&aA shovel break on &f{map}&a now pays &f{min}&a-&f{max}&a snowballs."
# Sent when setsnowballs is given a minimum above its maximum.
snowballs-invalid: "&cThe minimum (&e{min}&c) cannot be above the maximum (&e{max}&c)."
# Sent when the melt delay is set.
meltstart-set: "&aFloor of &f{map}&a starts melting after &f{seconds}&a seconds."
# Sent when the melt rate is set.
meltrate-set: "&aMelt rate of &f{map}&a set to &f{blocks}&a blocks per second."
# Sent when the survivor count is set.
winners-set: "&aSurvivors of &f{map}&a set to &f{winners}&a."
# Sent when the round time limit is set.
timelimit-set: "&aTime limit of &f{map}&a set to &f{seconds}&a seconds."
# Sent by list when no maps exist yet.
list-empty: "&7No Spleef maps yet. Create one with &f/minigames admin spleef create <name>&7."
# List header, printed before the per-map entries.
list-header: "&8&m---------&r ec8f2&lSpleef maps &8(&7{count}&8)"
# One line per map.
list-entry: "&8- ec8f2{map} &8- region &7{region}&8, floor &7{floor}&8, &7{winners}&8 survivors"
# Map setup feedback (the /mg admin wand + /mg admin parkour ... commands).
# Placeholders: {map} map id, {x}/{y}/{z}/{world} selected block, {count} map
# count, {waypoints} checkpoint count, {winners} winner count, {index} the new
# checkpoint number.
setup:
# Sent when the setup wand is given (the wand command toggles: given/removed).
wand-given: "&aReceived the setup wand. Left- or right-click a block to select it; run the command again to remove it."
# Sent when the wand command removes the wand the admin already had.
wand-removed: "&aSetup wand removed from your inventory."
# Sent when the region wand is given (/minigames admin wand region toggles it).
# The pos1/pos2/too-big feedback itself is emitted by SnLib (snlib.selection.*).
region-wand-given: "&aReceived the region wand. Left-click for &fpos1&a, right-click for &fpos2&a; run the command again to remove it."
# Sent when the region wand command removes the wand the admin already had.
# It also closes any open selection, so the edge particles stop.
region-wand-removed: "&aRegion wand removed; your selection was cleared."
# Sent when the same command finds no wand to take back but an open selection
# (the wand was dropped or stored): the selection is closed and its particles stop.
region-selection-cleared: "&aSelection cleared; the edge particles are gone."
# Sent when a block is selected with the wand.
block-selected: "&7Selected block &f{x}&7, &f{y}&7, &f{z}&7 in &f{world}&7."
# Sent when a wand-consuming command runs with no block selected yet.
no-selection: "&cSelect a block with the setup wand first."
# Sent when a create map id is not a valid token (letters, digits, - and _ only).
invalid-map-name: "&cInvalid map name &e{map}&c; use letters, digits, - or _ (max 32)."
# Sent when a map is created; names the follow-up commands (wand vs standing).
map-created: "&aCreated the map &f{map}&a. Wand: &fsetstart&a, &faddwaypoint&a, &fsetwin&a; where you stand: &fsetwaiting&a, &fsetend&a, &fsethold&a - all under &f/minigames admin parkour <sub> {map}&a. Full list: &f/minigames admin parkour help&a."
# Sent when create is used with an id that already exists.
map-exists: "&cA map called &e{map}&c already exists."
# Sent when a map is deleted.
map-deleted: "&aDeleted the map &f{map}&a."
# Sent when a command targets a map id that does not exist.
map-not-found: "&cThere is no map called &e{map}&c."
# Sent when trying to delete a map that a live round is currently playing.
cannot-delete-active: "&cThe map &e{map}&c is in a running round; stop it first."
# Sent by list when no maps exist yet.
list-empty: "&7No parkour maps yet. Create one with &f/minigames admin parkour create <name>&7."
# List header, printed before the per-map entries.
list-header: "&8&m---------&r ₢f2&lParkour maps &8(&7{count}&8)"
# One line per map.
list-entry: "&8- ₢f2{map} &8- &7{waypoints}&8 checkpoints, &7{winners}&8 winners"
# Sent when the start spawn is set.
start-set: "&aStart of &f{map}&a set to your wand selection."
# Sent when a checkpoint is added; {index} is the new checkpoint number.
waypoint-added: "&aCheckpoint &f{index}&a added to &f{map}&a."
# Sent when every checkpoint of a map is removed.
waypoints-cleared: "&aRemoved every checkpoint of &f{map}&a."
# Sent when the win block is set.
win-set: "&aWin block of &f{map}&a set to your wand selection."
# Sent when the waiting spawn is set (shared by every parkour map).
waiting-set: "&aWaiting spawn set to your location."
# Sent when the end teleport is set.
end-set: "&aEnd teleport of &f{map}&a set to your location."
# Sent when the finish-hold spot is set.
hold-set: "&aFinish-hold spot of &f{map}&a set to your location."
# Sent when the winner count is set.
winners-set: "&aWinners of &f{map}&a set to &f{winners}&a."