Content generated with AI — it may contain mistakes.

Systems

Raids

Lives, the core's health, kills, what a raid opens, siege windows, the offline shield, raid states and announcements, with every raids key.

Raids give every protection a number of lives. Enemies take them by hitting the core and by killing members inside. A protection with no lives left is raidable for a while: enemies may break, place and open containers in it, and anybody may walk in. When the raid ends the protection gets some lives back and a cooldown during which it cannot lose any.

Raids are off by default: they change how the whole server plays. Turn them on with submodules.raids in config.yml; every key on this page sits under raids in that file. Lives, raids and cooldowns are stored with the protection, so they are the same on every server of a network.

Who counts as an enemy

A player is an enemy of a protection unless they are:

  • the owner,
  • a member, including through a clan added to it, and a tenant renting the whole protection,
  • a clan ally of the owner, while allies-are-friends is true (the default) and a clan plugin is installed.

Only enemies damage a core, take lives through kills and get the raid permissions. Anybody else breaking the core is refused as usual. The owner breaking it, or a player holding exyliaprotections.admin, is asked whether to pick it up, as always.

Lives

KeyDefaultWhat it does
tier-livessmall: 3, medium: 4, large: 5Lives per tier
default-lives3Lives of a tier left out of tier-lives
regen-minutes60Minutes for one life to grow back. 0 turns it off
restore-price5000What buying one life back costs. 0 turns it off
restore-currencyblankCurrency of that price. Blank is the default currency

A protection's maximum is its tier's lives plus the bonus-lives of its level while upgrades are on (see Land tools). It is never below 1. Lowering a tier's lives in the config caps what protections already hold.

Growing back. One life grows back every regen-minutes, up to the maximum. The clock starts when the first life is lost, not when the protection was made, and unfinished progress is kept: with 60 minutes a life, a protection that lost two has one back after 60 minutes and both after 120. Nothing grows back while it is raidable.

Buying one back. Any member clicks Lives in the protection's Defense section, confirms, and pays restore-price in restore-currency for one life. It is refused while the protection is raidable or already full, and allowed during the cooldown. When the write fails, the price is paid back.

The core's health

An enemy who breaks the core does not break it. The core takes damage instead, and loses a life when its health runs out.

KeyDefaultWhat it does
core-health150Health per life
tool-damageNETHERITE_PICKAXE: 4, DIAMOND_PICKAXE: 3, IRON_PICKAXE: 2Damage per hit by the item in the main hand
default-damage1Damage of a hit with anything else
hit-cooldown-millis500A player's hits closer together than this are ignored, silently
core-heal-seconds30Seconds without a hit before a damaged core is back to full health
hit-soundBLOCK_ANVIL_LAND|0.4|1.6The sound the attacker hears on each hit
allow-hidden-corefalseWhether cores may be hidden while raids are on

Every hit deals at least 1. At the defaults one life costs 150 hits with an empty hand, or 38 with a netherite pickaxe. When health reaches 0 the protection loses a life and the core starts again at full health. After each hit the attacker sees an action bar, raids.hit-actionbar in the messages file: ⚔ Core » %health%/%max_health% ┃ Lives » %lives%/%max_lives%, which also takes %name%.

The core's health is kept only in the memory of the protection's server. A restart heals it, which changes little, because a core left alone for core-heal-seconds heals anyway.

Land without a core loses lives only through kills

Land protected by selection has no core, and a hidden core cannot be hit. Both lose lives only when members are killed. With allow-hidden-core: false, hiding a core is refused while raids are on. Cores hidden before raids were turned on stay hidden.

The WORLDGUARD backend blocks core hits

A hit is read from the break of the core block, and only when no plugin cancelled that break first. Under the WORLDGUARD backend every protection is a WorldGuard region whose owner and members are the only ones allowed to build, and WorldGuard cancels an outsider's break before this plugin sees it. As the code stands, enemies cannot damage cores under that backend; lives are only taken through kills. See Backends.

Kills

KeyDefaultWhat it does
lives-per-kill1Lives an enemy takes by killing a member inside. 0 turns it off
kill-cooldown-minutes10Minutes before killing the same member in the same protection takes a life again

The victim must be the owner or a member, killed by an enemy player while standing inside that protection. The offline shield never applies to a kill, since the victim was online. A raid already running, the cooldown and closed siege windows still do. A kill that takes nothing is not told to the killer.

When lives cannot be taken

A hit takes nothing, and the attacker is told why, when:

  1. raids are off,
  2. the protection is already raidable,
  3. it is in the cooldown after a raid,
  4. siege windows are on and none is open,
  5. the offline shield is up.

The attacker sees these refusals at most once every two seconds.

The raid

Taking the last life starts the raid.

KeyDefaultWhat it does
raidable-minutes30How long the raid lasts
raidable-permissionsbreak, place, containers, doors, redstone, bucketsWhat enemies may do inside. Any role permission key
explosions-while-raidablefalseWhether explosions break blocks even with the protection's explosions flag off
lives-after-raid1Lives it has once the raid ends. Kept between 1 and the maximum
cooldown-minutes120Minutes after the raid during which it cannot lose lives

While it lasts:

  • Every player online on that server with raid announcements on is told that %raider% raided %name%, and for how many minutes it is open.
  • Enemies have raidable-permissions inside, whatever the roles say. Members keep their own rights.
  • Anybody may enter, whatever the lock or the bans say.
  • Everybody standing inside sees a boss bar, raids.raidable-bar in the messages file: ⚔ %name% is raidable » %time_left% ⌚, red, draining as time runs out. It also takes %owner% and %raider%.
  • The protection cannot be picked up, moved, deleted, listed for sale, given away, offered for rent, upgraded or merged. A sale already listed is cancelled and the seller told.
  • Member perks stop, its public warp is refused or hidden, and new rents are refused.
  • On BlueMap and Dynmap it is drawn in the raidable colour at the next redraw.

The same refusal of pickup, move, delete, sale, gift, rent offer, upgrade and merge applies while the core is damaged and not yet healed.

The server ends raids once a second. When time runs out the protection has lives-after-raid lives and starts its cooldown. Short of the last life, each lost life is told to the attacker and to every defender online on that server, and written to the protection's log.

With the WORLDGUARD backend

While a protection is raidable its mirrored WorldGuard region lets everybody build and drops its entry denial. That is wider than raidable-permissions, which this plugin enforces itself. The region goes back to normal when the raid ends.

Siege windows

With windows on, lives can only be lost at the times you choose.

KeyDefaultWhat it does
siege-windows.enabledfalseWhether lives can only be lost inside a window
siege-windows.timezoneblankTime zone the windows are read in, like Europe/Madrid. Blank or unknown is the server's
siege-windows.windowsSATURDAY 18:00-22:00, SUNDAY 18:00-22:00The windows
plugins/ExyliaProtections/config.yml
raids:
  siege-windows:
    enabled: true
    timezone: "Europe/Madrid"
    windows:
      - "SATURDAY 18:00-22:00"
      - "FRIDAY 23:00-02:00"
      - "DAILY 12:00-12:30"

A window is a day in English (MONDAY to SUNDAY), or DAILY for every day, a space, then HH:MM-HH:MM. The start is inside the window and the end is not. A window that ends before it starts runs past midnight into the next day: FRIDAY 23:00-02:00 is open on Saturday at 01:30. Lines that cannot be read are skipped.

When a window opens or closes, every player online with raid announcements on is told. A raid that started inside a window runs its full raidable-minutes, even past the window's end. With effects.no-flight-during-siege on, member flight stops while a window is open (see Land tools).

The offline shield

The shield stops a core from being hit while nobody who defends the protection is online.

KeyDefaultWhat it does
offline-shield.enabledtrueWhether the shield is used
offline-shield.grace-minutes10Minutes after the last defender leaves this server before the shield goes up
offline-shield.clan-members-countfalseWhether members of a clan added to the protection count as defenders

The defenders are the owner and the player members, plus the members of added clans when clan-members-count is on. A defender online on the protection's server, or one who left it less than grace-minutes ago, keeps the shield down.

On a network the other servers are asked next, about the first 32 defenders. If none of them is online anywhere, the shield is up. If the answer does not come, the shield stays up and the land stays protected. The grace only counts players who left this server.

The shield blocks hits on the core only, never kills.

Raid states

The Lives button, the Defense section and %exyliaprotections_protections_raid_state% show one of five states, checked in this order:

StateShown asWhen
RaidableRaidableA raid is running
Cooling downCooling downIn the cooldown after a raid
ShieldedShieldedEvery defender is offline, as far as this server can tell without asking the network
Under siegeUnder siegeSiege windows on and one open. With windows off, while the core is damaged
SafeSafeAnything else

With raids off the Defense section reads Off. The Lives button also shows the core's health, the time left of a raid or cooldown, and the restore price. The labels are state-safe, state-shielded, state-siege, state-raidable and state-cooldown in the messages file.

Announcements

Raids, siege windows opening and closing, and protections abandoned by upkeep with upkeep.announce on, are sent to every player online on the server where they happen, and to its console. There is no network-wide announcement.

With ExyliaSurvivalCore installed, each player can mute them in /settings with the Raid announcements switch, the raid-announcements setting. The service is looked up on every announcement, so it applies as soon as the survival core is enabled. Without the survival core, or for a player it has no record of, everybody receives them.

The survival core also gets statistics from raids: protections.raids for the raider who took the last life, and protections.lives_lost for the owner of the protection that lost them.

Placeholders

These read the protection the player stands in. They are blank outside one and while raids are off.

PlaceholderWhat it returns
%exyliaprotections_protections_lives%Lives left
%exyliaprotections_protections_max_lives%Lives at most
%exyliaprotections_protections_raid_state%The state label above

Admin

Admins set a protection's lives (ending any raid and cooldown) or clear its raid for every life back from the admin screen, and the tier editor writes a tier's tier-lives. See Administration.

All keys

plugins/ExyliaProtections/config.yml
submodules:
  raids: false
raids:
  tier-lives:
    small: 3
    medium: 4
    large: 5
  default-lives: 3
  core-health: 150
  tool-damage:
    NETHERITE_PICKAXE: 4
    DIAMOND_PICKAXE: 3
    IRON_PICKAXE: 2
  default-damage: 1
  hit-cooldown-millis: 500
  core-heal-seconds: 30
  hit-sound: "BLOCK_ANVIL_LAND|0.4|1.6"
  lives-per-kill: 1
  kill-cooldown-minutes: 10
  allies-are-friends: true
  raidable-minutes: 30
  lives-after-raid: 1
  cooldown-minutes: 120
  raidable-permissions: [break, place, containers, doors, redstone, buckets]
  explosions-while-raidable: false
  regen-minutes: 60
  restore-price: 5000
  restore-currency: ""
  allow-hidden-core: false
  siege-windows:
    enabled: false
    timezone: ""
    windows:
      - "SATURDAY 18:00-22:00"
      - "SUNDAY 18:00-22:00"
  offline-shield:
    enabled: true
    grace-minutes: 10
    clan-members-count: false

The hit action bar and the raidable boss bar are raids.hit-actionbar and raids.raidable-bar in lang/<language>/messages.yml; files from before version 5 of config.yml had them in the config and are moved over on the first start.

Something missing on this page? Tell us on Discord