Home›Java›Mods›Nexal TPA ⚡ Teleport Requests with GUI, Warmup Particles, Clickable Chat & Cross-Server Support
ModsJava
Nexal TPA ⚡ Teleport Requests with GUI, Warmup Particles, Clickable Chat & Cross-Server Support
Java mod listed for Minecraft 1.20–26.x. Downloads from the MC Java Mods app on Android.
⬇ Download on SpigotNexal TPA
Teleport requests with warmup particles, clickable chat buttons, and cross-server TPA on BungeeCord or Velocity.
Website | Documentation | Discord
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
> Features <
Visual Player Selector GUI
Open /tpa with no arguments for a menu of player heads. Left-click to send a TPA, right-click for a TPA Here. Blocked players appear greyed out.
Clickable Chat Buttons
Every request arrives with [Accept] and [Deny] buttons right under it. One click responds, perfect for mobile and console players.
Particle Aura Warmup
Configurable warmup with a spiral particle ring and an action bar countdown. Movement or damage cancels the teleport to prevent combat abuse.
Request Management GUI
A paginated menu of pending requests with player heads, request type and a live countdown. Accept, deny, or deny them all from one screen.
Personal Settings GUI
Each player gets a settings menu to turn incoming requests on or off and to manage their blocked players.
Cross-Server TPA
Send requests to players on the other servers of a BungeeCord or Velocity network, with no proxy plugin. On accept the proxy moves the player, who arrives at the other player. Every message between servers is signed, and the fee is refunded if the move fails. Off by default.
Vault Economy Fees
An optional fee per teleport, charged only when the teleport happens, with a bypass permission for donor ranks. Fees read $100, $1,000 or $1,000.50 everywhere.
Teleport History
A saved log of every request with a paginated viewer: type, direction, how it ended (teleported, warmup cancelled, fee not paid) and the fee actually charged.
Combat Protection
Block TPA during combat with a configurable tag duration, checked both when a request is sent and when it is accepted, so nobody escapes a fight.
World Controls
Disable TPA in specific worlds, both out of them and into them, or block teleporting between worlds entirely.
Admin Menu
/tpa admin changes the main settings in-game (toggles, timers, fee, warmup particle), saved to config.yml straight away, and reloads, exports and imports data.
And more
> TPA and TPA Here: Teleport to a player, or ask them to teleport to you
> Cooldowns and Timeouts: Limit request spam; requests expire after a configurable time
> Block and Toggle: Block single players or stop receiving requests altogether
> Request Limit: Cap the pending incoming requests per player
> Dual Storage: JSON file or MySQL database, which several servers of a network can share; export and import between them
> PlaceholderAPI: Pending requests, TPA status, blocked count and more
> Customizable Text: Every message, chat button, action bar and menu line is in messages.yml, with sounds and titles
> Short Commands: /tpaccept, /tpdeny, /tpahere and the rest work out of the box, and as /tpa subcommands
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
> Commands
Spoiler: Player Commands
/tpa - Open the player selector GUI
/tpa <player> - Request to teleport to a player
/tpahere <player> - Request a player to teleport to you
/tpaccept [player] - Accept an incoming request
/tpdeny [player] - Deny an incoming request
/tpacancel - Cancel your outgoing request
/tpatoggle - Turn receiving requests on or off
/tpblock <player> - Block a player from sending requests
/tpunblock <player> - Unblock a player
/tpalist - Open the pending requests GUI
/tpasettings - Open your TPA settings
/tphistory - View your teleport history
/tpa help - Show the command help
All commands also work as /tpa subcommands (/tpa accept, /tpa settings, /tpa history).
Code (Text):
/tpa - Open the player selector GUI
/tpa <player> - Request to teleport to a player
/tpahere <player> - Request a player to teleport to you
/tpaccept [player] - Accept an incoming request
/tpdeny [player] - Deny an incoming request
/tpacancel - Cancel your outgoing request
/tpatoggle - Turn receiving requests on or off
/tpblock <player> - Block a player from sending requests
/tpunblock <player> - Unblock a player
/tpalist - Open the pending requests GUI
/tpasettings - Open your TPA settings
/tphistory - View your teleport history
/tpa help - Show the command help
All commands also work as /tpa subcommands (/tpa accept, /tpa settings, /tpa history).
Spoiler: Admin Commands
/tpa admin - Open the admin menu
/tpa admin help - Show the admin commands
/tpa admin reload - Reload config.yml and messages.yml
/tpa admin export - Write every player profile to export/tpa_users.json
/tpa admin import - Load export/tpa_users.json into the current storage
Code (Text):
/tpa admin - Open the admin menu
/tpa admin help - Show the admin commands
/tpa admin reload - Reload config.yml and messages.yml
/tpa admin export - Write every player profile to export/tpa_users.json
/tpa admin import - Load export/tpa_users.json into the current storage
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
> Permissions
Code (Text):
nexaltpa.tpa - Send TPA requests (default: true)
nexaltpa.tpahere - Send TPA Here requests (default: true)
nexaltpa.accept - Accept requests (default: true)
nexaltpa.deny - Deny requests (default: true)
nexaltpa.cancel - Cancel outgoing requests (default: true)
nexaltpa.toggle - Toggle TPA on or off (default: true)
nexaltpa.block - Block players (default: true)
nexaltpa.unblock - Unblock players (default: true)
nexaltpa.list - View the requests GUI (default: true)
nexaltpa.settings - Open the settings GUI (default: true)
nexaltpa.history - View teleport history (default: true)
nexaltpa.bypass.cooldown - Bypass the request cooldown (default: op)
nexaltpa.bypass.fee - Teleport without paying the fee (default: false)
nexaltpa.admin - Admin menu and every admin command (default: op)
nexaltpa.admin.reload - Reload the configuration
nexaltpa.admin.export - Export data
nexaltpa.admin.import - Import data
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
> PlaceholderAPI
Code (Text):
%nexaltpa_pending_requests% - Number of pending incoming requests
%nexaltpa_tpa_enabled% - Yes/No if TPA is enabled
%nexaltpa_tpa_enabled_status% - Colored enabled/disabled status
%nexaltpa_blocked_count% - Number of blocked players
%nexaltpa_has_outgoing% - Yes/No if the player has an outgoing request
%nexaltpa_history_count% - Number of history entries
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
> Configuration
Spoiler: config.yml
# Nexal TPA Configuration
# Request timeout in seconds
request-timeout : 60
# Warmup delay in seconds before teleport (0 = instant)
warmup-delay : 3
# Cooldown between sending requests in seconds
cooldown : 30
# Allow TPA while in combat
allow-in-combat : false
# Combat tag duration in seconds
combat-tag-duration : 10
# Particle aura during teleport warmup
warmup-particles:
enabled : true
# Particle type, e.g. PORTAL, END_ROD, FLAME, ENCHANT, DUST.
# The names from before 1.20.5 (ENCHANTMENT_TABLE, REDSTONE) work too.
type : PORTAL
# Number of particles per ring
count : 15
# Radius of the spiral around the player
radius : 0.8
# How fast the spiral rotates (ticks per update)
update-interval : 2
# Worlds where TPA is disabled
disabled-worlds : [ ]
# Maximum pending incoming requests per player (0 = unlimited)
max-requests-per-player : 10
# Whether cross-world TPA is allowed
allow-cross-world : true
# Whether taking damage cancels teleport warmup
warmup-cancel-on-damage : true
# Clickable accept/deny buttons in chat when receiving a request
clickable-messages:
enabled : true
# Cross-server TPA on a BungeeCord or Velocity network (README: Cross-Server Support).
# Install the plugin on every backend server and give them all the same settings below.
# Velocity needs bungee-plugin-message-channel = true in velocity.toml (the default).
# Messages travel over a player's connection: a server with nobody online can neither send
# nor receive requests.
cross-server :
# Turn on cross-server TPA. Leave off on a single server.
enabled : false
# Shared secret that signs every message between the servers, so nobody can forge one.
# Use the same long random value (at least 16 characters) on every server, and keep it private.
# Cross-server TPA refuses to start while this is empty or still this default.
secret : "change-this-to-a-long-random-secret"
# Seconds a message stays valid. Older ones are refused, so a recorded message cannot be
# sent again later. Raise it only if the servers' clocks differ by more than this.
max-message-age : 30
# Economy settings (requires Vault)
economy :
# Enable TPA fees
enabled : false
# Cost per TPA request (charged to the sender on teleport)
tpa-fee : 100.0
# How fees are shown in messages, menus and history. %amount% is the number
price-format : "$%amount%"
# The number, as a Java DecimalFormat pattern: , groups thousands, .00 gives two decimals
number-format : "#,##0.00"
# Leave out the decimals of whole amounts: $1,000 rather than $1,000.00 (but $1,000.50)
hide-zero-decimals : true
# History settings
history :
# Maximum history entries stored per player
max-entries-per-player : 50
# Storage settings
storage :
# Storage type: json or sql. On a network, point every server at the same SQL database
# to share the TPA toggle, block list and history (JSON keeps them per server).
type : json
# SQL settings (used when type is "sql")
sql:
host : localhost
port : 3306
database : minecraft
username : root
password : ""
Code (YAML):
# Nexal TPA Configuration
# Request timeout in seconds
request-timeout : 60
# Warmup delay in seconds before teleport (0 = instant)
warmup-delay : 3
# Cooldown between sending requests in seconds
cooldown : 30
# Allow TPA while in combat
allow-in-combat : false
# Combat tag duration in seconds
combat-tag-duration : 10
# Particle aura during teleport warmup
warmup-particles:
enabled : true
# Particle type, e.g. PORTAL, END_ROD, FLAME, ENCHANT, DUST.
# The names from before 1.20.5 (ENCHANTMENT_TABLE, REDSTONE) work too.
type : PORTAL
# Number of particles per ring
count : 15
# Radius of the spiral around the player
radius : 0.8
# How fast the spiral rotates (ticks per update)
update-interval : 2
# Worlds where TPA is disabled
disabled-worlds : [ ]
# Maximum pending incoming requests per player (0 = unlimited)
max-requests-per-player : 10
# Whether cross-world TPA is allowed
allow-cross-world : true
# Whether taking damage cancels teleport warmup
warmup-cancel-on-damage : true
# Clickable accept/deny buttons in chat when receiving a request
clickable-messages:
enabled : true
# Cross-server TPA on a BungeeCord or Velocity network (README: Cross-Server Support).
# Install the plugin on every backend server and give them all the same settings below.
# Velocity needs bungee-plugin-message-channel = true in velocity.toml (the default).
# Messages travel over a player's connection: a server with nobody online can neither send
# nor receive requests.
cross-server :
# Turn on cross-server TPA. Leave off on a single server.
enabled : false
# Shared secret that signs every message between the servers, so nobody can forge one.
# Use the same long random value (at least 16 characters) on every server, and keep it private.
# Cross-server TPA refuses to start while this is empty or still this default.
secret : "change-this-to-a-long-random-secret"
# Seconds a message stays valid. Older ones are refused, so a recorded message cannot be
# sent again later. Raise it only if the servers' clocks differ by more than this.
max-message-age : 30
# Economy settings (requires Vault)
economy :
# Enable TPA fees
enabled : false
# Cost per TPA request (charged to the sender on teleport)
tpa-fee : 100.0
# How fees are shown in messages, menus and history. %amount% is the number
price-format : "$%amount%"
# The number, as a Java DecimalFormat pattern: , groups thousands, .00 gives two decimals
number-format : "#,##0.00"
# Leave out the decimals of whole amounts: $1,000 rather than $1,000.00 (but $1,000.50)
hide-zero-decimals : true
# History settings
history :
# Maximum history entries stored per player
max-entries-per-player : 50
# Storage settings
storage :
# Storage type: json or sql. On a network, point every server at the same SQL database
# to share the TPA toggle, block list and history (JSON keeps them per server).
type : json
# SQL settings (used when type is "sql")
sql:
host : localhost
port : 3306
database : minecraft
username : root
password : ""
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
> Requirements
- Java 17+
- Spigot or Paper 1.20 to 26.3
- Vault (optional, for teleport fees)
- PlaceholderAPI (optional, for placeholders)
- BungeeCord or Velocity (optional, for cross-server TPA; no proxy plugin needed)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
> Support
Join our Discord
Get help, report bugs, suggest features, and stay up to date with new releases.
Read the Documentation
Full setup guides, configuration reference, and examples.
Browse all our plugins at nexalstudios.com
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.20, 1.20.6, 1.21
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
Nexal TPA ⚡ Teleport Requests with GUI, Warmup Particles, Clickable Chat & Cross-Server Support is a free Minecraft Java mod. Compatible with Minecraft 1.20, 1.20.6, 1.21, 26.1 and newer. Downloaded 7 times (via Spigot). Download it and open it directly in the game.