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)

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.