From cbc506d7204d5df1d11439d62c84f4df7cd589f1 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Tue, 15 Mar 2022 12:18:02 +0100 Subject: [PATCH] no doubled messages for entity_sweep_attack, falling_block, hot_floor, thorns better variable names --- .../sharehealth/PlayerListeners.java | 24 +++++++++++++------ .../benjocraeft/sharehealth/Sharehealth.java | 8 +++---- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/benjocraeft/sharehealth/PlayerListeners.java b/src/main/java/com/benjocraeft/sharehealth/PlayerListeners.java index aa94a42..e56b708 100644 --- a/src/main/java/com/benjocraeft/sharehealth/PlayerListeners.java +++ b/src/main/java/com/benjocraeft/sharehealth/PlayerListeners.java @@ -5,6 +5,7 @@ import org.bukkit.block.Block; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.*; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; @@ -57,8 +58,11 @@ public class PlayerListeners implements Listener{ DamageCause[] messageNotAllowed = new DamageCause[]{ DamageCause.ENTITY_ATTACK, DamageCause.ENTITY_EXPLOSION, + DamageCause.ENTITY_SWEEP_ATTACK, DamageCause.PROJECTILE, - DamageCause.CONTACT + DamageCause.FALLING_BLOCK, + DamageCause.HOT_FLOOR, + DamageCause.THORNS, }; boolean isMessageAllowed = !Arrays.asList(messageNotAllowed).contains(cause); @@ -68,7 +72,8 @@ public class PlayerListeners implements Listener{ } //Only for logging/messaging - @EventHandler + //lower priority so the message will be read even if player dies from damage + @EventHandler (priority = EventPriority.LOW) public void onEntityGotDamageByEntity(final EntityDamageByEntityEvent event){ Entity damagedEntity = event.getEntity(); @@ -77,14 +82,15 @@ public class PlayerListeners implements Listener{ return; double damage = event.getFinalDamage(); - Entity cause = event.getDamager(); + Entity damagingEntity = event.getDamager(); double absorbedDamage = -event.getOriginalDamage(DamageModifier.ABSORPTION); - Sharehealth.Instance.onPlayerGotDamageByEntity((Player)damagedEntity, damage, cause, absorbedDamage); + Sharehealth.Instance.onPlayerGotDamageByEntity((Player)damagedEntity, damage, damagingEntity, absorbedDamage); } } //Only for logging/messaging - @EventHandler + //lower priority so the message will be read even if player dies from damage + @EventHandler (priority = EventPriority.LOW) public void onEntityGotDamageByBlock(final EntityDamageByBlockEvent event){ Entity damagedEntity = event.getEntity(); @@ -93,9 +99,13 @@ public class PlayerListeners implements Listener{ return; double damage = event.getFinalDamage(); - Block cause = event.getDamager(); + + Block damagingBlock = event.getDamager(); + if (damagingBlock == null) + return; + double absorbedDamage = -event.getOriginalDamage(DamageModifier.ABSORPTION); - Sharehealth.Instance.onPlayerGotDamageByBlock((Player)damagedEntity, damage, cause, absorbedDamage); + Sharehealth.Instance.onPlayerGotDamageByBlock((Player)damagedEntity, damage, damagingBlock, absorbedDamage); } } diff --git a/src/main/java/com/benjocraeft/sharehealth/Sharehealth.java b/src/main/java/com/benjocraeft/sharehealth/Sharehealth.java index a453130..79cc6a0 100644 --- a/src/main/java/com/benjocraeft/sharehealth/Sharehealth.java +++ b/src/main/java/com/benjocraeft/sharehealth/Sharehealth.java @@ -153,17 +153,17 @@ public class Sharehealth extends JavaPlugin { saveStatus(); } - void onPlayerGotDamageByEntity(Player player, double damage, Entity cause, double absorbedDamage){ + void onPlayerGotDamageByEntity(Player player, double damage, Entity damagingEntity, double absorbedDamage){ if (isFailed) return; - messenger.onPlayerGotDamageMessage(player, damage + absorbedDamage, cause); + messenger.onPlayerGotDamageMessage(player, damage + absorbedDamage, damagingEntity); } - void onPlayerGotDamageByBlock(Player player, double damage, Block cause, double absorbedDamage){ + void onPlayerGotDamageByBlock(Player player, double damage, Block damagingBlock, double absorbedDamage){ if (isFailed) return; - messenger.onPlayerGotDamageMessage(player, damage + absorbedDamage, cause); + messenger.onPlayerGotDamageMessage(player, damage + absorbedDamage, damagingBlock); } boolean onPlayerRegainedHealth(Player player, double amount, RegainReason reason){