Custom Death Messages Not Working

Discussion in 'Plugin Development' started by xSummit, Jan 17, 2013.

Thread Status:
Not open for further replies.
  1. Offline

    xSummit

    So, basically I'm trying to add custom death messages to my plugin, but when I am killed by a Mob it doesn't show up. Yes, I did add an if statement to handle if I was killed by a Zombie, but I just doesn't keep to work. I took off the default death messages with e.setDeathMessage(""): so nothing will show, but the messages I made. Please help. The if the killer is a Player shows but not the mobs.

    package me.rez.voxelwarfare;

    import org.bukkit.ChatColor;
    import org.bukkit.Server;
    import org.bukkit.entity.Creature;
    import org.bukkit.entity.CreatureType;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Zombie;
    import org.bukkit.entity.Enderman;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDeathEvent;
    import org.bukkit.event.entity.PlayerDeathEvent;

    public class DeathMessages implements Listener{
    private VoxelWarfare plugin;
    public DeathMessages(VoxelWarfare plugin){
    this.plugin = plugin;
    }
    @EventHandler
    public void onDeath(PlayerDeathEvent e){
    Player p = e.getEntity();
    Entity killer = p.getKiller();
    e.setDeathMessage("");
    if(killer instanceof Zombie){
    plugin.getServer().broadcastMessage(ChatColor.AQUA + p.getName() + ChatColor.GOLD + " is Zomber Baby Zombie Food");
    }
    if(killer instanceof Player){
    plugin.getServer().broadcastMessage(ChatColor.AQUA + p.getName() + ChatColor.GOLD + " has been killed by " + ChatColor.DARK_RED + p.getKiller().getName());
    }

    }
    }
     
  2. Offline

    caseif

    Does the event fire at all? Add in some debug code to figure out where it fails.
     
  3. Offline

    JHA™

    Code:
      @EventHandler(priority=EventPriority.HIGH)
      public void onKill(PlayerDeathEvent e) {
        if (e.getEntity().getKiller() != null) {
          String killedName = e.getEntity().getName();
          String killerName = e.getEntity().getKiller().getName();
          getServer().broadcastMessage("\2474"+ killedName + "\2478 has been slain by " +"\247b"+killerName);
            }
        }
    Try and use that to get your to work.
     
  4. Offline

    hockeygoalie5

    Why are you broadcasting the message? I believe there's an e.setDeathMessage() or something like it.
     
  5. Offline

    mikeaaaa

    but it's an error:
    getServer().broadcastMessage("\2474"+ killedName + "\2478 has been slain by " +"\247b"+killerName);

    it is: Bukkit.broadcastMessage("§2"+ killedName + "§6 wurde gekillt von " +"§2"+killerName);
    -----------------------------------
    Code:
          @EventHandler(priority=EventPriority.HIGH)
          public void onKill(PlayerDeathEvent e) {
            if (e.getEntity().getKiller() != null) {
              String killedName = e.getEntity().getName();
              String killerName = e.getEntity().getKiller().getName();
              Bukkit.broadcastMessage("§2"+ killedName + "§6 wurde gekillt von " +"§2"+killerName);
                }
            }
    This is also an Possibility

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 30, 2016
  6. Offline

    xavierarmadillo

    Code:
        @EventHandler
        public void onEntityDeath(EntityDeathEvent event) {
     
            Entity victim = event.getEntity();
            DamageCause damage = null;
            String Victim = "", Killer = "", Cause = "";
            boolean byPlayer = false;
            boolean flipIt = false;
     
            if (victim.getLastDamageCause() != null) {
                damage = victim.getLastDamageCause().getCause();
            } else {
                return;
            }
     
            // Determine the victim of the death
            // ############################################################################
            if (victim instanceof Player) {
                // Get the player display name
                Victim = ((Player) victim).getDisplayName();
            } else {
                // Format the victim to a readable form
                Victim = victim.getType().getName().toLowerCase().replace("_", " ");
     
                if (victim instanceof Wolf) {
                    Wolf wolf = (Wolf) victim;
                    if (wolf.getOwner() != null) {
                        Player ply = (Player) wolf.getOwner();
                        Victim = Victim.concat(" owned by ").concat(
                                ply.getDisplayName());
                    }
                }
     
                // Concat the appropriate article before the noun.
                if (Victim.matches("[aeiou].*?")) {
                    Victim = "An ".concat(Victim);
                } else {
                    Victim = "A ".concat(Victim);
                }
            }
     
            // Determine the cause of the death
            // ############################################################################
            if (damage.equals(DamageCause.ENTITY_ATTACK)) {
                // The killer was another entity.
                // Determine the entity
                Entity killer = event.getEntity().getKiller();
     
                if (killer instanceof Player) {
     
                    byPlayer = true;
                    Killer = " from ".concat(event.getEntity().getKiller()
                            .getDisplayName());
     
                    ItemStack item = event.getEntity().getKiller().getItemInHand();
     
                    String theCause = item.getType().toString().toLowerCase();
     
                    if (theCause.equals("air")) {
                        Cause = " attacking with their awesome fist";
                    } else {
     
                        if (theCause.matches("[aeiou].*?")) {
                            Cause = " attacking them with an ".concat(theCause
                                    .replace("_", " "));
                        } else {
                            Cause = " attacking them with a ".concat(theCause
                                    .replace("_", " "));
                        }
                    }
     
                } else {
     
                    if (victim.getLastDamageCause() instanceof EntityDamageByEntityEvent) {
     
                        EntityDamageByEntityEvent eEvent = (EntityDamageByEntityEvent) victim
                                .getLastDamageCause();
                        String entityName = eEvent.getDamager().getType().getName()
                                .toLowerCase();
     
                        if (entityName.matches("[aeiou].*?")) {
                            Killer = " by an ".concat(entityName);
                        } else {
                            Killer = " by a ".concat(entityName);
                        }
     
                        if (eEvent.getDamager() instanceof Wolf) {
                            Wolf wolf = (Wolf) eEvent.getDamager();
                            if (wolf.getOwner() != null) {
                                Player ply = (Player) wolf.getOwner();
                                Killer = Killer.concat(" owned by ").concat(
                                        ply.getDisplayName());
                            }
                        }
     
                        Cause = " by being attacked";
                        flipIt = true;
     
                    } else {
                        // unknown
                        Cause = " unknown";
                    }
                }
            } else if (damage.equals(DamageCause.BLOCK_EXPLOSION)) {
                Cause = " from an explosion";
            } else if (damage.equals(DamageCause.CONTACT)) {
                Cause = " from kissing a cactus";
            } else if (damage.equals(DamageCause.CUSTOM)) {
                Cause = " from something custom";
            } else if (damage.equals(DamageCause.DROWNING)
                    || damage.equals(DamageCause.SUFFOCATION)) {
                Cause = " from not taking a breath";
            } else if (damage.equals(DamageCause.ENTITY_EXPLOSION)) {
                Cause = " by playing with a creeper";
            } else if (damage.equals(DamageCause.FALL)) {
                Cause = " by bungee jumping without a cord";
            } else if (damage.equals(DamageCause.FALLING_BLOCK)) {
                Cause = " by being smooshed";
            } else if (damage.equals(DamageCause.FIRE)
                    || damage.equals(DamageCause.FIRE_TICK)) {
                Cause = " after jumping into a campfire";
            } else if (damage.equals(DamageCause.LAVA)) {
                Cause = " from swimming in lava";
            } else if (damage.equals(DamageCause.LIGHTNING)) {
                Cause = " by flying a kite in an electrical storm";
            } else if (damage.equals(DamageCause.MAGIC)) {
                Cause = " by playing with magic";
            } else if (damage.equals(DamageCause.MELTING)) {
                Cause = " from thawing.";
            } else if (damage.equals(DamageCause.POISON)) {
                Cause = " by drinking poison";
            } else if (damage.equals(DamageCause.PROJECTILE)) {
                Cause = " from being shot";
            } else if (damage.equals(DamageCause.STARVATION)) {
                Cause = " because they didn't go grocery shopping";
            } else if (damage.equals(DamageCause.SUICIDE)) {
                Cause = " by taking the easy way out";
            } else if (damage.equals(DamageCause.VOID)) {
                Cause = " by falling into the abyss";
            } else if (damage.equals(DamageCause.WITHER)) {
                Cause = " because they danced with the wither";
            }
     
            String toSend = Victim.concat(" died").concat(Killer).concat(Cause)
                    .concat(".");
     
            if (flipIt) {
                toSend = Victim.concat(" died").concat(Cause).concat(Killer)
                        .concat(".");
            }
     
            if (!lastMessage.equals(toSend) || byPlayer) {
     
                long time = (new Date().getTime() - lastTime.getTime()) / 1000;
     
                if (time > 15 || byPlayer) {
                    lastMessage = toSend;
                    lastTime = new Date();
                    sendToAll(ChatColor.WHITE + toSend);
                }
            }
        }
     
Thread Status:
Not open for further replies.

Share This Page