001    package org.bukkit.event.entity;
002    
003    import org.bukkit.Location;
004    import org.bukkit.entity.Entity;
005    import org.bukkit.event.HandlerList;
006    import org.bukkit.util.Vector;
007    
008    /**
009     * Called before an entity exits a portal.
010     * <p>
011     * This event allows you to modify the velocity of the entity after they have
012     * successfully exited the portal.
013     */
014    public class EntityPortalExitEvent extends EntityTeleportEvent {
015        private static final HandlerList handlers = new HandlerList();
016        private Vector before;
017        private Vector after;
018    
019        public EntityPortalExitEvent(final Entity entity, final Location from, final Location to, final Vector before, final Vector after) {
020            super(entity, from, to);
021            this.before = before;
022            this.after = after;
023        }
024    
025        /**
026         * Gets a copy of the velocity that the entity has before entering the
027         * portal.
028         *
029         * @return velocity of entity before entering portal
030         */
031        public Vector getBefore() {
032            return this.before.clone();
033        }
034    
035        /**
036         * Gets a copy of the velocity that the entity will have after exiting the
037         * portal.
038         *
039         * @return velocity of entity after exiting portal
040         */
041        public Vector getAfter() {
042            return this.after.clone();
043        }
044    
045        /**
046         * Sets the velocity that the entity will have after exiting the portal.
047         */
048        public void setAfter(Vector after) {
049            this.after = after.clone();
050        }
051    
052        @Override
053        public HandlerList getHandlers() {
054            return handlers;
055        }
056    
057        public static HandlerList getHandlerList() {
058            return handlers;
059        }
060    }