Tags
Creators
Details
V1.2.1
Compatibility
Changes
GravesPro — Changelog
v1.2.1
⚠️ Important — Upgrading from v1.0.0? Delete your entire
plugins/GravesPro/folder before installing this update. The config structure has changed and old files will cause errors on startup. Your in-world graves will not carry over from v1.0.0 — this is a fresh start.
⚠️ Paper Only GravesPro requires Paper 1.20+. Spigot and Purpur are not supported — the hologram system uses Paper-exclusive TextDisplay APIs that do not exist in Spigot. The plugin will fail to load on Spigot.
🆕 New Features
- Grave Persistence — Graves now survive server restarts and reloads. All active graves are saved to
graves.ymland restored automatically on startup, including their physical head blocks and holograms. - Ocean Death Support — Dying underwater no longer places a broken head inside the ocean. GravesPro now places a glass platform at the water surface directly above your death location, keeping your grave fully accessible without diving.
- Lava Death Safety — When claiming a grave above lava, the platform briefly becomes a solid stone block for 5 seconds before disappearing, preventing you from falling straight back into the lava.
- Fire Resistance on Claim — Claiming a grave placed over lava or water now grants 10 seconds of Fire Resistance I automatically. Duration is configurable (
fire_resistance_seconds). - Admin Commands — New
/gravesprocommand with two subcommands:/gravespro reload— Reloadsconfig.ymlwithout restarting the server. Active graves are not affected./gravespro list— Lists all active graves on the server with owner name, world, coordinates, and time remaining.
- Max Graves Enforced — The
max_gravesconfig option is now actually enforced. When a player hits the limit, their oldest grave auto-drops its contents to make room for the new one.
🐛 Bug Fixes
- Fixed: Hologram timer freezing — Holograms would stop counting down after a player travelled to another dimension (e.g. entering the Nether). The old TextDisplay entity was being left as a ghost in the unloaded chunk. The system now force-loads the chunk, removes the stale entity, and spawns a fresh hologram — so the timer always ticks correctly.
- Fixed: Wrong grave opened in Vault GUI — When a player had multiple graves, clicking Quick Recover would always recover items from the most recently created grave, not the one actually opened. Each player's open vault is now tracked individually.
- Fixed: Items lost on grave creation failure — If grave creation threw an internal error, drops were already cleared and the player lost everything silently. Drops are now only cleared after a successful grave is confirmed.
- Fixed: Teleport cancel across worlds — Calling
distanceSquared()between two locations in different worlds throws anIllegalArgumentException. The teleport warmup now checks for world changes before any distance calculation. - Fixed: Frozen timer after world change — Opening the teleport menu and switching worlds left the warmup task running in the background. It now cancels cleanly on world change.
- Fixed:
cancel_on_moveconfig not read — The teleport warmup always cancelled on movement regardless of thecancel_on_movesetting. It now respects the config value. - Fixed: Item corruption on death — Inventory contents were stored by reference, meaning Bukkit could mutate them after death. All item arrays are now deep-copied on grave creation.
- Fixed: Location HashMap lookup bug — Using
Locationas a map key includes yaw and pitch in the comparison, causing lookups to randomly fail. All location keys are now stored as plainworld,x,y,zstrings. - Fixed: Hologram ghost on plugin reload — TextDisplay entities were not cleaned up on
onDisable(), leaving invisible ghost entities in the world after a reload. They are now removed on shutdown. - Fixed: Items droppable from Vault GUI — Players could shift-click items directly out of the grave vault without using Quick Recover, bypassing the recovery system.
⚙️ Config Changes
New keys added in config.yml:
grave_settings:
max_graves: 3
fire_resistance_seconds: 10
teleport_settings:
cancel_on_move: true
ocean_settings:
platform_block: GLASS
messages:
void_fallback: "&cYou fell into the void! Grave placed at &fx:%x% y:%y% z:%z%"
ocean_grave: "&bYou drowned! A glass platform marks your grave. Use &f/gptp&b to find it."
max_graves_dropped: "&eYour oldest grave was cleared to make room for a new one."
🛠️ Commands & Permissions (Updated)
| Command | Description | Permission |
|---|---|---|
/gptp |
Open the Grave Teleport Menu | gravespro.tp (default: true) |
/gravespro reload |
Reload config.yml | gravespro.admin (default: op) |
/gravespro list |
List all active graves | gravespro.admin (default: op) |
v1.0.0
- Initial release.
- Player head grave spawning on death.
- Grave Vault GUI with Quick Recover.
- TextDisplay hologram with countdown timer.
/gptpteleport menu with warmup.- Void safety with configurable search radius.
- XP preservation with configurable percentage.
- Grave protection (owner-only access).
- Admin bypass permission.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:RkUtEjL0:bos3pExd"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:RkUtEjL0:bos3pExd"
}

