From d617adb3a3343e93f8d763ce53962cfc440bb634 Mon Sep 17 00:00:00 2001 From: Default Date: Wed, 30 Dec 2020 13:48:07 +0100 Subject: [PATCH] better damage message with arrows --- .../com/benjocraeft/sharehealth/Commands.java | 1 - .../com/benjocraeft/sharehealth/Messenger.java | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/benjocraeft/sharehealth/Commands.java b/src/main/java/com/benjocraeft/sharehealth/Commands.java index 8b8738f..c05f943 100644 --- a/src/main/java/com/benjocraeft/sharehealth/Commands.java +++ b/src/main/java/com/benjocraeft/sharehealth/Commands.java @@ -10,7 +10,6 @@ import org.bukkit.entity.Player; import org.bukkit.util.StringUtil; import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; public class Commands implements TabExecutor { diff --git a/src/main/java/com/benjocraeft/sharehealth/Messenger.java b/src/main/java/com/benjocraeft/sharehealth/Messenger.java index 3544988..a712fc2 100644 --- a/src/main/java/com/benjocraeft/sharehealth/Messenger.java +++ b/src/main/java/com/benjocraeft/sharehealth/Messenger.java @@ -5,11 +5,13 @@ import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.block.Block; import org.bukkit.command.CommandSender; +import org.bukkit.craftbukkit.v1_16_R1.projectiles.CraftBlockProjectileSource; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; +import org.bukkit.projectiles.ProjectileSource; import java.util.*; import java.util.function.Consumer; @@ -63,7 +65,18 @@ public class Messenger { private String damageMessage(Player player, double damage, Entity damager){ String name = damager.getName(); if (damager instanceof Projectile){ - name = Objects.requireNonNull(((Projectile) damager).getShooter()).toString(); + Projectile projectile = (Projectile) damager; + ProjectileSource source = projectile.getShooter(); + if (source != null){ + if (source instanceof Entity){ + Entity shooterEntity = (Entity) source; + name = shooterEntity.getName(); + } + if (source instanceof CraftBlockProjectileSource){ + CraftBlockProjectileSource shooterBlock = (CraftBlockProjectileSource) source; + name = shooterBlock.getBlock().getType().name(); + } + } } return damageMessage(player, damage) + ChatColor.YELLOW + " Attacker: " + name; }