Compatibility
Minecraft: Java Edition
26.1.x
1.21.x
Platforms
Tags
Creators
Details
Licensed ARR
Published last month
KeepBody
Inspired by the offline body mechanic in Rust, this plugin brings a similar experience to your Minecraft server. When a player logs out, a Citizens NPC (player-type) is spawned at their location as an offline "body".
Upon login, the NPC's state (location, HP, inventory) is synced back to the player and the NPC is removed.
Requirements
| Server | Spigot or Paper 1.21.1+ |
| Java | 21+ |
| Required Plugin | Citizens |
Features
- Offline body — Spawns an NPC with the player's skin and equipment at logout
- State sync — Restores location, HP, and inventory to the player on login
- NPC death — If the NPC is killed while the player is offline, items drop naturally and the player dies on next login
- Inventory access — Right-clicking the NPC opens its inventory (configurable)
Required Plugin
| Plugin | Checked version | Download |
|---|---|---|
| Citizens | 2.0.35-SNAPSHOT | https://ci.citizensnpcs.co/job/citizens2/ |
Citizens must be placed in the
plugins/folder. KeepBody declares it as a required dependency so Citizens is always enabled first.
Installation
- Download Citizens and place it in
plugins/ - Download KeepBody and place
KeepBody-1.0-SNAPSHOT.jarinplugins/ - Start the server
Configuration (plugins/KeepBody/config.yml)
# Whether right-clicking the NPC allows editing its inventory
# true: items can be added/removed / false: inventory cannot be opened
allow-inventory-edit: true
# Whether the NPC lies down (uses SleepTrait) at the player's logout position
sleep-npc: true
# Whether to keep the NPC frozen in place when hit
# true: velocity and position are restored each hit so the NPC never moves
immobilize-npc: false
# Whether the NPC is invincible (takes no damage while the player is offline)
# Hurt animation and knockback still occur; only HP tracking is skipped
invincible-npc: false
# Language setting: 'en' (English) or 'ja' (Japanese)
language: 'en'
# Ghost NPC cleanup interval in seconds
# A "ghost" is an untracked "(Offline)" NPC left behind by a crash or reload.
# This interval controls how often the plugin scans for and removes them,
# and respawns any missing body NPCs for currently-offline players.
ghost-cleanup-interval: 300
# Debug mode
# true: show debug messages in console and in-game (OP only)
debug: false
# In-game messages. Color codes using '&' are supported (e.g. &cRed, &aGreen).
messages:
en:
inventory-name: "%s's inventory"
barrier-name: "&cUnavailable"
npc-spawned: "Spawned body of %s."
npc-died: "Body of %s has died."
inventory-opened: "'%s' opened the body of '%s'."
ja:
inventory-name: "%sのインベントリ"
barrier-name: "&c使用不可"
npc-spawned: "%s のボディーを生成しました。"
npc-died: "%s のボディーが死亡しました。"
inventory-opened: "'%s' が '%s' のボディーを開きました。"


