
Sour Graves
A simple, configurable grave plugin for 1.21+
- Загрузки
- 2K
- Подписчики
- 3
- Обновлён
- 22 августа 2025 г.
- Лицензия
- LGPL-3.0-or-later
Опубликован 2 декабря 2023 г.
Sour Graves
- Save your items from being deleted after a death!
- Items are always saved no matter how you die!
- Recover items by clicking on the grave
- Graves become public (raidable) after a timer (5 mins by default)
- Graves are deleleted with their items dropped on the ground after a timer (30 mins by default)
Default Configuration
# irishgreencitrus' Sour Graves v2 config
#
#
##############################################
# COMMENTS MADE IN THIS FILE WILL BE DELETED #
##############################################
#
#
# Notable updates since v1:
# - Graves are now stored in `graves.db` instead of `graves.json`.
# - If you have an existing `graves.json`, they should be converted to the new format.
# - Postgres and MySQL are also supported as external databases.
#
# Everything in the plugin is completely configurable.
# If you mess up the file, you can delete it to reset it to the defaults.
#
# Some key notes:
# - A player without any items in their inventory will not drop a grave.
# - A player with keepInventory enabled will not drop a grave.
# - The cleanup task is what actually deletes graves, as well as saves graves to disk.
# It should not be ran too infrequently, as your graves will not be saved if the server crashes.
# The default should probably be fine, but it can be raised or lowered as necessary.
## There is no need to edit this manually, it just tells the plugin whether to rewrite the config after it has been updated.
configVersion = 2
# After this many minutes, the grave will be accessible by all players.
# Set to `-1` to disable this.
publicInMinutes = 5
# After this many minutes, the grave will be deleted.
# Set to `-1` to disable this.
deleteInMinutes = 30
# The maximum number of graves a player can have.
# After this limit, a player's oldest grave will be deleted.
# Set to `-1` to disable this
maxGravesPerPlayer = 3
# Whether to prevent graves being created for PvP kills
disableForPvpKills = false
# Whether to drop the items of the oldest grave once a player has exceeded max graves
dropItemsOnTooManyGraves = true
# Whether to drop the items of a just-deleted grave. If false, the items just disappear
dropItemsOnGraveDeletion = true
# The particle to use for the grave recovery animation
recoverParticle = "SOUL"
# The number of particles to use in the grave recovery animation
recoverParticleAmount = 1000
# The sound to play on grave recovery
recoverSound = "minecraft:block.respawn_anchor.deplete"
# When should the first grave cleanup run, after the server has started
periodicCleanupDelayMinutes = 10
# How frequently the grave cleanup runs
periodicCleanupPeriodMinutes = 5
# Whether to send a player their grave coordinates once they respawn
notifyCoordsOnRespawn = false
# If this is `true`, the default Right-Click will now open an inventory.
# You can use Shift-Right-Click to restore the grave as normal.
allowChestLikeGraveAccess = false
# Swaps the behaviour of normal and shift clicking when `allowChestLikeGraveAccess` is `true`
chestAccessSwapNormalAndShift = false
# Whether to use legacy json-based file storage rather than the new SQLite database.
# I can't think of any reason to enable this, but the functionality remains, so the option also remains.
# Overrides any settings in [sql].
forceLegacyFileStorage = false
# A list of the worlds that graves will *not* spawn in.
# This will lead to the default behaviour i.e. dropping items.
# Example values: ['world_nether']
disabledWorlds = [ ]
# Changing the [sql] options require you to restart the server.
# NOTE: this only controls the supported SQL servers.
# SQLite storage is enabled by default and does not require any configuration.
[sql]
# Whether to enable connecting to a SQL server to store graves, instead of the JSON file.
# Useful for very large servers where a lot of graves are being created.
enable = false
# Supported SQL servers: MySQL and PostgreSQL
# Google 'jdbc connection URL' to find out what to put here
jdbcConnectionUri = "jdbc:postgres:admin@localhost/sourgraves"
username = "admin"
password = "changeme"
# Soft deletion will mean all grave data will stay in the database, and only ever be marked as deleted.
# This provides extra protection against item loss and allows complete recovery.
# Disabling this will not retroactively apply, and merely actually delete graves made after the change.
softDeletion = true
alreadyConvertedFromJson = true
[economy]
# Whether to enable the economy features of this plugin (Requires VaultUnlocked to be installed)
enable = false
# The cost to recover one of your own graves
graveRecoverCost = 1.0
# The cost either per grave or per item stack in the grave
graveRecoverPaymentType = "FLAT"
# The cost to rob someone else's grave
graveRobCost = 5.0
# The cost either per grave or per item stack in the grave
graveRobPaymentType = "FLAT"
# Change anything in here if you find the log messages too invasive.
# Most severe and warning messages cannot be disabled, by design.
[logMessages]
# Whether to enable the GitHub and Discord message on startup.
startupMessage = true
# Whether to log every time the cleanup task runs. Useful for debugging configuration.
# Not recommended to leave on for prolonged periods of time.
cleanupTask = false
# Whether to log if a grave hasn't stored its location. Can occur for graves created before v1.5.0.
# It is recommended to leave this enabled as it will only be printed once anyway.
graveMissingLocation = true
# Gives a warning if a grave that is about to be deleted has its chunk loaded but the armour stand (The player head) has been deleted.
# This could be a sign that another plugin is deleting armour stands.
armourStandNotFoundOnGravePurge = true
# Gives a warning on startup if you are still using legacy JSON storage and have more than 100 graves.
moreThan100GravesWarning = true
Permissions
sourgraves.admin.server:
description: Allows you to use `/sourgraves disk` and `/sourgraves config`
default: op
sourgraves.admin.settings:
description: Allows you to use `/sourgraves settings`
default: op
sourgraves.admin.give:
description: Allows you use `/sourgraves give`
default: op
sourgraves.player.graveaccess:
description: A player with this permission can open any grave, regardless of whether it is public.
default: false
sourgraves.player.permaprivate:
description: A player with this permission will have a grave that never goes public.
default: false
sourgraves.player.permagraves:
description: A player with this permission will have a grave that never expires by itself. This doesn't affect other situations which delete a grave.
default: false
sourgraves.utils.player:
description: Allows you to use `/sourgraves player`
default: op
sourgraves.utils.locateown:
description: Allows you to use `/sourgraves locate`
default: true
Found a bug, have questions or feature requests?
Join the Discord on the right hand side and drop me a message.
Ченджлог
2.4.0Релиз1.21.6, 1.21.7, 1.21.8 · 22 августа 2025 г.
- Fix give by grave uuid not working
- Add
undeletesupport, where you can restore a grave back when soft deletion is enabled - Move
/sourgraves config reloadto/sourgraves reload - Fix critical issue with 2.3.0 (sorry once again)
2.2.0Релиз1.21.6, 1.21.7, 1.21.8 · 31 июля 2025 г.
Move at what point during death grave storage happens.
It used to happen at EventPriority.LOWEST and this has been moved to EventPriority.HIGH.
This allows other plugins to modify the inventory before a Grave is created.
2.1.1Релиз1.21.6, 1.21.7, 1.21.8 · 29 июля 2025 г.
Fix bug where the plugin would crash if Vault was installed in place of VaultUnlocked.
2.1.0Релиз1.21.6, 1.21.7, 1.21.8 · 27 июля 2025 г.
Add bStats metrics.
2.0.0Релиз1.21.6, 1.21.7, 1.21.8 · 21 июля 2025 г.
Release 2.0.0
SQL support
- Change grave storage format from JSON to SQLite.
- Add automated conversion from legacy storage format to the new SQL based one.
- Also add support for the Postgres and MySQL servers.
- Support soft deletion for the SQL servers so that data is never lost, only marked as deleted.
Legacy JSON storage can be re-enabled in the config. The plugin will disable itself to prevent data loss if the configuration is incorrect.
Timers based on game time
Grave expiry is now based on game time rather than the system clock. This means graves should be work better for servers that shutdown frequently.
Improved log messages
- Log messages can now be configured
- Log messages are generally less frequent and less annoying
- Severe log messages now appear for a reason.
- The infamous message for graves which existed before
v1.4.0only appear once per startup.
More Permissions
- A player with
sourgraves.player.permaprivatewill never have their grave accessible to others. - A player with
sourgraves.player.permagraveswill never have their grave expired and killed by the server, but it could still be killed by other means such as too many graves or the grave give command.
More stable inventory saving
The plugin now respects other plugins that change keepInventory during death. This is a thing you can do (e.g. custom totems), so the plugin now respects it. This prevents item duplication.
Grave give command
There is a new command available which is /sourgraves give [options].
At the moment there are 3 versions of the command:
Note: After this command is executed, the grave will be deleted from storage to prevent duplication of items.
by_grave_uuid
/sourgraves give by_grave_uuid <uuid> <give_to>
Give the grave found at uuid to the player give_to
- The
uuidcan be found by looking through the database. give_tois the player to give the contents of the grave to.
oldest
/sourgraves give oldest <grave_owner> <give_to>
Give the oldest grave owned by grave_owner to give_to.
grave_owneris the player that owns the grave.give_tois the player to give the contents of the grave to.
newest
/sourgraves give newest <grave_owner> <give_to>
Give the newest grave owned by grave_owner to give_to.
grave_owneris the player that owns the grave.give_tois the player to give the contents of the grave to.
Chest-like Grave Access
Enabling allowChestLikeGraveAccess will mean that clicking on a grave will
cause it to open an inventory instead of restoring it directly.
Shift-clicking will restore the grave as normal.
The click and shift-click behaviour can be swapped using chestAccessSwapNormalAndShift
Other Config Options
disableForPvpKillswill mean that graves will not spawn for PvP kills, and the default Minecraft behaviour will occur.forceLegacyFileStoragefor re-enabling JSON storage.disabledWorldsfor disabling graves in a specific world.
1.5.0Релиз1.21.4, 1.21.5, 1.21.6 · 29 июня 2025 г.
Release 1.5.0
- Add basic economy support
- Cache locations of unloaded graves, so locate command works properly on any grave
- Add
graveaccesspermission - Remove extraneous messages relating to graves being valid
1.4.0Релиз1.21.4, 1.21.5, 1.21.6 · 25 июня 2025 г.
Release 1.4.0
Add an option to disable the [SourGraves] Cleaned graves and written to disk message.
This is in the config as logCleanupTaskRuns and is now false by default.
1.3.0Релиз1.21.4, 1.21.5, 1.21.6 · 22 июня 2025 г.
Release 1.3.0
- Fix bug related to Bukkit not properly reporting the version of the plugin.
- Fix items always being dropped even with the purge graves config being
false. - Add some notes into the config file.
Комментарии
Загружаем…