
DeathChest999
Death Chests - A plugin that leaves a chest containing all your items when you die, announces your death coordinates in chat, and automatically removes the chest after a customizable time period
Bug Fixes
- Fixed Permission Enforcement - The
deathchest.usepermission is now enforced before creating a death chest. - Fixed Keep Inventory Duplication - Death chests are no longer created when
keepInventoryis enabled, preventing duplicate item retention. - Fixed Compass Give-On-Death Setting -
compass.give-on-deathnow correctly gives players a death chest compass after death (when enabled). - Fixed Protection Toggle Behavior -
protection.enablednow properly controls whether non-owners are blocked from opening/breaking death chests. - Fixed Loot-After-Expire Behavior -
protection.allow-loot-after-expirenow allows non-owners to access expired chests when enabled. - Fixed Drop-On-Expire Behavior -
protection.drop-items-on-expirenow drops stored chest items to the ground when expiration cleanup removes a chest. - Fixed Chest Inventory Save Targeting - Chest contents are now saved by tracked chest session ID instead of inventory title matching, preventing wrong-chest saves.
- Fixed Admin Chest Editing Persistence - Admin-opened chest inventories now persist changes correctly on close.
- Fixed Owner XP Security - Stored XP is now only returned to the chest owner, not to non-owners or admins.
- Fixed Economy Lockout Edge Case - Paid chests no longer become permanently locked if Vault/economy is unavailable; they auto-unlock instead.
- Fixed Compass Lore Overwrite - Custom
compass.loreconfig lines are now preserved when the compass target updates. - Fixed Missing Compass Tab Completion -
/deathchest compassnow appears in tab completion for players with permission. - Fixed Reload Scheduler Handling - Reload now correctly starts/stops recurring compass, hologram, and ambient tasks based on current config.
- Fixed Economy Default Fallback -
economy.costis now used as the fallback value for unlisted world economy cost settings. - Fixed Expiring-Soon Timing Validation - Expiring-soon notifications no longer spam from invalid timing combinations (such as notice >= chest lifetime).
- Fixed UUID Crash Paths - Unsafe UUID parsing paths were hardened to prevent command/listener crashes from malformed chest data.
- Fixed Hologram Lifetime Accuracy - Hologram countdown updates now respect each chest's
customLifetimevalue.
- Fixed Permission Enforcement - The
New Features
Death Chest Compass
- Players can now obtain a compass that points directly to their nearest death chest
- Use
/deathchest compassto receive a tracking compass - Right-click the compass to manually refresh its target location
- Compass displays target world, coordinates, and distance in the item description
- Compass automatically updates direction periodically while held
- Optional setting to automatically give players a compass when they die
Enhanced Chest Protection
- Other players can no longer open or break death chests that don't belong to them
- Only the chest owner can access their items while the timer is active
- Configurable option to allow other players to loot the chest after the timer expires
- Configurable option to drop items on the ground when a chest expires
- Only the chest owner receives XP stored in the chest
New Commands
/deathchest compass- Receive a compass that tracks your nearest death chest
New Configuration Options
compass.enabled- Enable or disable the compass featurecompass.update-interval- How often the compass updates its target (in ticks)compass.give-on-death- Automatically give players a compass when they diecompass.name- Custom display name for the compass itemcompass.lore- Custom lore lines for the compass itemprotection.enabled- Enable or disable chest protection from other playersprotection.allow-loot-after-expire- Allow non-owners to loot after timer expiresprotection.drop-items-on-expire- Drop items on the ground when chest expires
New Permissions
deathchest.compass- Allows players to use the compass command
Bug Fixes
- Fixed Armor Duplication - Resolved an issue where armor pieces were being saved to the death chest twice, causing players to receive duplicate armor when retrieving their items
New Features
Customizable Messages System
- Added full message customization through config.yml
- All plugin messages can now be edited by server administrators
- Support for color codes using the ampersand (&) symbol
- Placeholder support for dynamic values including:
- %player% - Player name
- %world% - World name
- %x%, %y%, %z% - Coordinates
- %time% - Time remaining or delay
- %items% - Item count
- %xp% - Experience points
- %cost% - Economy cost
- %max% - Maximum chest limit
- %distance% - Distance to chest
- %created% - Creation timestamp
- %count% - Restored chest count
- %amount% - Item amount
- %item% - Item name
- Configurable message prefix
Per-World Settings
- Death chests can now be enabled or disabled per world
- Configurable chest lifetime per world
- Configurable economy cost per world
- Configurable XP storage percentage per world
- Default world settings for unlisted worlds
- Useful for disabling death chests in minigame worlds or adjusting settings for different dimensions
Particle and Sound Effects
- Configurable particle effects when a death chest is created
- Configurable particle effects when a death chest is opened
- Configurable particle effects when a death chest expires
- Ambient particle effects around active death chests
- Configurable sound effects for chest creation, opening, and expiration
- Adjustable particle count for all effect types
- Adjustable sound volume and pitch
- Configurable ambient effect interval
- All effects can be individually enabled or disabled
Floating Holograms
- Floating text display above death chests using invisible armor stands
- Displays owner name above the chest
- Displays countdown timer showing time remaining
- Displays item count stored in the chest
- Displays XP amount stored in the chest
- Fully customizable hologram lines through config
- Configurable hologram height offset
- Configurable hologram update interval
- Holograms automatically update to show current time remaining
- Holograms automatically removed when chest expires or is emptied
XP Storage System
- Player experience points are now saved when dying
- XP is stored in the death chest along with items
- XP is returned to the player when opening the death chest
- Configurable XP storage percentage (0-100%)
- Per-world XP storage percentage settings
- XP amount displayed in hologram and info command
Admin Commands
- New /deathchest admin command group for server administrators
- /deathchest admin list - View all active death chests on the server with owner, location, and time remaining
- /deathchest admin delete
- Delete a specific player's death chest - /deathchest admin tp
- Teleport to a player's death chest location - /deathchest admin view
- View the contents of a player's death chest without opening it - /deathchest admin restore - Restore all recently expired death chests
- Admin permission to open other players' death chests
- Admin permission to break other players' death chests
Info Command
- New /deathchest info command for players
- Displays detailed information about all active death chests
- Shows exact chest location with world and coordinates
- Shows detailed time remaining in hours, minutes, and seconds
- Shows total item count stored in each chest
- Shows XP amount stored in each chest
- Shows distance from player's current location to each chest
- Shows creation timestamp for each chest
Expired Chest System
- Expired death chests are now saved to a separate file
- Administrators can restore expired chests using the restore command
- Expired chest data includes original location, contents, owner, and XP
- Restoration creates new death chests with the saved contents
Tab Completion
- Full tab completion support for all commands
- Tab completion for subcommands (list, back, info, reload, admin)
- Tab completion for admin subcommands (list, delete, tp, view, restore)
- Tab completion for player names in admin commands
- Permission-aware tab completion (only shows commands player has access to)
Improvements
Command System
- Reorganized command structure with proper subcommand handling
- Better help messages showing available commands
- Permission-based help display (only shows commands player can use)
- Improved error messages with customizable text
- Console command support where applicable
Chest Management
- Improved chest creation with world settings support
- Better handling of chest contents serialization
- Automatic chest removal when emptied by player
- Improved chest lookup by owner name (supports offline players)
- Added chest ID tracking for better management
Configuration
- Expanded config.yml with all new settings
- Organized configuration sections for clarity
- Default values provided for all settings
- Comments describing each configuration option
Permissions
- New permission: deathchest.admin - Access to admin commands
- New permission: deathchest.admin.open - Open other players' chests
- New permission: deathchest.admin.break - Break other players' chests
- Updated permission hierarchy with deathchest.* wildcard
Data Storage
- New expired_chests.yml file for storing expired chest data
- Improved chests.yml structure with additional data fields
- Added storedXp field to chest data
- Added customLifetime field for per-world lifetime support
- Added
/deathchest reloadcommand to reload configuration without restarting - Added
prevent-explosions-nearconfiguration option to protect death chests from explosions - Added
teleport-delayconfiguration option to add delay before teleportation - Added
chest-materialconfiguration option to customize chest appearance - Added
chest-protection-radiusconfiguration option to protect area around death chests - Added expiration notifications that warn players before death chests expire
- Enhanced chest management with automatic cleanup and limits
- Added teleport cancellation when players move during delayed teleport
- Added
Added
- Configuration Option To Put Players DeathChest In A Specific Location
- Configuration Option Of Whether Or Not It Costs Money To Open Your DeathChest
- Implemented custom 54-slot death chest inventory.
- Implemented NBT tag for death chest identification.
- Ensured proper serialization and deserialization of
ItemStackobjects for persistent storage. - Added
/deathchest backcommand to teleport to the last death chest. - Added
deathchest.backpermission for the/deathchest backcommand. - Added coordinate display upon death and for the
/deathchest listcommand. - Refactored code into
ChestManager,PlayerDeathListener, andChestProtectListenerfor better organization. - Removed
InventoryManageras its functionality was integrated intoChestManagerandChestProtectListener.
✅ 1. Chest Logging System Added
New file: deathchests.yml
Logs every death chest with:
Player UUID
Chest location(s)
Timestamp
Double chest flag
Status (active, expired, etc.)
Added method: logDeathChest(...)
Added method: updateDeathChestStatus(...)
✅ 2. Compass Support Added
Config option: enable-compass (default true)
New command: /dc999 compass
Gives the player a lodestone compass pointing to their last death chest
Only works if death location is known
✅ 3. Double Chest Handling Improved
Added logic to:
Check if a DoubleChest really formed
If not, fallback to two single chests
Delayed chest merging validation: 3L delay
Each single chest is now saved and removed separately if not merged
Fixed: Duplicate saveChest() call removed
✅ 4. Chest Restoration Improved
All chest chunks are now force-loaded before restoration
Second chest block now validated before placing
Inventory contents now handled safely:
Trims or pads to match correct chest size
Prevents IndexOutOfBoundsException
✅ 5. Better Chest Protection
Owner can open the chest immediately after death ✅
Others are blocked during lock period ✅
Interaction events now notify non-owners of remaining lock time via chat
✅ 6. Safer File I/O
Config saving is now done asynchronously:
saveConfigAsync() for chest.yml
saveDeathChestsConfigAsync() for deathchests.yml
Reduces potential lag or I/O blocking
✅ 7. Config Reload Expanded
/dc999 reload now also reloads:
chest.yml
deathchests.yml
Properly updates all internal variables (lifetime, lock time, compass)
✅ 8. Minor Fixes & Cleanup
Removed redundant import statements
Cleaned up null checks and warnings:
If world doesn’t exist in config, now logs a warning
Death location loading now warns on invalid or missing world
Prevents chest placement in non-air blocks (fails gracefully)
InventoryInteract events now only check "DeathChest" name (not material)
✅ 9. Command Help Improved
/dc999 now shows relevant command list based on compassEnabled
✅ Bug Fixes
Fixed item duplication on death:
Moved event.getDrops().clear() to occur immediately after copying the drops, ensuring items no longer drop both on ground and in chest.
➕ New Features
Automatic double chest creation:
If there are too many items to fit in one chest, the plugin will now attempt to place a second chest adjacent to the first to form a double chest.
If no adjacent space is available, overflow items are dropped naturally.
Chest locking system:
Added lock timer (lock-duration) that prevents other players from opening a death chest for a set time.
Owners can access their chest immediately.
Non-owners are shown a countdown of remaining lock time if they try to open it early.
Owner tracking:
Each chest now saves the UUID of the player who died.
Used to enforce the locking mechanism per player.
Persistent lock + timestamp storage:
Death chests now store the time of creation (timestamp) to calculate remaining lock duration across server restarts.
Double chest restoration:
Both main and secondary chest locations are saved and restored if the plugin or server restarts before chest removal.
New commands:
/dc999 lock_duration
— Set how long chests remain locked to their owner (0 disables locking). Bug Fixes and Improvements
- Player vs Mob Death Handling Added explicit player instance check to prevent chests from spawning when mobs die Ensures the plugin only processes actual player death events
- Command Permission System Fixed broken permission logic that incorrectly allowed console access Now properly restricts commands to players only with appropriate permission checks
- Teleportation Safety Added success verification before removing death location data Death locations are now only cleared after confirmed successful teleportation
- Chest System Improvements Changed from unreliable double chest setup to single chest with custom identification Added custom name "DeathChest" to properly identify and track death chests Improved chest removal logic to only remove properly identified death chests
- Item Handling Enhancements Added comprehensive item restoration when chest creation fails Items are now properly dropped on ground if chest placement or serialization fails Improved overflow handling when chest inventory is full
- Configuration Management Added asynchronous configuration saving to prevent server lag Implemented proper YAML cleanup for expired chest entries Created reusable method for loading chest lifetime configuration
- Chunk Loading Optimization Made chunk loading asynchronous to prevent server performance issues Added safe chunk loading practices
- Chest Placement Safety Added block collision detection to prevent overwriting existing blocks Chests are now only placed in air blocks, with proper feedback to players
- Serialization Improvements Implemented safer ItemStack serialization with proper type checking Added error handling for serialization failures
- Code Cleanup Removed unused command registration for "deathchest999" Streamlined configuration reloading process Added proper error logging throughout the plugin
- Configuration Consistency Ensured chest lifetime configuration is properly loaded after reloads and changes Fixed configuration variable refresh after command executions
- Memory Management Added proper cleanup of expired chest data from configuration files Prevented configuration file size from growing indefinitely
🐛 Critical Bug Fixes Location Object Modification Issue:
Resolved an issue where modifying the death location with an offset was causing incorrect path keys and behavior when managing chests. Incorrect Path Management for Chest Deletion:
Fixed the problem of deleting the wrong path from the configuration when removing chests after their expiration. BukkitRunnable Reference Crash:
Corrected the reference in the runTaskLater() method to ensure it points to the plugin class instead of the BukkitRunnable, preventing crashes. Null Pointer Exception Risks:
Added error handling to prevent potential null pointer exceptions when loading chest contents from the configuration, ensuring stability even with corrupted data. ✨ New Features & Improvements Auto-Clear Death Location on /back Command:
Implemented functionality to automatically clear a player's death location from memory and the configuration file after they teleport back to it. Enhanced Double Chest Implementation:
Improved the handling of double chests to ensure proper placement and management without affecting the original death location. Comprehensive Error Handling:
Introduced try-catch blocks for file operations and added null checks throughout the codebase to enhance robustness and prevent crashes. Improved Configuration Management:
Ensured that the chest.yml file is automatically created if it doesn't exist, and improved the saving and loading of death locations to persist across server restarts. 🔧 Technical Improvements Memory Management:
Enhanced the handling of player UUIDs for storing death locations, ensuring efficient memory usage and retrieval.
the first release
