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โ
- Sender types
/tpa <player>or picks from the GUI. - If economy is enabled and cost > 0, a Payment Confirmation GUI opens. The sender confirms or cancels before the request is actually sent.
- The receiver gets an Incoming Request GUI pop-up automatically, plus a chat notification with a clickable
[ Teleport ]button. - Receiver clicks Accept (or types
/tpaccept). - The warmup countdown begins. Both players see a countdown on the action bar.
- 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-durationseconds (default: 60). Both sides are notified. - After a denial, the sender must wait
tpa.cooldownseconds before sending to the same player again (default: 10). Set to0to disable.
Ignore Systemโ
Players can block requests on a fine or coarse level:
| Command | Effect |
|---|---|
/tpaignore <player> | Block requests from one specific player |
/tpaignoreall | Block requests from everyone |
/tpatoggle | Toggle 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:
| Command | Effect |
|---|---|
/tpatoggleautoaccept | Auto-accept all incoming /tpa requests |
/tpaheretoggleautoaccept | Auto-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โ
| Command | Effect |
|---|---|
/tpaacceptall | Accept every pending /tpa request (TPAhere requests are skipped) |
/tpadenyall | Deny every pending request at once (no cooldown applied) |
/tpahereall | Send 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