SavageDeathChest
Description:
This plugin stores a player's inventory in a chest on death for later retrieval. It has many options, but configuration and use has been kept as simple as possible.
Features:
- Places a single or double chest at player's death location containing the player's inventory
- Optional sign placement on chest, showing player name and death date
- Configurable list of block types that chests can replace
- WorldGuard, GriefPrevention, PreciousStones and Towny aware, will not place a chest where the player does not have access. Enabled individually.
- Option to check protection plugins on chest access. Enabled individually, disabled by default.
- added WorldGuard 7.0 compatibility.
- Searches a configurable distance from death location to find a suitable chest location
- Optionally require players to have chest(s) in inventory
- Chest protection allows only owners access. Also makes chests explosion proof!
- Optionally allow player's killer to access their chest, for pvp looting.
- Prevent concurrent access to chests when killer looting is enabled.
- Optional quick-loot feature allows one click (sneak-punch) chest looting
- Configurable expiration time for death chests, at which point they will break and drop their contents
- Custom messages and language localization
- Per world enabled in configuration
- Uses sqlite for persistent storage
- Prevents creative mode players from opening death chests
- Optionally prevent players from placing items in death chests
- Optional sound effects!
- A perfect compliment to SavageDeathCompass and SavageGraveyards
Permissions:
Permission | Description | Default |
---|---|---|
deathchest.player |
Default player permissions | true |
deathchest.chest |
Enable death chests for player. | true |
deathchest.loot |
Allows player to quick-loot death chests by sneak-punching. | true |
deathchest.doublechest |
Allows placement of double chests if necessary. | true |
deathchest.admin |
Default administrator permissions | op |
deathchest.freechest |
Overrides require-chest configuration setting. |
op |
deathchest.creative-access |
Overrides creative mode chest opening restriction. | op |
deathchest.loot.other |
Allow player to loot other player's chests. | op |
deathchest.reload |
Allows use of plugin reload command. | op |
deathchest.list |
Allows a user to view a list of their death chests and locations. | op |
deathchest.list.other |
Allows a user to view a list of other players death chests and locations. | op |
Commands:
/deathchest list [username]
Displays a list of player's death chest locations. Requires deathchest.list permission. If a player has permission deathchest.list.other, they can supply a username to list another player's deathchests, or type an asterisk (*) to list all deathchests.
/deathchest reload
Reloads configuration file and messages. Requires deathchest.reload permission, which is child node of deathchest.admin.
/deathchest status
Displays version info and some config settings. Requires deathchest.status permission, which is child node of deathchest.admin.
/deathchest help [command]
Displays a brief help message and command usage.
Installation
Put the jar in your plugins folder and restart your server. Edit the generated configuration file to your liking, then reload the plugin settings with the /deathchest reload
command. No server restart necessary!
Configuration
All configuration changes can be made without needing to restart your server. Just issue the reload command when you are satisfied with your settings in config.yml.
Source
Source code for this plugin is hosted on github and distributed under the GPLv3 license.
https://github.com/tim-savage/SavageDeathChest
A new release will be uploaded shortly, that (hopefully) fixes the bugs that have been mentioned below. Sorry for the delay, the holidays got in the way of things a bit, and my regular testers have been busy playing with new toys from Santa. This will be a maintenance release, with no new features added, just bug fixes.
@tomaste
Thank you for posting the stack trace. That was really helpful in quickly squashing this particularly embarrassing bug. It seems my bit of code that checked for an enabled WorldGuard plugin actually required WorldGuard to be installed and enabled to function. D'oh!
@erdrickk
Real soon now. It is in the final stages of testing.
@kemmeo
Make sure that you have listed the worlds you wish the plugin to be enabled in the config file. Also, as noted above, the plugin was failing when WorldGuard was not present. That has now been fixed in the next release.
@HubToo
THANK YOU!
(Is that big enough?) I actually intended for this plugin to be compatible with other death locator plugins, SavageDeathCompass just happens to be what I use on my own server and I decided to share. I didn't want it to be too easy for players to retrieve their chests, but to give them some help. I initially created these plugins because I disallowed the /back on death command in my survival world for being far too easy, but this really upset some players, so this set of plugins was my compromise to them. I also use a graveyard plugin, FearTheReaper, so they won't have to travel too far to get back to their death chest. I try to create a graveyard in or near towns or other populated areas, as well as popular hunting grounds. I add new ones as players explore new areas of the map.
Also a big thank you to all the people who reported bugs. Most crept in as new features were added in haste, particularly the killer looting feature. It's gotten to the point where it is no longer a simple task to trace the logic due to the many different conditions, but I've tried to keep the code simple, readable and maintainable to the best of my abilities.
Works fine for me with v1.2.1 on Minecraft 1.7.10.
I missed the /db loc function of the DeathBukkit plugin, and i wasn't very interested in using SavageDeathCompass.
so I installed the PlayerDeathLocation v1.4 plugin as a complement, and now i'm perfectly satisfied!
You owe a big THANK YOU!
This plugin flat out does not work. running bukkit 1.8.1
any word on the fixes soon?
no chests are being created on death. Here is the console output on death:
http://pastebin.com/yPfCHaeZ
Any ideas?
@timsavage
The long read was no problem for me. I found it interesting to read/know ;)
I haven't given anyone deathchest.admin (i'm the only person with OP).
I really hope you can fix this, i also tried another plugin (DeathCraft) but that one doesn't even create death chests (coincidence?).
@ThisUsernameIsMine
Sorry, I have a habit of being overly verbose in my posts. I just try to cover all the bases to avoid ambiguity.
If players are able to break or quick-loot others chests, and they do not have the deathchest.loot.other permission, either directly or indirectly through deathchest.admin permission, then it is definitely a bug. I'll try to get a fix out asap.
@timsavage
Nice read :-)
Though, the problems i've mentioned still stand.
I haven't added/nor changed any of the permissions but other players can still break and quick-loot other people's chests (again, i did not give them deathchest.loot.other) =/
The only thing they can't do is open chests by right-clicking on them, which displays a message that the chest doesn't belong to them.
I use a self compiled Spigot from https://hub.spigotmc.org/stash/projects/SPIGOT/repos/spigot/browse
and the Essentials plugin from https://hub.spigotmc.org/jenkins/job/Spigot-Essentials/9/
Java 1.8 Update 25 x64
@ThisUsernameIsMine
This is a feature I've considered. Unfortunately, it's a bit more complicated than it sounds. The plugin actually keeps track of each individual block that makes up a deathchest, ie: both chests in the case of a double chest, plus the sign. So calculating the total number of deployed chests is not a straightforward database query. It would have to count all the tracked blocks, then subtract those that are adjacent to those already counted. Simply counting the sign blocks would work, except there is a config option to not place signs on chests. Also, sign placement gets skipped if there isn't room at the death location, although that's a pretty rare occurrence.
The per player/group limit also adds another layer of complexity to the configuration. Having a numeric permission node, as I've seen in other plugins, is not really how bukkit's permission handling was meant to be used. You can only check for a specific permission node, so you need to loop through all possible values and check each one. With permission inheritance, a given player will match multiple values. The proper way to handle this is to have a setting for each group, with their limit, in the config file. It would probably also be desirable to have per world limits, which then adds yet another level of complexity to the config file. I'm not saying it's not doable, it just starts to get messy, either in the configuration, or the actual code. And I hate messy code and/or configuration files.
It is a desirable feature, so expect to see it in a future version. It will just take some finesse to implement it in a way that does not over-complicate things.
Only players with deathchest.loot.other permission (which is included in deathchest.admin permission) should be able to open/break/quick-loot other players chests. (Or the player's killer, if that option is enabled in the config.) If this is not the case, then it is a bug.
That is something I hadn't considered. Not deploying a chest where players cannot access them was the reason for implementing the WorldGuard/GriefPrevention/Towny support. I got really tired as an admin having to retrieve players chest contents when they died in a place they did not have access. It should be fairly trivial to add a check for the spawn protection radius when placing a chest.
Update: For now, it would be easier to use WorldGuard or GriefPrevention to protect the spawn area.
@timsavage
I told you about this feature because of e.g. /back or /warp command. On my server you have to pay for them. On death you lost all of your money because it's stored in your account in DeathChest. You can'y use those commands after death. Another reason of that need are town's taxes. If you get angry after death and leave the servers for couple of days, you will get kicked from the town because you will not have enough money.
Gringotts has very powerful API . If you are lazy, use my tip how you can transfter money to players account.
I think it should works.
@timsavage
Thank you :-)
Another useful addition would be being able to set how many death chests a certain player/rank can have in total.
It also prevents the place from becoming a "deathchest land" =P
edit: despite chest-protection being enabled, players can destroy/loot other people's death chests :S
minor issue: I've also noticed that people can't loot (interact with) their chest whenever it is located within the protected worldspawn radius.
Perhaps you can work around this by letting the contents drop on the floor without placing a deathchest.
@erdrickk
It's not something I had planned on, no. You should be able to accomplish this already with other plugins. Economy plugins usually have a way to charge for commands, and there are also standalone plugins that allow for assigning a cost to commands.
Skript would be another option. I also seem to recall seeing dedicated 'back on death' plugins.
Update: Here's another plugin with charge for commands feature: http://dev.bukkit.org/bukkit-plugins/booscooldowns/
any plans to add an option to teleport to your death chest for a cost either of an item or money (vault) ?
A new version has been uploaded that prevents players from opening death chests while in creative mode. Also added WorldGuard 6.0 compatibility, and maintained WorldGuard 5.x compatibility.
The new version (v1.3) with these features
will be available for download as soon as it is approved by bukkit staffis now available for download.@ThisUsernameIsMine
I haven't forgotten about the GameMode Inventories issue, I just got a bit side tracked with other projects. I'll try and get a fix out ASAP.
@mr_T_creations
Thanks for the love. Are you still having an issue with SavageDeathCompass? If so, reply to my post in that thread.
@wiedzmin137
I'm aware of Gringotts, but I'm afraid I'm not totally familiar with its features. I just looked at its page here on dbo, and I see that the vaults are actual container blocks with a sign placed over them. If Gringotts has an API that I can hook into, this feature might be possible, but if not, I think it would probably be too complicated to determine what container is a player's vault, and what materials are being used as currency.
I guess I can kind of understand why you'd want this feature, but as it is now, the currency items do get saved in their chest, and doesn't that give added incentive to try and retrieve the death chest? I mean, if somebody asked to add a feature to put their armor back on their player after death, I'd say no, that's pretty much the opposite of the intention of the plugin. This feature request is not much different than that scenario, is it?
It might be better to have this feature implemented as a separate plugin altogether, that pulls their currency items from their inventory and places them in their vault before this plugin creates the death chest. Or maybe even a feature of Gringotts itself?
I'll look into it further, and post back what I find out.
Hello. Can you add support for Gringotts by putting money items to player vault instead of death chest?
Love this plugin. Especially with SavageDeathCompass and RespawnLocations.
@timsavage
You're welcome. Good luck solving the problem :-)
@ThisUsernameIsMine
Yes, preventing creative players from giving away items to survival players (including themselves) is important. It sounds like my plugin is overriding GameMode Inventories check to prevent creative players from opening the chests. I will address this issue in the next version- thank you for bringing it to my attention.