SoulKeeper
๐ก Updated this year๐ผ๏ธ Gallery (1 images)
๐ Analysis
- ๐ 0.4% endorsement rate
- ๐ #1185 of 1560 bukkit mods in this game by downloads
๐ About This Mod
<div align="center"> # ๐ป SoulKeeper ### Your items survive death. So does your progress. SoulKeeper captures your full inventory and experience into a **glowing soul** the instant you die โ persisting through lava, fire, and even the void โ and waits quietly at the death spot until you return to claim it. !(https://raw.githubusercontent.com/Astra-Interactive/SoulKeeper/refs/heads/master/media/souls.png) </div> --- ## โจ Inspiration SoulKeeper is the spiritual successor of (https://github.com/Astra-Interactive/DeadSoulsKT) โ rebuilt from scratch with a clean multiplatform architecture, async-first design, and a strong focus on reliability. Where DeadSoulsKT laid the foundation, SoulKeeper brings production-grade persistence, rich visual feedback, and cross-platform support to the same beloved mechanic. --- ## ๐ How Souls Work ### Creating a soul The moment you die, SoulKeeper silently intercepts the death event before anything hits the ground. Your **entire inventory** and a configurable portion of your **dropped XP** are captured and stored in the database as a soul โ nothing is scattered across the floor. A burst of red particles and a resonant bell signal that your soul has been born. The soul appears as a shimmering particle cloud with a floating nameplate โ **"Soul of \<Your Name\>"** โ right where you fell. > Souls spawned in The End are clamped to a minimum Y so they can never sink into the void. ### Picking up a soul Just **walk close** โ no right-click, no shift, no interaction. As soon as you enter the soul's range, it detects you and begins transferring: | Signal | Meaning | |-----------------------------------|-------------------------------------| | ๐ต Cyan dust particles | Soul holds XP | | โช White dust particles | Soul holds items | | ๐ Beacon ambient sound | Soul is nearby โ follow the sound | | ๐ฃ Purple smoke + anvil sound | Inventory full โ items still remain | | โจ Bright flash + extinguish sound | Soul fully collected and gone | Items flow back inventory-slot by inventory-slot. If your inventory is full, **partial pickup** works: XP is absorbed, whatever fits goes in, and the soul persists with only what remains โ no items are ever dropped or lost because of a full bag. ### Soul lifecycle ``` Death โ โโโโ soul_free_after โโโโโถ โโโโ soul_fade_after โโโโโถ โ โ Only owner Any player can collect can collect ``` | State | Who can collect | Default timing | |----------------|-----------------|--------------------------------------------| | ๐ **Private** | Owner only | Immediately after death | | ๐ **Public** | Any player | After `soul_free_after` (default: 2 days) | | ๐จ **Gone** | โ | After `soul_fade_after` (default: 14 days) | Background workers (`FreeSoulWorker`, `DeleteSoulWorker`) run on a configurable tick cadence and advance souls through this lifecycle automatically โ no cron jobs, no restarts, no admin action needed. --- ## ๐๏ธ Krates โ Backup Storage Every death also writes a **Krate**: a standalone YAML snapshot of the soul, saved to disk **independently of the database**. ``` plugins/SoulKeeper/ deaths/ <player-uuid>/ <epoch-second>_0.yml โ first krate <epoch-second>_1.yml โ second krate (if retry occurred) ... ``` Krates are a last-resort safety net. Even if the SQLite database is lost, corrupted, or rolled back, an admin can restore any dead player's exact inventory from the krate file โ **zero database interaction required**. ``` /soulkrate <uuid> <epoch-second> <index> ``` This reads the matching `<epoch>_<index>.yml` krate file and deposits its items directly into the requesting player's inventory. Use it when: - A database failure occurred during a busy session - A player was rolled back by an external tool - Items need to be restored from a specific past death --- ## ๐ Features ### ๐ Fully non-blocking Every heavy operation โ soul creation, pickup detection, database reads/writes, background worker loops โ runs on **Kotlin coroutines** dispatched to background threads via `KotlinDispatchers`. The main game thread is never touched for I/O. ### ๐ก๏ธ Safe, explicit failure paths Database operations return `kotlin.Result<T>`. Failures are logged at the call site and skipped gracefully โ they never crash the server, silently eat items, or leave souls in a broken state. Concurrent DB writes in `SoulsDaoImpl`, the pickup loop in `PickUpWorker`, and death event handling in `ForgeSoulEvents`/`BukkitSoulEvents` are each guarded by their own `Mutex`. ### ๐ฆ Krate safety net A file-based snapshot is written on every death independently
# ๐ป SoulKeeper
### Your items survive death. So does your progress.
SoulKeeper captures your full inventory and experience into a glowing soul the instant you die โ persisting through lava, fire, and even the void โ and waits quietly at the death spot until you return to claim it.
!(https://raw.githubusercontent.com/Astra-Interactive/SoulKeeper/refs/heads/master/media/souls.png)
## โจ Inspiration
SoulKeeper is the spiritual successor of (https://github.com/Astra-Interactive/DeadSoulsKT) โ rebuilt from scratch with a clean multiplatform architecture, async-first design, and a strong focus on reliability. Where DeadSoulsKT laid the foundation, SoulKeeper brings production-grade persistence, rich visual feedback, and cross-platform support to the same beloved mechanic.
## ๐ How Souls Work
### Creating a soul
The moment you die, SoulKeeper silently intercepts the death event before anything hits the ground. Your entire inventory and a configurable portion of your dropped XP are captured and stored in the database as a soul โ nothing is scattered across the floor.
A burst of red particles and a resonant bell signal that your soul has been born. The soul appears as a shimmering particle cloud with a floating nameplate โ "Soul of \
> Souls spawned in The End are clamped to a minimum Y so they can never sink into the void.
### Picking up a soul
Just walk close โ no right-click, no shift, no interaction. As soon as you enter the soul's range, it detects you and begins transferring:
| Signal | Meaning | |-----------------------------------|-------------------------------------| | ๐ต Cyan dust particles | Soul holds XP | | โช White dust particles | Soul holds items | | ๐ Beacon ambient sound | Soul is nearby โ follow the sound | | ๐ฃ Purple smoke + anvil sound | Inventory full โ items still remain | | โจ Bright flash + extinguish sound | Soul fully collected and gone |
Items flow back inventory-slot by inventory-slot. If your inventory is full, partial pickup works: XP is absorbed, whatever fits goes in, and the soul persists with only what remains โ no items are ever dropped or lost because of a full bag.
### Soul lifecycle
``` Death โ โโโโ soul_free_after โโโโโถ โโโโ soul_fade_after โโโโโถ โ โ Only owner Any player can collect can collect ```
| State | Who can collect | Default timing | |----------------|-----------------|--------------------------------------------| | ๐ Private | Owner only | Immediately after death | | ๐ Public | Any player | After `soul_free_after` (default: 2 days) | | ๐จ Gone | โ | After `soul_fade_after` (default: 14 days) |
Background workers (`FreeSoulWorker`, `DeleteSoulWorker`) run on a configurable tick cadence and advance souls through this lifecycle automatically โ no cron jobs, no restarts, no admin action needed.
## ๐๏ธ Krates โ Backup Storage
Every death also writes a Krate: a standalone YAML snapshot of the soul, saved to disk independently of the database.
```
plugins/SoulKeeper/
deaths/
Krates are a last-resort safety net. Even if the SQLite database is lost, corrupted, or rolled back, an admin can restore any dead player's exact inventory from the krate file โ zero database interaction required.
```
/soulkrate
This reads the matching `
- A database failure occurred during a busy session
- A player was rolled back by an external tool
- Items need to be restored from a specific past death
## ๐ Features
### ๐ Fully non-blocking
Every heavy operation โ soul creation, pickup detection, database reads/writes, background worker loops โ runs on Kotlin coroutines dispatched to background threads via `KotlinDispatchers`. The main game thread is never touched for I/O.
### ๐ก๏ธ Safe, explicit failure paths
Database operations return `kotlin. Result
### ๐ฆ Krate safety net
A file-based snapshot is written on every death independently
๐ Mod Details
- Game
- Minecraft Plugins
- Author
- makeevrserg
- Version
- 1.10.0
- Downloads
- 1,605
- Endorsements
- 7
- Category
- bukkit
- Created
- 10/26/2024
- Updated
- 8/24/2026
- Game Versions
- 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4
๐ง How to Install Minecraft Plugins Mods
Download from Modrinth. Use Prism Launcher or drop into your mods folder.
๐ Full step-by-step install guide for Minecraft Plugins โ
Visit the official mod page for specific installation instructions for this mod.
๐ฎ Need cheat codes or console commands? Check ur gaming wiki for Minecraft Plugins commands, item IDs, and more.
โ Frequently Asked Questions
Which Minecraft Plugins versions does SoulKeeper support?
The author lists 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5. Other versions may work but are untested by the author.
What is the latest version of SoulKeeper?
Version 1.10.0, published 2026-08-24 with 1,605 downloads recorded at the source.
Keep browsing โ more Minecraft Plugins mods await
