From d9fdad0086c54a784463a15bdfbc08ad51605965 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Fri, 25 May 2018 11:59:17 +0300 Subject: [PATCH] Abstracted death listeners to allow wider variety of projectiles. --- .../listeners/bukkit/DeathEventListener.java | 26 +++++++++++-------- .../listeners/sponge/SpongeDeathListener.java | 14 +++++----- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/Plan/src/main/java/com/djrapitops/plan/system/listeners/bukkit/DeathEventListener.java b/Plan/src/main/java/com/djrapitops/plan/system/listeners/bukkit/DeathEventListener.java index 4748a6b13..6576c787a 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/listeners/bukkit/DeathEventListener.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/listeners/bukkit/DeathEventListener.java @@ -58,10 +58,10 @@ public class DeathEventListener implements Listener { KillProcessor processor = null; if (killerEntity instanceof Player) { processor = handlePlayerKill(time, dead, (Player) killerEntity); - } else if (killerEntity instanceof Wolf) { - processor = handleWolfKill(time, dead, (Wolf) killerEntity); - } else if (killerEntity instanceof Arrow) { - processor = handleArrowKill(time, dead, (Arrow) killerEntity); + } else if (killerEntity instanceof Tameable) { + processor = handlePetKill(time, dead, (Tameable) killerEntity); + } else if (killerEntity instanceof Projectile) { + processor = handleProjectileKill(time, dead, (Projectile) killerEntity); } if (processor != null) { Processing.submit(processor); @@ -83,28 +83,32 @@ public class DeathEventListener implements Listener { return new KillProcessor(killer.getUniqueId(), time, dead, normalizeMaterialName(itemInHand)); } - private KillProcessor handleWolfKill(long time, LivingEntity dead, Wolf wolf) { - if (!wolf.isTamed()) { + private KillProcessor handlePetKill(long time, LivingEntity dead, Tameable tameable) { + if (!tameable.isTamed()) { return null; } - AnimalTamer owner = wolf.getOwner(); + AnimalTamer owner = tameable.getOwner(); if (!(owner instanceof Player)) { return null; } - return new KillProcessor(owner.getUniqueId(), time, dead, "Wolf"); + return new KillProcessor(owner.getUniqueId(), time, dead, + new Format(tameable.getType().name()).capitalize().toString() + ); } - private KillProcessor handleArrowKill(long time, LivingEntity dead, Arrow arrow) { - ProjectileSource source = arrow.getShooter(); + private KillProcessor handleProjectileKill(long time, LivingEntity dead, Projectile projectile) { + ProjectileSource source = projectile.getShooter(); if (!(source instanceof Player)) { return null; } Player player = (Player) source; - return new KillProcessor(player.getUniqueId(), time, dead, "Bow"); + return new KillProcessor(player.getUniqueId(), time, dead, + new Format(projectile.getType().name()).capitalize().toString() + ); } /** diff --git a/Plan/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongeDeathListener.java b/Plan/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongeDeathListener.java index c6a2f0e2e..9009cd94e 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongeDeathListener.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongeDeathListener.java @@ -12,7 +12,7 @@ import org.spongepowered.api.entity.Entity; import org.spongepowered.api.entity.living.Living; import org.spongepowered.api.entity.living.animal.Wolf; import org.spongepowered.api.entity.living.player.Player; -import org.spongepowered.api.entity.projectile.arrow.Arrow; +import org.spongepowered.api.entity.projectile.Projectile; import org.spongepowered.api.entity.projectile.source.ProjectileSource; import org.spongepowered.api.event.Listener; import org.spongepowered.api.event.cause.entity.damage.source.EntityDamageSource; @@ -59,8 +59,8 @@ public class SpongeDeathListener { processor = handlePlayerKill(time, dead, (Player) killerEntity); } else if (killerEntity instanceof Wolf) { processor = handleWolfKill(time, dead, (Wolf) killerEntity); - } else if (killerEntity instanceof Arrow) { - processor = handleArrowKill(time, dead, (Arrow) killerEntity); + } else if (killerEntity instanceof Projectile) { + processor = handleProjectileKill(time, dead, (Projectile) killerEntity); } if (processor != null) { Processing.submit(processor); @@ -95,15 +95,17 @@ public class SpongeDeathListener { ).orElse(null); } - private SpongeKillProcessor handleArrowKill(long time, Living dead, Arrow arrow) { - ProjectileSource source = arrow.getShooter(); + private SpongeKillProcessor handleProjectileKill(long time, Living dead, Projectile projectile) { + ProjectileSource source = projectile.getShooter(); if (!(source instanceof Player)) { return null; } Player player = (Player) source; - return new SpongeKillProcessor(player.getUniqueId(), time, getUUID(dead), "Bow"); + return new SpongeKillProcessor(player.getUniqueId(), time, getUUID(dead), + new Format(projectile.getType().getName()).capitalize().toString() + ); } /**