Arenas & map generation

Create an arena, generate a volcanic basin from a seed, read the quality report, preview it and lock it in.

An arena is one entry in arenas.yml. Its map is either generated by the plugin from a seed, or copied from a template folder you provide.

The setup flow

/lr admin map create <id> volcanic_basin 192      generate the map (+ optional seed)
/lr admin map report <id>                         quality report
/lr admin map preview <id>                        open a preview world and walk it
/lr admin map accept <id>                         freeze the seed + spawn points
/lr admin setlobby <id>                           stand in your hub, run this
/lr admin map preview <id>                        go back into the arena…
/lr admin setspectator <id>                       …and set the spectator point
/lr admin map preview <id> close
/lr admin validate <id>
/lr admin enable <id>

Reading the quality report

/lr admin map report does not scan a loaded world — it replays the generator’s own maths, so it runs off the main thread, never stalls a tick, and the report always describes exactly the map you will get.

It grades six things against the thresholds in config.yml under map-quality:

MetricDefault thresholdWhat it means
min-safe-spawns16How many valid, flat, standable spawn points exist.
max-rich-poor-ratio1.5Resource balance between the richest and poorest quadrant.
min-high-ground-blocks400Standable area at Y ≥ 118 — the endgame ground.
max-dominant-high-ground-share0.60Stops one corner owning all of the high ground.
max-wood-distance24Longest walk from a spawn to the nearest tree.
min-upward-routes2Distinct climbable routes out of the basin.

If a seed fails, generate another one — /lr admin map regenerate <id> — and report again. Accept only what passes.

Arena settings

arenas:
  volcanic_valley:
    display-name: "<gradient:#f9e000:#ff0000>Volcanic Valley</gradient>"
    enabled: false

    source:
      type: GENERATED          # GENERATED or TEMPLATE
      generator: VOLCANIC_BASIN
      template: ""             # folder under plugins/LavaRises/templates/
      size: 192
      seed: 436545             # 0 = pick a new seed on create

    min-players: 2
    max-players: 24
    border-size: 192

    lava-start-y: 40
    lava-end-y: 180
    build-max-y: 180

    grace-seconds: 480
    countdown-seconds: 30

    rise:
      interval-seconds: 5
      blocks-per-rise: 1
      replace-mode: AIR_LIKE   # AIR_LIKE or DESTRUCTIVE

    pvp:
      mode: SECONDS_AFTER_RISE # SECONDS_AFTER_RISE or LAVA_Y
      value: 60

    sudden-death:
      enabled: true
      require: false           # true = always pass through sudden death
      final-border-size: 32
      shrink-seconds: 180
      max-match-seconds: 1800

    profile: CLASSIC           # CLASSIC | QUICK | CHAOS

Rise modes

  • AIR_LIKE — lava only replaces air and the blocks listed under lava.extra-replaceable (snow, vines, lily pads by default). Player builds survive.
  • DESTRUCTIVE — lava replaces everything except the protected list (OBSIDIAN, CRYING_OBSIDIAN, ANCIENT_DEBRIS, plus bedrock and barriers which are always safe).

PvP unlock

  • SECONDS_AFTER_RISEvalue seconds after the lava starts rising.
  • LAVA_Y — the moment the lava level reaches Y = value.

Templates instead of generation

Set source.type: TEMPLATE and put your world folder in plugins/LavaRises/templates/<name>, then point source.template at it. The folder is copied for each match on an async thread, so a large template never blocks a tick.

Next: Match flow & profiles.