From 55b88a950d4dffeb55cf7909348401b4fb953f15 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sat, 8 Feb 2025 23:09:09 +0100 Subject: [PATCH] Refactor snowball event handling for better readability. Renamed method for clarity and improved team player checks. Added debug logs for unsupported scenarios and ensured no actions occur when players hit teammates. These changes enhance code maintainability and prevent unintended behavior. --- .../com/alttd/ctf/events/SnowballEvent.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/alttd/ctf/events/SnowballEvent.java b/src/main/java/com/alttd/ctf/events/SnowballEvent.java index 7051b20..7bb51de 100644 --- a/src/main/java/com/alttd/ctf/events/SnowballEvent.java +++ b/src/main/java/com/alttd/ctf/events/SnowballEvent.java @@ -48,7 +48,7 @@ public class SnowballEvent implements Listener { } @EventHandler - public void onSnowballHitBySnowball(ProjectileLaunchEvent event) { + public void onSnowballThrown(ProjectileLaunchEvent event) { handleSnowballThrown(event, (shooter, shooterTeamPlayer) -> { GameClass shooterClass = shooterTeamPlayer.getGameClass(); shooter.setCooldown(Material.SNOWBALL, shooterClass.getThrowTickSpeed()); @@ -105,11 +105,22 @@ public class SnowballEvent implements Listener { return; } - Optional teamPlayer = gameManager.getTeamPlayer(shooter.getUniqueId()); - if (teamPlayer.isEmpty()) { + Optional teamPlayerShooter = gameManager.getTeamPlayer(shooter.getUniqueId()); + if (teamPlayerShooter.isEmpty()) { log.debug("The shooter that hit a player with a snowball was not a team player"); return; } - consumer.apply(hitPlayer, shooter, teamPlayer.get()); + + Optional teamPlayerHit = gameManager.getTeamPlayer(hitPlayer.getUniqueId()); + if (teamPlayerHit.isEmpty()) { + log.debug("The shooter that hit a player with a snowball was not a team player"); + return; + } + + if (teamPlayerHit.get().getTeam().getId() == teamPlayerShooter.get().getTeam().getId()) { + log.debug("The shooter hit a member of their own team"); + return; + } + consumer.apply(hitPlayer, shooter, teamPlayerHit.get()); } }