package me.fromgate.reactions.placeholders; import me.fromgate.reactions.util.BukkitCompatibilityFix; import me.fromgate.reactions.util.Util; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageEvent; @PlaceholderDefine(id = "Damage", needPlayer = true, keys = {"DAMAGE", "DAMAGER", "DAMAGER_NAME"}) public class PlaceholderDamage extends Placeholder { @Override public String processPlaceholder(Player player, String key, String param) { EntityDamageEvent de = player.getLastDamageCause(); if (de == null) return null; if (key.equalsIgnoreCase("DAMAGE")) return Double.toString(BukkitCompatibilityFix.getEventDamage(de)); else if (key.equalsIgnoreCase("DAMAGER")) return getDamager(de, false); else if (key.equalsIgnoreCase("DAMAGER_NAME")) return getDamager(de, false); return null; } public String getDamager(EntityDamageEvent de, boolean damagerName) { if (de == null) return null; LivingEntity e = Util.getDamagerEntity(de); String type = e.getType().name(); String name = (e instanceof Player) ? e.getName() : (e.getCustomName() != null ? e.getCustomName() : type); return damagerName ? name : type; } }