A lightweight TPA plugin with clickable accept/deny buttons, back command, toggle system, and smooth warmup effects.

A feature-rich, lightweight teleport request plugin for modern Paper, Purpur, and Spigot servers. HorizonsTPA brings a polished TPA experience with warmups, cooldowns, economy integration, and fully customizable messages -- all without a single GUI. Every interaction happens through clean, clickable chat components.
Send a teleport request to any online player. /tpa <player> requests to teleport to the target, while /tpahere <player> requests the target to teleport to you.
| Command | Description |
|---|---|
/tpaccept |
Accept an incoming teleport request |
/tpdeny |
Deny an incoming teleport request |
/tpcancel |
Cancel your own outgoing request |
All three commands provide immediate feedback with configurable messages and sound effects.
Use /tptoggle to disable or enable incoming TPA requests entirely. When toggled off, other players cannot send you requests and will be notified that you are not accepting them.
Players with the horizonstpa.bypass.toggle permission can still send requests to players who have toggled off.
Return to your last location before teleporting or your death location. The /back command maintains a per-player history so you can always get back to where you were.
horizonstpa.back) and returning to death locations (horizonstpa.back.ondeath).When a teleport request is accepted, the teleporting player enters a warmup phase before the actual teleportation occurs. This gives a brief delay that can be interrupted.
The warmup is cancelled if the player:
Choose how the warmup countdown is displayed to the player:
| Mode | Description |
|---|---|
| ActionBar | A progress bar displayed in the action bar area above the hotbar |
| Title | A title and subtitle displayed in the center of the screen |
| Both | ActionBar progress bar and title/subtitle simultaneously |
The ActionBar progress bar is fully customizable:
Example: [##########----------] with green-to-gray gradient, fully adjustable in the configuration.
Prevent teleport spam with separate cooldown timers:
/tpa or /tpahere request/back commandBoth cooldown durations are independently configurable. Players with the horizonstpa.bypass.cooldown permission skip all cooldowns entirely.
HorizonsTPA plays configurable sound effects for key interactions, providing audio feedback alongside chat messages:
| Event | Description |
|---|---|
| Teleport | Played when a teleportation completes |
| Countdown | Played during warmup countdown ticks |
| Error | Played when an action fails (e.g., no pending request) |
| Request Received | Played when you receive an incoming TPA request |
| Accept | Played when a request is accepted |
| Toggle | Played when toggling TPA requests on/off |
| Cancel | Played when a request is cancelled or denied |
Each sound can be customized or disabled individually in the configuration.
Charge players for teleportation to add an economic dimension to your server:
/tpa or /tpahere requests/back commandhorizonstpa.bypass.cost permission teleport for free.| Provider | Description |
|---|---|
| Vault | Standard economy integration via any Vault-compatible economy plugin |
| PlayerPoints | Use PlayerPoints as the currency |
| CoinsEngine | Use any CoinsEngine currency |
| XP-based | Deduct experience levels or points directly |
Configure your preferred provider and costs in the main configuration file. Only one provider is active at a time.
HorizonsTPA provides the following placeholders (requires PlaceholderAPI):
| Placeholder | Description |
|---|---|
%horizonstpa_tpa_status% |
Whether the player accepts TPA requests (On/Off) |
%horizonstpa_tpa_incoming_count% |
Number of incoming TPA requests |
%horizonstpa_tpa_outgoing_count% |
Number of outgoing TPA requests |
%horizonstpa_tpa_cooldown% |
Remaining TPA cooldown in seconds (0 if none) |
%horizonstpa_back_cooldown% |
Remaining /back cooldown in seconds (0 if none) |
%horizonstpa_has_back_location% |
Whether the player has a saved back location (true/false) |
| Command | Aliases | Description | Permission |
|---|---|---|---|
/tpa <player> |
/tprequest |
Request to teleport to a player | horizonstpa.tpa |
/tpahere <player> |
-- | Request a player to teleport to you | horizonstpa.tpahere |
/tpaccept [player] |
/tpyes |
Accept an incoming request (optionally from a specific player) | horizonstpa.accept |
/tpdeny [player] |
/tpno |
Deny an incoming request (optionally from a specific player) | horizonstpa.deny |
/tpcancel |
-- | Cancel your outgoing request | horizonstpa.cancel |
/tptoggle |
-- | Toggle receiving TPA requests | horizonstpa.toggle |
/back |
-- | Return to your last/death location | horizonstpa.back |
/tpaadmin reload |
-- | Reload the plugin configuration | horizonstpa.admin.reload |
/tpaadmin info |
-- | Display plugin information | horizonstpa.admin.info |
| Permission | Description | Default |
|---|---|---|
horizonstpa.use |
Grants all core TPA permissions below (parent permission) | true |
horizonstpa.tpa |
Send /tpa requests |
true |
horizonstpa.tpahere |
Send /tpahere requests |
true |
horizonstpa.accept |
Accept incoming requests | true |
horizonstpa.deny |
Deny incoming requests | true |
horizonstpa.cancel |
Cancel outgoing requests | true |
horizonstpa.toggle |
Toggle receiving TPA requests | true |
horizonstpa.back |
Access to the /back command | true |
horizonstpa.back.ondeath |
Allow /back to return to death locations | true |
| Permission | Description | Default |
|---|---|---|
horizonstpa.bypass.toggle |
Send requests to players who have toggled off | op |
horizonstpa.bypass.cooldown |
Bypass all cooldown timers | op |
horizonstpa.bypass.warmup |
Bypass the warmup delay | op |
horizonstpa.bypass.cost |
Bypass economy costs | op |
| Permission | Description | Default |
|---|---|---|
horizonstpa.admin |
Grants all admin permissions below (parent permission) | op |
horizonstpa.admin.reload |
Reload the plugin configuration | op |
horizonstpa.admin.info |
View plugin information | op |
Wildcard permissions:
horizonstpa.bypass.* -- grants all bypass permissionshorizonstpa.admin.* -- grants all admin permissionsplugins folder.horizonstpa.use for basic TPA access and horizonstpa.back for the /back command./tpaadmin reload to apply configuration changes without restarting.HorizonsTPA uses a clean YAML configuration file. Key configuration sections include:
Language files are stored separately and the plugin ships with English and German translations. Additional languages can be added by creating new language files.
| Requirement | Details |
|---|---|
| Server Software | Paper, Purpur, or Spigot 1.21 or newer (Folia not supported) |
| Java Version | Java 21 or newer |
| Plugin | Purpose |
|---|---|
| Vault + Economy Plugin | Economy provider for teleport costs |
| PlayerPoints | Alternative economy provider |
| CoinsEngine | Alternative economy provider |
| PlaceholderAPI | Placeholder support for external plugins |
HorizonsTPA collects anonymous usage statistics via bStats to help with development. This can be disabled in the bStats configuration.
If you encounter any issues or have feature suggestions, please reach out through the Modrinth project page or the linked support channels. When reporting a bug, please include:
/version)/tpaadmin info)