Revive Beacon Configuration (revive-beacon.yml)

Table of contents

  1. Core Settings
    1. revive-beacon.enabled
    2. revive-beacon.voucher-heart-id
    3. revive-beacon.require-sneak
    4. revive-beacon.max-distance
    5. revive-beacon.consume-on-fail
    6. revive-beacon.require-voucher-in-beacon
    7. revive-beacon.voucher-hold-seconds
    8. revive-beacon.whitelist-enabled
  2. Target Strategy
    1. revive-beacon.target-strategy
  3. Broadcast
    1. revive-beacon.broadcast.enabled
    2. revive-beacon.broadcast.hold-start-message-key
    3. revive-beacon.broadcast.complete-message-key
  4. Animation
    1. revive-beacon.animation.enabled
    2. revive-beacon.animation.duration-ticks
    3. revive-beacon.animation.spiral-steps
    4. revive-beacon.animation.ring-count
    5. revive-beacon.animation.vertical-lift-per-step
    6. Particle definitions
    7. Sound definitions
    8. Full animation example
  5. Beacon Whitelist (revive-beacon-whitelist.yml)
  6. Beacon Spawn
    1. spawn.enabled
    2. spawn.max-concurrent
    3. WorldGuard protection (spawn.worldguard)
    4. Countdown timer (spawn.countdown)
    5. Random spawn bounds (spawn.random-spawn)
    6. Auto-schedule (spawn.schedule)
    7. Expiry (spawn.expiry-minutes)
    8. Availability event (spawn.availability-event)
    9. Full spawn example

The revive beacon system allows a banned player to be revived by right-clicking (or shift-right-clicking) a placed beacon with a special revive voucher heart item. All settings live under the revive-beacon: root key.


Core Settings

revive-beacon.enabled

  • Type: boolean
  • Default: true
  • Master switch. When false, no beacon interactions trigger revive logic.

revive-beacon.voucher-heart-id

  • Type: string
  • Default: "revive"
  • The heart ID (from hearts.yml) that acts as the revive voucher. Only items with this ID will trigger a revive when used on a beacon.

revive-beacon.require-sneak

  • Type: boolean
  • Default: false
  • When true, the player must be sneaking (shift held) while right-clicking the beacon to trigger a revive.

revive-beacon.max-distance

  • Type: number
  • Default: 8.0
  • Radius in blocks around the beacon to search for a valid revive target.

revive-beacon.consume-on-fail

  • Type: boolean
  • Default: false
  • When true, the voucher item is consumed even if no valid revive target is found. When false, a failed revive does not cost the item.

revive-beacon.require-voucher-in-beacon

  • Type: boolean
  • Default: true
  • When true, the revive attempt requires the player to hold the voucher and complete a timed interaction (voucher-hold-seconds) rather than consuming it immediately.

revive-beacon.voucher-hold-seconds

  • Type: number
  • Default: 300.0
  • Number of seconds the player must hold the interaction to complete a revive when require-voucher-in-beacon is true.

revive-beacon.whitelist-enabled

  • Type: boolean
  • Default: false
  • When true, only beacons listed in revive-beacon-whitelist.yml can be used as revive beacons.

Target Strategy

revive-beacon.target-strategy

  • Type: string
  • Default: COMMAND_SELECTION
  • Controls how the revive target is chosen. Accepted values:
Strategy Description
NEAREST_BANNED Revives the closest banned player within max-distance. Ties are broken by UUID lexical order.
COMMAND_SELECTION The reviver must first run /revive <player> to pre-select a target. The beacon interaction then revives that specific player.

Broadcast

revive-beacon.broadcast.enabled

  • Type: boolean
  • Default: false
  • When true, broadcasts a server-wide message at the start and completion of a revive.

revive-beacon.broadcast.hold-start-message-key

  • Type: string
  • Default: "beacon-revive-broadcast-hold-start"
  • Language message key sent when a player begins holding the revive interaction.

revive-beacon.broadcast.complete-message-key

  • Type: string
  • Default: "beacon-revive-broadcast-complete"
  • Language message key sent when the revive completes.

Animation

Visual effects played on the reviver and in the world during and after a successful revive.

revive-beacon.animation.enabled

  • Type: boolean
  • Default: true

revive-beacon.animation.duration-ticks

  • Type: integer
  • Default: 30
  • Length of the animation in ticks.

revive-beacon.animation.spiral-steps

  • Type: integer
  • Default: 10
  • Number of steps in the spiral particle effect.

revive-beacon.animation.ring-count

  • Type: integer
  • Default: 3
  • Number of particle rings during the animation.

revive-beacon.animation.vertical-lift-per-step

  • Type: number
  • Default: 0.08
  • How much the animation rises per step.

Particle definitions

Three named particle effects are configurable: spiral, ring, and impact. Each supports:

Field Type Description
type string Bukkit particle name (e.g. END_ROD, ENCHANT, TOTEM_OF_UNDYING).
count integer Particles per burst.
offset-x/y/z number Spread radius on each axis.
speed number Particle speed/spread multiplier.

Sound definitions

Two sounds fire during the animation: loop (played during the hold) and impact (played on completion). Each supports:

Field Type Description
type string Bukkit sound name (e.g. BLOCK_BEACON_AMBIENT).
volume number Playback volume (0.0–1.0+).
pitch number Playback pitch (0.5–2.0).

Full animation example

animation:
  enabled: true
  duration-ticks: 30
  spiral-steps: 10
  ring-count: 3
  vertical-lift-per-step: 0.08
  particles:
    spiral:
      type: END_ROD
      count: 2
      offset-x: 0.0
      offset-y: 0.0
      offset-z: 0.0
      speed: 0.0
    ring:
      type: ENCHANT
      count: 2
      offset-x: 0.03
      offset-y: 0.03
      offset-z: 0.03
      speed: 0.01
    impact:
      type: TOTEM_OF_UNDYING
      count: 20
      offset-x: 0.4
      offset-y: 0.6
      offset-z: 0.4
      speed: 0.01
  sounds:
    loop:
      type: BLOCK_BEACON_AMBIENT
      volume: 0.3
      pitch: 1.2
    impact:
      type: BLOCK_BEACON_ACTIVATE
      volume: 1.0
      pitch: 1.15

Beacon Whitelist (revive-beacon-whitelist.yml)

When whitelist-enabled: true in revive-beacon.yml, only beacon blocks at listed coordinates can trigger revives.

The whitelist is stored in a separate file (revive-beacon-whitelist.yml) and is managed entirely at runtime via commands — do not edit it manually while the server is running, as in-memory state will overwrite your changes on the next write.

Manage whitelisted beacons with the /lifesteal admin commands. The file structure looks like:

revive-beacon-whitelist:
  whitelisted-beacons: []

Each entry added at runtime stores world, x, y, z coordinates. Leave whitelist-enabled: false (the default) to allow any beacon to be used.


Beacon Spawn

The beacon spawn subsystem lets the plugin place BEACON blocks in the world automatically — on a recurring schedule, manually via command, or from a fixed set of coordinates. It lives under the spawn: key inside revive-beacon.yml and requires revive-beacon.enabled: true.

spawn.enabled

  • Type: boolean
  • Default: false
  • Master switch for the whole spawn subsystem.

spawn.max-concurrent

  • Type: integer
  • Default: 1
  • Maximum number of plugin-spawned beacons that may be active at the same time. A new spawn is rejected until the count drops below this value.

WorldGuard protection (spawn.worldguard)

When WorldGuard is installed, a cuboid region is automatically created around each spawned beacon. If WorldGuard is absent the section is silently ignored.

Key Type Default Description
worldguard.enabled boolean true Create a protected region.
worldguard.radius integer 10 Half-size of the protected cuboid in blocks.
worldguard.deny-build boolean true Deny block placement/breaking inside the region.
worldguard.deny-pvp boolean false Deny PvP inside the region.
worldguard.deny-mob-damage boolean false Deny mob damage inside the region.
worldguard.deny-explosions boolean false Deny explosion damage inside the region.

The region is removed automatically when the beacon is despawned.


Countdown timer (spawn.countdown)

When EzCountdown is installed and countdown.enabled: true, a visible countdown is shown to all players from the moment the beacon is placed until it becomes available. If EzCountdown is absent, an internal Bukkit scheduler is used as a silent fallback.

Key Type Default Description
countdown.enabled boolean true Show an EzCountdown timer.
countdown.duration-seconds integer 300 Warm-up time in seconds before the beacon becomes interactive.
countdown.display-types list ACTION_BAR, BOSS_BAR EzCountdown display modes. Accepted values: ACTION_BAR, BOSS_BAR, CHAT, TITLE, SCOREBOARD.

Random spawn bounds (spawn.random-spawn)

Used by the auto-schedule and by /lifesteal beacon spawn when no explicit coordinates are provided.

Key Type Default Description
random-spawn.enabled boolean false Allow random coordinate selection.
random-spawn.world string world World in which to spawn.
random-spawn.min-x integer -1000 Minimum X coordinate.
random-spawn.max-x integer 1000 Maximum X coordinate.
random-spawn.min-z integer -1000 Minimum Z coordinate.
random-spawn.max-z integer 1000 Maximum Z coordinate.

The beacon is always placed at the highest solid block at the chosen x/z pair.


Auto-schedule (spawn.schedule)

Key Type Default Description
schedule.enabled boolean false Enable recurring auto-spawn.
schedule.interval-minutes integer 60 How often a new beacon is spawned when the active count is below max-concurrent.

Expiry (spawn.expiry-minutes)

  • Type: integer
  • Default: 30
  • Minutes after which an available but unused spawned beacon is automatically removed. Set to 0 to keep beacons indefinitely.

Availability event (spawn.availability-event)

Fired when a spawned beacon finishes its countdown and becomes interactive.

Key Type Default Description
availability-event.broadcast.enabled boolean true Server-wide broadcast when the beacon is ready.
availability-event.broadcast.message-key string beacon-spawn-available-broadcast Language key for the broadcast message.
availability-event.title.enabled boolean true Show a title/subtitle overlay to all players.
availability-event.title.title-key string beacon-spawn-available-title Language key for the title line.
availability-event.title.subtitle-key string beacon-spawn-available-subtitle Language key for the subtitle line.
availability-event.particles.enabled boolean true Spawn a particle burst at the beacon location.
availability-event.fireworks.enabled boolean true Launch fireworks at the beacon location.

Full spawn example

spawn:
  enabled: true
  max-concurrent: 1

  worldguard:
    enabled: true
    radius: 10
    deny-build: true
    deny-pvp: false
    deny-mob-damage: false
    deny-explosions: false

  countdown:
    enabled: true
    duration-seconds: 300
    display-types:
      - ACTION_BAR
      - BOSS_BAR

  random-spawn:
    enabled: true
    world: world
    min-x: -2000
    max-x: 2000
    min-z: -2000
    max-z: 2000

  schedule:
    enabled: true
    interval-minutes: 60

  expiry-minutes: 30

  availability-event:
    broadcast:
      enabled: true
      message-key: beacon-spawn-available-broadcast
    title:
      enabled: true
      title-key: beacon-spawn-available-title
      subtitle-key: beacon-spawn-available-subtitle
    particles:
      enabled: true
    fireworks:
      enabled: true