001 package org.bukkit; 002 003 /** 004 * The Travel Agent handles the creation and the research of Nether and End 005 * portals when Entities try to use one. 006 * <p> 007 * It is used in {@link org.bukkit.event.entity.EntityPortalEvent} and in 008 * {@link org.bukkit.event.player.PlayerPortalEvent} to help developers 009 * reproduce and/or modify Vanilla behaviour. 010 */ 011 public interface TravelAgent { 012 013 /** 014 * Set the Block radius to search in for available portals. 015 * 016 * @param radius the radius in which to search for a portal from the 017 * location 018 * @return this travel agent 019 */ 020 public TravelAgent setSearchRadius(int radius); 021 022 /** 023 * Gets the search radius value for finding an available portal. 024 * 025 * @return the currently set search radius 026 */ 027 public int getSearchRadius(); 028 029 /** 030 * Sets the maximum radius from the given location to create a portal. 031 * 032 * @param radius the radius in which to create a portal from the location 033 * @return this travel agent 034 */ 035 public TravelAgent setCreationRadius(int radius); 036 037 /** 038 * Gets the maximum radius from the given location to create a portal. 039 * 040 * @return the currently set creation radius 041 */ 042 public int getCreationRadius(); 043 044 /** 045 * Returns whether the TravelAgent will attempt to create a destination 046 * portal or not. 047 * 048 * @return whether the TravelAgent should create a destination portal or 049 * not 050 */ 051 public boolean getCanCreatePortal(); 052 053 /** 054 * Sets whether the TravelAgent should attempt to create a destination 055 * portal or not. 056 * 057 * @param create Sets whether the TravelAgent should create a destination 058 * portal or not 059 */ 060 public void setCanCreatePortal(boolean create); 061 062 /** 063 * Attempt to find a portal near the given location, if a portal is not 064 * found it will attempt to create one. 065 * 066 * @param location the location where the search for a portal should begin 067 * @return the location of a portal which has been found or returns the 068 * location passed to the method if unsuccessful 069 * @see #createPortal(Location) 070 */ 071 public Location findOrCreate(Location location); 072 073 /** 074 * Attempt to find a portal near the given location. 075 * 076 * @param location the desired location of the portal 077 * @return the location of the nearest portal to the location 078 */ 079 public Location findPortal(Location location); 080 081 /** 082 * Attempt to create a portal near the given location. 083 * <p> 084 * In the case of a Nether portal teleportation, this will attempt to 085 * create a Nether portal. 086 * <p> 087 * In the case of an Ender portal teleportation, this will (re-)create the 088 * obsidian platform and clean blocks above it. 089 * 090 * @param location the desired location of the portal 091 * @return true if a portal was successfully created 092 */ 093 public boolean createPortal(Location location); 094 }