summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/bukkit/TravelAgent.java
blob: 2dfeffa83cb2354642101f2c0ab23d305d4692ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package org.bukkit;

/**
 * The Travel Agent handles the creation and the research of Nether and End
 * portals when Entities try to use one.
 * <p>
 * It is used in {@link org.bukkit.event.entity.EntityPortalEvent} and in
 * {@link org.bukkit.event.player.PlayerPortalEvent} to help developers
 * reproduce and/or modify Vanilla behaviour.
 */
public interface TravelAgent {

    /**
     * Set the Block radius to search in for available portals.
     *
     * @param radius the radius in which to search for a portal from the
     *     location
     * @return this travel agent
     */
    public TravelAgent setSearchRadius(int radius);

    /**
     * Gets the search radius value for finding an available portal.
     *
     * @return the currently set search radius
     */
    public int getSearchRadius();

    /**
     * Sets the maximum radius from the given location to create a portal.
     *
     * @param radius the radius in which to create a portal from the location
     * @return this travel agent
     */
    public TravelAgent setCreationRadius(int radius);

    /**
     * Gets the maximum radius from the given location to create a portal.
     *
     * @return the currently set creation radius
     */
    public int getCreationRadius();

    /**
     * Returns whether the TravelAgent will attempt to create a destination
     * portal or not.
     *
     * @return whether the TravelAgent should create a destination portal or
     *     not
     */
    public boolean getCanCreatePortal();

    /**
     * Sets whether the TravelAgent should attempt to create a destination
     * portal or not.
     *
     * @param create Sets whether the TravelAgent should create a destination
     *     portal or not
     */
    public void setCanCreatePortal(boolean create);

    /**
     * Attempt to find a portal near the given location, if a portal is not
     * found it will attempt to create one.
     *
     * @param location the location where the search for a portal should begin
     * @return the location of a portal which has been found or returns the
     *     location passed to the method if unsuccessful
     * @see #createPortal(Location)
     */
    public Location findOrCreate(Location location);

    /**
     * Attempt to find a portal near the given location.
     *
     * @param location the desired location of the portal
     * @return the location of the nearest portal to the location
     */
    public Location findPortal(Location location);

    /**
     * Attempt to create a portal near the given location.
     * <p>
     * In the case of a Nether portal teleportation, this will attempt to
     * create a Nether portal.
     * <p>
     * In the case of an Ender portal teleportation, this will (re-)create the
     * obsidian platform and clean blocks above it.
     *
     * @param location the desired location of the portal
     * @return true if a portal was successfully created
     */
    public boolean createPortal(Location location);
}