From baaa5dd8d45ee98153511d76f650902ab80bf2db Mon Sep 17 00:00:00 2001 From: Krakenied Date: Sun, 20 Jul 2025 19:00:39 +0200 Subject: Handle projectile damage in deal damage task type properly --- .../quests/bukkit/tasktype/type/DealDamageTaskType.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'bukkit/src/main/java') diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java index 06db1410..2f4bb902 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java @@ -12,9 +12,11 @@ import org.bukkit.entity.Creature; import org.bukkit.entity.Damageable; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.projectiles.ProjectileSource; public final class DealDamageTaskType extends BukkitTaskType { @@ -33,7 +35,19 @@ public final class DealDamageTaskType extends BukkitTaskType { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { Entity damager = event.getDamager(); - if (!(damager instanceof Player player)) { + Player player; + + if (damager instanceof Player) { + player = (Player) damager; + } else if (damager instanceof Projectile projectile) { + ProjectileSource source = projectile.getShooter(); + + if (source instanceof Player) { + player = (Player) source; + } else { + return; + } + } else { return; } -- cgit v1.2.3-70-g09d2