Implements the ability to customise and remove Player death messages.

This commit is contained in:
Rigby 2011-09-21 16:32:37 +01:00 committed by Dinnerbone
parent 59908c43c9
commit 1da2d1f5b6
2 changed files with 7 additions and 4 deletions

View file

@ -12,6 +12,7 @@ import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.craftbukkit.event.CraftEventFactory;
import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.event.entity.PlayerDeathEvent;
// CraftBukkit end // CraftBukkit end
public class EntityPlayer extends EntityHuman implements ICrafting { public class EntityPlayer extends EntityHuman implements ICrafting {
@ -139,7 +140,6 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
} }
public void die(DamageSource damagesource) { public void die(DamageSource damagesource) {
this.b.serverConfigurationManager.sendAll(new Packet3Chat(damagesource.a(this)));
// CraftBukkit start // CraftBukkit start
java.util.List<org.bukkit.inventory.ItemStack> loot = new java.util.ArrayList<org.bukkit.inventory.ItemStack>(); java.util.List<org.bukkit.inventory.ItemStack> loot = new java.util.ArrayList<org.bukkit.inventory.ItemStack>();
@ -155,7 +155,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
} }
} }
CraftEventFactory.callPlayerDeathEvent(this, loot); PlayerDeathEvent event = CraftEventFactory.callPlayerDeathEvent(this, loot, damagesource.a(this));
if (!"".equals(event.getDeathMessage())) {
this.b.serverConfigurationManager.sendAll(new Packet3Chat(event.getDeathMessage()));
}
// CraftBukkit - we clean the player's inventory after the EntityDeathEvent is called so plugins can get the exact state of the inventory. // CraftBukkit - we clean the player's inventory after the EntityDeathEvent is called so plugins can get the exact state of the inventory.
for (int i = 0; i < this.inventory.items.length; ++i) { for (int i = 0; i < this.inventory.items.length; ++i) {

View file

@ -293,9 +293,9 @@ public class CraftEventFactory {
return event; return event;
} }
public static PlayerDeathEvent callPlayerDeathEvent(EntityPlayer victim, List<org.bukkit.inventory.ItemStack> drops) { public static PlayerDeathEvent callPlayerDeathEvent(EntityPlayer victim, List<org.bukkit.inventory.ItemStack> drops, String deathMessage) {
CraftPlayer entity = (CraftPlayer)victim.getBukkitEntity(); CraftPlayer entity = (CraftPlayer)victim.getBukkitEntity();
PlayerDeathEvent event = new PlayerDeathEvent(entity, drops, victim.getExpReward(), 0); PlayerDeathEvent event = new PlayerDeathEvent(entity, drops, victim.getExpReward(), 0, deathMessage);
org.bukkit.World world = entity.getWorld(); org.bukkit.World world = entity.getWorld();
Bukkit.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);