events.yml¶
Capture events: KOTHs, Citadels (a zone to hold inside a claimed Citadel with its restrictions), Kill the King, Conquest, DTC, Last Break, Slide, their schedules and rewards, and the zone holograms.
How it plays: read the guide
Every example on this page is taken from the shipped events.yml. Changes apply with /hcf reload. Event ids are shared by every kind — KOTH, Citadel, Kill the King, Conquest, DTC, Last Break, Slide, Totem — and must be unique across the file. Any event with land may name its server team in a claim key: /events delete releases that team's land with the event. It may also say disable-abilities: never, during-event or always: when partner items are refused on its land, overriding disabled-in.event-territory in abilities.yml (absent: that setting decides).
Every event can be set up in game
/events create, claim, setzone, delzone, setblock and delete write into the sections below for you, whatever the kind of event — the only commands in the plugin that ever rewrite a configuration file. See the guide.
The shipped events are examples
Their zones sit at made-up coordinates and none has a schedule: they run only when staff start them (/events start <id>). Move them onto your map, then give them times.
General settings¶
enabled: true
# How often the server samples who is standing in a running zone. 1 second is
# the natural value: capture countdowns are displayed in seconds, so sampling
# less often would make the announced time drift from what players see.
# Raise it only if you have a measured reason to.
tick-seconds: 1
# Time zone the "schedule" times below are read in.
# "system" follows the host clock. Prefer naming a zone explicitly (for example
# "Europe/Paris") so moving the server to another host does not silently shift
# every event by a few hours.
time-zone: "system"
# Broadcast when a zone becomes contested. Announced only when the state
# changes, never every tick, so a long brawl produces one message and not one
# per second.
announce-contests: true
# Whether a player with no team freezes a capture by standing in the zone.
# true - they are everybody's enemy and block the capture (usual HCF reading)
# false - teams can capture around them
# A teamless player can never HOLD a zone either way: capturing is a team act.
teamless-players-contest: true
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
Every event |
tick-seconds |
1 |
How often the zones are sampled; 1 matches the countdowns |
time-zone |
system |
The zone schedule times are read in. Write yours: "Europe/Paris" |
announce-contests |
true |
Say when a zone becomes contested, once per change |
teamless-players-contest |
true |
Whether a player with no team freezes a capture |
Weekly schedule¶
Which event starts at what time on which day, every week — see the guide. /schedule add|remove write the days for you.
# The weekly schedule: which event starts at what time on which day, every week -
# listed for everybody with /schedule, and started by the plugin itself exactly
# as /events start would. It sits alongside each event's own "schedule" (daily
# times), which /schedule lists too.
#
# Each day holds "HH:mm <event id>" entries, read in time-zone above. Staff edit
# it in game with /schedule add <day> <HH:mm> <event> and
# /schedule remove <day> <HH:mm> [event], which write here.
#
# A start refused - the event already running, another one of its kind running,
# too few players for Kill the King - is reported in the console and skipped.
# Nothing is caught up: a time that passes while the server is down is missed.
weekly-schedule:
enabled: true
# Minutes before every start - weekly or daily - to announce it. [] for none.
announce-before-minutes: [15, 5, 1]
# /schedule as a window rather than a list in the chat: one item per day of the
# week ahead. /schedule chat asks for the list either way, and the console
# always gets it.
# An event still running when a planned one starts (the 14:00 KOTH not over at
# 15:00): replace - it is stopped, with no winner, and the planned one starts;
# skip - it goes on and the planned one is not started; both - both run.
# Kill the King is never started by the schedule: staff start it (its time is
# shown in /schedule and announced).
overlap: replace
menu:
enabled: true
today-material: CLOCK
day-material: PAPER
empty-material: GRAY_DYE
# The colour each event is written in, in the window and in /schedule chat:
# by kind, or by an event's id (an id wins over its kind). Colour codes (&6)
# or a hex colour (&#ffaa00).
colors:
koth: "&6"
citadel: "&5"
ktk: "&c"
conquest: "&b"
dtc: "&9"
lastbreak: "&4"
slide: "&a"
totem: "&e"
minitotem: "&3"
# Shipped empty: the example events are not on your map yet. For instance:
# friday: ["20:00 koth"]
# saturday: ["18:00 conquest", "21:00 citadel"]
days:
monday: []
tuesday: []
wednesday: []
thursday: []
friday: []
saturday: []
sunday: []
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
Whether the plugin starts the weekly starts; /schedule lists them either way |
announce-before-minutes |
[15, 5, 1] |
Minutes before every start, weekly or daily, to announce it |
overlap |
replace |
An event still running when a planned one starts: replace stops it (no winner) for the planned one, skip keeps it and skips the planned one, both runs them together. Kill the King is never started by the schedule |
days.<day> |
[] |
"HH:mm <event id>" entries, read in time-zone. A day is monday...sunday, or its first three letters |
menu.enabled |
true |
/schedule opens a window, one item per day of the week ahead; false prints the list in the chat, as /schedule chat always does |
menu.today-material · day-material · empty-material |
CLOCK · PAPER · GRAY_DYE |
The item standing for today, for a day with events, and for a day with none |
menu.colors |
one per kind | The colour each event is written in, window and chat alike: by kind (koth, citadel, ktk, conquest, dtc, lastbreak, slide, totem, minitotem) or by an event's id, which wins |
Event signs¶
# A won event leaves a sign, as a kill does: the event, who won it and when. To
# the winner of Kill the King, or to every online member of the winning team. Its
# four lines are in the language file (events.capture-sign); written on the sign by
# the plugin when placed, and never editable.
capture-signs:
enabled: true
material: OAK_SIGN
date-format: "dd/MM/yyyy HH:mm"
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
A won event leaves a sign to its winner — the King's killer or King, or every online member of the winning team |
material |
OAK_SIGN |
Any standing or hanging sign |
date-format |
dd/MM/yyyy HH:mm |
How %date% is written |
Zone holograms¶
# A hologram above each capture zone - KOTH, Citadel, every Conquest zone - for as
# long as the zone is configured: while its event runs, the time left and who
# holds it; otherwise, when it runs next. Texts in lang/en.yml (events.hologram).
# Drawn by the hologram module, so holograms.yml must be enabled too.
zone-holograms:
enabled: true
# Blocks above the top of the zone.
height: 3.0
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
A hologram above every KOTH, Citadel, Conquest, DTC, Last Break and Slide zone. holograms.yml must be enabled too |
height |
3.0 |
Blocks above the top of the zone (or the core, for DTC and Last Break) |
Setup commands¶
What the setup commands do by default — see the guide.
# The staff setup commands - the same for every kind of event:
# /events create <type> <id> a new event where you stand
# /events info <id> what it has, what it lacks, the command for each
# /events claim <id> its territory, with the claiming wand
# /events setzone <id> [zone] its zone (a Conquest's named zone), with the wand
# /events setblock <id> a DTC's core, a Totem's column: the block looked at
# /events delete <id> the event, and its territory with it
# (docs/gameplay/events.md). They write into THIS file - the only commands in the
# plugin that ever do (docs/getting-started/upgrading.md), and only the one
# section of the one event they touch.
#
# A new event is copied from this file's example of its kind, as the plugin
# ships it (hard-coded: the jar's copy, never yours), moved to where you stand,
# with no schedule. Its territory belongs to a server team named after it (its
# "claim" key), a combat zone.
#
# Any event with land may also carry "disable-abilities: never", "during-event"
# or "always": when partner items are refused on its territory, whatever
# abilities.yml says (disabled-in.event-territory) for events that say nothing.
setup:
# /events create claims the new event's territory at once: its zones and
# claim-margin blocks around them. false leaves it to /events claim.
auto-claim: true
claim-margin: 10
# /events setblock looks this many blocks along where the player is looking.
target-distance: 10
# A zone is part of its event's territory: drawn past its edge, the territory
# grows to hold it and claim-margin blocks around it (land another team holds
# stays theirs). false only warns, as /events claim is then yours to use.
zone-claims-land: true
# /events setzone hands over the claiming wand: left-click one corner,
# right-click the other, sneak + left-click to write the zone. It runs from the
# lower of the two clicked blocks to this many blocks above the higher one.
zone-height: 10
| Key | As shipped | What it does |
|---|---|---|
auto-claim |
true |
/events create claims the new event's territory at once; false leaves it to /events claim |
claim-margin |
10 |
Blocks of territory /events create claims around the new event's zones, and /events setzone around a zone drawn past the territory's edge |
zone-claims-land |
true |
A zone drawn past its event's territory makes the territory grow to hold it; false only warns |
target-distance |
10 |
How far /events setblock looks along where the player is looking |
zone-height |
10 |
A zone drawn with the wand rises this many blocks above the higher clicked block |
A new event is a copy of the plugin's own example of its kind — the jar's, never your file's: that stays hard-coded. Every event with land has a claim key naming its server team; /events create and /events claim write it.
KOTH¶
Under events:, one entry per KOTH.
koth:
display-name: "{primary}KOTH"
# The zone is the cuboid between the two corners, bounds included. Write the
# corners in whichever order you walked them - they are normalised on load.
world: world
corner-1:
x: 100
y: 60
z: 100
corner-2:
x: 115
y: 90
z: 115
# Seconds of uninterrupted holding needed to win.
capture-seconds: 600
# What LOSING the zone does to the countdown:
# RESET - back to full. The classic, brutal behaviour: pushed off at
# nine minutes means starting over.
# PAUSE - freezes where it is and resumes for whoever holds next.
# This changes how a KOTH plays more than any other single value here.
#
# Being contested is NOT losing the zone. An enemy standing in it freezes the
# countdown and costs the holder nothing; the progress is only wiped (under
# RESET) when the zone actually empties or another team takes sole control.
# Otherwise one player touching the zone for a single tick would erase nine
# minutes of work.
contest-policy: RESET
# While the zone is contested - another team in it with the holder:
# pause - the countdown freezes until one team holds it alone again.
# continue - the team that held it keeps counting down as long as it is
# still in the zone: a challenger has to push it out.
when-contested: pause
# Hard stop for an event nobody manages to win. 0 = runs until someone does.
# Must be at least capture-seconds, or the event could never be won; a
# smaller value is refused on load and treated as 0.
max-duration-seconds: 0
# Remaining-time marks to broadcast, in seconds. Each fires once per attempt
# and they are announced again after a RESET, so a fresh attempt gets its own
# warnings. A mark at or above capture-seconds is ignored - it would fire the
# instant the event opens.
announce-at-seconds: [300, 120, 60, 30, 10]
# Local times of day at which this event opens by itself, read in time-zone
# above. Leave the list empty for an event only staff can open with
# /events start <id>.
#
# Shipped empty: the zone above is an example, and an event that opens by
# itself on a fresh server would announce a KOTH on land nobody has built.
# Move the zone to your map, then give it its times, for instance:
# schedule: ["18:00", "21:00"]
schedule: []
# Console commands run on capture. Placeholders: %team%, %event%.
# Rewards are team-scoped, matching the fact that a capture is credited to a
# team - there is no %player% here on purpose.
# The capture itself is always counted through the team module, which owns
# the points-per-capture scale and the cap (see teams.yml, "koth").
reward-commands: []
| Key | As shipped | What it does |
|---|---|---|
display-name |
&6KOTH |
Its name in messages |
world, corner-1, corner-2 |
an example | The zone to hold: the box between the corners, bounds included, in any order |
capture-seconds |
600 |
Seconds of holding alone needed to win |
contest-policy |
RESET |
What losing the zone does: RESET back to full, PAUSE frozen for the next holder |
when-contested |
pause |
While another team stands in the zone with the holder: pause freezes the countdown; continue lets the holder keep counting down as long as it is still in the zone |
max-duration-seconds |
0 |
A hard stop with no winner; 0 runs until someone wins. At least capture-seconds |
announce-at-seconds |
[300, 120, 60, 30, 10] |
Remaining-time marks to broadcast |
schedule |
[] |
Local times it opens by itself, e.g. ["18:00", "21:00"] |
reward-commands |
[] |
Console commands for the winner, with %team% and %event% |
Citadel¶
Under citadels:: a KOTH — every key above works the same — plus the Citadel's claim and what it refuses.
citadel:
display-name: "{primary}Citadel"
# The zone to hold, inside the Citadel.
world: world
corner-1:
x: -200
y: 60
z: -200
corner-2:
x: -185
y: 90
z: -185
capture-seconds: 1800
contest-policy: RESET
when-contested: pause
max-duration-seconds: 0
announce-at-seconds: [900, 600, 300, 60, 30, 10]
# No schedule: staff open it with /events start citadel until you decide
# when it should run.
schedule: []
reward-commands: []
# The server team whose land is the Citadel.
claim: Citadel
# What the Citadel's land refuses.
restrictions:
# Throwing an ender pearl from inside.
ender-pearls: true
# Using a partner item (abilities.yml) inside.
partner-items: true
# Eating a chorus fruit - or any food that teleports - inside.
chorus-fruit: true
# Taking off with elytra inside; a player gliding in lands.
elytra: true
# Launching with a Riptide trident inside.
riptide: true
The two keys only a Citadel has:
# The server team whose land is the Citadel.
claim: Citadel
# What the Citadel's land refuses.
restrictions:
# Throwing an ender pearl from inside.
ender-pearls: true
# Using a partner item (abilities.yml) inside.
partner-items: true
# Eating a chorus fruit - or any food that teleports - inside.
chorus-fruit: true
# Taking off with elytra inside; a player gliding in lands.
elytra: true
# Launching with a Riptide trident inside.
riptide: true
| Key | As shipped | What it does |
|---|---|---|
claim |
Citadel |
The server team whose land is the Citadel — /events claim citadel makes it and hands over the wand |
restrictions.ender-pearls |
true |
No ender pearl thrown from inside |
restrictions.partner-items |
true |
No partner item (abilities.yml) used inside; class abilities still work |
restrictions.chorus-fruit |
true |
No chorus fruit, or any food that teleports, eaten inside |
restrictions.elytra |
true |
No take-off with elytra; a player gliding in lands |
restrictions.riptide |
true |
No Riptide trident charged inside |
The restrictions hold on the Citadel's land at all times, whether the event runs or not.
Kill the King¶
Under kill-the-king:. The arena is the warzone of world, set in claims.yml.
ktk:
display-name: "{error}Kill the King"
world: world
# How long the King must survive.
duration-seconds: 1800
# Eligible players needed online (survival or adventure mode, not exempt).
# Below that the event is called off - a King alone on the server would win
# by waiting.
minimum-players: 2
# How often the King's position and health (as a percentage) go to chat, in
# seconds. 0 turns it off. The position is on the scoreboard all along -
# %king_location_line% in ui.yml, redrawn with the board (every 20 ticks) -
# and a waypoint for Lunar Client players.
announce-interval-seconds: 60
# Remaining-time marks to broadcast, in seconds.
announce-at-seconds: [900, 300, 60, 10]
# A Wither and damage for a King outside the warzone - off as shipped: the
# King is kept in by a wall (reign.wall below), and a Wither could be abused.
# The count starts over each time the King comes back in.
outside-penalty:
enabled: false
# Seconds outside before anything happens: a King knocked over the border
# by a hit is not punished for it.
grace-seconds: 3
# Plain damage per second outside, after the grace (2.0 = one heart).
damage-per-second: 1.0
# Wither level once the grace is over (1 = Wither I), one level more every
# wither-step-seconds, up to wither-max-level.
wither-start-level: 1
wither-step-seconds: 10
wither-max-level: 5
# The King's kit. Materials and enchantments use the server's names
# (minecraft:protection, or just protection). A name the server does not
# know is reported at load and left out; the rest of the kit stands.
# Enchantment levels may exceed the vanilla maximum.
kit:
helmet:
material: DIAMOND_HELMET
name: "{primary}Crown of the King"
enchantments: {protection: 4, unbreaking: 3}
chestplate:
material: DIAMOND_CHESTPLATE
enchantments: {protection: 4, unbreaking: 3}
leggings:
material: DIAMOND_LEGGINGS
enchantments: {protection: 4, unbreaking: 3}
boots:
material: DIAMOND_BOOTS
enchantments: {protection: 4, feather_falling: 4, unbreaking: 3}
items:
- material: DIAMOND_SWORD
enchantments: {sharpness: 5, unbreaking: 3}
- material: GOLDEN_APPLE
amount: 16
- material: ENDER_PEARL
amount: 16
# Effects for the length of the reign, as levels (1 = Speed I).
effects:
speed: 2
resistance: 1
# Local times of day at which it starts by itself (time-zone above). Empty:
# only staff start it, with /events start ktk.
schedule: []
# How it is fought:
# team - the King's team defends them against every other player. The
# winner's team scores points.per-king-win (teams.yml).
# solo - everybody against the King, their own teammates and allies
# included, and the King may strike anybody back. No team scores:
# the reward commands below are the winner's own reward.
# Either way nobody helps the King: no Bard buff, no partner item, no potion
# thrown by somebody else, no beacon. The kit, and what they drink or eat
# themselves, is all they fight with.
mode: team
# What the crown asks of the King, and what dying with it costs. The King's
# own items are put aside at the crowning and come back at the respawn, whatever
# is set here.
reign:
# The King cannot take off the kit's armour: no click, drag or key swap on an
# armour slot, no right-click swap with a piece in hand.
lock-armour: true
# true: the kit falls at the King's death, as loot for the killer
# (loot-protection, pvp.yml). false: it vanishes with the reign. What the
# King picked up during the reign falls either way.
drop-kit: false
# The King's death takes DTR from their team, as any death would.
death-costs-dtr: false
# The King's death deathbans them, as any death would.
deathban: false
# A King who logs out ends the event with no winner and is banned for this
# long, in seconds (2 hours). 0: no ban.
quit-ban-seconds: 7200
# A player idle this long - no move, look, chat, command or click - is never
# drawn as King. 0 draws anybody online.
afk-seconds: 300
# The King cannot leave the warzone - walking, a pearl, a teleport - and sees
# its edge as a wall when near it, as a player in combat sees spawn's.
wall:
enabled: true
material: RED_STAINED_GLASS
radius-blocks: 15
# Console commands run for the winner - the killer, or the King.
# Placeholders: %player%, %event%. For a solo King, the prize, for instance:
# reward-commands: ["crate key give %player% king 1", "eco give %player% 1000"]
reward-commands: []
| Key | As shipped | What it does |
|---|---|---|
display-name, world |
&4Kill the King, world |
Its name, and the world whose warzone is the arena |
duration-seconds |
1800 |
How long the King must survive |
minimum-players |
2 |
Eligible players needed online; below, the event is called off |
announce-interval-seconds |
60 |
How often the King's position and health go to chat; 0 never. The position is on the scoreboard all along |
announce-at-seconds |
[900, 300, 60, 10] |
Remaining-time marks to broadcast |
schedule, reward-commands |
[] |
As for a KOTH; rewards get %player% (the King or the killer) and %event% |
mode |
team |
team: the King's team defends them, the winner's team scores. solo: everybody against the King, teammates included, and the reward commands are the whole prize — no team scores |
Leaving the warzone — a Wither and damage, off as shipped: the King cannot leave the warzone at all (reign.wall below), and a Wither could be abused.
# A Wither and damage for a King outside the warzone - off as shipped: the
# King is kept in by a wall (reign.wall below), and a Wither could be abused.
# The count starts over each time the King comes back in.
outside-penalty:
enabled: false
# Seconds outside before anything happens: a King knocked over the border
# by a hit is not punished for it.
grace-seconds: 3
# Plain damage per second outside, after the grace (2.0 = one heart).
damage-per-second: 1.0
# Wither level once the grace is over (1 = Wither I), one level more every
# wither-step-seconds, up to wither-max-level.
wither-start-level: 1
wither-step-seconds: 10
wither-max-level: 5
| Key | As shipped | What it does |
|---|---|---|
enabled |
false |
Whether being outside costs the King anything. Missing from a file written before, it is off: add enabled: true to keep the Wither |
grace-seconds |
3 |
Seconds outside before anything happens |
damage-per-second |
1.0 |
Damage each second outside after the grace; 2.0 is a heart |
wither-start-level |
1 |
Wither level once the grace is over |
wither-step-seconds |
10 |
One level more every this many seconds |
wither-max-level |
5 |
The highest level |
The King's kit:
# The King's kit. Materials and enchantments use the server's names
# (minecraft:protection, or just protection). A name the server does not
# know is reported at load and left out; the rest of the kit stands.
# Enchantment levels may exceed the vanilla maximum.
kit:
helmet:
material: DIAMOND_HELMET
name: "{primary}Crown of the King"
enchantments: {protection: 4, unbreaking: 3}
chestplate:
material: DIAMOND_CHESTPLATE
enchantments: {protection: 4, unbreaking: 3}
leggings:
material: DIAMOND_LEGGINGS
enchantments: {protection: 4, unbreaking: 3}
boots:
material: DIAMOND_BOOTS
enchantments: {protection: 4, feather_falling: 4, unbreaking: 3}
items:
- material: DIAMOND_SWORD
enchantments: {sharpness: 5, unbreaking: 3}
- material: GOLDEN_APPLE
amount: 16
- material: ENDER_PEARL
amount: 16
# Effects for the length of the reign, as levels (1 = Speed I).
effects:
speed: 2
resistance: 1
helmet, chestplate, leggings, boots and each of items take a material, and optionally a name, an amount and enchantments (levels may exceed vanilla). effects gives effects for the reign, as levels. An unknown name is reported and left out.
The reign — what the crown asks, and what dying with it costs:
# What the crown asks of the King, and what dying with it costs. The King's
# own items are put aside at the crowning and come back at the respawn, whatever
# is set here.
reign:
# The King cannot take off the kit's armour: no click, drag or key swap on an
# armour slot, no right-click swap with a piece in hand.
lock-armour: true
# true: the kit falls at the King's death, as loot for the killer
# (loot-protection, pvp.yml). false: it vanishes with the reign. What the
# King picked up during the reign falls either way.
drop-kit: false
# The King's death takes DTR from their team, as any death would.
death-costs-dtr: false
# The King's death deathbans them, as any death would.
deathban: false
# A King who logs out ends the event with no winner and is banned for this
# long, in seconds (2 hours). 0: no ban.
quit-ban-seconds: 7200
# A player idle this long - no move, look, chat, command or click - is never
# drawn as King. 0 draws anybody online.
afk-seconds: 300
# The King cannot leave the warzone - walking, a pearl, a teleport - and sees
# its edge as a wall when near it, as a player in combat sees spawn's.
wall:
enabled: true
material: RED_STAINED_GLASS
radius-blocks: 15
| Key | As shipped | What it does |
|---|---|---|
lock-armour |
true |
The King cannot take off their armour |
drop-kit |
false |
true: the kit falls at the King's death, loot for the killer; false: it vanishes |
death-costs-dtr |
false |
The King's death takes DTR from their team |
deathban |
false |
The King's death deathbans them |
quit-ban-seconds |
7200 |
A King who logs out ends the event with no winner and is banned this long — 2 hours; 0 for no ban. Never shortens a ban already running |
afk-seconds |
300 |
A player idle this long — no move, look, chat, command or click — is never drawn as King; 0 draws anybody |
wall.enabled · material · radius-blocks |
true · RED_STAINED_GLASS · 15 |
The King sees the warzone's edge as a wall within that many blocks, all round. Leaving is refused either way: walking, a pearl, a teleport |
Existing servers: without a reign section, these values apply — copy it from the jar to change them.
Conquest¶
Under conquest:.
conquest:
display-name: "{primary}Conquest"
world: world
# Seconds a team must hold a zone alone to score from it.
capture-seconds: 30
# What one capture of one zone is worth.
points-per-capture: 1
# The target: the first team to reach it wins.
points-to-win: 250
# Points a team loses when one of its members dies.
death-penalty: 20
# What losing a zone does to its countdown: RESET or PAUSE, as for a KOTH.
contest-policy: RESET
when-contested: pause
# Hard stop with no winner, in seconds. 0 = runs until somebody wins.
max-duration-seconds: 0
# Local times at which it opens by itself; empty for staff only.
schedule: []
# Console commands run for the winner. Placeholders: %team%, %event%.
reward-commands: []
zones:
red:
display-name: "{error}Red"
corner-1: {x: 300, y: 60, z: 300}
corner-2: {x: 306, y: 70, z: 306}
blue:
display-name: "{primary}Blue"
corner-1: {x: 340, y: 60, z: 300}
corner-2: {x: 346, y: 70, z: 306}
green:
display-name: "{success}Green"
corner-1: {x: 300, y: 60, z: 340}
corner-2: {x: 306, y: 70, z: 346}
yellow:
display-name: "{warning}Yellow"
corner-1: {x: 340, y: 60, z: 340}
corner-2: {x: 346, y: 70, z: 346}
| Key | As shipped | What it does |
|---|---|---|
display-name, world |
&6Conquest, world |
Its name and world |
capture-seconds |
30 |
Seconds a team must hold a zone alone to score |
points-per-capture |
1 |
Points one capture is worth |
points-to-win |
250 |
The target |
death-penalty |
20 |
Points a team loses when one of its members dies |
contest-policy, when-contested, max-duration-seconds, schedule |
RESET, pause, 0, [] |
As for a KOTH, zone by zone |
reward-commands |
[] |
For the winner, with %team% and %event% |
zones |
four examples | Each with a display-name and two corners |
zones:
red:
display-name: "{error}Red"
corner-1: {x: 300, y: 60, z: 300}
corner-2: {x: 306, y: 70, z: 306}
blue:
display-name: "{primary}Blue"
corner-1: {x: 340, y: 60, z: 300}
corner-2: {x: 346, y: 70, z: 306}
green:
display-name: "{success}Green"
corner-1: {x: 300, y: 60, z: 340}
corner-2: {x: 306, y: 70, z: 346}
yellow:
display-name: "{warning}Yellow"
corner-1: {x: 340, y: 60, z: 340}
corner-2: {x: 346, y: 70, z: 346}
DTC (Destroy The Core)¶
Under dtc:, one entry per DTC. DTC and Last Break share one run slot — only one of the two runs at a time, whatever their ids: starting one while the other runs is refused.
dtc:
display-name: "{primary}DTC"
world: world
corner-1: {x: 400, y: 60, z: 400}
corner-2: {x: 420, y: 80, z: 420}
# "material" is what the core is while the event runs; "idle-material" what it
# stands as between runs - bedrock, as a Totem's column does.
core: {x: 410, y: 65, z: 410, material: END_STONE, idle-material: BEDROCK}
counter: SHARED
breaks: 150
break-cooldown-seconds: 1
announce-at: [125, 100, 75, 50, 25, 10]
max-duration-seconds: 0
schedule: []
reward-commands: []
| Key | As shipped | What it does |
|---|---|---|
display-name, world, corner-1, corner-2 |
an example | Its name and zone, as for a KOTH |
core.x, core.y, core.z |
410, 65, 410 |
The core's block — must be inside the zone |
core.material |
END_STONE |
The block it is while the event runs, and reappears as after every break; must be a real, solid, non-air block with no gravity |
core.idle-material |
BEDROCK |
What it stands as between runs, the way a Totem's column does |
counter |
SHARED |
SHARED — the core has breaks common health, most breaks of its own wins a tie by whoever reached that count first. PER_TEAM — each team has its own count to breaks, first there wins at once |
breaks |
150 |
The core's common health (SHARED), or each team's target (PER_TEAM) |
break-cooldown-seconds |
1 |
Delay between two breaks of the SAME team; 0 for none. Another team is never blocked by it |
announce-at |
[125, 100, 75, 50, 25, 10] |
Remaining-count marks to broadcast — remaining common health (SHARED), or remaining-to-target per team (PER_TEAM) |
max-duration-seconds, schedule, reward-commands |
0, [], [] |
As for a KOTH; rewards get %team% and %event% |
Last Break¶
Under last-break: — the same engine as DTC, with no counter: it is always common health, and whichever team lands the break that empties it wins.
last-break:
display-name: "{error}Last Break"
world: world
corner-1: {x: 450, y: 60, z: 400}
corner-2: {x: 470, y: 80, z: 420}
core: {x: 460, y: 65, z: 410, material: END_STONE, idle-material: BEDROCK}
breaks: 150
break-cooldown-seconds: 1
announce-at: [125, 100, 75, 50, 25, 10, 5, 3, 2, 1]
max-duration-seconds: 0
schedule: []
reward-commands: []
Every key is as for DTC, minus counter — and it shares DTC's one run slot (above).
Slide¶
Under slide:, one entry per Slide.
slide:
display-name: "{success}Slide"
world: world
corner-1: {x: 500, y: 60, z: 500}
corner-2: {x: 515, y: 75, z: 515}
points-per-player: 1
interval-seconds: 1
death-penalty: 10
announce-deaths: true
points-to-win: 500
announce-at: [100, 250, 400, 450]
max-duration-seconds: 0
schedule: []
reward-commands: []
| Key | As shipped | What it does |
|---|---|---|
display-name, world, corner-1, corner-2 |
an example | Its name and zone |
points-per-player |
1 |
Points ONE team member standing in the zone brings their team, per interval — cumulative |
interval-seconds |
1 |
How often points are awarded |
death-penalty |
10 |
Points a team loses when a member dies, anywhere, while the Slide runs; never below zero |
announce-deaths |
true |
Whether a death's point loss is broadcast; the points are always lost either way |
points-to-win |
500 |
The target |
announce-at |
[100, 250, 400, 450] |
Points marks to broadcast, once per team |
max-duration-seconds, schedule, reward-commands |
0, [], [] |
As for a KOTH; rewards get %team% and %event% |
Totem and Mini Totem¶
Under totem:, one entry per Totem — a Mini Totem is only a shorter one. How it plays: Totem
totem:
display-name: "{warning}Totem"
world: world
corner-1: {x: 600, y: 60, z: 600}
corner-2: {x: 620, y: 80, z: 620}
base: {x: 610, y: 64, z: 610}
height: 5
material: QUARTZ_BLOCK
broken-material: BEDROCK
idle-material: BEDROCK
# The items a block may be broken with; an empty list allows anything.
tools: [WOODEN_SWORD, STONE_SWORD, COPPER_SWORD, IRON_SWORD, GOLDEN_SWORD, DIAMOND_SWORD, NETHERITE_SWORD]
# false: a block is mined the whole way with the sword, taking the time the
# game gives it (a few seconds for quartz). true: one hit breaks it at once.
instant-break: false
# RESET or RESET_AND_START - see above.
rival-break: RESET
# Announce every block broken; the start, a reset and the win are always announced.
announce-breaks: true
max-duration-seconds: 0
schedule: []
# Placeholders: %team%, %event%.
reward-commands: []
| Key | As shipped | What it does |
|---|---|---|
display-name, world, corner-1, corner-2 |
an example | Its name and zone; the column must stand inside it |
base |
an example | The column's lowest block — set in game with /events setblock <id> |
height |
5 (3 for the Mini Totem) |
How many blocks the column is, 1 to 64 |
material |
QUARTZ_BLOCK |
The column during a run: what is broken |
broken-material |
BEDROCK |
A block once a team has broken it |
idle-material |
BEDROCK |
The column between runs |
tools |
every sword | What a block may be broken with; an empty list allows anything |
instant-break |
false |
false: each block is mined the whole way with the sword, in the time the game gives it. true: one hit breaks it at once |
rival-break |
RESET |
A block broken by another team: RESET starts the totem over and counts for nobody; RESET_AND_START also makes it the other team's first |
announce-breaks |
true |
Announce every block broken; the start, a reset and the win are always announced |
max-duration-seconds, schedule, reward-commands |
0, [], [] |
As for a KOTH; rewards get %team% and %event% |
What stays in code: one Totem runs at a time; creative, spectator and teamless players never break it; the column is always protected from explosions and pistons.
The whole shipped file¶
# ---------------------------------------------------------------------------
# HCFCore - Capture events (KOTH, Citadel and variants)
# ---------------------------------------------------------------------------
# Events with a zone to hold, a win condition, a timer and a reward.
#
# Events are DATA, not code. Adding a KOTH variant means adding a block under
# "events:" below - never a recompile. A Citadel ("citadels:") is a KOTH with a
# much longer hold, fought inside a claimed Citadel that refuses pearls, partner
# items and the other ways out.
#
# Changes take effect on /hcf reload.
#
# Lines "# --8<-- [start:...]" and "# --8<-- [end:...]" mark the parts the online
# documentation quotes from this file. They are comments and change nothing.
# ---------------------------------------------------------------------------
enabled: true
# How often the server samples who is standing in a running zone. 1 second is
# the natural value: capture countdowns are displayed in seconds, so sampling
# less often would make the announced time drift from what players see.
# Raise it only if you have a measured reason to.
tick-seconds: 1
# Time zone the "schedule" times below are read in.
# "system" follows the host clock. Prefer naming a zone explicitly (for example
# "Europe/Paris") so moving the server to another host does not silently shift
# every event by a few hours.
time-zone: "system"
# Broadcast when a zone becomes contested. Announced only when the state
# changes, never every tick, so a long brawl produces one message and not one
# per second.
announce-contests: true
# Whether a player with no team freezes a capture by standing in the zone.
# true - they are everybody's enemy and block the capture (usual HCF reading)
# false - teams can capture around them
# A teamless player can never HOLD a zone either way: capturing is a team act.
teamless-players-contest: true
# Two teams that are ALLIED still contest each other: capture is strictly per
# team, for Conquest and KTK as well.
# A hologram above each capture zone - KOTH, Citadel, every Conquest zone - for as
# long as the zone is configured: while its event runs, the time left and who
# holds it; otherwise, when it runs next. Texts in lang/en.yml (events.hologram).
# Drawn by the hologram module, so holograms.yml must be enabled too.
zone-holograms:
enabled: true
# Blocks above the top of the zone.
height: 3.0
# The staff setup commands - the same for every kind of event:
# /events create <type> <id> a new event where you stand
# /events info <id> what it has, what it lacks, the command for each
# /events claim <id> its territory, with the claiming wand
# /events setzone <id> [zone] its zone (a Conquest's named zone), with the wand
# /events setblock <id> a DTC's core, a Totem's column: the block looked at
# /events delete <id> the event, and its territory with it
# (docs/gameplay/events.md). They write into THIS file - the only commands in the
# plugin that ever do (docs/getting-started/upgrading.md), and only the one
# section of the one event they touch.
#
# A new event is copied from this file's example of its kind, as the plugin
# ships it (hard-coded: the jar's copy, never yours), moved to where you stand,
# with no schedule. Its territory belongs to a server team named after it (its
# "claim" key), a combat zone.
#
# Any event with land may also carry "disable-abilities: never", "during-event"
# or "always": when partner items are refused on its territory, whatever
# abilities.yml says (disabled-in.event-territory) for events that say nothing.
setup:
# /events create claims the new event's territory at once: its zones and
# claim-margin blocks around them. false leaves it to /events claim.
auto-claim: true
claim-margin: 10
# /events setblock looks this many blocks along where the player is looking.
target-distance: 10
# A zone is part of its event's territory: drawn past its edge, the territory
# grows to hold it and claim-margin blocks around it (land another team holds
# stays theirs). false only warns, as /events claim is then yours to use.
zone-claims-land: true
# /events setzone hands over the claiming wand: left-click one corner,
# right-click the other, sneak + left-click to write the zone. It runs from the
# lower of the two clicked blocks to this many blocks above the higher one.
zone-height: 10
# A won event leaves a sign, as a kill does: the event, who won it and when. To
# the winner of Kill the King, or to every online member of the winning team. Its
# four lines are in the language file (events.capture-sign); written on the sign by
# the plugin when placed, and never editable.
capture-signs:
enabled: true
material: OAK_SIGN
date-format: "dd/MM/yyyy HH:mm"
# The weekly schedule: which event starts at what time on which day, every week -
# listed for everybody with /schedule, and started by the plugin itself exactly
# as /events start would. It sits alongside each event's own "schedule" (daily
# times), which /schedule lists too.
#
# Each day holds "HH:mm <event id>" entries, read in time-zone above. Staff edit
# it in game with /schedule add <day> <HH:mm> <event> and
# /schedule remove <day> <HH:mm> [event], which write here.
#
# A start refused - the event already running, another one of its kind running,
# too few players for Kill the King - is reported in the console and skipped.
# Nothing is caught up: a time that passes while the server is down is missed.
weekly-schedule:
enabled: true
# Minutes before every start - weekly or daily - to announce it. [] for none.
announce-before-minutes: [15, 5, 1]
# /schedule as a window rather than a list in the chat: one item per day of the
# week ahead. /schedule chat asks for the list either way, and the console
# always gets it.
# An event still running when a planned one starts (the 14:00 KOTH not over at
# 15:00): replace - it is stopped, with no winner, and the planned one starts;
# skip - it goes on and the planned one is not started; both - both run.
# Kill the King is never started by the schedule: staff start it (its time is
# shown in /schedule and announced).
overlap: replace
menu:
enabled: true
today-material: CLOCK
day-material: PAPER
empty-material: GRAY_DYE
# The colour each event is written in, in the window and in /schedule chat:
# by kind, or by an event's id (an id wins over its kind). Colour codes (&6)
# or a hex colour (&#ffaa00).
colors:
koth: "&6"
citadel: "&5"
ktk: "&c"
conquest: "&b"
dtc: "&9"
lastbreak: "&4"
slide: "&a"
totem: "&e"
minitotem: "&3"
# Shipped empty: the example events are not on your map yet. For instance:
# friday: ["20:00 koth"]
# saturday: ["18:00 conquest", "21:00 citadel"]
days:
monday: []
tuesday: []
wednesday: []
thursday: []
friday: []
saturday: []
sunday: []
events:
# ------------------------------------------------------------------
# A classic KOTH: hold the zone for 10 uninterrupted minutes.
# ------------------------------------------------------------------
koth:
display-name: "{primary}KOTH"
# The zone is the cuboid between the two corners, bounds included. Write the
# corners in whichever order you walked them - they are normalised on load.
world: world
corner-1:
x: 100
y: 60
z: 100
corner-2:
x: 115
y: 90
z: 115
# Seconds of uninterrupted holding needed to win.
capture-seconds: 600
# What LOSING the zone does to the countdown:
# RESET - back to full. The classic, brutal behaviour: pushed off at
# nine minutes means starting over.
# PAUSE - freezes where it is and resumes for whoever holds next.
# This changes how a KOTH plays more than any other single value here.
#
# Being contested is NOT losing the zone. An enemy standing in it freezes the
# countdown and costs the holder nothing; the progress is only wiped (under
# RESET) when the zone actually empties or another team takes sole control.
# Otherwise one player touching the zone for a single tick would erase nine
# minutes of work.
contest-policy: RESET
# While the zone is contested - another team in it with the holder:
# pause - the countdown freezes until one team holds it alone again.
# continue - the team that held it keeps counting down as long as it is
# still in the zone: a challenger has to push it out.
when-contested: pause
# Hard stop for an event nobody manages to win. 0 = runs until someone does.
# Must be at least capture-seconds, or the event could never be won; a
# smaller value is refused on load and treated as 0.
max-duration-seconds: 0
# Remaining-time marks to broadcast, in seconds. Each fires once per attempt
# and they are announced again after a RESET, so a fresh attempt gets its own
# warnings. A mark at or above capture-seconds is ignored - it would fire the
# instant the event opens.
announce-at-seconds: [300, 120, 60, 30, 10]
# Local times of day at which this event opens by itself, read in time-zone
# above. Leave the list empty for an event only staff can open with
# /events start <id>.
#
# Shipped empty: the zone above is an example, and an event that opens by
# itself on a fresh server would announce a KOTH on land nobody has built.
# Move the zone to your map, then give it its times, for instance:
# schedule: ["18:00", "21:00"]
schedule: []
# Console commands run on capture. Placeholders: %team%, %event%.
# Rewards are team-scoped, matching the fact that a capture is credited to a
# team - there is no %player% here on purpose.
# The capture itself is always counted through the team module, which owns
# the points-per-capture scale and the cap (see teams.yml, "koth").
reward-commands: []
# ---------------------------------------------------------------------------
# Citadel
# ---------------------------------------------------------------------------
# A KOTH with a much longer hold, fought inside a Citadel: a large area where the
# fight is decided by teams and classes, and where nobody gets away by throwing an
# item. So a Citadel has TWO zones:
#
# - the zone to hold: the corners below, exactly as for a KOTH (capture time,
# contest policy, schedule, rewards - all read the same way);
# - the Citadel itself: server land, claimed around the zone for a server team
# whose name is "claim" below - its territory, drawn with the claiming wand:
# /events claim citadel
# which makes the server team if it does not exist yet. Being server land,
# nobody builds there, and /team map shows it.
#
# On the Citadel's land, AT ALL TIMES - whether the event runs or not - the
# restrictions below refuse what is switched on. Class abilities are not partner
# items and keep working: a Bard's buffs, an Archer's tag, a Rogue's backstab.
#
# Ids are shared with every other event (/events start <id>). The console warns
# when a Citadel starts without its claim, or with its zone outside it.
# ---------------------------------------------------------------------------
citadels:
citadel:
display-name: "{primary}Citadel"
# The zone to hold, inside the Citadel.
world: world
corner-1:
x: -200
y: 60
z: -200
corner-2:
x: -185
y: 90
z: -185
capture-seconds: 1800
contest-policy: RESET
when-contested: pause
max-duration-seconds: 0
announce-at-seconds: [900, 600, 300, 60, 30, 10]
# No schedule: staff open it with /events start citadel until you decide
# when it should run.
schedule: []
reward-commands: []
# The server team whose land is the Citadel.
claim: Citadel
# What the Citadel's land refuses.
restrictions:
# Throwing an ender pearl from inside.
ender-pearls: true
# Using a partner item (abilities.yml) inside.
partner-items: true
# Eating a chorus fruit - or any food that teleports - inside.
chorus-fruit: true
# Taking off with elytra inside; a player gliding in lands.
elytra: true
# Launching with a Riptide trident inside.
riptide: true
# ---------------------------------------------------------------------------
# Kill the King
# ---------------------------------------------------------------------------
# A random online player is drawn as King, stripped of their items (they are kept
# safe and given back at the end), equipped with the kit below and sent to a
# random spot in the warzone. The King's position is on every scoreboard
# (%king_location_line% in ui.yml), a waypoint for Lunar Client players, and in
# chat every announce-interval-seconds with the King's health. The King wins if still alive when the time runs
# out; otherwise whoever kills the King wins - unless that player is on the
# King's team. Any other death (withered, fall, lava...) or a logout ends the event with
# no winner.
#
# THE EVENT ZONE IS THE WARZONE of "world", as set in claims.yml (warzone.worlds).
# There is no zone to draw here: a world without a warzone cannot run this event.
# The King is sent to the surface, so the world must not have a bedrock ceiling
# (not the Nether).
#
# While King, a player:
# - cannot enter a safe zone (spawn) by any means - walking, pearls, commands,
# portals - and a safe zone counts as outside the warzone anyway;
# - cannot mount anything, drop items, open containers or use item frames,
# armour stands and the like: the kit stays with the King, and what drops
# at their death is the kit;
# - keeps what they pick up. Only the kit is taken back at the end.
#
# Ids are shared with the capture events above (/events start <id>), so they
# must differ from them. Players with hcfcore.events.king.exempt are never drawn.
# ---------------------------------------------------------------------------
kill-the-king:
ktk:
display-name: "{error}Kill the King"
world: world
# How long the King must survive.
duration-seconds: 1800
# Eligible players needed online (survival or adventure mode, not exempt).
# Below that the event is called off - a King alone on the server would win
# by waiting.
minimum-players: 2
# How often the King's position and health (as a percentage) go to chat, in
# seconds. 0 turns it off. The position is on the scoreboard all along -
# %king_location_line% in ui.yml, redrawn with the board (every 20 ticks) -
# and a waypoint for Lunar Client players.
announce-interval-seconds: 60
# Remaining-time marks to broadcast, in seconds.
announce-at-seconds: [900, 300, 60, 10]
# A Wither and damage for a King outside the warzone - off as shipped: the
# King is kept in by a wall (reign.wall below), and a Wither could be abused.
# The count starts over each time the King comes back in.
outside-penalty:
enabled: false
# Seconds outside before anything happens: a King knocked over the border
# by a hit is not punished for it.
grace-seconds: 3
# Plain damage per second outside, after the grace (2.0 = one heart).
damage-per-second: 1.0
# Wither level once the grace is over (1 = Wither I), one level more every
# wither-step-seconds, up to wither-max-level.
wither-start-level: 1
wither-step-seconds: 10
wither-max-level: 5
# The King's kit. Materials and enchantments use the server's names
# (minecraft:protection, or just protection). A name the server does not
# know is reported at load and left out; the rest of the kit stands.
# Enchantment levels may exceed the vanilla maximum.
kit:
helmet:
material: DIAMOND_HELMET
name: "{primary}Crown of the King"
enchantments: {protection: 4, unbreaking: 3}
chestplate:
material: DIAMOND_CHESTPLATE
enchantments: {protection: 4, unbreaking: 3}
leggings:
material: DIAMOND_LEGGINGS
enchantments: {protection: 4, unbreaking: 3}
boots:
material: DIAMOND_BOOTS
enchantments: {protection: 4, feather_falling: 4, unbreaking: 3}
items:
- material: DIAMOND_SWORD
enchantments: {sharpness: 5, unbreaking: 3}
- material: GOLDEN_APPLE
amount: 16
- material: ENDER_PEARL
amount: 16
# Effects for the length of the reign, as levels (1 = Speed I).
effects:
speed: 2
resistance: 1
# Local times of day at which it starts by itself (time-zone above). Empty:
# only staff start it, with /events start ktk.
schedule: []
# How it is fought:
# team - the King's team defends them against every other player. The
# winner's team scores points.per-king-win (teams.yml).
# solo - everybody against the King, their own teammates and allies
# included, and the King may strike anybody back. No team scores:
# the reward commands below are the winner's own reward.
# Either way nobody helps the King: no Bard buff, no partner item, no potion
# thrown by somebody else, no beacon. The kit, and what they drink or eat
# themselves, is all they fight with.
mode: team
# What the crown asks of the King, and what dying with it costs. The King's
# own items are put aside at the crowning and come back at the respawn, whatever
# is set here.
reign:
# The King cannot take off the kit's armour: no click, drag or key swap on an
# armour slot, no right-click swap with a piece in hand.
lock-armour: true
# true: the kit falls at the King's death, as loot for the killer
# (loot-protection, pvp.yml). false: it vanishes with the reign. What the
# King picked up during the reign falls either way.
drop-kit: false
# The King's death takes DTR from their team, as any death would.
death-costs-dtr: false
# The King's death deathbans them, as any death would.
deathban: false
# A King who logs out ends the event with no winner and is banned for this
# long, in seconds (2 hours). 0: no ban.
quit-ban-seconds: 7200
# A player idle this long - no move, look, chat, command or click - is never
# drawn as King. 0 draws anybody online.
afk-seconds: 300
# The King cannot leave the warzone - walking, a pearl, a teleport - and sees
# its edge as a wall when near it, as a player in combat sees spawn's.
wall:
enabled: true
material: RED_STAINED_GLASS
radius-blocks: 15
# Console commands run for the winner - the killer, or the King.
# Placeholders: %player%, %event%. For a solo King, the prize, for instance:
# reward-commands: ["crate key give %player% king 1", "eco give %player% 1000"]
reward-commands: []
# ---------------------------------------------------------------------------
# Conquest
# ---------------------------------------------------------------------------
# The classic HCF Conquest. Several zones are
# captured AT THE SAME TIME, each the way a KOTH is - held alone by one team,
# frozen while contested, reset or paused when lost - but on a short timer. A
# capture ends nothing: it gives the holding team points and the zone's countdown
# starts again, so a team keeps scoring from a zone as long as it holds it. The
# first team to points-to-win wins, and its rewards run.
#
# A death of any member of a team, anywhere, while a Conquest runs costs that
# team death-penalty points (never below zero). Players with no team never hold
# a zone, and contest one as teamless-players-contest above says.
#
# One Conquest runs at a time. Ids are shared with the capture events and Kill
# the King (/events start <id>). Nothing is kept across a restart: a restart
# ends the Conquest, as it ends a KOTH.
#
# The example below has no schedule: staff open it with /events start conquest.
# The numbers are common HCF values, not rules - move the zones to your map and
# tune them.
# ---------------------------------------------------------------------------
conquest:
conquest:
display-name: "{primary}Conquest"
world: world
# Seconds a team must hold a zone alone to score from it.
capture-seconds: 30
# What one capture of one zone is worth.
points-per-capture: 1
# The target: the first team to reach it wins.
points-to-win: 250
# Points a team loses when one of its members dies.
death-penalty: 20
# What losing a zone does to its countdown: RESET or PAUSE, as for a KOTH.
contest-policy: RESET
when-contested: pause
# Hard stop with no winner, in seconds. 0 = runs until somebody wins.
max-duration-seconds: 0
# Local times at which it opens by itself; empty for staff only.
schedule: []
# Console commands run for the winner. Placeholders: %team%, %event%.
reward-commands: []
zones:
red:
display-name: "{error}Red"
corner-1: {x: 300, y: 60, z: 300}
corner-2: {x: 306, y: 70, z: 306}
blue:
display-name: "{primary}Blue"
corner-1: {x: 340, y: 60, z: 300}
corner-2: {x: 346, y: 70, z: 306}
green:
display-name: "{success}Green"
corner-1: {x: 300, y: 60, z: 340}
corner-2: {x: 306, y: 70, z: 346}
yellow:
display-name: "{warning}Yellow"
corner-1: {x: 340, y: 60, z: 340}
corner-2: {x: 346, y: 70, z: 346}
# ---------------------------------------------------------------------------
# DTC (Destroy The Core) and Last Break
# ---------------------------------------------------------------------------
# One engine, two sections. A block core stands inside a zone; teams break it
# over and over - each team waits break-cooldown-seconds between its OWN breaks,
# never blocked by another team's. The core is PERMANENT: it reappears one tick
# after every break, stays after the run ends - as its idle-material, bedrock,
# the way a Totem's column does - and is protected from explosions and pistons at
# all times, running or not.
#
# DTC ("counter"):
# SHARED - the core has "breaks" common health. When it reaches zero, the
# team with the most breaks of its OWN wins; a tie goes to whoever
# reached that count first.
# PER_TEAM - each team has its own count to "breaks"; the first to get there
# wins at once, whatever the others have.
# Last Break has no "counter": it is always common health, and whichever team
# lands the break that empties it wins - even with fewer breaks than another.
#
# Creative, spectator and teamless players never break the core (hardcoded).
# Staff set them up with /events create|claim|setzone|setblock|delete - see
# docs/gameplay/events.md - which write into this file.
# ---------------------------------------------------------------------------
dtc:
dtc:
display-name: "{primary}DTC"
world: world
corner-1: {x: 400, y: 60, z: 400}
corner-2: {x: 420, y: 80, z: 420}
# "material" is what the core is while the event runs; "idle-material" what it
# stands as between runs - bedrock, as a Totem's column does.
core: {x: 410, y: 65, z: 410, material: END_STONE, idle-material: BEDROCK}
counter: SHARED
breaks: 150
break-cooldown-seconds: 1
announce-at: [125, 100, 75, 50, 25, 10]
max-duration-seconds: 0
schedule: []
reward-commands: []
last-break:
last-break:
display-name: "{error}Last Break"
world: world
corner-1: {x: 450, y: 60, z: 400}
corner-2: {x: 470, y: 80, z: 420}
core: {x: 460, y: 65, z: 410, material: END_STONE, idle-material: BEDROCK}
breaks: 150
break-cooldown-seconds: 1
announce-at: [125, 100, 75, 50, 25, 10, 5, 3, 2, 1]
max-duration-seconds: 0
schedule: []
reward-commands: []
# ---------------------------------------------------------------------------
# Slide
# ---------------------------------------------------------------------------
# A zone where every team member present scores points-per-player for their
# team, every interval-seconds - cumulative, so three members score three times
# as fast. A death of any member, ANYWHERE on the server while the Slide runs,
# costs the team death-penalty points (never below zero; announce-deaths only
# mutes the broadcast, the points are always lost). The first team to
# points-to-win wins; several teams crossing it on the same tick hand it to
# whichever is highest, and an exact tie changes nothing. The top 3 teams are
# shown live on the scoreboard.
#
# Creative, spectator and teamless players never score (hardcoded).
# ---------------------------------------------------------------------------
slide:
slide:
display-name: "{success}Slide"
world: world
corner-1: {x: 500, y: 60, z: 500}
corner-2: {x: 515, y: 75, z: 515}
points-per-player: 1
interval-seconds: 1
death-penalty: 10
announce-deaths: true
points-to-win: 500
announce-at: [100, 250, 400, 450]
max-duration-seconds: 0
schedule: []
reward-commands: []
# ---------------------------------------------------------------------------
# Totem and Mini Totem
# ---------------------------------------------------------------------------
# A column of blocks standing on "base", height blocks high. Between runs it is
# idle-material (bedrock); a run turns it to material (quartz). Each block a
# team breaks - with one of the tools listed, every sword by default - becomes
# broken-material (bedrock again) and stays so. The first team to break the
# whole column wins. A block broken by ANY OTHER team starts the totem over,
# every block whole again (rival-break: RESET); with RESET_AND_START that break
# is then the other team's first. A Mini Totem is only a shorter column.
#
# Set one up in game: /events create totem <id> (or minitotem), then look at the
# block the column stands on and type /events setblock <id> - the column is
# built there, of bedrock. /events setzone <id> moves its zone.
#
# Creative, spectator and teamless players never break it (hardcoded). The
# column cannot be blown up or pushed by a piston, run or not. One Totem runs at
# a time.
# ---------------------------------------------------------------------------
totem:
totem:
display-name: "{warning}Totem"
world: world
corner-1: {x: 600, y: 60, z: 600}
corner-2: {x: 620, y: 80, z: 620}
base: {x: 610, y: 64, z: 610}
height: 5
material: QUARTZ_BLOCK
broken-material: BEDROCK
idle-material: BEDROCK
# The items a block may be broken with; an empty list allows anything.
tools: [WOODEN_SWORD, STONE_SWORD, COPPER_SWORD, IRON_SWORD, GOLDEN_SWORD, DIAMOND_SWORD, NETHERITE_SWORD]
# false: a block is mined the whole way with the sword, taking the time the
# game gives it (a few seconds for quartz). true: one hit breaks it at once.
instant-break: false
# RESET or RESET_AND_START - see above.
rival-break: RESET
# Announce every block broken; the start, a reset and the win are always announced.
announce-breaks: true
max-duration-seconds: 0
schedule: []
# Placeholders: %team%, %event%.
reward-commands: []
mini-totem:
display-name: "{warning}Mini Totem"
world: world
corner-1: {x: 650, y: 60, z: 600}
corner-2: {x: 670, y: 80, z: 620}
base: {x: 660, y: 64, z: 610}
height: 3
material: QUARTZ_BLOCK
broken-material: BEDROCK
idle-material: BEDROCK
tools: [WOODEN_SWORD, STONE_SWORD, COPPER_SWORD, IRON_SWORD, GOLDEN_SWORD, DIAMOND_SWORD, NETHERITE_SWORD]
instant-break: false
rival-break: RESET
announce-breaks: true
max-duration-seconds: 0
schedule: []
reward-commands: []