Skip to content

Repository files navigation

LavaFloor — "The Floor is Lava"

A Paper minigame plugin. After a short build phase, a flood level climbs one step at a time on a timer. Stay above it or die. Last player standing wins — or, solo, outlast the flood until it peaks.

  • Rising flood of LAVA or WATER, filled block-by-block so it's visible.
  • Nuclear water mode: sickly-green particle haze, rising smoke, and poison / wither / blindness / hunger on contact.
  • Difficulty presets/lf start <chill|classic|frenzy|insane> bundles the interval, acceleration, damage, grace time, drop rate and PvP into one pick.
  • Editable / accelerating rise timer/lf setinterval <seconds> live, and flood.acceleration-per-step shaves the interval down each step so games never stalemate.
  • Building kit + supply drops — a kit at the start, then glowing crates that fall near a random survivor, sometimes carrying a power-up.
  • Power-ups (right-click): Pocket Platform, Launch Pad, Updraft, Bulwark, Glider, and a Cryo Charge that freezes the flood for everyone.
  • PvP shove (preset- or config-gated) — knock rivals into the flood; kills are credited ("shoved into the lava by …").
  • Live HUD — a personal altitude boss bar, a sidebar scoreboard, a tab-list header/footer, an action-bar gauge, height/player-count milestone shouts and a danger heartbeat.
  • Persistent stats (stats.yml) — wins, games, win rate, best survival time, best climb, shoves, a /lf stats leaderboard and personal-best callouts.
  • Reward commands run per winner on game end.
  • Grace period, spectator elimination, fireworks for winners, and full arena + inventory restore when the game ends.

Commands (/lavafloor, alias /lf, /floorislava)

Command Description
/lf start [preset] Start a game — chill, classic, frenzy, insane, or the configured default.
/lf stop Stop the game and rebuild the arena.
/lf pos1 / /lf pos2 Set the arena corners from where you stand.
/lf preset <name> Set the default preset used by a bare /lf start.
/lf setinterval <sec> Seconds between each rise step (live-editable).
/lf riseamount <n> Blocks the flood climbs per step.
/lf settype <lava|water> Choose the fluid.
/lf nuclear <on|off> Toggle the nuclear-water dressing.
/lf status State, flood Y, next rise, preset, PvP, players alive.
/lf stats [player] Personal stats + the win leaderboard.
/lf reload Reload config.yml.
/lf about Plugin info.

/lf stats is open to everyone; the rest need lavafloor.admin.

Presets

Preset Interval Accel Rise Damage/s Grace Drops PvP
Chill 12s 1 4 30s 30s off
Classic 8s 0.1 1 6 20s 25s off
Frenzy 6s 0.2 1 8 15s 18s on
Insane 4s 0.35 2 20 10s 14s on

default-preset: NONE in config.yml means "use the raw flood: / game: values"; set it to a preset name to make bare /lf start use that.

Supplies & power-ups

  • Starting kit (supply.kit) — a configurable stack of building blocks (dirt, cobble, scaffolding, a water bucket vs. lava). With clear-inventory: true the player's real inventory (main + armor + offhand) is saved and handed back intact at the end.
  • Supply drops (supply.drops) — every interval-seconds a glowing crate falls near a random survivor. powerup-chance decides if it also carries a power-up. The sidebar shows a countdown to the next drop.
  • Power-ups (powerups:) — each has an enabled flag and a weight for how often it's the one that spawns:
    • Pocket Platform — drops a 5×5 pad under you that vanishes after ~20s.
    • Launch Pad — flings you upward.
    • Updraft — levitation then a long slow-fall.
    • Bulwark — absorption + resistance + fire immunity for a few seconds.
    • Glider — 30s slow falling.
    • Cryo Charge — freezes the flood rise for everyone for freeze.seconds.

The arena

The flood only fills a rectangular region:

  • Set two corners with /lf pos1 and /lf pos2 (stored in config.yml).
  • If either corner is unset, a cube around the world spawn is used (arena.default-radius / default-floor-y / default-ceiling-y).
  • arena.max-area refuses to start on a footprint bigger than N columns — a guard against filling millions of blocks. Raise it, shrink the arena, or set flood.place-blocks: false for a huge arena (invisible kill-line only).

Every block the flood (or a Pocket Platform) replaces is snapshotted and rebuilt when the game ends (game.restore-arena: true). Fluid is placed with block-physics disabled to limit flow, but an enclosed arena (walls up to the ceiling) still behaves best. Keep arenas modest — a 40-radius cube is ~6.5k columns.

Key config (config.yml)

game:
  grace-period-seconds: 20
  time-limit-seconds: 0        # 0 = none; if it expires, survivors win
  default-preset: NONE         # or CHILL / CLASSIC / FRENZY / INSANE
flood:
  type: LAVA                   # or WATER
  nuclear: true
  rise-interval-seconds: 8     # editable live with /lf setinterval
  acceleration-per-step: 0.1   # interval shrinks each step...
  min-interval-seconds: 2      # ...down to this
  rise-amount: 1
  destroy-blocks: true         # classic mode — no dirt bunkers
  place-blocks: true           # false = invisible kill-line, nothing to restore
  damage-per-second: 6.0
supply:
  kit:   { enabled: true, clear-inventory: true, items: [ "DIRT:64", ... ] }
  drops: { enabled: true, interval-seconds: 25, powerup-chance: 0.5, bundles: [...] }
powerups:
  platform: { enabled: true, weight: 3, block: MOSS_BLOCK, radius: 2, seconds: 20 }
  freeze:   { enabled: true, weight: 1, seconds: 5 }
pvp:      { enabled: false }
rewards:  { win-commands: [ "give {player} diamond 3" ] }
hud:      { boss-bar: true, action-bar: true, sidebar: true, height-milestone: 10 }

Building

Kotlin + Paper, Gradle with the Shadow plugin. Open in IntelliJ and run the build (or shadowJar) task; the plugin jar lands in build/libs/. runServer launches a test Paper server on the version in build.gradle.kts. Requires Gradle 9.7+ (the wrapper is pinned to 9.7.1).

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages