From 2242fea737617c84ed635a236380556f2c50ea19 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sat, 15 Feb 2025 23:44:22 +0100 Subject: [PATCH] Prevent block breaking during active game phases Added an event handler to cancel block breaking unless the block is snow or the game phase is inactive. This ensures players cannot modify the environment during ongoing games. --- .../java/com/alttd/ctf/events/SnowballEvent.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/com/alttd/ctf/events/SnowballEvent.java b/src/main/java/com/alttd/ctf/events/SnowballEvent.java index 11a85d7..e7138c4 100644 --- a/src/main/java/com/alttd/ctf/events/SnowballEvent.java +++ b/src/main/java/com/alttd/ctf/events/SnowballEvent.java @@ -7,10 +7,12 @@ import com.alttd.ctf.team.TeamPlayer; import lombok.extern.slf4j.Slf4j; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.Tag; import org.bukkit.entity.Snowball; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.entity.Player; +import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.util.Vector; @@ -61,6 +63,16 @@ public class SnowballEvent implements Listener { }); } + @EventHandler + public void onBlockBreak(BlockBreakEvent event) { + if (gameManager.getGamePhase().isEmpty()) { + return; + } + if (Tag.SNOW.isTagged(event.getBlock().getType())) + return; + event.setCancelled(true); + } + private boolean blockedAttack(@NotNull Player hitPlayer, @NotNull Snowball snowball) { if (!hitPlayer.isBlocking()) { return false;