From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Thu, 26 Mar 2020 19:30:58 -0700 Subject: [PATCH] Add PlayerAttackEntityCooldownResetEvent diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerAttackEntityCooldownResetEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerAttackEntityCooldownResetEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..2cd5c9c344cacbabe64dae8ec87babb506b5fb09 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerAttackEntityCooldownResetEvent.java @@ -0,0 +1,77 @@ +package com.destroystokyo.paper.event.player; + +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; +import org.jetbrains.annotations.ApiStatus; +import org.jspecify.annotations.NullMarked; + +/** + * Called when processing a player's attack on an entity when the player's attack strength cooldown is reset + */ +@NullMarked +public class PlayerAttackEntityCooldownResetEvent extends PlayerEvent implements Cancellable { + + private static final HandlerList HANDLER_LIST = new HandlerList(); + + private final Entity attackedEntity; + private final float cooledAttackStrength; + + private boolean cancelled; + + @ApiStatus.Internal + public PlayerAttackEntityCooldownResetEvent(final Player player, final Entity attackedEntity, final float cooledAttackStrength) { + super(player); + this.attackedEntity = attackedEntity; + this.cooledAttackStrength = cooledAttackStrength; + } + + /** + * Get the value of the players cooldown attack strength when they initiated the attack + * + * @return returns the original player cooldown value + */ + public float getCooledAttackStrength() { + return this.cooledAttackStrength; + } + + /** + * Returns the entity attacked by the player + * + * @return the entity attacked by the player + */ + public Entity getAttackedEntity() { + return this.attackedEntity; + } + + /** + * {@inheritDoc} + *

+ * If an attack cooldown event is cancelled, the players attack strength will remain at the same value instead of being reset. + */ + @Override + public boolean isCancelled() { + return this.cancelled; + } + + /** + * {@inheritDoc} + *

+ * Cancelling this event will prevent the target player from having their cooldown reset from attacking this entity + */ + @Override + public void setCancelled(final boolean cancel) { + this.cancelled = cancel; + } + + @Override + public HandlerList getHandlers() { + return HANDLER_LIST; + } + + public static HandlerList getHandlerList() { + return HANDLER_LIST; + } +}