From 2287e734aa1721aa38a46f1705e1f3cc0c020e28 Mon Sep 17 00:00:00 2001 From: zp4rker Date: Sun, 30 Jun 2024 09:52:26 +1000 Subject: [PATCH 1/2] Use `Damageable#damage(double)` instead of `Damageable#setHealth(double)` Using Float.MAX_VALUE as that is what `/minecraft:kill` uses Fixes #5842 --- .../main/java/com/earth2me/essentials/commands/Commandkill.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkill.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkill.java index d2a76cbfade..fb669cc4c19 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkill.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkill.java @@ -34,7 +34,7 @@ protected void updatePlayer(final Server server, final CommandSource sender, fin return; } ede.getEntity().setLastDamageCause(ede); - matchPlayer.setHealth(0); + matchPlayer.damage(Float.MAX_VALUE); sender.sendTl("kill", matchPlayer.getDisplayName()); } From 946552193bd4d07da6d8dfcb56dce53aff7a1532 Mon Sep 17 00:00:00 2001 From: zp4rker Date: Mon, 1 Jul 2024 14:34:32 +1000 Subject: [PATCH 2/2] Fix god mode blocking `/kill` from working - Remove phantom EntityDamageEvent - Check if `/kill` command used by checking if `getDamage() == Float.MAX_VALUE` --- .../com/earth2me/essentials/EssentialsEntityListener.java | 2 +- .../java/com/earth2me/essentials/commands/Commandkill.java | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsEntityListener.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsEntityListener.java index 1305ba91ce3..163d9165010 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsEntityListener.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsEntityListener.java @@ -121,7 +121,7 @@ public void run() { @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onEntityDamage(final EntityDamageEvent event) { - if (event.getEntity() instanceof Player && ess.getUser((Player) event.getEntity()).isGodModeEnabled()) { + if (event.getEntity() instanceof Player && ess.getUser((Player) event.getEntity()).isGodModeEnabled() && event.getDamage() < Float.MAX_VALUE) { final Player player = (Player) event.getEntity(); player.setFireTicks(0); player.setRemainingAir(player.getMaximumAir()); diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkill.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkill.java index fb669cc4c19..a88010f750b 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkill.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkill.java @@ -4,7 +4,6 @@ import com.earth2me.essentials.User; import org.bukkit.Server; import org.bukkit.entity.Player; -import org.bukkit.event.entity.EntityDamageEvent; import java.util.Collections; import java.util.List; @@ -29,11 +28,6 @@ protected void updatePlayer(final Server server, final CommandSource sender, fin if (sender.isPlayer() && user.isAuthorized("essentials.kill.exempt") && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.kill.force")) { throw new PlayerExemptException("killExempt", matchPlayer.getDisplayName()); } - final EntityDamageEvent ede = ess.getDamageEventProvider().callDamageEvent(matchPlayer, sender.isPlayer() && sender.getPlayer().getName().equals(matchPlayer.getName()) ? EntityDamageEvent.DamageCause.SUICIDE : EntityDamageEvent.DamageCause.CUSTOM, Float.MAX_VALUE); - if (ede.isCancelled() && sender.isPlayer() && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.kill.force")) { - return; - } - ede.getEntity().setLastDamageCause(ede); matchPlayer.damage(Float.MAX_VALUE); sender.sendTl("kill", matchPlayer.getDisplayName()); }