A thrilling Minecraft Paper plugin where death has consequences! Lock players' souls and challenge others to rescue them.
SoulLock is an immersive Paper plugin that transforms death mechanics in Minecraft. When a player dies, their soul is lockedโfrozen until another player places their player head on the ground to revive them. It's perfect for:
- ๐ฐ Survival servers with high stakes
- ๐ฅ Multiplayer co-op adventures
- ๐ช Creative minigames and roleplay servers
- โ๏ธ PvP challenges with soul mechanics
- ๐ชฆ When a player dies, their soul is automatically locked
- ๐ค Each player can only have ONE active soul lock at a time
- ๐ Locked souls are stored by UUID (unique per player)
- ๐พ All data is persisted to disk and survives server restarts
When a locked player joins the server:
- ๐๏ธ SPECTATOR MODE (default): Player enters spectator mode but can still move around and explore
- ๐ซ KICK MODE (optional): Player is immediately kicked from the server
- โ๏ธ Choose which mode in
config.yml
Locked players cannot:
- ๐ถ Move (if not in SPECTATOR mode)
- ๐ช Break blocks
- ๐งฑ Place blocks
- ๐ค Interact with entities or objects
- ๐ฎ Use items
When a player head is placed on the ground:
- ๐ The plugin detects if it belongs to a locked player
- โจ If yes:
- ๐ Soul unlocked! Player is immediately freed
- ๐ง The player receives a message: "Your soul has been restored! โจ"
- ๐ฏ If player is online:
- Teleported to head location
- Restored to SURVIVAL mode
- Spawn point set to revival location
- โก Lightning strike effect (optional, non-damaging)
- ๐ Colorful particles spawn (optional)
- ๐๏ธ Head disappears after placement
- โก Lightning Strike (configurable) - Dramatic effect when soul is restored
- ๐ Particle Effects (configurable) - Beautiful visual feedback
- ๐ฌ Colored Messages - Professional, colored console & player messages
- ๐ When dropped, heads display the player's actual Minecraft skin
- ๐ญ Uses Bukkit/Paper API (
setOwningPlayer) for authentic rendering
- ๐ฆ Java 21+ installed
- ๐ Maven (for building from source)
- ๐ฅ๏ธ Paper Server (v1.21+)
cd "D:\Slimeey Studios\SoulLock"
mvn clean packageThe compiled jar will be created at: target/SoulLock-1.0.jar
- Copy
target/SoulLock-1.0.jarโpaper-test/plugins/SoulLock-1.0.jar - Start the server (first run creates config files)
- Configure settings in
plugins/SoulLock/config.yml
cd "D:\Slimeey Studios\SoulLock\paper-test"
.\start.ps1๐ก Tip: The server runs in offline mode by default for testing
Edit plugins/SoulLock/config.yml:
# ๐ป How to treat locked players when they join
# SPECTATOR: Player enters spectator mode (can move & explore)
# KICK: Player is kicked from server
revive-mode: SPECTATOR
# โก Show lightning strike when soul is restored
lightning-effect: true
# ๐ Spawn particles when soul is restored
particle-effect: true
# ๐ชฆ Keep player heads from despawning
prevent-head-despawn: true| Option | Values | Description |
|---|---|---|
revive-mode |
SPECTATOR / KICK |
How locked players behave on join |
lightning-effect |
true / false |
Show lightning when soul is restored โก |
particle-effect |
true / false |
Show particle effects on revival ๐ |
prevent-head-despawn |
true / false |
Prevent player heads from disappearing naturally ๐ชฆ |
1. โ ๏ธ You die โ Soul is locked
2. ๐ป You join server โ Enter SPECTATOR mode (can move around)
3. ๐ Your head drops at death location (with your skin)
4. ๐ข Message appears: "Your soul is locked!"
1. ๐ Find the player's head at their death location
2. ๐ Place the player head on the ground (like a block)
3. โจ Magic happens:
- โก Lightning strikes!
- ๐ Particles burst!
- ๐ข Message: "Your soul has been restored! โจ"
4. ๐ Player is instantly:
- Switched to SURVIVAL mode
- Teleported to head location
- Unlock notification sent
/soullockadmin unlock <player|uuid>
Examples:
/soullockadmin unlock Steve
/soullockadmin unlock 550e8400-e29b-41d4-a716-446655440000
Message Output:
โ [SoulLock] Soul unlocked for Steve!
Permissions:
soullock.admin- Required for admin commands (default: OP only)
- ๐พ Locked player UUIDs stored in
plugins/SoulLock/data.yml - ๐ Auto-saved when:
- Player dies
- Soul is unlocked/restored
- Server shuts down
- ๐ Data persists across server restarts
locked_players:
550e8400-e29b-41d4-a716-446655440000:
username: Steve
death_location:
world: world
x: 100.5
y: 64.0
z: 200.5| Event | What Happens |
|---|---|
PlayerDeathEvent |
๐ Soul is locked, head drops |
PlayerJoinEvent |
๐ป Locked players enter SPECTATOR mode |
BlockPlaceEvent |
๐ Check if placed block is a player head โ Revive! |
PlayerQuitEvent |
๐ Optional: Update player data |
SoulLock Plugin/
โโโ ๐ SoulLockPlugin.java (Main class, event manager)
โโโ ๐ง DeathListener.java (Handles death events)
โโโ ๐ง JoinListener.java (Handles player joins)
โโโ ๐ง BlockListener.java (Handles head placement)
โโโ ๐พ DataManager.java (Save/load data)
โโโ ๐ ๏ธ HeadUtility.java (Create player heads)
โโโ ๐ง MessageUtil.java (Colored messages)
- โ Uses Paper's modern scheduler
- โ Async file I/O where possible
- โ No blocking API calls on main thread
- ๐ฏ Adventure API for colored messages
- ๐ Modern Paper scheduler
- ๐ง Optimized event system
- ๐ป Paper-specific optimizations
mvn clean packageCopy-Item "target/SoulLock-1.0.jar" "paper-test/plugins/"cd paper-test
.\start.ps1- Open Minecraft launcher
- Add server:
localhost(offline mode) - Join and test!
[Game Start]
๐ฎ Alice & Bob explore together
[Alice Dies]
โ ๏ธ Alice dies at coordinates (100, 64, 200)
๐ Soul locked! Head drops with Alice's skin
๐ข Message: "Your soul is locked! โ ๏ธ"
[Alice Joins]
๐ป Alice enters SPECTATOR mode (can still move)
๐ข Message: "You are in spectator mode!"
[Bob Searches]
๐ Bob finds Alice's head at (100, 64, 200)
๐ Bob places the head on the ground
[Revival!]
โจ Magical effect triggers:
- โก Lightning strikes!
- ๐ Particles burst!
- ๐ข "Your soul has been restored! โจ"
- ๐ Alice switches to SURVIVAL mode
- ๐ฏ Alice teleported to head location
- ๐ Alice's head disappears
[Alice Continues]
๐ฎ Alice & Bob continue playing together!
- โ Check Java version (21+ required)
- โ
Verify
plugin.ymlsyntax - โ Check server logs for errors
- โ
Check
prevent-head-despawn: truein config - โ Verify head placement detection
- โ Ensure head is from a locked player
- โ Check if player is online
- โ Verify spawn location is safe
- โ
Check player has
soullock.adminpermission - โ Verify correct command syntax
- โ Check player UUID format
| Command | Permission | Description |
|---|---|---|
/soullockadmin unlock <player|uuid> |
soullock.admin |
Unlock a locked player's soul |
Edit color codes in MessageUtil.java class
Customize particle types in revival event handler
Toggle or modify lightning in BlockListener.java
- Plugin Name: SoulLock
- Version: 1.0
- API Version: 1.21+
- Required: Paper Server, Java 21+
For issues, questions, or suggestions:
- ๐ Check the troubleshooting section
- ๐ Review server logs in
logs/ - ๐ Verify config.yml syntax
- ๐ค Check permissions and commands
SoulLock ยฉ 2026 Slimeey Studios. All rights reserved.
Enjoy the thrilling soul-locking experience! ๐โจ