
GravesX
The definitive death chest plugin originally created by Ranull
- 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
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.
This has been a long awaited update. The following has been changed/added/removed:
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
- STARTUP - Upon when the server starts up
- POSTWORLD - Once GravesX enables
- 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.
Examples: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 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.
Changes
- 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
Changes and Fixes
- 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 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.
This update addresses the following bugs and changes:
- 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
Additions
- 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)
- 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.
Its not a bug, its a feature >:(
🔧 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.
- Introduced
🔧 Changes
- 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)
🆕 Additions
- 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)
- Lightning Strike upon death (Disabled by default)
- Explosion effect on looting grave (Disabled by default)
- Databases – Now can have configured table prefixes
You will need to alter your database tables or your server will start with no graves data.
🔧 Changes
- Deprecated FurnitureEngine
Recommend using FurnitureLib as an alternative. Kept in the code for servers that still use it, but we dropped support for 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 errorsAlthough we’ve previously stated this should be blank, this update resolves that edge case.
- 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
Java users could previously have the same username even with the prefix being before the name.
- Fixes in the API for grave creation
If time isn’t configured, it will now revert to the config's set time.
🙏 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.
We hope this update was worth the wait during that absence.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.



