Social Studio ES|EN
Team survival

UltraRevive v1.0

Instead of dying instantly, you get downed and your team can pick you up. With three totems of its own.

UltraRevive is a Paper plugin made by Social Studio (its creator goes by GupeLegend) that changes a single rule, but changes it for good: the hit that was about to kill you no longer kills you. Instead, it leaves you downed — on the ground, glowing, defenseless — and gives your team a few seconds to reach you and pick you back up. If nobody makes it in time, you bleed out, and that's when you really die. The plugin adds three custom totems with their own textures, a resource pack it serves on its own, per-player statistics, and a public API so other plugins can know who's downed.

What It Is

UltraRevive turns every fight into a team fight. Going up against everyone alone stops being "if I mess up, I die" and becomes "if I mess up, I've got a few seconds for someone to save me." Sticking close to your teammates starts paying off, and a rescue under fire — crouching next to someone bleeding out while arrows rain down — ends up being one of the best moments you'll take away from the server.

This isn't a graves plugin, nor one about totems that prevent death: UltraRevive's three totems don't stop you from going down — what they change is what happens afterward. That's exactly what gives the self-revive button its purpose.

[UltraRevive] ☠ Steve was downed. A teammate can revive him!
[UltraRevive] ✔ Steve was revived.

Features

  • Downed instead of instant death: the lethal hit knocks you to the ground instead of killing you.
  • Cooperative rescue: crouching next to the downed player revives them; if several people crouch at once, it goes faster.
  • Progress with a grace period: if the reviver steps away for a moment, progress freezes for a few seconds before it starts dropping — it's never lost all at once.
  • Three custom totems, each with its own texture, name, and lore, and its own rescue rules.
  • Resource pack served by the plugin itself: nobody on your server needs to set up separate hosting.
  • Tension in the final seconds: an accelerating heartbeat, blood particles, and a light beacon over the downed player.
  • Optional fatigue: if you get downed over and over in a short time, you'll hold out for less time before bleeding out.
  • Per-player statistics (/ur stats): times downed, times revived, rescues performed, self-revives, and bleed-outs.
  • Two full languages (English and Spanish), including the name and description of all three totems.
  • Public API and two Bukkit events so other plugins can react to a downing or a rescue.
  • Automatic migration from older installations (shared folder, the plugin's previous name, and even graves from a previous version that no longer exists).

Requirements and Compatibility

Requirement Value
Server Paper 26.1.2 or newer (Spigot is not supported)
Java Java 25
Folia Not supported (folia-supported: false in plugin.yml)
Required dependencies None
Optional dependencies (softdepend) LuckPerms (to read the player's rank from the plugin's code)

Note: plugin.yml also declares LPC, ItemEdit, and ItemTag as softdepend. These are leftovers from the shared jar UltraRevive came from; the code published in this repo doesn't actually use them for anything yet, so you don't need to have them installed.

UltraRevive is self-contained: it doesn't need a database, doesn't need Vault, and doesn't need any other plugin to work at 100%. If you have LuckPerms installed, the plugin detects it automatically and exposes the player's rank through its own internal API (see Integrations and API); if you don't, UltraRevive keeps working exactly the same.

Step-by-Step Installation

  1. Download UltraRevive-1.0.jar and drop it into your Paper server's plugins/ folder.
  2. Start (or restart) the server. There's nothing to configure by hand: everything is ready to play as soon as it boots up.
  3. Check the console: you should see UltraRevive v1.0 enabled. and, if the internal resource pack started up successfully, Serving the resource pack at: http://....
  4. If you're using the resource pack's internal mode (the default), open port 8081 on your firewall/router or with your hosting provider. If the port is closed, the plugin will say so in the console, and the totems will simply look like regular totems of undying; the rest of the plugin keeps working the same.
  5. Adjust plugins/UltraRevive/config.yml to your liking (see Configuration) and, if you changed anything, run /ur reload.

The plugin's data lives in plugins/UltraRevive/: that's where you'll find config.yml, lang/en.yml, lang/es.yml, stats.yml, and resourcepack.zip. Your config.yml is never overwritten when you update the jar to a new version.

If You're Coming From an Earlier Installation

UltraRevive started out as part of an all-in-one jar; these migrations run on their own, once, on startup:

  • Old shared folder (plugins/UltraView/UltraRevive/): if your data was still there, it gets moved automatically to plugins/UltraRevive/. Nothing gets overwritten: if a file can't be moved, the old folder is left as it was, and it deletes itself once it's empty.
  • Plugin's previous name (UltraRevivir): if a plugins/UltraRevivir/ folder exists, the plugin pulls over stats.yml, the lang/ folder, and any config.yml values that still share the same key name in the new version. It doesn't delete anything from the old folder.
  • Old permissions (ultrarevivir.*): they still work. They're declared as parents of the new permissions (ultrarevivir.admin → ultrarevive.admin, etc.), so if you already granted them to someone in LuckPerms, you don't have to touch anything.
  • Totems already handed out: each totem carries a hidden tag (ultrarevive:ur_item). Ones given out while the plugin had its previous name carry the old tag (ultrarevivir:ur_item) and are still recognized the same way; they don't suddenly turn into regular totems.
  • Pending graves: if your server used to run a graves system that no longer exists, and something was left unclaimed, UltraRevive returns it automatically the first time each affected player logs into the server (experience included). Anything that doesn't fit in the inventory is dropped at their feet — it's never lost. This is a one-time recovery: once everyone has gotten their stuff back, the plugin stops looking for pending graves.

How It Works

When You Get Downed

If a hit would put you at 0 health, UltraRevive intercepts it: your health drops to 2 hearts (downed-health, 1 heart on the bar) instead of zero, and you become downed.

  • You're put into Adventure mode, in a crawling pose (swimming/swimming reused as the "downed" pose), glowing red, with Slowness (level 7 by default) and Blindness.
  • While downed, you can't attack, break or place blocks, drop items, or eat. If you have the Blessed Totem of the Aether, the one exception is using it (button or right-click) to self-revive.
  • A red boss bar appears, counting down the seconds you have left: 60 seconds by default.
  • Mobs and the environment can't finish you off (controlled by immune-to-mobs); another player can, if finish-by-players is enabled (it is by default). If finish-by-players is set to false, hitting a downed player does absolutely nothing.
  • The void still kills you just the same, downed or not: nobody falls forever.
  • Disconnecting while downed kills you (die-on-quit, enabled by default). Closing the client isn't a way to save yourself.

In the final seconds (the last 25% of the time, bleed-tension.threshold-percent), an accelerating heartbeat plays and blood particles fall at your feet; on top of that, if downed-beacon is enabled, a particle beam (END_ROD by default) rises from your body so your team can spot you amid the chaos of a fight.

The Rescue

A teammate crouches within 3 blocks of you (revive-radius), and as long as they stay crouched, progress climbs. It takes 5 seconds (revive-duration) to complete.

  • It costs the reviver hunger: once the rescue completes, 6 hunger points (3 drumsticks) are deducted all at once. While reviving, they need to have some hunger left (more than 0); if it hits 0, they can't continue, and they're warned about it in the action bar.
  • Cooperative rescue: if several players crouch next to the same downed player at once, progress climbs faster. Each extra reviver adds coop-revive.bonus-per-extra (1.0 by default) to the rate, up to a maximum of coop-revive.max-extra (3) extra revivers counted.
  • Progress doesn't vanish all at once: if the person reviving you steps away (a shove, a mob getting in the way), progress freezes for coop-revive.grace-seconds (2 seconds) before it starts slowly dropping. That way, an accidental shove doesn't doom you.
  • Optional rules for harsher servers:
  • interrupt-on-damage: if the person reviving you takes damage, the revive is interrupted (disabled by default, to avoid shifting the balance overnight).
  • downed-fatigue: if you get downed several times in a row within a short window (window-seconds, 120s by default), you'll hold out for less time before bleeding out the next time (disabled by default).

Anyone can revive you, not just your team or your clan: UltraRevive doesn't filter by faction (that's left up to a separate clans plugin, if your server uses one). Having a stranger crouch down to save you is, on purpose, part of the charm.

Bleeding Out and Final Death

If the boss bar's countdown hits zero without anyone having revived you, you bleed out: that's when you really die, with everything that implies in vanilla (your inventory is lost according to the server's normal rules, ENTITY_WITHER_DEATH plays, and nearby players are notified).

Important: a downed player's actual death is always applied one tick later, never within the same damage event that finished them off. This is a deliberate design decision: killing inside an EntityDamageEvent would nest two deaths in a single hit, and the server would end up emptying the inventory twice, losing the loot in the process.

You can also give up yourself with the [Give Up] button (or /ur surrender) if you don't want to wait: it kills you instantly, with its own sound and smoke particles. If you've set surrender-cooldown (0 by default, meaning no limit), you have to stay downed for that many seconds before you can give up.

Special Cases

  • The void always kills you, downed or not; if you fall into the void while downed, you bleed out right there without waiting for the timer to run out.
  • A player with ultrarevive.bypass never goes down: they die the normal vanilla way, as if the plugin didn't exist for them.
  • Specific worlds: with enabled-worlds you can limit which worlds the downing mechanic works in (empty = all of them).

The Three Totems

All three are the same base item under the hood (TOTEM_OF_UNDYING), told apart by their custom-model-data and a hidden tag in their persistent data. That means two things: a regular Totem of Undying (without that tag) stays a regular totem and saves you the usual vanilla way, and nobody can "fake" one of the three totems by renaming a common totem — the plugin doesn't look at the name, it looks at the tag.

No totem stops you from going down. What they change is what happens after that.

Blessed Totem of the Aether

Fishing up the Blessed Totem of the Aether, golden with green eyes Golden, with green eyes. Can be fished up or found in buried treasure chests.

  • What it does: use it while you're downed (with the [Self-Revive] chat button or a right-click) and you get back up on your own, without needing anyone to rescue you.
  • When you get up, you receive Absorption (120s) and Regeneration (5s), and you're left a bit dazed (Nausea, 20s) as a side effect.
  • Where it drops: buried treasure chests (20% chance) and fishing (0.5%). No other chest in the game.
  • It's consumed: one unit is used up when you use it.

Cursed Totem of the Nether

Cursed Totem of the Nether in a chest inside a ruined portal Weathered stone, with red eyes. Found in ruined portals, bastions, and Nether fortresses.

The same totem, this time in a chest inside a Nether fortress Nether fortresses are, along with bastions, where it's most likely to turn up.

The same totem in a chest inside a bastion A ruined bastion, another one of its possible hiding spots.

  • What it does: you don't use it yourself — you carry it while reviving another player. As long as you have it in your inventory, you revive up to 3 times faster than normal, and the person you revive comes back with full health (20 hearts), plus Regeneration and Absorption as a bonus.
  • You, the reviver, pay the cost: once the rescue completes, you get 20 seconds of Wither. The downed player suffers none of this.
  • The curse: if you die while carrying this totem (and you don't have a regular totem of undying, without the tag, in hand), no downing saves you: you die outright, even if you're also carrying the Blessed Totem of the Aether. Only a genuine vanilla totem in hand saves you from this.
  • Where it drops: ruined portals (0.67%), bastions (1.2%), and Nether fortresses (1.2%).
  • It's consumed: one unit is used from the reviver's inventory as soon as the rescue completes.

Unknown Totem of the End

The Unknown Totem of the End, pale bone with violet eyes, inside an End ship A relic from End ship chests. Nobody fully understands its power, and it's meant to be a legend.

  • If you use it while downed (like the Aether one, with the button or a right-click): you get back up on your own and it also teleports you to your respawn point (your bed, or the world spawn if you don't have one), with 2 minutes of Blindness as a side effect. It's, literally, an escape route.
  • If you carry it while reviving another player: instead of helping you, it leaves a healing zone on the ground around the revived player — a circle of heart particles that gives Regeneration and Slow Falling (so you don't die from the fall) to anyone standing inside it, for a few seconds. In exchange, the reviver is left with Nausea for 20 seconds.
  • Where it drops: chests on End ships (0.00067% chance — meant to be close to a myth). The plugin tells the ship apart from the End city (they share the same vanilla loot table) by checking for an elytra in an item frame near the chest, which is the one thing exclusive to the ship.
  • It's consumed: one unit, whether you self-revive with it or use it to heal while reviving someone else.

Note: the End totem's area-heal-team-only option is in config.yml, but in this version of the code the healing zone heals anyone standing inside it, not just your team — team/clan filtering is left up to a separate clans plugin, which isn't hooked up to this option yet.

The Resource Pack

The three totems' textures come in a small resource pack, and the plugin offers it automatically to every player who connects, 2 seconds after they join. You don't need to upload anything anywhere yourself.

  • It only changes the appearance of UltraRevive's three totems (custom-model-data 130001, 130003, and 130007). A regular Totem of Undying keeps its usual texture, and no other item, block, or menu is touched.
  • Without the pack, everything keeps working the same; the totems simply look like regular totems of undying.
resource-pack:
  enabled: true
  mode: internal     # internal = served by the plugin · url = you serve it yourself
  host: "AUTO"        # AUTO = auto-detects the public IP; or type in your own
  port: 8081          # you need to have this port open on your host
  url: ""             # only used with mode: url
  force: false        # true = the player is forced to accept it
  prompt: ""          # empty = uses the text from the configured language

In internal mode (the default), UltraRevive spins up its own tiny HTTP server on the configured port and tries to guess the server's public IP by querying api.ipify.org; if that fails, it uses the server's configured IP or, as a last resort, 127.0.0.1. If you'd rather control this yourself (for example because you're behind a proxy or have your own domain), set host by hand or switch to mode: url and point url to wherever you uploaded the .zip.

Tip: if you're already sending players your own resource pack, you don't need to use internal mode: merge UltraRevive's pack into yours (or import the .zip into your pack manager and rebuild it) and set resource-pack.enabled: false. If your pack already modifies the Totem of Undying, merge that file by hand: keep UltraRevive's three custom-model-data entries and leave your model as the fallback (the regular one, without the tag).

Commands

The main command is /ultrarevive, with the aliases /ur and /revivir.

Command What it does Permission
/ur or /ur help (alias ayuda) Shows help (different if you're an admin or not) None
/ur surrender You give up and die instantly, while downed ultrarevive.surrender
/ur selfrevive You get back up on your own by using a Blessed Totem of the Aether or an Unknown Totem of the End, while downed None (you just need to have the totem on you and be downed)
/ur stats [player] View revive stats; with no argument, shows your own None to view your own · ultrarevive.admin to view someone else's
/ur reload Reloads config.yml and the languages without restarting the server ultrarevive.admin
/ur revive <player> Revives a downed player, as if another player had done it ultrarevive.admin
/ur down <player> Downs a player who isn't already downed ultrarevive.admin
/ur finish <player> (alias kill) Finishes off a downed player (makes them bleed out right away) ultrarevive.admin
/ur give <self\|boost\|end> [player] [amount] (alias dar) Gives one of the three totems. With no player, gives it to yourself; with no amount, gives 1 ultrarevive.admin

In /ur give, each totem also accepts these aliases: self/aether/jer..., boost/nether/kit..., and end (it's enough for the argument to start with those letters).

While you're downed, clickable buttons also appear directly in chat: [Give Up] (always) and [Self-Revive] (only if at least one of the self-revive totems is enabled in the config). They're shortcuts to /ur surrender and /ur selfrevive; you don't have to type the command by hand.

Permissions

Permission Default What it does
ultrarevive.admin op Grants access to /ur reload, /ur revive, /ur down, /ur finish, /ur give, and to viewing other players' stats
ultrarevive.bypass false That player never goes down: they die the normal vanilla way
ultrarevive.revive everyone Can revive other players by crouching next to them
ultrarevive.surrender everyone Can use /ur surrender or the [Give Up] button

Important: ultrarevive.bypass interacts with the config's affect-ops option in a way that isn't obvious. If a player is an operator and has the bypass permission, but affect-ops is set to true (the default value), they'll still get downed: affect-ops: true makes the downing mechanic reach ops too, overriding the bypass permission in that specific case. If you want an operator with ultrarevive.bypass to never go down no matter what, set affect-ops: false.

For compatibility with older installations, permissions under the plugin's previous name (ultrarevivir.admin, ultrarevivir.bypass, ultrarevivir.revive, ultrarevivir.surrender) still work: they're declared as parent permissions of the new ones, so if someone already had them in LuckPerms, there's nothing to change.

Configuration

It's all in a single, fully commented config.yml. These are its values exactly as they ship out of the box:

# UltraRevive. Stored in plugins/UltraRevive/ and NOT overwritten on update.

# Language: only 'en' and 'es'.
# ⚠ This changes EVERYTHING: chat messages AND the name and lore of all three totems.
language: en
enabled-worlds: []

# --- Timing ---
down-duration: 60
revive-duration: 5
revive-radius: 3.0
revive-by-sneaking: true

# --- Health ---
downed-health: 2.0
revive-health: 10.0

# --- Visual ---
glow: true
glow-color: RED
pose-crawl: true
blindness: true
slowness-amplifier: 6
particles: true
bossbar: true
bossbar-color: RED

# --- Rules ---
finish-by-players: true
immune-to-mobs: true
die-on-quit: true
adventure-mode: true
affect-ops: true

# Multiple teammates crouching revive faster.
coop-revive:
  enabled: true
  # Progress FREEZES for this many seconds if the reviver steps away for a moment (a shove in
  # PvP, a mob getting in the way) before it starts decaying. 0 = lost instantly.
  grace-seconds: 2
  bonus-per-extra: 1.0
  max-extra: 3

# Heartbeat and blood particles in the downed player's final seconds.
bleed-tension:
  enabled: true
  threshold-percent: 25.0
  heartbeat-sound: ENTITY_WARDEN_HEARTBEAT

# Particle beam over the downed player so the team can spot them.
downed-beacon:
  enabled: true
  particle: END_ROD

# If you get hit while reviving, it's interrupted. Disabled by default to avoid shifting the balance overnight.
interrupt-on-damage:
  enabled: false
  penalty: 1.0

# If you get downed over and over in a short time, you hold out for less time before bleeding out.
downed-fatigue:
  enabled: false
  window-seconds: 120
  factor-per-stack: 0.75
  min-fraction: 0.3

hunger-cost: 6

# --- Announcements ---
broadcast-downed: true
broadcast-radius: 30

# --- Sounds ---
sound-downed: ENTITY_PLAYER_HURT
sound-revived: ENTITY_PLAYER_LEVELUP
sound-bled-out: ENTITY_WITHER_DEATH
sound-surrender: ENTITY_TOTEM_USE
surrender-particles: true
surrender-cooldown: 0

stats: true

# --- Resource pack ---
# internal = served by the plugin and needs the port open. url = you serve it yourself.
resource-pack:
  enabled: true
  mode: internal
  host: "AUTO"
  port: 8081
  url: ""
  force: false
  prompt: ""

# --- The three totems ---
# All of them are TOTEM_OF_UNDYING distinguished by custom-model-data, so regular totems
# still look normal. Given out with /ur give <self|boost|end> [player] [amount].
items:
  self-revive:
    enabled: true
    material: TOTEM_OF_UNDYING
    custom-model-data: 130001
    glow: true
    health: 6.0
    sound: ITEM_TOTEM_USE
    side-effects: true
    loot:
      enabled: true
      tables:
        buried_treasure: 0.20
      chance: 0.0
      fishing: true
      fishing-chance: 0.005

  revive-boost:
    enabled: true
    material: TOTEM_OF_UNDYING
    custom-model-data: 130003
    glow: true
    speed-multiplier: 3.0
    revive-health: 20.0
    reward-effects: true
    curse-insta-death: true
    curse-wither-seconds: 20
    loot:
      enabled: true
      tables:
        ruined_portal: 0.0067
        bastion_treasure: 0.012
        nether_bridge: 0.012
      chance: 0.02
      fishing: false
      fishing-chance: 0.0

  end-revive:
    enabled: true
    material: TOTEM_OF_UNDYING
    custom-model-data: 130007
    glow: true
    teleport-home: true
    self-revive-health: 6.0
    blindness-seconds: 120
    unknown-misfire-chance: 0.0
    unknown-misfire-radius: 24
    area-heal-radius: 5
    area-heal-duration: 6
    area-heal-level: 1
    area-particle: HEART
    area-heal-team-only: true
    area-slow-falling: true
    area-slow-falling-seconds: 4
    reviver-nausea-seconds: 20
    sound: ENTITY_ENDERMAN_TELEPORT
    loot:
      enabled: true
      tables:
        end_city_treasure: 0.0000067
      chance: 0.0000067
      fishing: false
      fishing-chance: 0.0
      require-end-ship: true

A quick rundown of the less obvious blocks:

  • language: changes everything, not just chat messages. The name and description of the three totems live in lang/<language>.yml on purpose: if they lived in config.yml, changing the language would translate the messages but leave the totems in whatever language the file was first generated with.
  • downed-health / revive-health: how many hearts you're left with when you go down, and how many you come back with when revived the normal way (without the Cursed Totem of the Nether, which uses its own revive-health: 20.0 inside items.revive-boost).
  • slowness-amplifier: 6: this is the potion amplifier, not the level shown on screen — it's equivalent to Slowness VII.
  • revive-by-sneaking: by default you have to be crouching for it to count as "reviving"; set to false, just standing inside the radius (revive-radius) is enough.
  • coop-revive: bonus-per-extra is how much extra progress per tick each reviver beyond the first one adds, up to max-extra. grace-seconds is the forgiveness window before progress starts dropping if the reviver steps away.
  • interrupt-on-damage.penalty: ranges from 0.0 to 1.0; 1.0 (the default value if you enable it) means a single hit makes you lose 100% of the progress built up.
  • downed-fatigue: factor-per-stack is applied multiplicatively for each downing within the window (window-seconds), and min-fraction is the floor: you'll never hold out for less than that percentage of the normal time.
  • items.*.loot.tables: you can set either a map (as it ships by default, with a different probability per structure) or a plain list of loot table names, which would all use the same probability (chance). Keys are matched by partial match against Minecraft's loot table key (for example, "ruined_portal" matches minecraft:chests/ruined_portal).
  • items.end-revive.require-end-ship: the End city and End ships share the same loot table in vanilla, so "ships only" can't be requested just by picking the table. With this set to true, the plugin checks for an elytra in an item frame near the chest (the one thing exclusive to a ship) before dropping the totem.

After editing config.yml by hand, run /ur reload so the changes apply without restarting the server.

Messages and Languages

The text players see lives in plugins/UltraRevive/lang/en.yml and lang/es.yml, not in config.yml. It ships complete in English (the default) and Spanish; changing language: in the config changes the chat messages and the name/lore of all three totems at once.

Each message accepts some of these placeholders, depending on the case: {time}, {percent}, {target}, {player}, {name}, {n}, {secs}, {count}, {items}. You can edit any text with Minecraft color codes (&c, &l, etc.) and run /ur reload to see it applied.

Tip: if you add a new language by hand or update the plugin, you don't need to copy the whole file over: on load, UltraRevive automatically adds any key that exists in the jar's .yml but isn't in your server's file yet, without overwriting anything you've already edited.

Bedrock Players

UltraRevive doesn't ship with a menu or a dedicated Bedrock/Geyser integration: the source code doesn't have anything built specifically for that. That said, almost the entire plugin runs server-side using vanilla mechanics (damage, Adventure mode, potions, boss bar, action bar, titles), so it should behave reasonably well on a server running Geyser. There are two things worth keeping in mind:

  • The chat buttons ([Give Up] and [Self-Revive]) are built with clickable text components (ClickEvent/HoverEvent), which Bedrock chat doesn't always render the same way Java does. If a Bedrock player can't tap the button, they can just use /ur surrender or /ur selfrevive directly.
  • The resource pack is a Java Edition pack (it changes a vanilla item's custom-model-data). A Bedrock client can't load a Java resource pack, so for those players the three totems will always look like a regular Totem of Undying — exactly the same thing that happens to any Java player who rejects the pack. The plugin keeps working just as well; only the texture changes.

Note: this hasn't been tested exhaustively against Geyser/Floodgate. If you run a mixed Java/Bedrock server, test the full flow (going down, buttons, self-revive) with a Bedrock player before relying on it in production.

Integrations and API

UltraRevive doesn't have a PlaceholderAPI expansion or integrate with Vault; what it does offer is:

  • An optional bridge to LuckPerms: if the plugin detects it installed, it internally exposes (UltraRevive#luck()) the player's primary rank, and, if a promotion track called rankup exists, the next rank on that track. Meant for other Social Studio plugins to consume; it doesn't change anything about UltraRevive's own behavior or its messages.
  • A public API for other plugins, with no compile-time dependency needed:
UltraReviveAPI.isDowned(player);      // or by UUID: isDowned(uuid)
UltraReviveAPI.isReviving(player);    // is this player crouched reviving someone right now?
UltraReviveAPI.isNormalTarget(player); // is this a "normal" target for another plugin's effects?
UltraReviveAPI.available();           // is UltraRevive installed and active?
  • Two Bukkit events, in case you'd rather listen than ask:
  • PlayerDownedEvent — fires right after someone gets downed; carries the player and how many ticks they'll hold out (fatigue already applied, if applicable).
  • PlayerRevivedEvent — fires whenever a downed state ends, no matter how. Carries the player, who revived them (null if it was a self-revive, a bleed-out, or a surrender), and a cause: REVIVED, SELF_REVIVED, BLED_OUT, or SURRENDERED. Has a survived() shortcut that returns true only for REVIVED and SELF_REVIVED.
  • A shared metadata flag: while a player is downed, UltraRevive sets the ultrarevive_downed metadata (value true) on them. It follows the same visibility metadata convention (vanished) used by plugins like TAB, so UltraReviveAPI can also tell whether a player is in staff vanish mode.

Statistics

/ur stats (or /ur stats <player> if you're an admin) shows:

  • how many times you've been downed;
  • how many times you've been revived;
  • how many teammates you've revived;
  • how many times you've self-revived with a totem;
  • how many times you've bled out.

They're saved per player in plugins/UltraRevive/stats.yml, written to disk roughly every 30 seconds (and when the server shuts down), and can be turned off entirely by setting stats: false in the config. On top of that, every time a player joins or dies, UltraRevive syncs their deaths, kills, playtime, and experience level into the same file, pulled from the server's normal statistics — handy if you ever want to show everything together in a dashboard or a command of your own.

Frequently Asked Questions

What happens if nobody revives me in time? You bleed out: you really die, under your server's normal death rules (your inventory is lost as applicable). It's exactly like dying in vanilla, just a few seconds after the hit that should have killed you.

Can mobs finish me off while I'm downed? No, by default (immune-to-mobs: true). If you want them to be able to as well, set it to false.

Can I get back up on my own without anyone's help? Only if you're carrying the Blessed Totem of the Aether or the Unknown Totem of the End; without one of the two, you need another player to crouch next to you.

What happens if I disconnect while downed? You die (die-on-quit: true by default). Closing the client to "save yourself" doesn't work.

Do I have to accept the resource pack? No, unless you set resource-pack.force: true. If you don't have it (or you reject it), the three totems look like regular Totems of Undying; the rest of the plugin works exactly the same.

Can I carry all three totems at once? Yes, they're independent items. But watch out for the Cursed Totem of the Nether: if you die while carrying it and don't have a regular totem of undying (without the tag) in hand, you die outright — not even the Aether totem saves you from that specific curse.

Does UltraRevive filter revives by team or clan? No. Any player with the ultrarevive.revive permission who crouches next to you can revive you, whether they're on your team or not. Clan/faction filtering is left up to a separate clans plugin, if your server uses one.

Does it work on Spigot? No. It's built specifically against the Paper 26.1.2+ API; it won't load on Spigot.

What happens to my settings if I'm coming from UltraRevivir (the previous name)? They migrate on their own the first time the new plugin starts up: config, languages, stats, permissions, and even the totems you've already handed out. See Step-by-Step Installation.

How do I give a player a totem without waiting for them to find one? With /ur give <self|boost|end> [player] [amount], as an admin.

Version History

1.0 — October 15, 2026

First public release, for Paper 26.1.2 (Java 25). Before this, the plugin was part of a private all-in-one jar; in this version it comes out on its own, with its own thing: downing, reviving, and the three totems.

  • Full downing and rescue system: pose, red glow, boss bar, chat buttons, cooperative rescue with a grace period, heartbeat and blood tension in the final seconds, particle beacon, optional fatigue, and optional interruption on damage.
  • The three totems (Blessed Totem of the Aether, Cursed Totem of the Nether, Unknown Totem of the End), each with its own texture, drop chance per structure, and its own rules.
  • Resource pack served by the plugin itself (or by your own URL), without affecting any other item in the game.
  • /ur commands and permissions, including backward compatibility with the ultrarevivir.* permissions.
  • A complete config.yml, plus two full message languages (English and Spanish), with totem names tied to the selected language.
  • Its own data folder (plugins/UltraRevive/), with automatic migration from the old shared folder (plugins/UltraView/UltraRevive/).
  • Public API (UltraReviveAPI.isDowned, isReviving) and the PlayerDownedEvent and PlayerRevivedEvent events.
  • Migration fixes: the public API was looking up the plugin by a name that no longer existed and always returned null; finishing off a downed player could process two deaths from the same hit and lose the loot (death is now applied one tick later); totems handed out on earlier installations are still recognized.

Links