A fully server-side rewrite of the ideas in my client+server mod Fallen
When you die, your items don't scatter and despawn. Your body stays where you fell — a corpse wearing your skin — holding everything you were carrying plus your XP. Walk back and right-click to reclaim it.
The whole mod runs on the server. Players connect with completely vanilla clients — nothing to install client-side. Drop it in your Fabric server's mods folder and every player gets corpses, whether they mod their client or not.
Features
- Death leaves a lootable corpse instead of loose, despawning item drops (respects the keepInventory gamerule).
- The corpse is rendered with the dead player's actual skin, lying where they fell.
- The body falls and settles on the ground, floats on lava and water pools, and is held just inside the world over the void — loot is never destroyed.
- Right-click opens the corpse as a chest: armor, offhand, inventory and hotbar laid out in their own slots. Take-only — nothing can be put in.
- Sneak-right-click returns everything to its original inventory slots, plus your stored XP. A full inventory never spills loot.
- Owner-locked: for a configurable time only the owner (and ops) can loot a body; afterwards anyone can. Left too long, it drops its contents so nothing is ever truly lost.
- /deathhistory lists your recent deaths (ops can inspect other players).
How does it work with vanilla clients?
The visible body is a packet-level fake player in the sleeping pose carrying the dead player's real skin; the clickable hitbox is a pair of invisible vanilla interaction entities; the loot screen is a plain vanilla chest menu that only the server knows maps back to your inventory.
Config (config/ssc.json)
- enabled — master switch (false = vanilla deaths)
- despawnMinutes (default 2880) — minutes before the corpse despawns and drops its loot, 0 = never
- keepExperience (default true) — store and return the player's XP
- opsBypassProtection (default true) — operators can loot any corpse
- spawnInLava / spawnOverVoid (default true) — whether hazard deaths still form a floated / void-held corpse
- voidScanDepth (default 12) — how far down to scan before a spot counts as "over the void"
- skeletonMinutes (default 1440) — minutes before a corpse unlocks for everyone, 0 = never
- skeletonStageIsPublic (default true) — aged corpses may be looted by anyone
- deathHistorySize (default 20) — deaths kept per player for /deathhistory
Requires Fabric API. Works in singleplayer too (it runs on the integrated server).

