From f27038f91d25f64b407eafc50d738fa873c55261 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sat, 15 Feb 2025 02:48:20 +0100 Subject: [PATCH] Ensure snowball hit events are properly canceled outside combat phase. Previously, events where players were hit outside the combat phase or by non-snowball entities were not being canceled appropriately. This commit adds `event.setCancelled(true)` to prevent unintended behaviors in these scenarios. --- src/main/java/com/alttd/ctf/events/SnowballEvent.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/alttd/ctf/events/SnowballEvent.java b/src/main/java/com/alttd/ctf/events/SnowballEvent.java index 2941496..a437d53 100644 --- a/src/main/java/com/alttd/ctf/events/SnowballEvent.java +++ b/src/main/java/com/alttd/ctf/events/SnowballEvent.java @@ -100,13 +100,14 @@ public class SnowballEvent implements Listener { private void handleSnowballHit(EntityDamageByEntityEvent event, SnowballHitConsumer consumer) { Optional optionalGamePhase = gameManager.getGamePhase(); if (optionalGamePhase.isEmpty()) { - log.debug("No game is running but player was hit by snowball"); + log.debug("No game is running but player was hit"); return; } GamePhase gamePhase = optionalGamePhase.get(); if (!gamePhase.equals(GamePhase.COMBAT)) { - log.debug("Not in combat phase but player was hit by snowball"); + log.debug("Not in combat phase but player was hit, cancelling event"); + event.setCancelled(true); return; } @@ -116,7 +117,8 @@ public class SnowballEvent implements Listener { } if (!(event.getDamager() instanceof org.bukkit.entity.Snowball snowball)) { - log.debug("The player was hit by something other than a snowball"); + log.debug("The player was hit by something other than a snowball, canceling event"); + event.setCancelled(true); return; }