🔴 This plugin was originally created by Ranull, who has permitted its posting provided that the source code remains available.
If you are not Ranull and attempt to file a DMCA takedown for this resource, it will be considered DMCA abuse.
💀 The definitive death chest plugin
Every feature you could ever need while still being lightweight and efficient.
🚀 Top Features:
- Customizable
- Schematics (Does not revert currently)
- Economy
- Regions
- Placeholders
- Protection
- Zombies
- Corpses
- Models
- Obituary
- Compass
- Head Drops
- Holograms
- Particles
- Tokens
- Blacklisting
- Teleport Delay
- Effects on Respawn
- Automatic Config Updater
- Grave Previews
- Grave Abandonment
- Grave Radius Protection
- Reload Safe (only through
/graves reload)
📦 Supports:
-
Minecraft Versions:
- 1.7.x, 1.8.x, 1.9.x, 1.10.x, 1.11.x, 1.12.x, 1.13.x, 1.14.x, 1.15.x, 1.16.x
Though we initially support these versions, it is not a high priority for us and likely will break or be removed in future versions.
- 1.17.x, 1.18.x, 1.19.x, 1.20.x, 1.21.x
- 1.7.x, 1.8.x, 1.9.x, 1.10.x, 1.11.x, 1.12.x, 1.13.x, 1.14.x, 1.15.x, 1.16.x
-
Servers:
- Spigot, Paper, Purpur, Airplane, Pufferfish, Tuinity, CraftBukkit, CatServer, Mohist, Magma, MultiPaper
- GeyserMC (Bedrock Players)
- Forge/Bukkit Hybrid servers (Mohist¹, Magma, CatServer)
- Folia
- MySQL, MariaDB, PostgreSQL, H2, Microsoft SQL Server, and SQLite
¹ Though we added checks to Mohist, we will not support Mohist-related bugs if a bug is created by them.
🔌 Integrations:
- Vault (Economy and Permissions)
- WorldEdit (Schematics)
- WorldGuard (Flags)
- Towny (Towns and Wilderness — 🔴 Experimental)
- GriefDefender (Claims — 🔴 Experimental)
- PlaceholderAPI (Placeholders)
- FurnitureLib / DiceFurniture (Furniture)
- FurnitureEngine (Furniture)
- ItemsAdder (Furniture/Blocks)
- Nexo (Furniture/Blocks)
- ChestSort (Sorting Grave)
- ProtectionLib (Protected Region Detection)
- PlayerNPC (Corpses)
- FancyNpcs (Corpses)
- Citizens (Corpses — 🔴 Experimental)
- Skript (Events only at this time)
- LuckPerms (Permissions)
- CoreProtect (Logs interactions, place, and break. Requires API v9 or newer)
- NoteblockAPI (Plays an
.nbssound on player death)
🐞 Bug Reports:
If you find bugs, please report them in the discussion or in our Discord.
All Versions
+ Add Version- Fixed Skript events breaking GravesX events.
- Improved debug logging for no-drop failures.
- Water and Lava Smart placement now properly respects configuration options.
- Improved grave saving during server shutdown.
- Moved non-grave world data messages behind debug mode.
- Added configurable Curse of Binding behavior.
- Improved Curse of Vanishing handling.
- Fixed MiniMessage compatibility with version 5+. *(Direct Spigot compatibility may no longer work and may not be supported.)*
- Fixed version checking when players join. *(Development builds will display as development builds due to separate development and release profiles.)*
- Improved void death handling so graves attempt to generate in a safe location.
- Updated ItemsAdder integration. *(Currently untested as I do not own the plugin.)*
- Updated dependencies.
- Improved MariaDB compatibility.
- Bumped the configuration version for the new release.
- TL;DR:** This update includes several reliability improvements for grave creation, shutdown handling, integrations, and item enchantment behavior.
## Health & Development Update
I've been dealing with blood pressure issues that have resulted in several hospital visits since April. Since starting medication, I've also experienced periods where my blood pressure drops too low.
I'm still **actively developing GravesX**, and the project is **not going unmaintained**. Updates may simply be a little slower while I manage my health. GravesX remains open source, and contributors are always welcome to help with development.
Thank you for your patience and continued support.
- CraftEngine support for items and graves.
- TextDisplays can now act as grave holograms. You will need to execute
/grave migrate hologramsto convert all old ArmorStand holograms to TextDisplay holograms. This changes holograms from one ArmorStand per line per grave to one TextDisplay per grave. - Added expressions, conditions, and effects. This lets people do silly stuff with GravesX just by using Skript. Examples are included in
skript.txt. - Exposed death cause for graves:
Graves#getDeathCause(). - Added BagOfGold support. Thanks to @Becerritoo and @PetziPotato.
- Added
GravePreCreateEvent, which is called before a grave is created. - Opening a grave can now spawn zombies when enabled with
zombie.open. - Added a block list of items a grave can spawn on top of. This includes carpet or configured blocks in
grave.ymlto prevent destroying them.
## Fixes
- Fixed issues with holograms not removing when using
PersistentDataContainer. - Updated the Skript implementation to move away from features marked for removal.
- Fixed the
grave.explodesetting being ignored. - Fixed an issue where walking over a grave could fail to pop the grave because the player did not own it.
- Fixed a bug with
createBlockin grave providers when they utilize the grave block. - Fixed Binding Curse items being deleted instead of staying on the player after death.
- Fixed the protected placeholder being inverted.
grave.ymlhas replacedstatewithstatesunderprotection.
## Changes
- SQLite support has been officially dropped. All SQLite databases will be migrated to H2.
EntityDatais now cached in memory for faster processing./graves reloadwill now reload the entire plugin.- Grave providers will now determine which provider created the grave:
Grave#getProviderID(). - Smart placement has received an overhaul. This fixes numerous bugs, including Nether roof placement issues when there should not be Nether roof placement.
- Graves tab completion for player searches will now grab the top 25 results. This prevents lag on large servers that may have thousands of entries.
# Why the version string change?
This change came as a late introduction in the development cycle. This update is basically the expected
4.9.11.1 release, but this is how we are versioning going forward.How the version string is broken down:
- 2026** - Year of release.
- 4.9** - Tied to being a fork of Graves 4.9.
- 1** - Release number. This can go up infinitely until the next year comes around, then it resets back to 1.
- Exposed some methods for modules to help with configurations
- Disabling a module can now use this in the same class the module is setup in or the class that extends GravesXModule
- Exposed a method to register GravesX Modules Commands for complex method setups needing to reference another class that is set up on enable
- Exposed method to see if a module is enabled
- Reverted timer behavior to prior 4.9.10.1 behavior (will be re-written in 4.9.11.1)
- Fixed issue with server crashing when purging a grave directly using its UUID
- Fixed issue with air pockets and remaining heads upon looting a grave
- Fixed issue with breaking a block duping experience given
- Fixed issue where shift and breaking would not autoloot the grave (if you don't want this behavior, just set break to false under the autoloot settings.
- Exposed options for poses using FancyNpcs and Mannequins
- Added config option to not store experience in graves and just drop them like normal
- Bump config version.
Skipped 6, 7, 8, and 9 since we kindof added some more stuff. On to 4.9.11.1 next. Release date: No ETA
- Fixed bug with timers not updating properly (Thanks to Tylorturner and ecolocraft for reporting said issue)
- Fix duplication exploit when reaching max amount of graves (Thanks to sillytune for reporting the bug)
- Switch from UniversalScheduler to GlobalScheduler (Introduced **SchedulerManager** and deprecated **Graves#getGravesXScheduler()**)
- Explosion for Entity and Block merged into one listener (Shouldn't both fire at once, but just in case it does)
- Removed Void Smart (This feature never worked. If someone wants to re-implement it, have at the PR)
- Updated MiniMessage to 4.26.1
- GraveCreateEvent can now set values for a grave directly
- Fixed cannot measure distance issue with Virtual Graves
- Fixed Item Dupe Exploit on Grave Expiration (This exploit has been discovered on 4.9.10.1, but has also spanned back to 4.9.9.1 from testing. Thanks TylorTurner for reporting this bug.)
- Graves will now drop items if you reach max graves and allow removing the oldest grave.
- GameRules have changed from Class to Interface, breaking on versions older than 1.21.11, so now patched /via CompatibilityGameRule.
- Fixed Folia based chunk issues. This has introduced ChunkManager to handle chunks going forwards and for easy maintenance.
- Console now properly points out YAML errors (this does not check for improperly set config options)
- Auto-Loot has been enabled by default (this will work on new configs. Older configs will still need to enable this in grave.yml)
- Print all players when using **/graves list/gui <player>** whether they are online or not.
- When AccessDeniedException occurs with a folder or file lacking permissions, it will send suggestions on how to fix said issues (some will have to escalate to hosts to resolve this issue.)
Notice Regarding Spigot Support down the road.
As of now, Spigot will still receive support, but at the start of 2027 or 4.9.12.1, whichever comes first, there will no longer be spigot support going down the road.
## What does this mean?
If we reach 4.9.12.1 first, this version will be the last known version to work with Spigot and support spigot. If we reach 2027, then the subsequent version released will be the last version to support Spigot.
Though we support Spigot, most builds are not tested on Spigot as often as the API is still somewhat similar to Paper's own API, besides Mannequins and don't ask about the duct tape it took to make it work with both :|, even though we compile with Spigot and Paper at this time.
## Additions:
- Added Mannequins as a grave option (Only works on 1.21.9 or newer)
- Added new events
- GraveItemTakeEvent - Fired when a grave item is taken out of a grave.
- GravePostCreateEvent - Fired exactly when a grave is created. Handles if post creation fails.
- GravePostTeleportEvent - Fired exactly when a teleportation to a grave occurs. This is more accurately fired than GraveTeleportEvent as it says it is being fired.
- GraveVirtualOpenEvent - Fired when a virtual grave is opened (this only fires with the Virtual Open Function)
- Modules now support the following in module.yml:
- load - Determines when the module loads
2. POSTWORLD - Once GravesX enables
3. COMPLETED - Once the server is fully started up
Defaults to COMPLETED when not defined
- supportsFolia - Determines if the module supports folia (false by default when not defined)
- libraries - You can load your own libraries without having to manually do this. This uses libby to load libraries.
``
YAML
libraries:
# Simple coordinate (defaults apply)
- com.squareup.okhttp3:okhttp:4.9.0
# Full configuration example
- coordinates: old.loc.library:library:1.0.0
relocateFrom: "old.loc.library"
relocateTo: "new.loc.library"
isIsolated: false # Recommended to keep this false unless you know what you are doing
useTransitive: false
repo: "https://repo1.maven.org/maven2"
id: "example-lib"
``- Cleaned up Graves Main class to introduce PermissionManager, ConfigManager, and DebugManager
- Debugging now logs if a plugin fires debugging from GravesX
## Changes:
- Removed Citizens (Use FancyNpcs or built in Mannequins)
- Grave Timers will now only update if the chunk or Folia region is loaded (they are still ticking in background, but the armorstands will not be updated in any way)
- You can now check enum flags for BlockData and EntityData as well as use fromString to get an enum from string.
- Removed built in Grave Radius Protection (Use [GravelandGuard](https://www.spigotmc.org/resources/gravesx-module-gravelandguard.130640/) for better control)
- Fixed issue with keep inventory Gamerule for 1.21.11
- Fixed wording of the Soft Crash Handler as it was confusing. This does not work on hard crashes.
- GraveCreateEvent now exposes all items and ignored items/blocks
- Fixed dupe bug with EXACT grave creation mirroring a players inventory
- Fixed issue with experience duping when over 0.5 in grave.yml
- Fixed issue where autoloot wouldnt disable when set to false in grave.yml (if you want this enabled, set to true)
- Fixed issue with Grave creating in the same spot another grave is located at
- Fixed void scan (note that if this fails, user will keep inventory if set in grave.yml)
- Config version set to 24
## For Developers:
At the release of this version, our repo https://repo.cwhead.dev/ is currently down while waiting on parts to fix the server (as the power supply went out on December 21st 2025). Server should hopefully be back up mid January or early February. If you need the binaries, you can compile the source code on github and use that as a workaround for now. Once the server is back online, I will post the resources on the repo so that you can update. An announcement will be made in the discord once the server is back online.
- Fixed issues with removing holograms causing TPS drops
- Fixed Graves setting in weird spots or one block off around non solid blocks
- Fixed classes being finalized when they shouldn't be, which broke several methods
- Fixed configs not loading properly
## Upcoming in future updates (around 4.9.10.1 that is confirmed)
- Multi Language Support (i18n) + Add help menu to the list
- Remove old events entirely or expand its removal date. Possibility it sticks around and remove its deprecation notice entirely for backwards compatibility for old plugins that rely on GravesX.
- Removal of Citizens (Use FancyNpcs instead)
- Mannequin support for 1.21.9+ servers as graves
- Do not save default configs twice (was accidentally slipped back in when it shouldn't have been on plugin enable)
- Remove leftover debug info (during Folia Testing in 4.9.9.1 that was left over)
- Update dependencies for database types
- Fixed Libby import issues
### ⚠️ **Notes**
While **1.21.9** is being worked on, we have noticed bugs that have appeared around **FileConfiguration**.
We recommend staying up to date on these builds, as they are **not** the default versions on both providers and bugs may occur.
When using Java, we recommend the [**Adoptium JDK 17–21**](https://adoptium.net/) for the best experience with this plugin.
Some users have had success using **Java 22–25**, but we have not tested on these versions — testing should be done as usual.
If changes need to be made to how configurations are handled, we will update to handle it properly.
- Moved off Authlib to Spigot API for head retrieval in
- 1.21.9 (legacy will still use authlib)
- Fixed issue with CompatibilityInventoryView (oops)
- Do not load graves if the world doesn't exist
- Grave Restoration is now disabled by default. You will need to enable it in grave.yml
- Added Folia Support (Integrations that don't have Folia support will not work at all. You will still need to use Spigot/Paper)
- Added Module Support (read documentation [here](https://github.com/Legoman99573/GravesX/wiki/Modules))
- Graves that expire will now call
GraveExpiredEvent - Added
GravePreTeleportEvent(cancellable) - Added support for Toptal (formally hastebin) and pastebin as providers for Grave Dumps
- Added support for all particles and what you can do with them.
## Changes
- Bump to 1.21.9
- Cleaned up unused methods
- Events have been moved to
dev.cwhead.GravesX.eventsafter re-working how events are handled. You can continue to usecom.ranull.graves.events, but it has been marked as deprecated. - Packages made by me and JaySmethers have been relocated to their respected packages. Read Developer notes below.
- Changed the API structure. (old
GravesXAPIclass has been deprecated but you can still use the old API for now) - Fixed issue with Graves trying to poll every integration even though one had succeeded when creating a grave.
- Removed holograms that linger in the world. (this should be automatic, but in case they don't remove instantly, it will purge)
- Fixed a bug where entity graves would fail to generate.
## To Developers
If your plugin hooks into GravesX, some methods were moved into their owning classes in this update. This can break code that imports the old packages — just update your imports to the new package locations and everything should work again. Code changes were not made so previous code should work just fine.
## 🔧 Changes
- Introduced
actually-smite-death-location, which will behave as actual lightning - Deprecated **ChestSort** as the plugin is no longer maintained. The option remains, but will no longer receive support for using as a sorting option.
- Update Libraries
- Fix issue with nether-roof not spawning graves above nether roof when allowed
- Fixed SQLite issue with tables on startup
- Bumped config version (we noticed alot of people were using development builds, so this will bring in missing config options)
- GraveEconomyEvent** – Allows someone to modify the economy amount for your own plugins.
- GravePistonExtendEvent** – Fires when a piston extends and breaks a grave
- Nexo Support** – *(Deprecated Oraxen. Though we have made changes to fix some issues in Oraxen, we no longer plan to maintain support nor will provide support going forward and recommend switching to Nexo. See [here](https://www.youtube.com/watch?v=UyP7FQHM1AM))*
- Lightning Strike upon death** *(Disabled by default)*
- Explosion effect on looting grave** *(Disabled by default)*
- Databases** – Now can have configured table prefixes
## 🔧 **Changes**
- Deprecated **FurnitureEngine**
- Updated **Skript Integration** to work on newer versions
- Updated **PostgreSQL integration** to patch **CVE-2025-49146**
- Fixed **H2 breaking** in certain conditions
- Updated **commons-lang3** to patch **CVE-2025-48924**
- Fixed issue where putting
AIRin the recipe would cause plugin errors
- Fixed **exploit** where grave items duplicated upon server shutdown
- Updated **Kyori** and fixed a bug where **hex colors** didn’t work in obituaries
- Bedrock names in GeyserMC** are now validated
- Fixes in the **API for grave creation**
## 🙏 **Special Thanks**
Big thanks to **@JaySmethers** and **@Going** for helping with this update.
Also thanks to the **Nexo Developer** for assistance in safely adding and removing their furniture
- (they previously worked on Oraxen as well).*
## 🛠️ **Development Announcement and Future of the Plugin**
This version took a while to release.
- Reason:** I was contracted to do Redbox removals in my area and didn’t have time to release updates.
Huge thanks to **@JaySmethers** for fixing many of the bugs.
With the codebase being over 3 years old, we’ve made countless line changes and retained Ranull’s codebase,
but modern Minecraft versions have introduced lingering bugs that may only be fixed by a **complete re-write**.
We are planning a full rewrite for **version 5.0.1.0**.
Until then:
- We will continue supporting the **4.9 codebase** with patches.
- Development of **5.0.1.0** will happen in parallel.
- Timeline: *Could take months or even years — we don’t know yet.*
- We’ll make a **new GitHub branch** for testing and decision-making for features going forward.


