001 package org.bukkit.event.entity;
002
003 import org.bukkit.Location;
004 import org.bukkit.TravelAgent;
005 import org.bukkit.entity.Entity;
006 import org.bukkit.event.HandlerList;
007
008 /**
009 * Called when a non-player entity is about to teleport because it is in
010 * contact with a portal.
011 * <p>
012 * For players see {@link org.bukkit.event.player.PlayerPortalEvent}
013 */
014 public class EntityPortalEvent extends EntityTeleportEvent {
015 private static final HandlerList handlers = new HandlerList();
016 protected boolean useTravelAgent = true;
017 protected TravelAgent travelAgent;
018
019 public EntityPortalEvent(final Entity entity, final Location from, final Location to, final TravelAgent pta) {
020 super(entity, from, to);
021 this.travelAgent = pta;
022 }
023
024 /**
025 * Sets whether or not the Travel Agent will be used.
026 * <p>
027 * If this is set to true, the TravelAgent will try to find a Portal at
028 * the {@link #getTo()} Location, and will try to create one if there is
029 * none.
030 * <p>
031 * If this is set to false, the {@link #getEntity()} will only be
032 * teleported to the {@link #getTo()} Location.
033 *
034 * @param useTravelAgent whether to use the Travel Agent
035 */
036 public void useTravelAgent(boolean useTravelAgent) {
037 this.useTravelAgent = useTravelAgent;
038 }
039
040 /**
041 * Gets whether or not the Travel Agent will be used.
042 * <p>
043 * If this is set to true, the TravelAgent will try to find a Portal at
044 * the {@link #getTo()} Location, and will try to create one if there is
045 * none.
046 * <p>
047 * If this is set to false, the {@link #getEntity()} will only be
048 * teleported to the {@link #getTo()} Location.
049 *
050 * @return whether to use the Travel Agent
051 */
052 public boolean useTravelAgent() {
053 return useTravelAgent;
054 }
055
056 /**
057 * Gets the Travel Agent used (or not) in this event.
058 *
059 * @return the Travel Agent used (or not) in this event
060 */
061 public TravelAgent getPortalTravelAgent() {
062 return this.travelAgent;
063 }
064
065 /**
066 * Sets the Travel Agent used (or not) in this event.
067 *
068 * @param travelAgent the Travel Agent used (or not) in this event
069 */
070 public void setPortalTravelAgent(TravelAgent travelAgent) {
071 this.travelAgent = travelAgent;
072 }
073
074 @Override
075 public HandlerList getHandlers() {
076 return handlers;
077 }
078
079 public static HandlerList getHandlerList() {
080 return handlers;
081 }
082 }