Configuration
On this page(6)
SnKoths ships with the following YAML files. New keys are auto-merged on boot; your edits and comments are preserved.
config.yml
# ============================================================
# SnKoths - 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).
# Sections marked "# sn:extensible" are yours: entries you delete there
# stay deleted.
# ============================================================
# 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 /koth 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 /koth. Re-read on /koth reload.
aliases: [koths]
# ------------------------------------------------------------
# Database. type=sqlite needs nothing else; type=mysql reads host/port/etc.
# ------------------------------------------------------------
database:
# sqlite or mysql
type: sqlite
# MySQL connection (ignored when type is sqlite).
host: localhost
port: 3306
database: snkoths
username: root
password: ""
# ------------------------------------------------------------
# Presentation. gui opens the menu; chat prints the text view.
# ------------------------------------------------------------
presentation:
# Bare /koth: gui opens the koths menu, chat prints the koth list.
main: gui
# ------------------------------------------------------------
# Koth defaults. /koth create copies these values into the new koths/<id>.yml;
# every one of them is editable per koth in that file.
# ------------------------------------------------------------
koth-defaults:
# Seconds a side must hold the zone uncontested to win a CAPTURE koth.
capture-seconds: 120
# Points that win a SCORE koth at once; 0 lets only the maximum duration decide.
score-target: 0
# Seconds before a running koth ends on its own.
max-duration-seconds: 900
# What a contested zone does to the capture timer: PAUSE freezes it, RESET zeroes the progress of the controller.
contested: PAUSE
# The controller loses its progress after leaving the zone.
reset-on-leave: true
# Seconds a controller may stay out of the zone before reset-on-leave applies.
grace-seconds: 3
# Material shown for the koth in the koths menu.
icon: BEACON
# ------------------------------------------------------------
# Selection wand. /koth wand hands it out; left click marks corner 1,
# right click marks corner 2, /koth create and /koth setzone take the box as the zone.
# ------------------------------------------------------------
selection-wand:
# Wand item; supports the full SnItem appearance schema.
item:
# Material of the wand.
material: BLAZE_ROD
# Name shown on the wand.
display-name: "₢f2&lKoth Wand"
# Lore lines of the wand.
lore:
- "&7Left click: &fcorner 1"
- "&7Right click: &fcorner 2"
# Enchant glint without an enchantment.
glow: true
# Permission required to USE the wand; empty lets anyone holding it select.
permission: snkoths.admin.wand
particle:
# Edge particle; any Particle name, REDSTONE is an alias of DUST.
type: DUST
# DUST only: "R, G, B" or "#RRGGBB".
color: "131, 84, 242"
# DUST only: dust size, clamped 0.1 - 4.0.
size: 1.2
# Distance between edge particles in blocks; minimum 0.1.
step: 0.5
# Edge refresh period in ticks; minimum 1.
interval-ticks: 5
# Max distance in blocks from the viewer to the box for the edges to be drawn.
render-distance: 64
# OWNER_ONLY shows the edges to the selecting admin, WORLD to everyone nearby.
visibility: OWNER_ONLY
# Max particle points per refresh per viewer; a bigger box renders sparser, never heavier.
particle-budget: 2000
# Above this block volume only the 8 corners are marked instead of the full edges.
max-render-volume: 250000
# Max selectable volume in blocks; 0 is unlimited.
max-volume: 1000000
# Selection timeout in ticks; 0 never expires.
timeout-ticks: 0
# Send no selection messages at all.
silent: false
# ------------------------------------------------------------
# Team mode. Clans capture as a single side through the optional SnClans plugin.
# ------------------------------------------------------------
team-mode:
# none makes every player their own side; snclans groups players by clan.
provider: none
# WINNER runs the team reward commands once for the representative of the winning clan; ALL_ONLINE once per online clan member.
rewards: WINNER
# Allied clans share the zone without contesting each other.
allies-share-zone: true
# ------------------------------------------------------------
# Eligibility. Who is allowed to capture and contest a zone.
# ------------------------------------------------------------
eligibility:
# Game modes that can neither capture nor contest a zone.
ignored-gamemodes: [CREATIVE, SPECTATOR]
# Vanished players can neither capture nor contest a zone.
ignore-vanished: true
# ------------------------------------------------------------
# Display range. Who receives the broadcasts, titles, boss bar and hologram of a running koth.
# ------------------------------------------------------------
display-range:
# SERVER reaches every online player, WORLD the players of the zone's world, RADIUS the players of that world within radius blocks of the zone center.
mode: WORLD
# Blocks around the zone center; only read by RADIUS.
radius: 200
# ------------------------------------------------------------
# Discord. One webhook embed per koth event; the texts live in
# lang/messages_en.yml under discord.
# ------------------------------------------------------------
discord:
# Master switch of every Discord event.
enabled: false
# Discord webhook URL the embeds are posted to; empty sends nothing.
webhook-url: ""
# Name the embeds are posted under.
username: "SnKoths"
# Avatar image URL; empty keeps the webhook's own.
avatar-url: ""
# Embed color (#RRGGBB).
color: "#8354f2"
# Posts an embed for each event that is true.
events:
# A koth starts.
start: true
# A side starts capturing the zone.
capture-start: true
# The controlling side loses the zone.
capture-lost: false
# A koth ends with a winner.
win: true
# A koth ends with no winner.
no-winner: true
# An administrator stops a koth.
stopped: false
# ------------------------------------------------------------
# Broadcasts. Chat announcements of a running koth; the texts live in
# lang/messages_en.yml under messages.koth.
# ------------------------------------------------------------
broadcasts:
# Seconds between two status broadcasts of a running koth; 0 disables them.
status-every-seconds: 60
# ------------------------------------------------------------
# Boss bar. One bar per running koth for the players in range.
# ------------------------------------------------------------
bossbar:
# Show the boss bar.
enabled: true
# Bar color: PINK, BLUE, RED, GREEN, YELLOW, PURPLE or WHITE.
color: PURPLE
# Bar style: PROGRESS, NOTCHED_6, NOTCHED_10, NOTCHED_12 or NOTCHED_20.
overlay: PROGRESS
# ------------------------------------------------------------
# Hologram. Floating text above the zone of a running koth.
# ------------------------------------------------------------
hologram:
# Show the hologram.
enabled: true
# Blocks between the top of the zone center and the hologram.
height-offset: 2.5
# ------------------------------------------------------------
# Particles. Outline of the zone edges while a koth runs.
# ------------------------------------------------------------
particles:
# Draw the outline.
enabled: true
# Edge particle; any Particle name, REDSTONE is an alias of DUST.
particle: DUST
# DUST only: "R, G, B" or "#RRGGBB".
dust-color: "131, 84, 242"
# Seconds between two draws of the outline.
every-seconds: 2
# Distance between edge particles in blocks.
step: 1.0
# Max distance in blocks from a player to the zone for the outline to be drawn.
view-distance: 64
# DUST only: dust size, clamped 0.1 - 4.0.
dust-size: 1.2
# Max particle points drawn per player per refresh; a bigger zone renders sparser, never heavier.
budget: 1000
# ------------------------------------------------------------
# Sounds. Namespaced sound keys played to the players in range;
# an empty string disables that sound.
# ------------------------------------------------------------
sounds:
# A koth starts.
start: "entity.ender_dragon.growl"
# A side starts capturing the zone.
capture-start: "block.note_block.pling"
# The controlling side loses the zone.
capture-lost: "block.note_block.bass"
# A koth ends with a winner.
win: "ui.toast.challenge_complete"
# Volume of every sound.
volume: 1.0
# Pitch of every sound.
pitch: 1.0
# ------------------------------------------------------------
# Titles. Screen titles on the start and the end of a koth.
# ------------------------------------------------------------
titles:
# Show the titles.
enabled: true
# ------------------------------------------------------------
# Leaderboard. All-time rankings shown by /koth top and exposed as placeholders.
# ------------------------------------------------------------
leaderboard:
# Rows kept in each ranking.
size: 10
# Seconds between two refreshes of the cached rankings.
refresh-seconds: 180
schedules.yml
# ============================================================
# SnKoths - schedules
# Seeded once and never touched again: this file is yours to edit.
# Apply changes with /koth reload.
# ============================================================
# Automatic koth starts, one entry per schedule. The key is the schedule id
# (lowercase letters, digits and hyphens, up to 32 characters).
#
# Entry keys:
# enabled true to run the schedule, false to keep it parked. Default true.
# cron When the schedule fires, five numeric fields:
# minute hour day-of-month month day-of-week
# Supported per field: * (any), lists 1,15, ranges 1-5, steps */10
# and 10-30/5. Day of week is 0-7, where both 0 and 7 mean Sunday.
# Month and weekday NAMES such as SAT or MON are not supported: use
# numbers (6 = Saturday). The shortcuts "daily 18:30" and "hourly :30"
# also work. Always wrap the value in quotes: an unquoted */10 or
# a leading * is a YAML syntax error. Times follow the server's time zone.
# koths Ids of the koths the schedule may start (the file names under koths/).
# pick Which of the listed koths start when the schedule fires:
# ALL every listed koth starts.
# RANDOM one random listed koth that is not already running.
# SEQUENTIAL the next listed koth in rotation, one per firing.
# Default ALL.
# min-players Players that must be online for the schedule to fire. With fewer the
# start is skipped. Default 0.
# broadcast-skip true to announce a skipped start to the whole server (the text is
# messages.schedule.skipped in the lang file). Default false.
#
# Example, kept as a comment so nothing fires until you copy it out of the comment:
#
# schedules:
# evening:
# enabled: true
# cron: "0 18 * * *"
# koths:
# - spawn
# - arena
# pick: RANDOM
# min-players: 5
# broadcast-skip: true
#
# weekend:
# enabled: true
# cron: "30 20 * * 6,0"
# koths:
# - spawn
# - arena
# pick: SEQUENTIAL
# min-players: 0
# broadcast-skip: false
# The schedules of this server. Empty by default.
schedules: {}
items.yml
# ============================================================
# SnKoths - items
# Managed by SnLib: new keys merge in on boot, your values are kept.
# ============================================================
# Starter item handed out by /koth givestarter <id> <player> [amount]; right click it to start that koth.
# The id below (starter) is referenced from Java. Do NOT rename it: this file is merged from the
# jar on every boot, so a renamed section is not replaced, the default one is re-inserted beside it.
# Placeholders in the name and the lore: {koth} display name, {id} koth id, {mode} koth mode.
starter:
# Material of the item.
material: NETHER_STAR
# Name shown on the item.
display-name: "₢f2&lKoth Starter &8- &f{koth}"
# Lore lines of the item.
lore:
- "&7Starts the koth &f{koth}"
- "&7Mode: {mode}"
- ""
- "&eRight click to start it."
# Enchant glint without an enchantment.
glow: true
# Blocks placing the item as a block; only matters when material is set to a block material.
placeable: false
guis/koths.yml
# ============================================================
# SnKoths - koths menu
# Opened by /koth (when presentation.main is gui). Lists every registered koth.
# Managed by SnLib: new keys merge in on boot, your edits are kept.
# The entry template is filled by the plugin; keep its placeholders as shipped:
# {name} {id} {mode} {status} {capturer} {time_left} {next} {rewards}
# ============================================================
title: "₢f2&lKoths"
# Ticks between refreshes of the open menu, so the time left and the capturer stay live. 0 freezes it.
update-interval: 20
# Only plain left, right and shift clicks run the buttons; number keys and drops are ignored.
strict-clicks: true
# The koths fill every "p" cell of the layout, page by page.
pagination: true
paged-key: p
# p koths, < > pages, x close, f filler.
layout:
- "fffffffff"
- "fpppppppf"
- "fpppppppf"
- "fpppppppf"
- "fpppppppf"
- "<fffxfff>"
# Buttons of the layout. Add, edit or remove entries freely.
# sn:extensible
items:
filler:
material: GRAY_STAINED_GLASS_PANE
display-name: " "
key: f
close:
material: BARRIER
display-name: "&cClose"
key: x
click-actions:
- "[sound] minecraft:ui.button.click"
- "[close]"
previous-page:
material: ARROW
display-name: "₢f2Previous Page"
key: "<"
click-actions:
- "[previous-page]"
- "[sound] minecraft:ui.button.click"
nav-disabled:
material: GRAY_STAINED_GLASS_PANE
display-name: "&7No previous page"
lore:
- "&8You are on the first page"
next-page:
material: ARROW
display-name: "₢f2Next Page"
key: ">"
click-actions:
- "[next-page]"
- "[sound] minecraft:ui.button.click"
nav-disabled:
material: GRAY_STAINED_GLASS_PANE
display-name: "&7No next page"
lore:
- "&8You are on the last page"
templates:
# One koth. The icon is the koth's own icon (set in its file); the material below only
# applies if that icon cannot be used. {rewards} is the koth's rewards-description lines.
entry:
material: BEACON
display-name: "₢f2&l{name}"
lore:
- "&8{id}"
- ""
- "&7Mode: {mode}"
- "&7Status: {status}"
- "&7Capturer: &f{capturer}"
- "&7Time left: &f{time_left}"
- "&7Next start: &f{next}"
- ""
- "{rewards}"
click-actions:
- "[sound] minecraft:ui.button.click"
# Shown in the middle of the list while no koth is registered.
empty:
material: BARRIER
display-name: "&cNo koths yet"
slots: [22]
lore:
- "&7No koth has been created on this server."
lang/messages_en.yml
# ============================================================
# SnKoths - language file (English)
# Managed by SnLib: new keys merge in on boot, your values are kept.
# Restyle any line freely; your edits survive updates.
# ============================================================
# Prefix prepended to every single-line message sent via sn.lang().send(...)
prefix: "₢f2&lSnKoths &8| &7"
# snlib.* is SnLib's shared command contract (14 keys; the two help.group-*
# keys exist since SnLib 1.36.0). 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}
# {group} {path} 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}"
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&l{plugin} &8&m----------"
# Branded no-separator form. SnLib's neutral default is "&e{usage} &7{description}".
entry: "₢f2{usage} &7{description}"
footer: "&7Page &f{page}&7/&f{total} &8- ₢f2/{command} help <page>"
# Own help of a groupHelp() command group (/<cmd> admin <module> help).
group-header: "&8&m----------&r ₢f2&l{group} &8&m----------"
group-footer: "&7Page &f{page}&7/&f{total} &8- ₢f2{path} help <page>"
selection:
pos1-set: "&aPos1 set: &e{x}, {y}, {z} &7({world})"
pos2-set: "&aPos2 set: &e{x}, {y}, {z} &7({world})"
different-worlds: "&cBoth positions must be in the same world."
too-big: "&cSelection too big: &e{volume} &7(max {max})"
no-permission: "&cYou cannot use this wand."
timeout: "&7Selection expired."
# Your own 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:
# Feedback of the /koth subcommands. Placeholders: {label} command label the sender typed,
# {id} koth id, {koth} koth display name, {mode} koth mode, {size} blocks of the zone,
# {count} stopped koths, {player} target player, {world} world of a zone.
command:
# A command that needs a position or a selection is run from the console.
player-only: "&cThis command can only be used by a player."
# A koth id the registry does not know.
unknown-koth: "&cNo koth with the id &f{id}&c exists."
# /koth wand handed out the selection wand.
wand-given: "&7Selection wand received. Left click marks corner 1, right click marks corner 2. Then run ₢f2/{label} create <id> <capture|score>&7."
# /koth create or /koth setzone without both corners marked.
no-selection: "&cMark both corners with the wand first. Run &f/{label} wand &cto get it."
# /koth create wrote the koth file.
create-created: "&7Koth ₢f2{id} &7created ({mode}&7, &f{size} &7blocks). Edit &fkoths/{id}.yml &7to tune it, then run &f/{label} reload&7."
# /koth create refused an id that is not 1 to 32 lowercase letters, digits or hyphens.
create-invalid-id: "&c{id} &7is not a valid id. Use 1 to 32 lowercase letters, digits or hyphens."
# /koth create refused a reserved id. {reserved} lists them.
create-reserved-id: "&c{id} &7is reserved. Reserved ids: &f{reserved}&7."
# /koth create refused an id that is already taken.
create-exists: "&cA koth with the id &f{id}&c already exists."
# /koth setzone moved the zone of an idle koth.
setzone-done: "&7Zone of ₢f2{id} &7moved to your selection (&f{size} &7blocks)."
# /koth setzone moved the zone of a running koth.
setzone-done-running: "&7Zone of ₢f2{id} &7moved to your selection (&f{size} &7blocks). The running koth keeps its old zone until you run &f/{label} reload&7."
# /koth setzone could not rewrite the koth file.
setzone-failed: "&cCould not move the zone of &f{id}&c: its file is missing or unreadable. See the console."
# /koth delete removed the koth, stopping it first when it ran.
delete-done: "&7Koth ₢f2{id} &7deleted."
# /koth start started the koth.
start-done: "&7Koth ₢f2{koth} &7started."
# /koth start found the koth already running.
start-already-active: "&f{koth} &cis already running."
# /koth start found the world of the zone unloaded.
start-invalid-zone: "&f{koth} &ccannot start: the world of its zone is not loaded."
# /koth stop ended a running koth with no winner.
stop-done: "&7Koth ₢f2{koth} &7stopped."
# /koth stop named a koth that is not running.
stop-not-running: "&f{koth} &cis not running."
# /koth stop all ended {count} running koths.
stop-all-done: "&7Stopped &f{count} &7running koth(s)."
# /koth stop all found nothing running.
stop-all-none: "&cNo koth is running."
# /koth tp teleported the sender above the zone.
tp-done: "&7Teleported to ₢f2{koth}&7."
# /koth tp was refused by the server.
tp-failed: "&cThe teleport to &f{koth} &cfailed."
# /koth tp found the world of the zone unloaded.
tp-no-world: "&cThe world of &f{koth} &c(&f{world}&c) is not loaded."
# /koth resetstats deleted the stats of {player}.
resetstats-done: "&7Stats of ₢f2{player} &7reset."
# /koth resetstats found no stats for {player}.
resetstats-none: "&f{player} &7had no stats to reset."
# /koth resetstats failed on the database.
resetstats-failed: "&cCould not reset the stats of &f{player}&c. See the console."
# Announcements of the schedule manager.
schedule:
# Broadcast when a schedule fires with fewer players online than its min-players and its
# broadcast-skip is on. {schedule} is the schedule id, {koths} the listed koth ids,
# {online} the players online, {required} the players needed.
skipped: "&7The scheduled koth start (₢f2{koths}&7) was skipped: only &f{online} &7of &f{required} &7required players are online."
# Chat announcements of a running koth, sent to every player in range (config.yml display-range).
# An empty value silences one announcement. Placeholders in every line: {koth} display name,
# {id} koth id, {mode} koth mode, {capturer} capturing team or player (the state word of
# status.no-capturer when nobody holds the zone), {player} player of the capturing side, {team}
# team of the capturing side, {time_left} time until the koth is won (the time before the
# koth ends in SCORE mode), {remaining} time before the koth ends, {elapsed} time the koth has
# run, {score} points of the capturing side, {x} {y} {z} {world} center of the zone.
koth:
# A koth starts.
start: "&7The ₢f2{koth} &7koth has started at &f{x}, {y}, {z} &7in &f{world}&7."
# A side starts capturing the zone.
capture-start: "₢f2{capturer} &7started capturing &f{koth}&7."
# The controlling side loses the zone.
capture-lost: "₢f2{capturer} &7lost control of &f{koth}&7."
# Two or more sides share the zone and nobody can progress.
contested: "&f{koth} &7is &ccontested&7. Nobody progresses until the zone is clear."
# Reminder sent every broadcasts.status-every-seconds seconds while the koth runs.
status: "&f{koth} &8| &7Holder: ₢f2{capturer} &8| &7Time left: &e{time_left}"
# A CAPTURE koth ends with a winner.
win: "₢f2{capturer} &7captured &f{koth}&7."
# A SCORE koth ends with a winner.
win-score: "₢f2{capturer} &7won &f{koth} &7with &e{score} &7points."
# A koth reaches its maximum duration with no winner.
no-winner: "&f{koth} &7ended with no winner."
# An administrator stops a koth.
stopped: "&f{koth} &7was stopped by an administrator."
# Feedback of the starter items. Placeholders: {koth} koth display name, {amount} items,
# {player} receiving player.
starter:
# /koth givestarter confirmation sent to the sender.
given: "&7Gave &f{amount} &7starter item(s) of ₢f2{koth} &7to &f{player}&7."
# Sent to the player who received starter items.
received: "&7You received &f{amount} &7starter item(s) of ₢f2{koth}&7. Right click one to start it."
# A starter item started its koth.
started: "&7You started ₢f2{koth}&7."
# A starter item was used while its koth was already running; the item is handed back.
already-active: "&f{koth} &cis already running. Your starter item was not used."
# A starter item belongs to a koth that was deleted; the item is handed back.
unknown-koth: "&cThat starter item belongs to a koth that no longer exists. It was not used."
# The world of the zone is not loaded; the item is handed back.
invalid-zone: "&f{koth} &ccannot start: the world of its zone is not loaded. Your starter item was not used."
# items.yml has no starter section, so nothing can be handed out.
unavailable: "&cStarter items are unavailable: items.yml has no starter section."
# Chat views: the koth list, the all-time top and the schedules.
lists:
# Header of the koth list printed by a bare /koth in chat mode and for the console.
koths-header: "[noprefix]&8&m----------&r ₢f2&lKoths &8&m----------"
# Shown instead of the koth list when no koth exists.
koths-empty: "[noprefix]&7No koths exist yet."
# Row of a running koth. {koth} display name, {id} koth id, {mode} koth mode, {status} state word,
# {capturer} capturing team or player, {time_left} time until the koth is won.
koths-row-active: "[noprefix] &8- &f{koth} &8[{mode}&8] {status} &8| &7Holder: &f{capturer} &8| &7Time left: &e{time_left}"
# Row of an idle koth. {koth}, {id}, {mode} and {status} as above, {next} time until its next scheduled start.
koths-row-idle: "[noprefix] &8- &f{koth} &8[{mode}&8] {status} &8| &7Next start: &e{next}"
# Header of /koth top.
top-header: "[noprefix]&8&m----------&r ₢f2&lTop players &8&m----------"
# Shown instead of the ranking when nobody has won a koth yet.
top-empty: "[noprefix]&7Nobody has won a koth yet."
# Row of /koth top. {rank} position, {player} player name, {wins} koths won.
top-row: "[noprefix] &8#{rank} &f{player} &8- &e{wins} &7win(s)"
# Header of /koth schedules.
schedules-header: "[noprefix]&8&m----------&r ₢f2&lSchedules &8&m----------"
# Shown instead of the schedule list when schedules.yml defines none.
schedules-empty: "[noprefix]&7No schedules are defined."
# Row of /koth schedules. {id} schedule id, {enabled} yes or no word, {cron} cron expression,
# {koths} listed koth ids, {pick} ALL, RANDOM or SEQUENTIAL, {min_players} players required online,
# {next} time until the next run.
schedules-row: "[noprefix] &8- &f{id} &8| &7Enabled: {enabled} &8| &7Cron: &f{cron} &8| &7Koths: &f{koths} &8| &7Pick: &f{pick} &8| &7Min players: &f{min_players} &8| &7Next: &e{next}"
# Short state words. Each is substituted into a {status}, {mode}, {capturer} or {team}
# slot of the messages above, of the menu under guis/ and of the PlaceholderAPI output,
# so a restyle here applies everywhere at once.
status:
# A koth that is running.
active: "&aActive"
# A koth that is not running.
inactive: "&7Inactive"
# A zone that two or more non-allied sides share.
contested: "&cContested"
# A zone a side is currently capturing.
capturing: "&eCapturing"
# Shown where nobody controls the zone. Color codes are stripped on read, the value
# stands in for a name.
no-capturer: "Nobody"
# Shown where the capturer has no team. Color codes are stripped on read, the value
# stands in for a name.
no-team: "No team"
# Shown as the next start of a koth that no schedule will ever start.
never: "&7Never"
# Name of the CAPTURE mode.
mode-capture: "&bCapture"
# Name of the SCORE mode.
mode-score: "&6Score"
# Affirmative word of a yes/no value. The key is quoted because a bare yes is a YAML boolean.
"yes": "&aYes"
# Negative word of a yes/no value. The key is quoted because a bare no is a YAML boolean.
"no": "&cNo"
# Formatting fragments. Spliced into a message, a menu line or a placeholder value,
# never sent on their own, which is why they live out here rather than under messages.
format:
time:
# Hours part of a duration. {value} is the hour count padded to two digits.
hours: "{value}h"
# Minutes part of a duration. {value} is the minute count padded to two digits.
minutes: "{value}m"
# Seconds part of a duration. {value} is the second count padded to two digits.
seconds: "{value}s"
# Placed between the parts of a duration.
separator: " "
# Shown instead of the parts when no time is left.
zero: "00s"
# Texts of the boss bar, the action bar, the titles and the hologram of a running koth.
display:
# Boss bar title of a running koth, one line per state: idle (nobody holds the zone), capturing
# (a side holds a CAPTURE zone), scoring (a side holds a SCORE zone), contested. Refreshed every
# second. PlaceholderAPI tokens are not resolved in a boss bar. Placeholders: {koth} {id} {mode}
# {capturer} {player} {team} {time_left} {remaining} {elapsed} {score} {x} {y} {z} {world}, as
# described under messages.koth.
bossbar:
# Nobody holds the zone.
idle: "₢f2&l{koth} &8| &7Zone is free &8| &e{remaining}"
# A side holds the zone of a CAPTURE koth.
capturing: "₢f2&l{koth} &8| &7Capturing: &f{capturer} &8| &e{time_left}"
# A side holds the zone of a SCORE koth.
scoring: "₢f2&l{koth} &8| &7Leading: &f{capturer} &e{score} pts &8| &e{remaining}"
# Two or more sides share the zone.
contested: "₢f2&l{koth} &8| &cContested &8| &7Holder: &f{capturer}"
# Action bar shown every second to the players standing inside the zone; same states and
# placeholders as the boss bar. An empty value shows nothing in that state.
actionbar:
# Nobody holds the zone.
idle: "&7Nobody holds &f{koth}&7. Step in to capture it."
# A side holds the zone of a CAPTURE koth.
capturing: "&7Capturing &f{koth}&7: &f{capturer} &8| &e{time_left}"
# A side holds the zone of a SCORE koth.
scoring: "&7Leading &f{koth}&7: &f{capturer} &e{score} pts &8| &e{remaining}"
# Two or more sides share the zone.
contested: "&cContested! &7Clear the zone of other players."
# Screen titles, shown when config.yml titles.enabled is true. The value is
# title;subtitle;fadeIn;stay;fadeOut with the times in ticks; the last three parts are optional.
title:
# A koth starts.
start: "₢f2&l{koth};&7The koth has started;10;60;20"
# A koth ends with a winner.
win: "₢f2&l{capturer};&7captured {koth};10;80;20"
# Hologram above the zone, one value per state, as the boss bar. Write \n between two lines.
# PlaceholderAPI tokens are resolved server-side, without a player. An empty value shows an
# empty hologram in that state.
hologram:
# Nobody holds the zone.
idle: "₢f2&l{koth}\n&7Zone is free\n&e{remaining}"
# A side holds the zone of a CAPTURE koth.
capturing: "₢f2&l{koth}\n&7Capturing: &f{capturer}\n&e{time_left}"
# A side holds the zone of a SCORE koth.
scoring: "₢f2&l{koth}\n&7Leading: &f{capturer} &e{score} pts\n&e{remaining}"
# Two or more sides share the zone.
contested: "₢f2&l{koth}\n&cContested\n&7Holder: &f{capturer}"
# Texts of the Discord webhook embeds.
discord:
# One title and description per event of config.yml discord.events. Color codes are removed
# before posting; Discord markdown such as **bold** is kept. An event whose title and
# description are both empty posts nothing. Placeholders in every text: {koth} display name,
# {id} koth id, {mode} koth mode, {capturer} capturing team or player, {player} player of the
# capturing side, {team} team of the capturing side, {duration} time the koth ran,
# {max_duration} longest time the koth may run.
# Footer of every embed; empty shows none.
footer: "SnKoths"
# A koth starts.
start:
title: "{koth} has started"
description: "Mode: **{mode}**. It ends in **{max_duration}** at the latest."
# A side starts capturing the zone.
capture-start:
title: "{koth} is being captured"
description: "**{capturer}** started capturing the zone."
# The controlling side loses the zone.
capture-lost:
title: "{koth} capture lost"
description: "**{capturer}** lost control of the zone."
# A koth ends with a winner.
win:
title: "{koth} was captured"
description: "**{capturer}** won the koth after **{duration}**."
# A koth ends with no winner.
no-winner:
title: "{koth} has ended"
description: "Nobody won the koth after **{duration}**."
# An administrator stops a koth.
stopped:
title: "{koth} was stopped"
description: "The koth was stopped after **{duration}**."
koths/_example.yml
# ============================================================
# SnKoths - koth definition template
# Files whose name starts with an underscore are never loaded as a koth.
# Copy this file to koths/<id>.yml and edit the copy, or let
# /koth create <id> <capture|score> write the file for you.
# The id is the file name: 1 to 32 characters of a-z, 0-9 and hyphen.
# The ids next, active, wins, top, teamtop, schedule and all are reserved.
# Apply edits to a koth file with /koth reload.
# ============================================================
# Name shown to players in messages and the koths menu; color codes allowed. Defaults to the id.
display-name: "₢f2&lCastle"
# How the koth is won. CAPTURE: a side must hold the zone alone for capture-seconds.
# SCORE: the side holding the zone alone earns one point per second.
mode: CAPTURE
# Capture zone as world;minX;minY;minZ;maxX;maxY;maxZ. /koth setzone <id> rewrites it from the wand selection.
zone: "world;100;60;100;110;70;110"
# CAPTURE: seconds a side must hold the zone uncontested to win.
capture-seconds: 120
# SCORE: points that win at once; 0 lets only max-duration-seconds decide.
score-target: 0
# Seconds before the koth ends on its own.
max-duration-seconds: 900
# What a contested zone (two or more non-allied sides inside) does to the capture progress.
# PAUSE freezes it, RESET zeroes the progress of the controller.
contested: PAUSE
# The controller loses its progress after leaving the zone.
reset-on-leave: true
# Seconds the controller may stay out of the zone before reset-on-leave applies.
grace-seconds: 3
# Material shown for the koth in the koths menu.
icon: BEACON
# Reward lines shown in the koths menu. Text only: nothing in this list is run.
rewards-description:
- "&7Winner: &f16 diamonds"
- "&7Everyone who took part: &f1 emerald"
# Rewards are console commands, run once the koth ends with a winner. A leading slash is optional.
# Placeholders available in every command below:
# {player} name of the player who receives the reward
# {uuid} UUID of that player
# {koth} id of the koth
# {koth_display} display name of the koth
# {team} name of the winning team, empty when the winner has no team
# {score} points scored by the receiver's side in SCORE mode
# {place} ranking place of the receiver in SCORE mode, 1 for the winner
rewards:
# Commands run for the winner.
win:
- "give {player} diamond 16"
- "say {player} captured {koth_display}"
# SCORE only: commands per ranking place, keyed by the place number. Remove the places you do not use.
placements:
1:
- "give {player} diamond 8"
2:
- "give {player} diamond 4"
3:
- "give {player} diamond 2"
participation:
# Seconds in the zone a player needs to receive the participation commands.
min-seconds: 30
# Commands run for every player who reached min-seconds.
commands:
- "give {player} emerald 1"