diff --git a/src/main/java/dev/logal/snowbrawl/managers/ArenaManager.java b/src/main/java/dev/logal/snowbrawl/managers/ArenaManager.java index 4943858..ca4d07a 100644 --- a/src/main/java/dev/logal/snowbrawl/managers/ArenaManager.java +++ b/src/main/java/dev/logal/snowbrawl/managers/ArenaManager.java @@ -404,7 +404,7 @@ public class ArenaManager implements Listener { * * @param event The event. */ - @EventHandler + @EventHandler(ignoreCancelled = true) public void onEntityDamageByEntity(final EntityDamageByEntityEvent event){ final Arena arena = this.getArenaByLocation(event.getEntity().getLocation()); diff --git a/src/main/java/dev/logal/snowbrawl/managers/MatchManager.java b/src/main/java/dev/logal/snowbrawl/managers/MatchManager.java index 9299e95..ee702be 100644 --- a/src/main/java/dev/logal/snowbrawl/managers/MatchManager.java +++ b/src/main/java/dev/logal/snowbrawl/managers/MatchManager.java @@ -21,10 +21,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.*; -import org.bukkit.event.entity.EntityPickupItemEvent; -import org.bukkit.event.entity.EntityPlaceEvent; -import org.bukkit.event.entity.FoodLevelChangeEvent; -import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.entity.*; import org.bukkit.event.player.*; import java.util.ArrayList; @@ -425,6 +422,22 @@ public class MatchManager implements Listener, Runnable { } } + /** + * Notifies appropriate matches of entity damages by players. + * + * @param event The event. + */ + @EventHandler(ignoreCancelled = true) + public void onEntityDamageByEntity(final EntityDamageByEntityEvent event){ + final Arena arena = this.snowbrawl.getArenaManager().getArenaByLocation(event.getEntity().getLocation()); + if (arena != null){ + final Match match = this.getMatchFromArena(arena); + if (match != null){ + match.onEntityDamageByEntity(event); + } + } + } + /** * Prevents match participants from picking up items except snowballs. * diff --git a/src/main/java/dev/logal/snowbrawl/types/Match.java b/src/main/java/dev/logal/snowbrawl/types/Match.java index 4d4d5b5..5f9bb3c 100644 --- a/src/main/java/dev/logal/snowbrawl/types/Match.java +++ b/src/main/java/dev/logal/snowbrawl/types/Match.java @@ -15,6 +15,7 @@ import org.bukkit.*; import org.bukkit.boss.BarColor; import org.bukkit.boss.BarStyle; import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerMoveEvent; @@ -362,6 +363,17 @@ public class Match { victimPlayer.updateInventory(); } + /** + * Prevents entities from damaging each other during grace time. + * + * @param event The event. + */ + public void onEntityDamageByEntity(final EntityDamageByEntityEvent event){ + if (this.graceTimeTicksRemaining > 0){ + event.setCancelled(true); + } + } + /** * Changes the respawn point of dying match participants to a random spawn point in the arena. *