001 package org.bukkit.event.entity;
002
003 import org.bukkit.entity.Entity;
004 import org.bukkit.event.HandlerList;
005
006 /**
007 * Called immediately prior to an entity being unleashed.
008 */
009 public class EntityUnleashEvent extends EntityEvent {
010 private static final HandlerList handlers = new HandlerList();
011 private final UnleashReason reason;
012
013 public EntityUnleashEvent(Entity entity, UnleashReason reason) {
014 super(entity);
015 this.reason = reason;
016 }
017
018 /**
019 * Returns the reason for the unleashing.
020 *
021 * @return The reason
022 */
023 public UnleashReason getReason() {
024 return reason;
025 }
026
027 @Override
028 public HandlerList getHandlers() {
029 return handlers;
030 }
031
032 public static HandlerList getHandlerList() {
033 return handlers;
034 }
035
036 public enum UnleashReason {
037 /**
038 * When the entity's leashholder has died or logged out, and so is
039 * unleashed
040 */
041 HOLDER_GONE,
042 /**
043 * When the entity's leashholder attempts to unleash it
044 */
045 PLAYER_UNLEASH,
046 /**
047 * When the entity's leashholder is more than 10 blocks away
048 */
049 DISTANCE,
050 UNKNOWN;
051 }
052 }