Compatibility
Minecraft: Java Edition
26.2
26.1.x
1.21.x
1.20.x
1.19.x
1.18.x
1.17.x
1.16.x
1.15.x
1.14.x
Platforms
Links
Tags
Creators
Details
Licensed MIT
Published 5 days ago
Updated 2 weeks ago
EternalDeathDrops – Backup & Eternal Death Drops
EternalDeathDrops is a lightweight, performance‑optimized plugin that combines two essential features for server administrators:
- Automated world backups – create scheduled backups of your worlds with custom categories and retention policies.
- Eternal death drops – items dropped on death never despawn (or have a configurable lifetime), ensuring no loot is lost.
✨ Features
-
Flexible backup system
- Built‑in categories:
startup,hourly,manual - Fully customizable categories with independent intervals, folder names, and max backup count
- Configurable world list – backup only the worlds you specify
- Smart save‑wait algorithm (monitors
.mcaand.datfiles) with adjustable stability checks and timeouts - Asynchronous ZIP compression with adjustable level (0–9)
- Automatic cleanup of old backups
- Built‑in categories:
-
Eternal death drops
- Items dropped by players are marked as "eternal" – they will never despawn (or will despawn after a customizable time in ticks)
- Persistent metadata across server restarts – items keep their lifetime counter
- Full support for item pickups – metadata is removed when picked up, and the item returns to normal behaviour
- Fully customizable and includes many features!
-
Performance first
- All heavy operations (backup creation, old backup deletion) run asynchronously
ChunkLoadEventonly processes items in the loaded chunk, not the whole world- Minimal impact on MSPT – tested with 150 simultaneous player deaths with full inventories – MSPT increased by only ~14% (from ~7.X ms to 8.0 ms) during normal chunk loading, and up to 30 ms when loading chunks with thousands of items (which would drop client FPS from 120 to below 1).
-
Full configurability
- All features can be enabled/disabled via
config.yml - Set your own world folders, lifetime ticks, backup intervals, retention limits, and compression level
- All features can be enabled/disabled via
📖 Commands
| Command | Description | Permission |
|---|---|---|
/backup |
Creates a manual backup of all worlds | eternaldeathdrops.backup |
/cleareternaldrops |
Removes all eternal death drop items from the server | eternaldeathdrops.clear |
/eternaldeathdrops reload |
Reloads the plugin configuration from disk | eternaldeathdrops.reload |
All commands require op by default.
🔐 Permissions
eternaldeathdrops.backup– allows using/backupeternaldeathdrops.clear– allows using/cleareternaldropseternaldeathdrops.reload– allows using/eternaldeathdrops reload
⚡ Performance
- Tested on paper 1.21.11 with 6000 stacks of items in one chunk and mspt increased by 10-20%(from ~9-10 mspt to ~10-12 mspt).
- Tested with default config.
- Backups can be produced in up to 3 seconds of waiting from /backup to .zip file in backup directory.
🔧 Compatibility
- Plugin was coded on just bukkit api so it compatible with Bukkit, Paper, Purpur, Spigot and other server-cores that have bukkit api in them(do not compatible with folia).
- Plugin uses only 1.14+ bukkit api so it can be used in various servers.
⚙️ Configuration
The plugin generates a default config.yml on first run. Key settings:
# Enable/disable plugin features
features:
backup: true # Enable automated backups. Default: true
eternal-items: true # Enable eternal death drops. Default: true
# World folders to backup (list of folder names in server root)
# If not specified or empty, default worlds will be used: world, world_nether, world_the_end
worlds:
- "world"
- "world_nether"
- "world_the_end"
# Lifetime of eternal items in ticks (0 = forever, 20 ticks = 1 second)
eternal-lifetime-ticks: 0
# Time beetween checks for expired items and time beetween ticking timers(default = 20 ticks = 1 second)
# The higher this value the more performance, but it can cause smaller accuracy of lifetime timers
time-between-checks: 20
# This option controls do timers of item's lifetime tick in only
# loaded chunks(default = true)
do-items-only-tick-in-loaded-chunks: true
# This option controls can other players pickup your death's items( default = true)
can-other-players-pickup-death-drops: true
# This option controls can mobs pickup playrs death's items(default = true)
can-other-mobs-pickup-death-drops: true
# These options controls how items spread after death(default values are equal to vanilla)
death-item-spread:
x: 0.5 # Random offset on X axis (total range = ±x/2). Default: 0.5
y: 0.2 # Vertical offset added to the drop position. Default: 0.2
z: 0.5 # Random offset on Z axis (total range = ±z/2). Default: 0.5
do-items-glow: false # If true, items will glow white when dropped. Default: false
# Maximum number of backups to keep for each category (set to 0 to disable the category)
max-backups:
startup: 3
hourly: 3
manual: 3
# Interval for hourly backup in ticks (0 = disabled, 20 ticks = 1 second)
hourly-interval: 72000 # 1 hour
# Timeout for waiting for save completion in ticks.
# If set to 0 or negative, the default (600 ticks = 30 seconds) will be used.
# Increase this value if you see frequent timeout warnings.
save-timeout-ticks: 600
# Number of consecutive checks (every 200ms) that must show no changes
# to consider save completed. Default 10 = 2 seconds of stability.
stability-checks: 10
# Delay after stability is achieved, in ticks (20 ticks = 1 second).
# This extra wait ensures all data is flushed. Default 20 = 1 second.
post-stability-delay: 20
# ZIP compression level (0 = no compression, 9 = maximum, default 6)
compression-level: 6
# Custom backup categories (all disabled by default)
# You can create as many of those as you need
custom-categories:
custom1:
enabled: false
interval: 36000 # 30 minutes
folder-name: "custom1_backups"
max_backups: 3
custom2:
enabled: false
interval: 144000 # 2 hours
folder-name: "custom2_backups"
max_backups: 3
# Options below are WIP and do not affect anything yet
# These options control how glowing effect will be applied to items
item-glowing:
enabled: false
color:
static: true # If true, the color will be the same for all items
color: "000000" # Only for static color. Default: "000000"
based-on-the-dimensions: false # If true, the color will be based on the dimension player died in or items in. Default: false
based-on-the-player-dim: true # If true, the color will be based on the player death location's dimension. Default: true
bosed-on-the-items-dim: false # If true, the color will be based on the item location's dimension. Default: false
dimensions: # Controls the color for dimensions. Default values: "- overworld: LIME"\n- "nether: RED"\n- "end: BLACK". Handle only minecraft's teams colors
- "overworld: LIME"
- "nether: RED"
- "end: PURPLE"
based-on-the-owner: false # If true color will be based on the owner of the item. Default: false
# only-to-owner: false # If true, the glowing effect will only be visible to the owner of the item. Default: false

