Improve entity effect API

This commit is contained in:
Jake Potrebic 2024-09-27 17:12:50 -07:00
parent 4a86a6e4ee
commit 4cd3060ff8
3 changed files with 66 additions and 1 deletions

View File

@ -112,11 +112,25 @@ public enum EntityEffect {
// 5 - unused // 5 - unused
/** /**
* The smoke when taming an entity fails. * The smoke when taming an entity fails.
* @deprecated use {@link EntityEffect#TAMING_FAILED}
*/ */
@Deprecated(since = "1.21") // Paper
WOLF_SMOKE(6, Tameable.class), WOLF_SMOKE(6, Tameable.class),
// Paper start - rename "wolf" effects
/**
* The smoke when taming an entity fails.
*/
TAMING_FAILED(6, Tameable.class),
/** /**
* The hearts when taming an entity succeeds. * The hearts when taming an entity succeeds.
*/ */
TAMING_SUCCEEDED(7, Tameable.class),
// Paper end - rename "wolf" effects
/**
* The hearts when taming an entity succeeds.
* @deprecated use {@link EntityEffect#TAMING_SUCCEEDED}
*/
@Deprecated(since = "1.21") // Paper
WOLF_HEARTS(7, Tameable.class), WOLF_HEARTS(7, Tameable.class),
/** /**
* When a wolf shakes (after being wet). * When a wolf shakes (after being wet).
@ -204,7 +218,9 @@ public enum EntityEffect {
ARMOR_STAND_HIT(32, ArmorStand.class), ARMOR_STAND_HIT(32, ArmorStand.class),
/** /**
* Entity hurt by thorns attack. * Entity hurt by thorns attack.
* @deprecated in favor of {@link LivingEntity#playHurtAnimation(float)} or {@link Entity#broadcastHurtAnimation(java.util.Collection)}
*/ */
@Deprecated(since = "1.19.4", forRemoval = true) // Paper
THORNS_HURT(33, LivingEntity.class), THORNS_HURT(33, LivingEntity.class),
/** /**
* Iron golem puts away rose. * Iron golem puts away rose.
@ -216,11 +232,15 @@ public enum EntityEffect {
TOTEM_RESURRECT(35, LivingEntity.class), TOTEM_RESURRECT(35, LivingEntity.class),
/** /**
* Entity hurt due to drowning damage. * Entity hurt due to drowning damage.
* @deprecated in favor of {@link LivingEntity#playHurtAnimation(float)} or {@link Entity#broadcastHurtAnimation(java.util.Collection)}
*/ */
@Deprecated(since = "1.19.4", forRemoval = true)
HURT_DROWN(36, LivingEntity.class), HURT_DROWN(36, LivingEntity.class),
/** /**
* Entity hurt due to explosion damage. * Entity hurt due to explosion damage.
* @deprecated in favor of {@link LivingEntity#playHurtAnimation(float)} or {@link Entity#broadcastHurtAnimation(java.util.Collection)}
*/ */
@Deprecated(since = "1.19.4", forRemoval = true)
HURT_EXPLOSION(37, LivingEntity.class), HURT_EXPLOSION(37, LivingEntity.class),
/** /**
* Dolphin has been fed and is locating a structure. * Dolphin has been fed and is locating a structure.
@ -244,11 +264,15 @@ public enum EntityEffect {
VILLAGER_SPLASH(42, Villager.class), VILLAGER_SPLASH(42, Villager.class),
/** /**
* Player's bad omen effect removed to start or increase raid difficult. * Player's bad omen effect removed to start or increase raid difficult.
* @deprecated raid system was overhauled in 1.20.5
*/ */
@Deprecated(since = "1.20.5", forRemoval = true)
PLAYER_BAD_OMEN_RAID(43, Player.class), PLAYER_BAD_OMEN_RAID(43, Player.class),
/** /**
* Entity hurt due to berry bush. Prickly! * Entity hurt due to berry bush. Prickly!
* @deprecated in favor of {@link LivingEntity#playHurtAnimation(float)} or {@link Entity#broadcastHurtAnimation(java.util.Collection)}
*/ */
@Deprecated(since = "1.19.4", forRemoval = true)
HURT_BERRY_BUSH(44, LivingEntity.class), HURT_BERRY_BUSH(44, LivingEntity.class),
/** /**
* Fox chews the food in its mouth * Fox chews the food in its mouth
@ -331,7 +355,23 @@ public enum EntityEffect {
* Sniffer must have a target and be in {@link Sniffer.State#SEARCHING} or * Sniffer must have a target and be in {@link Sniffer.State#SEARCHING} or
* {@link Sniffer.State#DIGGING} * {@link Sniffer.State#DIGGING}
*/ */
SNIFFER_DIG(63, Sniffer.class); SNIFFER_DIG(63, Sniffer.class),
// Paper start - add missing EntityEffect
/**
* Armadillo peeks out of its shell
*/
ARMADILLO_PEEK(64, org.bukkit.entity.Armadillo.class),
/**
* {@link org.bukkit.inventory.EquipmentSlot#BODY} armor piece breaks
*/
BODY_BREAK(65, LivingEntity.class),
/**
* A creaking transient shaking when being hit.
* Does not apply to plain creaking entities as they are not invulnerable like the transient ones spawned by the
* creaking heart.
*/
SHAKE(66, org.bukkit.entity.Creaking.class);
// Paper end - add missing EntityEffect
private final byte data; private final byte data;
private final Class<? extends Entity> applicable; private final Class<? extends Entity> applicable;

View File

@ -1159,4 +1159,17 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
*/ */
@NotNull String getScoreboardEntryName(); @NotNull String getScoreboardEntryName();
// Paper end - entity scoreboard name // Paper end - entity scoreboard name
// Paper start - broadcast hurt animation
/**
* Broadcasts a hurt animation. This fakes incoming damage towards the target entity.
* <p>
* The target players cannot include {@code this} player. For self-damage, use
* {@link Player#sendHurtAnimation(float)}.
*
* @param players the players to broadcast to (cannot include {@code this}
* @throws IllegalArgumentException if {@code this} is contained in {@code players}
*/
void broadcastHurtAnimation(@NotNull java.util.Collection<Player> players);
// Paper end - broadcast hurt animation
} }

View File

@ -3899,4 +3899,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@Override @Override
Spigot spigot(); Spigot spigot();
// Spigot end // Spigot end
// Paper start - entity effect API
/**
* Plays an entity effect to this player for the target entity
* <p>
* If the effect is not applicable to this class of entity, it will not play.
*
* @param effect the entity effect
* @param target the target entity
*/
void sendEntityEffect(org.bukkit.@NotNull EntityEffect effect, @NotNull Entity target);
// Paper end - entity effect API
} }