Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
BlameRun – Hardcore Speedrun
Co-op hardcore speedruns for Paper and Purpur 26.3, where everyone knows who to blame.
If anyone dies, the world resets and a new attempt begins, and the culprit's face shows up on everyone's screen. BlameRun keeps every player's death count next to their skin face, times each attempt with splits, and keeps records between attempts, including the hall of shame for the shortest run ever.
One jar, no dependencies, and no resource pack. English and Spanish messages are included.
Features
- Automatic world reset. Every attempt gets a fresh overworld, Nether and End with the same seed and linked portals. Old worlds are deleted from disk.
- Per-player death counter with skin faces. It is shown in the action bar, the tab list and the sidebar, and it survives every reset.
- Speedrun timer in the boss bar. It starts on the first step, or with a countdown that freezes everyone until GO.
- Splits: Iron → Nether → Fortress → Blaze rod → Ender pearl → Stronghold → The End. Each split is compared to your best time, in green when you're ahead and in red when you're behind.
- Records: best time, wins, best splits, and the hall of shame (the shortest attempt ever).
- Death moments: lightning, the culprit's face on everyone's screen, a random roast line, and a summary of the attempt.
- Victory: fireworks and a title when the dragon dies.
/catchupfor late joiners. It teleports them to you and gives them gear of the same tier as yours, or as the server average, plus food and XP. Admins get a clickable button when someone joins mid-attempt.- Two end conditions: first death (classic) or all dead (the attempt continues while anyone is alive).
- Fixed-seed mode to practise a specific seed.
- Translatable: every message is editable, and adding a language means copying a single file.
Player faces are drawn with the text "object" components added in Minecraft 1.21.9, so clients need 1.21.9 or newer. Paper 26.3 already requires that.
Requirements
- Paper or Purpur 26.3 (Folia and Spigot are not supported)
- Java 25
Installation
- Drop
BlameRun-<version>.jarintoplugins/. - Recommended in
server.properties:hardcore=true, so clients show hardcore hearts. - Keep the Nether (
allow-nether=true) and the End (settings.allow-end: trueinbukkit.yml) enabled, or portals won't work. - Start the server. The plugin creates the first attempt's worlds and sends everyone there.
The server's main world is only a waiting room, because Paper can't unload it at runtime. Players who join from outside the run are moved into the current attempt as fresh arrivals.
How an attempt works
- Waiting: everyone sees ATTEMPT #N. The timer starts with the first step, or with
/run start. - Running: splits are announced as you reach them.
- Someone dies: the attempt ends, a summary is shown, and after a few seconds the next attempt's worlds are generated. Everyone is moved there in survival with an empty inventory, no XP and no advancements.
- Dragon killed: the attempt is won and records are updated. Start the next attempt with
/run reset, or enablereset-after-win.
Commands
| Command | Permission | Description |
|---|---|---|
/deaths [player] |
everyone | Death count and rank. |
/deaths top |
everyone | Top 10 with faces. |
/deaths hud <faces|text|off> |
everyone | What your action bar shows. |
/run · /run stats |
everyone | Current attempt, splits and records. Alias: /speedrun. |
/run seed |
everyone after the attempt; blamerun.seed during it |
Shows the attempt's seed. |
/run start |
blamerun.run.control |
Countdown, then start the timer. |
/run reset [seed] |
blamerun.run.control |
Jump to the next attempt now, optionally with a specific seed. |
/run cancel |
blamerun.run.control |
Cancel a pending automatic reset. |
/run new |
blamerun.run.control |
New attempt in the same world (timer back to 0). |
/catchup <player> [admin|average] |
blamerun.catchup |
Teleport a player to you and give them comparable gear. |
/deaths set <player> <n> |
blamerun.deaths.edit |
Fix a death count. |
/deaths reset confirm |
blamerun.deaths.edit |
Reset everyone's deaths to 0. |
/br reload · /br version |
blamerun.reload |
Reload config and language. |
blamerun.admin grants every admin permission and is given to OPs by default. With blamerun.notify you receive the clickable [Catch up] button when someone joins mid-attempt.
Undoing a cheap death
If someone dies right after spawning and you don't want it to count:
/run cancelstops the automatic reset./run newopens a fresh attempt in the same world./gamemode survival <player>revives them./deaths set <player> <n>restores their previous death count.
Configuration
plugins/BlameRun/config.yml is fully commented. The most useful options:
| Option | What it does |
|---|---|
language |
en or es. Messages live in lang/<language>.yml. |
run.ends-when |
first-death or all-dead. |
run.auto-start |
Start the timer on first movement, or only with /run start. |
world-reset.seed |
Empty for a random seed every attempt, or set one to always play the same seed. |
world-reset.automatic |
false = reset only with /run reset. |
world-reset.delay-seconds |
Time to read the summary before the new world. |
world-reset.reset-after-win |
Go to the next attempt automatically after a win. |
world-reset.difficulty / hardcore |
Difficulty and hardcore mode of the run worlds. |
world-reset.clear-players.* |
What players lose on a new attempt: inventory, ender chest, XP, effects, advancements. |
world-reset.enabled |
Set to false to let another plugin reset the world; BlameRun then only detects the new world and keeps score. |
ignored-worlds |
Worlds (lobbies, etc.) the plugin never touches. |
hud.* |
Turn each on-screen element on or off. |
catchup.* |
Default mode, enchantment copying, minimum food, extra items and newcomer notices. |
When you update the plugin, new options are added to your config.yml automatically, and missing message keys fall back to the ones bundled in the jar.
Translating
- Copy
plugins/BlameRun/lang/en.ymltoxx.yml. - Translate the text. Keep the
<tags>, because they are placeholders. - Set
language: xxand run/br reload.
Messages use MiniMessage, so colours and formatting are fully customisable.
Data files
| File | Contents |
|---|---|
deaths.yml |
Deaths and HUD preference per player. |
run.yml |
Current attempt, its seed and world, and all-time records. |
Both live in the plugin folder, not in any world, so they survive resets.
Building from source
./gradlew build
Requires JDK 25. The jar is written to build/libs/.


