Skip to main content

TPA System

The TPA module handles all player-to-player teleport requests: /tpa (sender teleports to receiver) and /tpahere (receiver is pulled to sender).

How a Request Worksโ€‹

  1. Sender types /tpa <player> or picks from the GUI.
  2. If economy is enabled and cost > 0, a Payment Confirmation GUI opens. The sender confirms or cancels before the request is actually sent.
  3. The receiver gets an Incoming Request GUI pop-up automatically, plus a chat notification with a clickable [ Teleport ] button.
  4. Receiver clicks Accept (or types /tpaccept).
  5. The warmup countdown begins. Both players see a countdown on the action bar.
  6. After the warmup, the teleport executes. If cancel-on-move is enabled, moving during warmup cancels it.

Request Lifecycleโ€‹

Sender types /tpa
โ”‚
โ”œโ”€ Economy check (balance โ‰ฅ cost?)
โ”‚ โ””โ”€ No โ†’ request blocked, sender informed
โ”‚
โ”œโ”€ Payment Confirmation GUI (if economy enabled)
โ”‚ โ””โ”€ Cancel โ†’ aborted
โ”‚
โ”œโ”€ Lands warn check (if Lands installed)
โ”‚ โ””โ”€ Entry flag off โ†’ both players warned (request still sent)
โ”‚
โ–ผ
Request queued (expires after request-duration seconds)
โ”‚
โ–ผ
Receiver accepts
โ”‚
โ”œโ”€ Lands block check (if block-on-execute: true)
โ”‚ โ””โ”€ Entry still denied โ†’ teleport cancelled, no charge
โ”‚
โ”œโ”€ Warmup countdown
โ”‚ โ””โ”€ Player moves โ†’ cancelled (if cancel-on-move: true)
โ”‚
โ”œโ”€ Economy charge (after warmup, anti-exploit)
โ”‚
โ–ผ
Teleport executes

Anti-Exploit Economyโ€‹

Money is checked immediately when the request is sent (to give instant feedback) but is only deducted after the warmup completes. This means:

  • If the sender spends their money after sending the request, the teleport is cancelled at acceptance. No charge is applied to either side.
  • If the sender moves during warmup (when cancel-on-move is on), the warmup is cancelled and no money is taken.

Request Expiry & Cooldownโ€‹

  • Requests expire after tpa.request-duration seconds (default: 60). Both sides are notified.
  • After a denial, the sender must wait tpa.cooldown seconds before sending to the same player again (default: 10). Set to 0 to disable.

Ignore Systemโ€‹

Players can block requests on a fine or coarse level:

CommandEffect
/tpaignore <player>Block requests from one specific player
/tpaignoreallBlock requests from everyone
/tpatoggleToggle the entire TPA system on/off for this player

Players with teleporterpro.tpaignore.bypass cannot be ignored โ€” useful for staff.

Auto-Acceptโ€‹

Players can enable auto-accept per request type:

CommandEffect
/tpatoggleautoacceptAuto-accept all incoming /tpa requests
/tpaheretoggleautoacceptAuto-accept all incoming /tpahere requests

Auto-accept resets on disconnect by design to prevent teleport griefing when a player is AFK or logged out.

Bulk Actionsโ€‹

CommandEffect
/tpaacceptallAccept every pending /tpa request (TPAhere requests are skipped)
/tpadenyallDeny every pending request at once (no cooldown applied)
/tpahereallSend a TPAhere request to every online player

Configurationโ€‹

tpa:
request-duration: 60 # seconds before an unanswered request expires
warmup: 3 # seconds to stand still (0 = instant teleport)
cancel-on-move: true # cancel warmup if player moves
cooldown: 10 # seconds between requests to the same player after deny