Added cancellation of entity damage by entities during match grace time.

This commit is contained in:
2022-06-17 19:12:40 -04:00
parent 6b85b99a4b
commit fd98858019
3 changed files with 30 additions and 5 deletions

View File

@@ -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());

View File

@@ -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.
*

View File

@@ -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.
*