pvp.yml¶
Combat: deathbans and their rank tiers, the combat tag, the strength nerf, knockback, attack speed, safe zones, loot protection and friendly fire.
How it plays: Combat · Deathbans and lives
Every example on this page is taken from the shipped pvp.yml. Changes apply with /hcf reload.
Switch¶
pvp.yml
# Turning this off disables the whole module: no deathbans, no combat tags, no
# combat tweaks.
enabled: true
enabled: false turns the whole module off: no deathbans, no combat tags, no combat tuning. SOTW's no-PvP rule still holds.
Deathban¶
pvp.yml
deathban:
# Keep a player out of the server for a while after they die.
enabled: true
# Ban length for a player with no matching tier below.
duration-seconds: 3600
# Shorter bans for ranks. The SHORTEST matching tier wins, so granting a rank
# is always a reduction and never accidentally a penalty. Only the nodes listed
# here are checked, so an unrelated wildcard grant cannot silently shorten
# somebody's ban.
permission-tiers:
hcfcore.deathban.tier.short: 900
# Staff with hcfcore.deathban.bypass are never banned in the first place: the
# permission is read at the death, where the player is still on the server. It
# cannot be read at the login - the connection carries a profile, not a player -
# so granting it to somebody who is already banned does not let them back in.
# Clear that ban with /pvp lift <player>, which works from the console.
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
Deathbans at all |
duration-seconds |
3600 |
The ban for a player with no matching tier |
permission-tiers |
hcfcore.deathban.tier.short: 900 |
Permission node to ban length. The shortest tier a player holds wins; only the nodes listed are checked. Add your own |
Combat tag¶
pvp.yml
combat-tag:
enabled: true
# How long a hit keeps a player in combat.
duration-seconds: 30
# Tag the attacker as well as the victim, so hitting someone commits you too.
tag-attacker: true
# What a tagged player who disconnects leaves behind - the reason the tag exists
# at all: without it, a losing fight is escaped by pulling the plug.
# npc - a stand-in where they stood, at full health (logger below). Killed,
# their items fall and they die - deathban, DTR, points, as for a kill -
# and find an empty inventory when they come back. Hit, both combat tags
# start over. Still standing when the tag runs out, it goes and they keep
# everything; back before that, they take its place, with the health
# they left with less the damage it took.
# kill - their death, at once.
# none - nothing.
logout: npc
logger:
# Any living entity; it never walks or trades, and nothing but a player hurts it.
entity: VILLAGER
# Its health when it appears, whatever the player had - in half hearts: 20 is
# ten hearts.
health: 20
# A blow pushes it back, as it would the player. false: it does not budge.
knockback: true
# Refuse plugin teleports (such as /team hq) while tagged.
block-teleport: true
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
The combat tag at all |
duration-seconds |
30 |
How long a hit keeps a player in combat |
tag-attacker |
true |
Tag the attacker as well as the victim |
logout |
npc |
What a tagged player who logs out leaves: npc a stand-in that can be killed until the tag runs out, kill their death at once, none nothing. The old kill-on-logout: true reads as npc, false as none |
logger.entity |
VILLAGER |
The stand-in: any living entity but a player |
logger.health |
20 |
Its health when it appears, whatever the player had, in half hearts |
logger.knockback |
true |
A blow pushes it back as it would the player; false, it does not budge. It never walks either way |
block-teleport |
true |
Refuse plugin teleports (/team hq, /spawn...) while tagged |
Ender pearl cooldown¶
pvp.yml
# The HCF pearl cooldown: a wait between two ender pearls, shown on the
# scoreboard (%pearl_line%) and on Lunar Client. A partner item's Fake Pearl
# has its own and never starts this one.
ender-pearl-cooldown:
enabled: true
seconds: 15
# The pearls in the hotbar show the wait, greyed out as the game shows its own.
show-on-item: true
# A death ends it.
clear-on-death: true
# Refuse plugin teleports (/spawn, /team hq, /team stuck, /top, /world) until
# it is over: a pearl out of a fight is not followed by a command out of it.
block-teleport: true
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
The pearl cooldown at all |
seconds |
15 |
The wait between two pearls |
show-on-item |
true |
The pearls in the hotbar are greyed out for the wait, as the game shows its own |
clear-on-death |
true |
A death ends it |
block-teleport |
true |
Refuse plugin teleports (/spawn, /team hq, /team stuck, /top, /world) until it is over |
Item cooldowns¶
pvp.yml
# A wait between two uses of an item: eaten (a golden apple, a chorus fruit) or,
# for a totem, saving its holder. Used again meanwhile, it is refused - a totem
# on cooldown saves nobody. The wait is kept on the player: an hour's Gapple
# survives logouts and restarts.
#
# Each item has an id - its scoreboard rows are %cooldown_<id>% (the time) and
# %cooldown_<id>_line% (a whole row, from lang/en.yml) - and:
# material the item
# seconds the wait
# name how the scoreboard and the messages call it
# show-on-item the items in the hotbar show the wait, greyed out as the
# game shows its own
# clear-on-death a death ends it
# Partner items (abilities.yml) are never counted: a Golden Head has its own.
item-cooldowns:
enabled: true
items:
notch-apple:
material: ENCHANTED_GOLDEN_APPLE
seconds: 3600
name: "{primary}Gapple"
show-on-item: true
clear-on-death: false
golden-apple:
material: GOLDEN_APPLE
seconds: 10
name: "{primary}Crapple"
show-on-item: true
clear-on-death: true
chorus-fruit:
material: CHORUS_FRUIT
seconds: 15
name: "{primary}Chorus"
show-on-item: true
clear-on-death: true
totem:
material: TOTEM_OF_UNDYING
seconds: 120
name: "{primary}Totem"
show-on-item: true
clear-on-death: false
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
Item cooldowns at all |
items.<id> |
Gapple, Crapple, chorus fruit, totem | One item. The id names it in %cooldown_<id>%, %cooldown_<id>_line% and /cooldown reset |
items.<id>.material |
The item; one cooldown per item | |
items.<id>.seconds |
3600 · 10 · 15 · 120 |
The wait |
items.<id>.name |
&6Gapple… |
How the scoreboard and the messages call it |
items.<id>.show-on-item |
true |
The items in the hotbar are greyed out for the wait |
items.<id>.clear-on-death |
Gapple and totem false, others true |
A death ends it |
An item is used when it is eaten, or — a totem — when it saves its holder. The wait is kept on the player: it survives logouts and restarts.
Strength nerf¶
pvp.yml
strength-nerf:
# The historic HCF nerf of Strength potions.
enabled: true
# ⚠️ Damage vanilla adds PER STRENGTH LEVEL. This module subtracts it and adds
# its own figure instead.
#
# This is a config value on purpose. Mojang has changed the formula before (a
# damage multiplier before 1.9, a flat bonus after), and the value for the
# targeted version could not be confirmed against the official documentation
# when this module was written, and a guess is not presented as fact here.
# VERIFY IT for your server version and correct it here; no recompilation is
# needed.
vanilla-bonus-per-level: 3.0
# Damage this module adds per level instead.
nerfed-bonus-per-level: 1.5
# (An "effect-names" list used to follow here, for servers whose API spelled
# the Strength effect differently. It is read through Paper's STRENGTH constant
# now, verified in the 26.2 sources, and the list is ignored if still present.)
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
The nerf at all |
vanilla-bonus-per-level |
3.0 |
The damage vanilla adds per Strength level, subtracted. Check it for your version |
nerfed-bonus-per-level |
1.5 |
The damage added per level instead |
Knockback and attack speed¶
pvp.yml
knockback:
# Scale knockback. Off by default: this changes the feel of combat, so it
# should be a deliberate choice rather than something a server inherits.
#
# Only knockback from one player hitting another - with a weapon, a fist or a
# projectile - is scaled, through Paper's own knockback event: the knockback
# itself is scaled, not whatever else is moving the victim at that moment.
enabled: false
# 1.0 is vanilla.
horizontal: 1.0
vertical: 1.0
pvp.yml
attack-speed:
# Every player's attack-speed attribute. Off by default: like knockback, this
# changes how combat feels, so it should be a deliberate choice.
#
# The value replaces the player's base; the weapon in hand still adds its own
# modifier on top (a sword lowers it). The higher the value, the shorter the
# recharge between full-strength hits. Vanilla's base is 4 (the Minecraft Wiki's
# figure - Paper does not document it; the plugin reads the real base at runtime
# and only adds the difference). Servers after a pre-1.9 feel set a large value;
# how large removes the recharge entirely is Mojang's formula, so try it.
#
# Given as a modifier that is never saved to player data: turning this off, or
# removing the plugin, leaves nobody with a changed attribute.
enabled: false
value: 4.0
| Key | As shipped | What it does |
|---|---|---|
knockback.enabled |
false |
Scale the knockback of a player hitting a player |
knockback.horizontal, vertical |
1.0, 1.0 |
Multipliers; 1.0 is vanilla |
attack-speed.enabled |
false |
Replace every player's base attack speed |
attack-speed.value |
4.0 |
The base; vanilla's is 4. Higher recharges faster |
Safe zones¶
pvp.yml
safe-zones:
# Disable PvP on the land of server teams created as SAFE zones - spawn,
# typically. Server teams created as COMBAT zones (warzone, roads, event
# grounds) are fought on like anywhere else. Both are made the same way:
# /team createsystem <name> <safe|combat>, which hands over the claiming
# wand to draw its land (again later: /team forceclaim <name>),
# and /team setzone <name> <safe|combat> switches one later. An event's
# territory is a combat zone made by /events create or /events claim.
# Turning this off makes every server team fightable, whatever its kind - and
# takes the two rules below with it.
enabled: true
# No damage of any kind on safe-zone land: a fall, fire, drowning, suffocation,
# a mob, a cactus. Spawn is where players sort themselves out between fights.
# The void and /kill still land: a player fallen below spawn must not fall for ever.
no-damage: true
# Hunger never drops there, and is filled back up when a player walks, teleports
# or logs in on safe-zone land. "heal" does the same with health.
keep-fed: true
heal: true
# A player in combat cannot enter a safe zone until their tag runs out - the
# classic HCF rule, so a fight is not ended by running home to spawn.
block-combat-tagged: true
# What they see of the border they may not cross: a wall, drawn like the
# claiming wand's columns - sent to that player alone, never placed. Only the
# part of the border within radius-blocks of them is drawn, all round: a ball of
# wall where they stand, not a sheet up to the sky.
wall:
enabled: true
material: RED_STAINED_GLASS
radius-blocks: 15
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
No PvP on the land of a safe server team. false makes every server team fightable, whatever its kind — and takes the two below with it |
no-damage |
true |
No damage of any kind there: a fall, fire, drowning, suffocation, a mob, a cactus. The void and /kill still land |
keep-fed |
true |
Hunger never drops there, and is filled back up when a player walks, teleports or logs in on safe-zone land |
heal |
true |
Health is filled back up there the same way |
block-combat-tagged |
true |
A player in combat cannot enter a safe zone until their tag runs out |
wall.enabled |
true |
Whether they see the border they may not cross, drawn like the claiming wand's columns — sent to that player alone, never placed |
wall.material |
RED_STAINED_GLASS |
The block it is drawn in |
wall.radius-blocks |
15 |
The border's air blocks within this distance of the player are drawn, all round — a ball of wall where they stand. The older width-blocks, top-y and minimum-height are no longer read. |
Death signs¶
pvp.yml
# A kill by a player leaves a sign: who died, to whom, and when - its four lines
# are in the language file (pvp.death-sign). The text is on the sign itself, so it
# stays when the sign is placed, and the sign is waxed: nobody rewrites it.
death-signs:
enabled: true
# Any standing or hanging sign.
material: OAK_SIGN
# false: among the dead player's drops, covered by loot protection like the rest.
# true: straight into the killer's inventory (at their feet when it is full).
to-killer: false
# How %date% is written (Java DateTimeFormatter letters).
date-format: "dd/MM/yyyy HH:mm"
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
A kill by a player leaves a sign |
material |
OAK_SIGN |
Any standing or hanging sign |
to-killer |
false |
false: among the dead player's drops, under loot protection. true: into the killer's inventory, at their feet when it is full |
date-format |
dd/MM/yyyy HH:mm |
How %date% is written |
The four lines are pvp.death-sign.line-1 to line-4 in the language file.
Loot protection¶
pvp.yml
# Anticlean - loot protection. For a few seconds after a kill, what the dead player
# drops can be picked up only by the killer (and, with team-shares, the killer's
# team): no other player, no mob, no hopper. Then it is ordinary loot. A death with
# no killer - lava, a fall - is not protected. The drops still fall where they
# always did; they only carry the claim.
loot-protection:
enabled: true
seconds: 10
team-shares: true
| Key | As shipped | What it does |
|---|---|---|
enabled |
true |
Protect a kill's drops |
seconds |
10 |
How long only the killer may pick them up |
team-shares |
true |
The killer's team may too |
Friendly fire¶
pvp.yml
# Hits between players on the same side. The default rule:
# teammates never hurt each other, and allies only inside an event area - a running
# KOTH, Citadel or Conquest zone, or a hit on or by the King during Kill the King -
# since that is where allied teams compete (captures and the King are strictly per
# team). A refused hit does nothing and tags nobody.
friendly-fire:
# Can teammates hurt each other?
teammates: false
# Where can allies hurt each other? ALWAYS, EVENT_AREAS or NEVER.
allies: EVENT_AREAS
| Key | As shipped | What it does |
|---|---|---|
teammates |
false |
Whether teammates can hurt each other |
allies |
EVENT_AREAS |
Where allies can hurt each other: ALWAYS, EVENT_AREAS (a running KOTH, Citadel or Conquest zone, and the King) or NEVER |
The whole shipped file¶
pvp.yml
# ---------------------------------------------------------------------------
# HCFCore - PvP / combat configuration
# ---------------------------------------------------------------------------
# Deathban, combat tag, strength nerf, safe zones, loot protection and
# anti-logout. 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.
# ---------------------------------------------------------------------------
# Turning this off disables the whole module: no deathbans, no combat tags, no
# combat tweaks.
enabled: true
deathban:
# Keep a player out of the server for a while after they die.
enabled: true
# Ban length for a player with no matching tier below.
duration-seconds: 3600
# Shorter bans for ranks. The SHORTEST matching tier wins, so granting a rank
# is always a reduction and never accidentally a penalty. Only the nodes listed
# here are checked, so an unrelated wildcard grant cannot silently shorten
# somebody's ban.
permission-tiers:
hcfcore.deathban.tier.short: 900
# Staff with hcfcore.deathban.bypass are never banned in the first place: the
# permission is read at the death, where the player is still on the server. It
# cannot be read at the login - the connection carries a profile, not a player -
# so granting it to somebody who is already banned does not let them back in.
# Clear that ban with /pvp lift <player>, which works from the console.
combat-tag:
enabled: true
# How long a hit keeps a player in combat.
duration-seconds: 30
# Tag the attacker as well as the victim, so hitting someone commits you too.
tag-attacker: true
# What a tagged player who disconnects leaves behind - the reason the tag exists
# at all: without it, a losing fight is escaped by pulling the plug.
# npc - a stand-in where they stood, at full health (logger below). Killed,
# their items fall and they die - deathban, DTR, points, as for a kill -
# and find an empty inventory when they come back. Hit, both combat tags
# start over. Still standing when the tag runs out, it goes and they keep
# everything; back before that, they take its place, with the health
# they left with less the damage it took.
# kill - their death, at once.
# none - nothing.
logout: npc
logger:
# Any living entity; it never walks or trades, and nothing but a player hurts it.
entity: VILLAGER
# Its health when it appears, whatever the player had - in half hearts: 20 is
# ten hearts.
health: 20
# A blow pushes it back, as it would the player. false: it does not budge.
knockback: true
# Refuse plugin teleports (such as /team hq) while tagged.
block-teleport: true
# The HCF pearl cooldown: a wait between two ender pearls, shown on the
# scoreboard (%pearl_line%) and on Lunar Client. A partner item's Fake Pearl
# has its own and never starts this one.
ender-pearl-cooldown:
enabled: true
seconds: 15
# The pearls in the hotbar show the wait, greyed out as the game shows its own.
show-on-item: true
# A death ends it.
clear-on-death: true
# Refuse plugin teleports (/spawn, /team hq, /team stuck, /top, /world) until
# it is over: a pearl out of a fight is not followed by a command out of it.
block-teleport: true
# A wait between two uses of an item: eaten (a golden apple, a chorus fruit) or,
# for a totem, saving its holder. Used again meanwhile, it is refused - a totem
# on cooldown saves nobody. The wait is kept on the player: an hour's Gapple
# survives logouts and restarts.
#
# Each item has an id - its scoreboard rows are %cooldown_<id>% (the time) and
# %cooldown_<id>_line% (a whole row, from lang/en.yml) - and:
# material the item
# seconds the wait
# name how the scoreboard and the messages call it
# show-on-item the items in the hotbar show the wait, greyed out as the
# game shows its own
# clear-on-death a death ends it
# Partner items (abilities.yml) are never counted: a Golden Head has its own.
item-cooldowns:
enabled: true
items:
notch-apple:
material: ENCHANTED_GOLDEN_APPLE
seconds: 3600
name: "{primary}Gapple"
show-on-item: true
clear-on-death: false
golden-apple:
material: GOLDEN_APPLE
seconds: 10
name: "{primary}Crapple"
show-on-item: true
clear-on-death: true
chorus-fruit:
material: CHORUS_FRUIT
seconds: 15
name: "{primary}Chorus"
show-on-item: true
clear-on-death: true
totem:
material: TOTEM_OF_UNDYING
seconds: 120
name: "{primary}Totem"
show-on-item: true
clear-on-death: false
strength-nerf:
# The historic HCF nerf of Strength potions.
enabled: true
# ⚠️ Damage vanilla adds PER STRENGTH LEVEL. This module subtracts it and adds
# its own figure instead.
#
# This is a config value on purpose. Mojang has changed the formula before (a
# damage multiplier before 1.9, a flat bonus after), and the value for the
# targeted version could not be confirmed against the official documentation
# when this module was written, and a guess is not presented as fact here.
# VERIFY IT for your server version and correct it here; no recompilation is
# needed.
vanilla-bonus-per-level: 3.0
# Damage this module adds per level instead.
nerfed-bonus-per-level: 1.5
# (An "effect-names" list used to follow here, for servers whose API spelled
# the Strength effect differently. It is read through Paper's STRENGTH constant
# now, verified in the 26.2 sources, and the list is ignored if still present.)
knockback:
# Scale knockback. Off by default: this changes the feel of combat, so it
# should be a deliberate choice rather than something a server inherits.
#
# Only knockback from one player hitting another - with a weapon, a fist or a
# projectile - is scaled, through Paper's own knockback event: the knockback
# itself is scaled, not whatever else is moving the victim at that moment.
enabled: false
# 1.0 is vanilla.
horizontal: 1.0
vertical: 1.0
attack-speed:
# Every player's attack-speed attribute. Off by default: like knockback, this
# changes how combat feels, so it should be a deliberate choice.
#
# The value replaces the player's base; the weapon in hand still adds its own
# modifier on top (a sword lowers it). The higher the value, the shorter the
# recharge between full-strength hits. Vanilla's base is 4 (the Minecraft Wiki's
# figure - Paper does not document it; the plugin reads the real base at runtime
# and only adds the difference). Servers after a pre-1.9 feel set a large value;
# how large removes the recharge entirely is Mojang's formula, so try it.
#
# Given as a modifier that is never saved to player data: turning this off, or
# removing the plugin, leaves nobody with a changed attribute.
enabled: false
value: 4.0
safe-zones:
# Disable PvP on the land of server teams created as SAFE zones - spawn,
# typically. Server teams created as COMBAT zones (warzone, roads, event
# grounds) are fought on like anywhere else. Both are made the same way:
# /team createsystem <name> <safe|combat>, which hands over the claiming
# wand to draw its land (again later: /team forceclaim <name>),
# and /team setzone <name> <safe|combat> switches one later. An event's
# territory is a combat zone made by /events create or /events claim.
# Turning this off makes every server team fightable, whatever its kind - and
# takes the two rules below with it.
enabled: true
# No damage of any kind on safe-zone land: a fall, fire, drowning, suffocation,
# a mob, a cactus. Spawn is where players sort themselves out between fights.
# The void and /kill still land: a player fallen below spawn must not fall for ever.
no-damage: true
# Hunger never drops there, and is filled back up when a player walks, teleports
# or logs in on safe-zone land. "heal" does the same with health.
keep-fed: true
heal: true
# A player in combat cannot enter a safe zone until their tag runs out - the
# classic HCF rule, so a fight is not ended by running home to spawn.
block-combat-tagged: true
# What they see of the border they may not cross: a wall, drawn like the
# claiming wand's columns - sent to that player alone, never placed. Only the
# part of the border within radius-blocks of them is drawn, all round: a ball of
# wall where they stand, not a sheet up to the sky.
wall:
enabled: true
material: RED_STAINED_GLASS
radius-blocks: 15
# A kill by a player leaves a sign: who died, to whom, and when - its four lines
# are in the language file (pvp.death-sign). The text is on the sign itself, so it
# stays when the sign is placed, and the sign is waxed: nobody rewrites it.
death-signs:
enabled: true
# Any standing or hanging sign.
material: OAK_SIGN
# false: among the dead player's drops, covered by loot protection like the rest.
# true: straight into the killer's inventory (at their feet when it is full).
to-killer: false
# How %date% is written (Java DateTimeFormatter letters).
date-format: "dd/MM/yyyy HH:mm"
# Anticlean - loot protection. For a few seconds after a kill, what the dead player
# drops can be picked up only by the killer (and, with team-shares, the killer's
# team): no other player, no mob, no hopper. Then it is ordinary loot. A death with
# no killer - lava, a fall - is not protected. The drops still fall where they
# always did; they only carry the claim.
loot-protection:
enabled: true
seconds: 10
team-shares: true
# Hits between players on the same side. The default rule:
# teammates never hurt each other, and allies only inside an event area - a running
# KOTH, Citadel or Conquest zone, or a hit on or by the King during Kill the King -
# since that is where allied teams compete (captures and the King are strictly per
# team). A refused hit does nothing and tags nobody.
friendly-fire:
# Can teammates hurt each other?
teammates: false
# Where can allies hurt each other? ALWAYS, EVENT_AREAS or NEVER.
allies: EVENT_AREAS