Teleport requests
How a teleport request travels from /tpa to a safe landing, and every setting on the way.
On this page
The request flow
/tpa: go to someone
- The sender asks with
/tpa <player>. A confirm menu opens showing the target's world and whether they are flying. - The sender confirms. The target gets a chat message with clickable [accept] and [deny] buttons. If
gui.popup-on-requestis on, the accept menu also opens by itself. - The target accepts by clicking [accept] or typing
/tpaccept. The accept menu opens first, showing the sender's head, world, health and hunger, whether they are flying, and their game mode. Accepting there starts the countdown. - The countdown runs for the person who travels, then they teleport to a safe spot next to the target.
/tpahere: bring someone to you
The same flow with the roles reversed: the sender asks, and when the target accepts, the target is the one who counts down and travels to the sender. It has its own pair of menus.
Other ways to answer
| Command | Effect |
|---|---|
/tpaccept [player] /tpyes | Accept the request. With no name it answers the newest one. |
/tpdeny [player] /tpadeny /tpno | Deny it. |
/tpacancel /tpcancel | Cancel the requests you sent. |
/tpauto /tpaauto | Accept incoming requests automatically. |
Unanswered requests disappear after request.expiration seconds (120 by default).
The four menus
All four are 27 slots with no filler, in menus/players/:
| File | Shown to | When |
|---|---|---|
tpa-request.yml | The sender of /tpa | Before the request is sent. Confirm or cancel. |
tpa-accept.yml | The target of /tpa | On accepting. Accept or deny. |
tpahere-request.yml | The sender of /tpahere | Before the request is sent. |
tpahere-accept.yml | The target of /tpahere | On accepting. |
- Layout: in the request menus the cancel button is slot 10, location 12, the player head 13 and confirm 16. In the accept menus deny is 10, status 12, head 13, game mode 14 and accept 16.
- Game mode icon in the accept menus is bread for survival, diamond for creative, a map for adventure and an eye of ender for spectator. Change them with
gui.gamemode-icons. - Location icon follows the world type: grass for normal, netherrack for the Nether and end stone for the End. Change it with
gui.location-icons. - Players can opt out of menus with
/tpaguitoggle. Without menus, requests still work through chat buttons and commands.
Countdown
teleport:
countdown: 5 # 0 = instant
allowed-walk-range: 0 # blocks you may drift before it cancels
cancel-on-damage: true
countdown-display: action-bar # action-bar, chat or both
countdown-title: true # also a big centred number
The countdown starts after the request is accepted, and it is shown to everyone, operators included. With allowed-walk-range: 0 any change of block cancels it. Taking damage cancels it too while cancel-on-damage is true. Players with alphatpa.bypass.warmup skip it.
Safe landing
teleport:
safe-location: true
search-radius: 3
search-vertical: 3
cancel-if-destination-flying: true
blocked-worlds: []
- With
safe-locationon, the plugin never lands in lava, fire, the void or inside blocks. - If the exact spot is unsafe, it searches
search-radiusblocks sideways andsearch-verticalup and down. Set both to 0 to not search and simply cancel. cancel-if-destination-flyingrefuses to land on someone who is flying or gliding at the moment of the teleport.- Requests to or from a world in
blocked-worldsare refused.
Request limits
request:
expiration: 120 # seconds before an unanswered request disappears
cooldown: 30 # seconds before you may ask the same player again
daily-limit: -1 # requests per player per day, -1 = unlimited
max-outgoing: 3 # open requests one player may have at once
| Limit | Bypass permission |
|---|---|
| Cooldown | alphatpa.bypass.cooldown |
| Daily limit | alphatpa.bypass.limit |
| Countdown | alphatpa.bypass.warmup |
Player toggles
Players control what they receive. Each choice is saved per player in data/players.yml and survives restarts.
| Command | Switches |
|---|---|
/tpatoggle | Incoming /tpa requests. |
/tpaheretoggle | Incoming /tpahere requests. |
/tpauto | Auto-accepting incoming requests. |
/tpaguitoggle | The confirm and accept menus. |
data/players.yml while the server is running. The plugin writes it asynchronously and atomically.Command takeover
CMI and EssentialsX also register /tpa, and the first plugin to register a label keeps it. AlphaTPA loads after both, and with features.override-conflicts: true it points every conflicting label at its own commands. The console says Took over N command label(s) from other plugins. Their namespaced forms, such as essentials:tpa, still reach the other plugin. Set override-conflicts to false to leave the other plugin in charge.
