001 package org.bukkit.event.entity;
002
003 import org.bukkit.entity.Entity;
004 import org.bukkit.event.Cancellable;
005 import org.bukkit.event.HandlerList;
006 import org.bukkit.util.NumberConversions;
007
008 /**
009 * Stores data for health-regain events
010 */
011 public class EntityRegainHealthEvent extends EntityEvent implements Cancellable {
012 private static final HandlerList handlers = new HandlerList();
013 private boolean cancelled;
014 private double amount;
015 private final RegainReason regainReason;
016
017 @Deprecated
018 public EntityRegainHealthEvent(final Entity entity, final int amount, final RegainReason regainReason) {
019 this(entity, (double) amount, regainReason);
020 }
021
022 public EntityRegainHealthEvent(final Entity entity, final double amount, final RegainReason regainReason) {
023 super(entity);
024 this.amount = amount;
025 this.regainReason = regainReason;
026 }
027
028 /**
029 * Gets the amount of regained health
030 *
031 * @return The amount of health regained
032 */
033 public double getAmount() {
034 return amount;
035 }
036
037 /**
038 * This method exists for legacy reasons to provide backwards
039 * compatibility. It will not exist at runtime and should not be used
040 * under any circumstances.
041 */
042 @Deprecated
043 public int _INVALID_getAmount() {
044 return NumberConversions.ceil(getAmount());
045 }
046
047 /**
048 * Sets the amount of regained health
049 *
050 * @param amount the amount of health the entity will regain
051 */
052 public void setAmount(double amount) {
053 this.amount = amount;
054 }
055
056 /**
057 * This method exists for legacy reasons to provide backwards
058 * compatibility. It will not exist at runtime and should not be used
059 * under any circumstances.
060 */
061 @Deprecated
062 public void _INVALID_setAmount(int amount) {
063 setAmount(amount);
064 }
065
066 public boolean isCancelled() {
067 return cancelled;
068 }
069
070 public void setCancelled(boolean cancel) {
071 cancelled = cancel;
072 }
073
074 /**
075 * Gets the reason for why the entity is regaining health
076 *
077 * @return A RegainReason detailing the reason for the entity regaining
078 * health
079 */
080 public RegainReason getRegainReason() {
081 return regainReason;
082 }
083
084 @Override
085 public HandlerList getHandlers() {
086 return handlers;
087 }
088
089 public static HandlerList getHandlerList() {
090 return handlers;
091 }
092
093 /**
094 * An enum to specify the type of health regaining that is occurring
095 */
096 public enum RegainReason {
097
098 /**
099 * When a player regains health from regenerating due to Peaceful mode
100 * (difficulty=0)
101 */
102 REGEN,
103 /**
104 * When a player regains health from regenerating due to their hunger
105 * being satisfied
106 */
107 SATIATED,
108 /**
109 * When a player regains health from eating consumables
110 */
111 EATING,
112 /**
113 * When an ender dragon regains health from an ender crystal
114 */
115 ENDER_CRYSTAL,
116 /**
117 * When a player is healed by a potion or spell
118 */
119 MAGIC,
120 /**
121 * When a player is healed over time by a potion or spell
122 */
123 MAGIC_REGEN,
124 /**
125 * When a wither is filling its health during spawning
126 */
127 WITHER_SPAWN,
128 /**
129 * When an entity is damaged by the Wither potion effect
130 */
131 WITHER,
132 /**
133 * Any other reason not covered by the reasons above
134 */
135 CUSTOM
136 }
137 }