diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java index bfd35700..57b8b9a4 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java @@ -14,6 +14,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; +import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.ItemStack; public class FightPearlController implements Listener { @@ -80,6 +81,31 @@ public void onPearlDamage(EntityDamageByEntityEvent event) { event.setDamage(0.0); } + @EventHandler(priority = EventPriority.HIGHEST) + public void onPearlTeleport(PlayerTeleportEvent event) { + if (event.getCause() != PlayerTeleportEvent.TeleportCause.ENDER_PEARL) { + return; + } + + if (!this.settings.pearlThrowDisabledDuringCombat) { + return; + } + + Player player = event.getPlayer(); + UUID playerId = player.getUniqueId(); + + if (!this.fightManager.isInCombat(playerId)) { + return; + } + + event.setCancelled(true); + + this.noticeService.create() + .player(playerId) + .notice(this.settings.pearlThrowBlockedDuringCombat) + .send(); + } + private void handlePearlCooldown(ProjectileLaunchEvent event, Player player, UUID playerId) { if (this.settings.pearlThrowDelay.isZero()) { return;