A secure, configurable and server-side grave mod for Fabric.
When a player dies, their inventory, armor, offhand items and experience are stored safely inside a grave. Players can recover individual items, restore experience separately, restore everything at once, share access and use a grave compass to find their way back.
Kronentroll's Graves runs on the server. Players do not need to install the mod on their clients and can join with a normal compatible client.
Fabric Loader and Fabric API are required on the server.
Singleplayer may also work because an integrated server is used, but not every feature has been fully tested in singleplayer.
kronentrollsgraves-audit.log.1The active JSON5 configuration is stored at:
config/kronentrollsgraves.json5
An existing config/kronentrollsgraves.json file is detected and migrated automatically when no JSON5 configuration exists. Existing functional values are preserved. The active configuration contains one-line comments with default values. No separate example configuration is generated.
Always stop the server and back up the world and configuration directory before editing settings.
{
// Internal schema version; default: 4; do not change manually.
"configVersion": "4",
// APPEARANCE: carrier block, player head and empty-grave cleanup settings.
"appearance": {
// Carrier block used by the multipart gravestone; default: minecraft:polished_blackstone_wall.
"graveBlock": "minecraft:polished_blackstone_wall",
// Drop the player's head after physical grave placement; default: true.
"dropPlayerHead": true,
// Allow dropped player heads to despawn normally; default: true.
"headCanDespawn": true,
// Remove an empty grave after recovery; default: true.
"removeGraveWhenEmpty": true
},
// STORAGE: inventory, experience, overflow and grave-limit settings.
"storage": {
// Store inventory, armor and offhand contents; default: true.
"storeItems": true,
// Store exact experience points; default: true.
"storeExactExperience": true,
// Keep contents that do not fit safely inside the grave; default: true.
"keepOverflowInsideGrave": true,
// Use virtual graves when no safe physical position exists; default: true.
"useEmergencyVirtualGraves": true,
// Prevent stored items from also becoming normal death drops; default: true.
"suppressNormalDropsAfterSaving": true,
// Save the grave before removing captured player contents; default: true.
"saveBeforeRemovingPlayerItems": true,
// Maximum physical non-empty graves per player; 0 means unlimited; default: 0.
"maximumGravesPerPlayer": 0
},
// PLACEMENT: safe-position search, retry and emergency-platform settings.
"placement": {
// Initial horizontal search radius in blocks; minimum: 1; default: 16.
"initialHorizontalSearchRadius": 16,
// Initial vertical search radius in blocks; minimum: 1; default: 16.
"initialVerticalSearchRadius": 16,
// Later horizontal retry radius in blocks; default: 128.
"expandedHorizontalSearchRadius": 128,
// Later vertical retry radius in blocks; default: 128.
"expandedVerticalSearchRadius": 128,
// Maximum candidate positions checked per attempt; minimum: 1; default: 512.
"maximumPlacementAttemptsPerTick": 512,
// Delay between virtual-grave retries; 20 ticks are about one second; default: 20.
"retryIntervalTicks": 20,
// Retry eligible virtual-grave placement; default: true.
"searchUntilSafePositionFound": true,
// Allow placement searches across chunk boundaries; default: true.
"allowCrossChunkSearch": true,
// Allow required chunks to be made available; large radii may increase server load; default: true.
"loadRequiredChunks": true,
// Enable special placement behavior for lava deaths; default: true.
"rescueFromLava": true,
// Enable special placement behavior for fire hazards; default: true.
"rescueFromFire": true,
// Enable special placement behavior for void deaths; default: true.
"rescueFromVoid": true,
// Create a tracked temporary emergency platform when required; default: true.
"createVoidPlatform": true,
// Block used for emergency platforms; default: minecraft:obsidian.
"voidPlatformBlock": "minecraft:obsidian",
// Odd platform width and length from 1 to 15; default: 3.
"voidPlatformSize": 3
},
// PROTECTION: grave and platform protection settings.
"protection": {
// Master switch for grave protection; default: true.
"enabled": true,
// Protect graves while recoverable contents remain; default: true.
"protectWhileNotEmpty": true,
// Prevent normal player attacks and breaking; default: true.
"protectFromPlayers": true,
// Protect recorded grave and platform positions from explosions; default: true.
"protectFromExplosions": true,
// Remove supported nearby fire hazards; default: true.
"protectFromFire": true,
// Enable lava-related grave protection; default: true.
"protectFromLava": true,
// Prevent piston movement or destruction; default: true.
"protectFromPistons": true,
// Reserved preference for supported Wither integrations; default: true.
"protectFromWither": true,
// Reserved preference for supported Enderman integrations; default: true.
"protectFromEndermen": true,
// Preference for implemented fluid placement and flow protection; default: true.
"protectFromFluids": true,
// Preference for explicit external-mod integrations; default: true.
"protectFromOtherMods": true,
// Prevent supported replacement of recorded grave positions; default: true.
"preventBlockReplacement": true
},
// ACCESS: owner, trusted-player, operator and permission settings.
"access": {
// Allow owners to open their graves; default: true.
"ownerCanOpen": true,
// Reserved owner-breaking preference; non-empty graves remain protected; default: true.
"ownerCanBreak": true,
// Allow trusted players to open shared graves; default: true.
"trustedPlayersCanOpen": true,
// Reserved trusted-player breaking preference; default: true.
"trustedPlayersCanBreak": true,
// Allow configured operators to bypass grave protection; default: false.
"operatorsBypassProtection": false,
// Enable compatible LuckPerms integration; default: true.
"useLuckPerms": true,
// Base administrative permission node; default: kronentrollsgraves.admin.
"administratorPermission": "kronentrollsgraves.admin",
// Allow sharing access to individual graves; default: true.
"allowIndividualGraveSharing": true,
// Allow permanent grave-sharing behavior; default: false.
"allowPermanentSharing": false
},
// EXPIRATION: optional expiry and delayed public-access settings.
"expiration": {
// Master switch for grave expiration; default: false.
"enabled": false,
// Seconds before optional expiration; 0 disables the timer; default: 0.
"expirationSeconds": 0,
// Enable delayed public access; default: false.
"publicAccessEnabled": false,
// Seconds before public access begins; default: 0.
"publicAccessAfterSeconds": 0
},
// MESSAGES: player-facing coordinates, clickable actions and warnings.
"messages": {
// Show grave coordinates after death; default: true.
"sendDeathCoordinates": true,
// Enable clickable commands and coordinate copying; default: true.
"useClickableMessages": true,
// Include dimension information in grave messages; default: true.
"showDimension": true,
// Include the owner-specific grave number; default: true.
"showGraveNumber": true,
// Show important recovery and Keep Inventory warnings; default: true.
"showRecoveryWarnings": true
},
// COMPASSES: automatic delivery, updating and cleanup settings.
"compass": {
// Give a compass after a physical grave is created; default: true.
"giveAutomatically": true,
// Give a compass after a virtual grave is later placed; default: true.
"giveAfterVirtualPlacement": true,
// Update an existing compass for the same grave; default: true.
"updateExisting": true,
// Remove compasses whose graves no longer exist; default: true.
"removeInvalidCompasses": true,
// Keep at most one compass for each grave; default: true.
"removeDuplicateCompasses": true,
// Notify when automatic delivery cannot find a free slot; default: true.
"notifyWhenInventoryIsFull": true
},
// NEARBY PLACEMENT: solid-block and fluid placement near physical graves.
"nearbyPlacementProtection": {
// Master switch for nearby placement protection; default: true.
"enabled": true,
// Horizontal protection radius; 1 protects a 3 by 3 area; default: 1.
"horizontalRadius": 1,
// Protected blocks above and below the grave; default: 1.
"verticalRadius": 1,
// Allow water buckets, water flow and waterlogging near graves; default: true.
"allowWater": true,
// Allow lava placement and lava flow near graves; default: false.
"allowLava": false,
// Allow authorized administrators to bypass nearby placement protection; default: false.
"operatorsBypass": false
},
// AUDIT: privacy-conscious grave audit logging settings.
"audit": {
// Master switch for audit logging; default: true.
"enabled": true,
// Log item identifiers and amounts without complete private contents; default: true.
"logItemTransfers": true
},
// DEBUGGING: diagnostic logging settings; leave disabled during normal use.
"debug": {
// Master switch for diagnostic logging; default: false.
"enabled": false,
// Log detailed placement-search diagnostics; default: false.
"logPlacementSearch": false,
// Log detailed protection decisions; default: false.
"logProtectionDecisions": false,
// Log detailed grave-storage operations; default: false.
"logStorageOperations": false
}
}
Arguments in angle brackets are required. Grave numbers are shown by /grave list. Grave IDs, request IDs and confirmation IDs are UUID values displayed by the relevant command or clickable message.
/grave — Show the player command overview./grave list — List your stored graves./grave info <number> — Show detailed information about one of your graves./grave locate <number> — Show navigation information for one of your graves./grave compass <number> — Create or update a compass for one of your physical graves./grave language — Show the current language and available options./grave language <language> — Select a language, for example english or deutsch./grave requests — List pending grave-access requests./grave request accept <requestId> — Accept an access request./grave request deny <requestId> — Deny an access request./grave untrust <graveNumber> <player> — Remove a player's access to one grave./graveaccessrequest send <graveId> — Send an access request./graveaccessrequest accept <requestId> — Accept an access request./graveaccessrequest deny <requestId> — Deny an access request./graveadmin — Show the administrative command overview./graveadmin list — List all saved graves./graveadmin info <graveId> — Show detailed grave information./graveadmin permissions — Show the permission overview./graveadmin restore <graveId> <targetPlayer> — Prepare restoration to a target player./graveadmin confirm <confirmationId> — Confirm a prepared restoration./graveadmin cancel <confirmationId> — Cancel a prepared restoration./graveadmin relocate <graveId> — Prepare relocation to the administrator's position./graveadmin remove <graveId> — Prepare permanent removal./graveadmin repair — Scan and repair eligible grave and platform data./graveadmin repair <graveId> — Repair one grave./graveadminrelocate confirm <confirmationId> — Confirm relocation./graveadminrelocate cancel <confirmationId> — Cancel relocation./graveadminremove confirm <confirmationId> — Confirm permanent removal./graveadminremove cancel <confirmationId> — Cancel permanent removal.No client-side installation is required.
LuckPerms integration is optional.
mods directory.config/kronentrollsgraves.json5.No manual world-data migration is required when updating from an older supported version.
All Rights Reserved.
The mod may be downloaded and used for personal gameplay and on privately operated Minecraft servers.
Redistribution, re-uploading, resale, modified republication or claiming the mod as your own is not permitted without prior written permission.
Public modpack inclusion is permitted only for modpacks distributed through CurseForge. Redistribution through other platforms or direct downloads requires prior written permission.
AI-assisted tools were used during development for code review, debugging and documentation. The mod was tested and published under the responsibility of the project author.