DeathCraft 2
DeathCraft
DeathCraft is a plugin to make dying fun!
Not really. Dying always sucks - But DeathCraft will make it more fun for everyone else.
Features
- Unlimited, customized death messages for every type of death, or per item!
- Differentiates between PVE and PVP deaths!
- Option to use true account names, or display names (/nick, etc)
- Player optional ignoring of either type of death (PVE or PVP) messages
- Head drops! Fully configurable drops of player and mob heads!
- Permission based configurable 'Death Chests' that will store items upon an untimely demise - or be the prize of the PVP victor!
- /kill and /suicide, as well as the option to override these commands from other plugins to continue the DC Experience
- Permission based configurable 'Keep Xp on death
Installation
- 1) Download
- 2) Put deathcraft.jar in your /plugins folder
- 3) /reload your server, or restart.
- 4) ???
- 5) DEATH!
Known Conflicts
- CreeperHeal You must disable chests in one of the two plugins, or you will end with a looping chest creation.
Commands, Configuration & Permissions
Please see the new Commands, Configuration & Permissions Page!
Bug Reporting and Suggestions
If you find a bug, or have a suggestion, PLEASE open a ticket! I can't fix what I don't know is broken, and I can't add what I don't know is wanted. :)
ToDo
- Togglable allowance of locked chests for popular protection plugins (LWC, Locket)
- Allow Keep item on death permissions, completely bypassing Chests
Tutorials
Portuguese:
@Adutude
Update:
I removed my deathcraft folder and restarted so I would get a new default, then set:
PVEChest: true PVPChest: true
I still got the same error upon player death.
I then changed:
UseDisplayName: false (from true)
And I no longer get the severe error on Player Death, but I get:
16:15:42 [INFO] Chest location could not be found for <playername>
Should DC 1.6 work with CB 1.5?
Players are not getting deathchests and the error messages below are what is seen by the server when a player dies.
I'm using the config file that was running on 1.4, do I need to update that one?
I also have custom death messages, they were working in the previous release and have not changed, but perhaps they are no longer parsable in the version. I'll reset to default values and see if it will work
Running DC 1.6 on CB 1.5-r02 (dev version) and getting the following on player death:
Could not pass event PlayerDeathEvent to deathcraft v1.6 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:335) at net.minecraft.server.v1_5_R2.EntityPlayer.die(EntityPlayer.java:279) at net.minecraft.server.v1_5_R2.EntityLiving.damageEntity(EntityLiving.java:766) at net.minecraft.server.v1_5_R2.EntityHuman.damageEntity(EntityHuman.java:684) at net.minecraft.server.v1_5_R2.EntityPlayer.damageEntity(EntityPlayer.java:344) at net.minecraft.server.v1_5_R2.EntityMonster.m(EntityMonster.java:88) at net.minecraft.server.v1_5_R2.EntityZombie.m(EntityZombie.java:132) at net.minecraft.server.v1_5_R2.PathfinderGoalMeleeAttack.e(PathfinderGoalMeleeAttack.java:83) at net.minecraft.server.v1_5_R2.PathfinderGoalSelector.a(PathfinderGoalSelector.java:104) at net.minecraft.server.v1_5_R2.EntityLiving.bo(EntityLiving.java:1515) at net.minecraft.server.v1_5_R2.EntityLiving.c(EntityLiving.java:1312) at net.minecraft.server.v1_5_R2.EntityMonster.c(EntityMonster.java:20) at net.minecraft.server.v1_5_R2.EntityZombie.c(EntityZombie.java:115) at net.minecraft.server.v1_5_R2.EntityLiving.l_(EntityLiving.java:542) at net.minecraft.server.v1_5_R2.EntityMonster.l_(EntityMonster.java:24) at net.minecraft.server.v1_5_R2.EntityZombie.l_(EntityZombie.java:128) at net.minecraft.server.v1_5_R2.World.entityJoinedWorld(World.java:1356) at net.minecraft.server.v1_5_R2.WorldServer.entityJoinedWorld(WorldServer.java:614) at net.minecraft.server.v1_5_R2.World.playerJoinedWorld(World.java:1337) at net.minecraft.server.v1_5_R2.World.tickEntities(World.java:1225) at net.minecraft.server.v1_5_R2.WorldServer.tickEntities(WorldServer.java:480) at net.minecraft.server.v1_5_R2.MinecraftServer.r(MinecraftServer.java:562) at net.minecraft.server.v1_5_R2.DedicatedServer.r(DedicatedServer.java:225) at net.minecraft.server.v1_5_R2.MinecraftServer.q(MinecraftServer.java:476) at net.minecraft.server.v1_5_R2.MinecraftServer.run(MinecraftServer.java:409) at net.minecraft.server.v1_5_R2.ThreadServerApplication.run(SourceFile:573) Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -14 at java.lang.String.substring(String.java:1875) at com.ivalicemud.deathcraft.Deathcraft.DisplayName(Deathcraft.java:773) at com.ivalicemud.deathcraft.Listeners.DeathMessage(Listeners.java:421) at com.ivalicemud.deathcraft.Listeners.onPlayerDeath(Listeners.java:137) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) ... 29 more
Raumypoo, thank you for making this for me. Am putting it on NerpCraft right now #procrastinationqueen
Quick bug I've found, and fixed (but have not uploaded yet) - In the Beheading announcements for PVP, it currently does NOT sub %2 for the killer's name .. Whoops! Keep up the tickets for reports - Thanks!
@TheTitor
The ignore issue was fixed already as well in 1.5c - It's been waiting for approval from bukkit for almost 20 hours now .. Not sure what the hold up there is.
As for the config - I am aware it's still not working quite right - in the mean time you can set the prefix in game now (/dc set prefix <whatever>) - I'm fairly new to Bukkit plugins, so a lot of the things that would normally be a 'uhh, duh' fix slip past me still.
Ok, so the config reload doesn't overwrite the config anymore, but it doesn't reload the configuration (/dc reload doesnt work). However, restarting the server (and thusly the plugin) does work. Tested on both the deathchest enables and on the prefix change. Also could you make dc ignore [PvP, PvE] Default to false instead of true?
I'm going to try the updated version tonight, I'll let you know if I encounter anything! Thanks for the fixes in advance.
K, apparently there's a conflict somewhere between DC and another plugin that is causing some issues still ... /dc ignore functions fine with only DeathCraft, however on another server with multiple plugins, it doesn't work at all .. it also is causing issues with the /dc command as a whole. Trying to figure this out. Oi.
@TheTitor
Both of these issues were discovered shortly after 1.4 went live, and were fixed with the 1.5 release (currently awaiting on approval). :)
Reloading the plugin rewrites the the config file- thus beating the point of reload...
I keep changing the prefix, saving it, making sure the changes take, reloading, then looking in the config again and it's back to the default.
Please fix this it's kinda really important.
Thanks <3
Otherwise this plugin looks really great
Also doing just /dc does this:
1:13:44 [INFO] Loscil issued server command: /dc
01:13:44 [SEVERE] null
org.bukkit.command.CommandException: Unhandled exception executing command 'dc' in plugin deathcraft v1.4
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:186)
at org.bukkit.craftbukkit.v1_4_R1.CraftServer.dispatchCommand(CraftServer.java:514)
at net.minecraft.server.v1_4_R1.PlayerConnection.handleCommand(PlayerConnection.java:980)
at net.minecraft.server.v1_4_R1.PlayerConnection.chat(PlayerConnection.java:898)
at net.minecraft.server.v1_4_R1.PlayerConnection.a(PlayerConnection.java:853)
at net.minecraft.server.v1_4_R1.Packet3Chat.handle(Packet3Chat.java:44)
at net.minecraft.server.v1_4_R1.NetworkManager.b(NetworkManager.java:290)
at net.minecraft.server.v1_4_R1.PlayerConnection.d(PlayerConnection.java:113)
at net.minecraft.server.v1_4_R1.ServerConnection.b(SourceFile:39)
at net.minecraft.server.v1_4_R1.DedicatedServerConnection.b(SourceFile:30)
at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:598)
at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:224)
at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:494)
at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:427)
at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at com.ivalicemud.deathcraft.Deathcraft.onCommand(Deathcraft.java:87)
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
... 15 more
@Adutude
On a side note - You're not going to want to do deathchest.* - deathchest.admin will allow people to edit the death messages online, reload the config, etc. Give them deathchest.chest.* if you want them to have access to both large and small.
@Adutude
Aah .. So it wasn't any one plugin being bad, it was the two having a catfight. At least it got sorted out, sort of. I'll also toss a message to the CreeperHeal author and hopefully we can get this fixed on a dev level, rather than a hacked up fix level. :)
-R
More info, going to give this a try
plugins/CreeperHeal/config.yml
ignore-chests: all: true protected: true
Both were set to false by default, that should get CreeperHeal to leave the death chests along. Problem was the player and death chest were blow up by the creeper, creeper heal tried to replace the chest and did so in a loop. Having creeper heal leave the chests along should solve it.
Just pointing out I think my config was correct, re: PVP/PVEChest = true and also had pex give deathchest.* permissions to everyone.
I have a player who likes to use a chain of corpse runs as a valid resource gathering strategy. Player died, chest spawned, player went back to get the original chest and was killed in the process and before looting the original death chest (may have had the chest open when killed). At that point hundreds of death chests started spawning in a loop.
At that point I stopped the server and changed PVP/PVEChest = false and removed the permission.
Also console error good call *slaps forehead* apologies, I should have looked/included that first.
It would appear from the console log the infinitely respawning chest is being caused by a conflict with a another plugin I have installed called CreeperHeal. It puts back blocks destroyed by a creeper. Console log:
2013-02-25 18:41:44 [WARNING] [CreeperHeal] Task #22 for CreeperHeal v5.8.5 generated an exception java.lang.IllegalArgumentException: Invalid inventory size; expected 54 or less at org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventoryDoubleChest.setContents(CraftInventoryDoubleChest.java:45) at com.nitnelave.CreeperHeal.block.CreeperChest.restore(CreeperChest.java:123) at com.nitnelave.CreeperHeal.block.CreeperChest.update(CreeperChest.java:166) at com.nitnelave.CreeperHeal.block.CreeperBlock.replace(CreeperBlock.java:181) at com.nitnelave.CreeperHeal.block.BlockManager.replace_blocks(BlockManager.java:60)
There is more to the console log, but since it doesn't appear to be your problem, I thank you for the response and your patience.
I'm theorizing that the person went to the chest, died, chest was destroyed at the same time, and CreeperHeal and Deathcraft got in a fighting match about what should be done. I'll post something over in the CreeperHeal area and see if we can come up w/ some ideas about how to get CreeperHeal and Deathcraft to play nicely together.
:)
@Adutude
Not sure I fully understand - PVE/PVEChest = True means it will spawn a chest when they die, if they have the right permission.
What do you mean it kept respawning chests in a loop? Were they dying when they went back to the original chest? The only time the chest portion of the code is called is only when a player death occurs. Did you get any sort of console error?
Not sure if this has been reported, but I was using the 1.3 on latest Bukkit, and player was killed when going back to get the first death chest, it kept respawning chests in a loop. I had PVEChest and PVPChest set to true in the config file and deatchchest.* set in permissions for the player. Stopped the server and disabled the death chest, then restarted and OK now. Let me know if you need any more info.
kewl
@stephano013
Just double check that whatever permission you've got them set as in the config is available only for people you want to have that ability. Also, if you updated to 1.3, you can completely disable them, regardless of permission by setting PVEChest and PVPChest to false in the config.
Coool :)
@raum
Oh cuz I died and it spawned so I thought everyone had the perm