PluginLicenseRef-All-Rights-Reserved
Tpa Plus
A fully optimized, feature-rich TPA (Teleport Ask) plugin for Paper, Folia Purpur & More servers with customizable GUIs, clickable messages, sound effects, proxy support, HEX color Support, and PlaceholderAPI integration.
192
Downloads
1
Followers
3 months ago
Updated
📦
1
Versions
📖About Tpa Plus
TPAPlugin
A fully optimized, feature-rich TPA (Teleport Ask) plugin for Paper, Folia Purpur & More servers with customizable GUIs, clickable messages, sound effects, proxy support, HEX color Support, and PlaceholderAPI integration.
🚀 Features
- ✅ Paper & Folia Compatible – Fully optimized for both platforms
- 🎨 Customizable GUIs – Three fully configurable GUIs:
tpa.yml(single request)tpahere.yml(teleport-here request)tpaaccept.yml(request list)tpa-confirm.yml(teleport-confirm menu)
- ⏱️ Configurable Teleport Delays
- 🔄 Advanced Request Management – Accept, deny, cancel & expire requests
- 🚫 Toggle System – Players can disable TPA / TPAHere requests / TPA confirm menu
- 🤖 Auto-Accept Mode
- 🌐 Proxy Support – Velocity / BungeeCord compatible with server blacklist
- 📊 PlaceholderAPI Support
- 💾 Persistent Player Data
- 🛡️ Teleport Cancellation – Cancel on move or damage
- 🖱️ Clickable Chat Messages – Accept / Deny directly from chat
- 🔊 Configurable Sounds – Full sound control for all actions
- 📝 Fully Configurable Messages
📋 Commands
| Command | Description | Permission |
|---|---|---|
/tpa <player> |
Send a teleport request | tpaplugin.tpa |
/tpahere <player> |
Request player to teleport to you | tpaplugin.tpahere |
/tpaaccept [player] |
Accept request or open GUI | tpaplugin.tpaaccept |
/tpadeny [player] |
Deny teleport request | tpaplugin.tpadeny |
/tpacancel <player> |
Cancel your request | tpaplugin.tpacancel |
/tpatoggle |
Toggle receiving TPA requests | tpaplugin.tpatoggle |
/tpaheretoggle |
Toggle receiving TPAHere requests | tpaplugin.tpaheretoggle |
/tpaconfirmtoggle |
Toggle TPA confirm menu | tpaplugin.confirmtoggle |
/tpauto |
Toggle auto-accept | tpaplugin.tpauto |
/tpareload |
Reload config & GUIs | tpaplugin.reload |
🔑 Permissions
tpaplugin.* # All permissions (OP)
tpaplugin.tpa # Send TPA requests
tpaplugin.tpahere # Send TPAHere requests
tpaplugin.tpaaccept # Accept requests
tpaplugin.tpadeny # Deny requests
tpaplugin.tpacancel # Cancel requests
tpaplugin.tpatoggle # Toggle TPA
tpaplugin.tpaheretoggle # Toggle TPAHere
tpaplugin.tpauto # Auto-accept
tpaplugin.reload # Reload plugin
tpaplugin.confirmtoggle # Toggle TPA Confirm Menu
📊 PlaceholderAPI Placeholders
| Placeholder | Description | Output |
|---|---|---|
%tpa_tpastatus% |
Shows if TPA is enabled | ON/OFF |
%tpa_tpaherestatus% |
Shows if TPA here is enabled | ON/OFF |
%tpa_tpautostatus% |
Shows if auto-accept is enabled | ON/OFF |
%tpa_confirmmenustatus% |
Shows if TPA here is enabled | ON/OFF |
%tpa_pendingrequests% |
Number of pending requests | Number |
⚙️ Configuration
config.yml
teleport-delay: 5
request-expire-time: 60
teleport-on-accept: true
cancel-on-move: true
cancel-on-damage: true
proxy:
enabled: false
server-blacklist:
- lobby
- hub
world-aliases:
world: "Overworld"
afk3: "AFK AREA"
world_nether: "Nether"
messages:
prefix: '&8[&9✦&bᴛᴘᴀ&5✦&8] &r'
tpa-sent: '&bᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ ꜱᴇɴᴛ ᴛᴏ &9{player}&b.'
tpa-received: '&9{player} &bʜᴀѕ ꜱᴇɴᴛ ʏᴏᴜ ᴀ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ.'
tpahere-sent: '&bᴛᴇʟᴇᴘᴏʀᴛ-ʜᴇʀᴇ ʀᴇǫᴜᴇѕᴛ ꜱᴇɴᴛ ᴛᴏ &9{player}&b.'
tpahere-received: '&9{player} &bᴡᴀɴᴛѕ ʏᴏᴜ ᴛᴏ ᴛᴇʟᴇᴘᴏʀᴛ ᴛᴏ ᴛʜᴇᴍ.'
request-accepted: '&bʏᴏᴜ ᴀᴄᴄᴇᴘᴛᴇᴅ &9{player}&b’ѕ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ.'
request-denied: '&cʏᴏᴜ ᴅᴇɴɪᴇᴅ &9{player}&c’ѕ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ.'
request-accepted-receiver: '&bʏᴏᴜ ᴀᴄᴄᴇᴘᴛᴇᴅ &9{player}&b’ѕ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ.'
request-accepted-sender: '&9{player} &bʜᴀѕ &aᴀᴄᴄᴇᴘᴛᴇᴅ &bʏᴏᴜʀ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ.'
request-denied-receiver: '&cʏᴏᴜ ᴅᴇɴɪᴇᴅ &9{player}&c’ѕ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ.'
request-denied-sender: '&9{player} &cʜᴀѕ ᴅᴇɴɪᴇᴅ &cʏᴏᴜʀ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ.'
request-cancelled: '&cʏᴏᴜ ᴄᴀɴᴄᴇʟʟᴇᴅ ʏᴏᴜʀ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ ᴛᴏ &9{player}&c.'
request-expired: '&cʏᴏᴜʀ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ ᴛᴏ &9{player} &cʜᴀѕ ᴇxᴘɪʀᴇᴅ.'
no-pending-requests: '&cʏᴏᴜ ʜᴀᴠᴇ ɴᴏ ᴘᴇɴᴅɪɴɢ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛѕ.'
teleporting-in: '&bᴛᴇʟᴇᴘᴏʀᴛɪɴɢ ɪɴ &9{seconds}&b ꜱᴇᴄᴏɴᴅѕ...'
teleported: '&bʏᴏᴜ ʜᴀᴠᴇ ʙᴇᴇɴ &9ꜱᴜᴄᴄᴇꜱꜱꜰᴜʟʟʏ ᴛᴇʟᴇᴘᴏʀᴛᴇᴅ&b!'
teleport-cancelled-move: '&cᴛᴇʟᴇᴘᴏʀᴛ ᴄᴀɴᴄᴇʟʟᴇᴅ &8(&7ʏᴏᴜ ᴍᴏᴠᴇᴅ&8)'
teleport-cancelled-damage: '&cᴛᴇʟᴇᴘᴏʀᴛ ᴄᴀɴᴄᴇʟʟᴇᴅ &8(&7ʏᴏᴜ ᴛᴏᴏᴋ ᴅᴀᴍᴀɢᴇ&8)'
player-not-found: '&cᴘʟᴀʏᴇʀ ɴᴏᴛ ꜰᴏᴜɴᴅ.'
cannot-tpa-yourself: '&cʏᴏᴜ ᴄᴀɴɴᴏᴛ ᴛᴇʟᴇᴘᴏʀᴛ ᴛᴏ ʏᴏᴜʀꜱᴇʟꜰ.'
player-offline: '&cᴛʜᴀᴛ ᴘʟᴀʏᴇʀ ɪѕ ᴄᴜʀʀᴇɴᴛʟʏ ᴏꜰꜰʟɪɴᴇ.'
tpa-disabled: '&9{player} &cʜᴀѕ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛѕ ᴅɪѕᴀʙʟᴇᴅ.'
tpahere-disabled: '&9{player} &cʜᴀѕ ᴛᴇʟᴇᴘᴏʀᴛ-ʜᴇʀᴇ ʀᴇǫᴜᴇѕᴛѕ ᴅɪѕᴀʙʟᴇᴅ.'
tpa-toggled-on: '&bᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛѕ ᴀʀᴇ ɴᴏᴡ &9ᴇɴᴀʙʟᴇᴅ&b.'
tpa-toggled-off: '&cᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛѕ ᴀʀᴇ ɴᴏᴡ &7ᴅɪѕᴀʙʟᴇᴅ&c.'
tpahere-toggled-on: '&bᴛᴇʟᴇᴘᴏʀᴛ-ʜᴇʀᴇ ʀᴇǫᴜᴇѕᴛѕ ᴀʀᴇ ɴᴏᴡ &9ᴇɴᴀʙʟᴇᴅ&b.'
tpahere-toggled-off: '&cᴛᴇʟᴇᴘᴏʀᴛ-ʜᴇʀᴇ ʀᴇǫᴜᴇѕᴛѕ ᴀʀᴇ ɴᴏᴡ &7ᴅɪѕᴀʙʟᴇᴅ&c.'
tpauto-enabled: '&bᴀᴜᴛᴏ-ᴀᴄᴄᴇᴘᴛ ɪѕ ɴᴏᴡ &9ᴇɴᴀʙʟᴇᴅ&b.'
tpauto-disabled: '&cᴀᴜᴛᴏ-ᴀᴄᴄᴇᴘᴛ ɪѕ ɴᴏᴡ &7ᴅɪѕᴀʙʟᴇᴅ&c.'
already-have-request: '&cʏᴏᴜ ᴀʟʀᴇᴀᴅʏ ʜᴀᴠᴇ ᴀ ᴘᴇɴᴅɪɴɢ ʀᴇǫᴜᴇѕᴛ ᴡɪᴛʜ ᴛʜɪѕ ᴘʟᴀʏᴇʀ.'
config-reloaded: '&bᴄᴏɴꜰɪɢᴜʀᴀᴛɪᴏɴ ʀᴇʟᴏᴀᴅᴇᴅ &9ꜱᴜᴄᴄᴇꜱꜱꜰᴜʟʟʏ&b.'
no-permission: '&cʏᴏᴜ ᴅᴏ ɴᴏᴛ ʜᴀᴠᴇ ᴘᴇʀᴍɪꜱꜱɪᴏɴ ᴛᴏ ᴜꜱᴇ ᴛʜɪꜱ ᴄᴏᴍᴍᴀɴᴅ.'
blacklisted-server: '&cʏᴏᴜ ᴄᴀɴɴᴏᴛ ᴛᴇʟᴇᴘᴏʀᴛ ᴛᴏ ᴘʟᴀʏᴇʀѕ ᴏɴ ᴛʜᴀᴛ ꜱᴇʀᴠᴇʀ.'
tpa-confirm-enabled: '&bᴛᴘᴀ ᴄᴏɴꜰɪʀᴍ ᴍᴇɴᴜ ɪѕ ɴᴏᴡ &aᴇɴᴀʙʟᴇᴅ&b.'
tpa-confirm-disabled: '&bᴛᴘᴀ ᴄᴏɴꜰɪʀᴍ ᴍᴇɴᴜ ɪѕ ɴᴏᴡ &cᴅɪѕᴀʙʟᴇᴅ&b.'
click:
accept:
text: '&a[✔ ᴀᴄᴄᴇᴘᴛ]'
hover: '&7ᴄʟɪᴄᴋ ᴛᴏ ᴀᴄᴄᴇᴘᴛ ᴛʜᴇ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ'
command: /tpaaccept {player}
deny:
text: '&c[✖ ᴅᴇɴʏ]'
hover: '&7ᴄʟɪᴄᴋ ᴛᴏ ᴅᴇɴʏ ᴛʜᴇ ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ'
command: /tpadeny {player}
sounds:
tpa_request_sent: ENTITY_EXPERIENCE_ORB_PICKUP
tpa_request_received: ENTITY_PLAYER_LEVELUP
tpa_accept: ENTITY_ENDERMAN_TELEPORT
tpa_deny: ENTITY_VILLAGER_NO
tpa_expired: ENTITY_ITEM_BREAK
tpa_toggle_enabled: BLOCK_NOTE_BLOCK_BASS
tpa_toggle_disabled: BLOCK_NOTE_BLOCK_PLING
GUI/tpa.yml
title: '&8ᴛᴇʟᴇᴘᴏʀᴛ ʀᴇǫᴜᴇѕᴛ'
size: 27
items:
accept:
slot: 15
material: LIME_STAINED_GLASS_PANE
name: '&a&lᴀᴄᴄᴇᴘᴛ'
deny:
slot: 11
material: RED_STAINED_GLASS_PANE
name: '&c&lᴅᴇɴʏ'
player-head:
slot: 13
name: '&e{player}'
lore:
- '{request_type}'
- '&7ꜰʟɪɢʜᴛ: {flight_status}'
- ''
- '&7ᴇxᴘɪʀᴇѕ ɪɴ: &e{time}ѕ'
- '&7ʟᴏᴄᴀᴛɪᴏɴ: &f{world}'
GUI/tpahere.yml
title: '&8ᴛᴇʟᴇᴘᴏʀᴛ ʜᴇʀᴇ ʀᴇǫᴜᴇѕᴛ'
size: 27
items:
accept:
slot: 15
material: LIME_STAINED_GLASS_PANE
name: '&a&lᴀᴄᴄᴇᴘᴛ'
deny:
slot: 11
material: RED_STAINED_GLASS_PANE
name: '&c&lᴅᴇɴʏ'
player-head:
slot: 13
name: '&e{player}'
lore:
- '{request_type}'
- '&7ꜰʟɪɢʜᴛ: {flight_status}'
- ''
- '&7ᴇxᴘɪʀᴇѕ ɪɴ: &e{time}ѕ'
- '&7ʟᴏᴄᴀᴛɪᴏɴ: &f{world}'
GUI/tpaaccept.yml
title: '&8ᴘᴇɴᴅɪɴɢ ʀᴇǫᴜᴇѕᴛѕ'
size: 54
request-item:
name: '&e{player}'
lore:
- '{request_type}'
- '&7ꜰʟɪɢʜᴛ: {flight_status}'
- '&7ʟᴏᴄᴀᴛɪᴏɴ: &f{world}'
- '&7ᴛɪᴍᴇ ʟᴇꜰᴛ: &e{time}ѕ'
- ''
- '&aʟᴇꜰᴛ-ᴄʟɪᴄᴋ &7ᴛᴏ ᴀᴄᴄᴇᴘᴛ'
- '&cʀɪɢʜᴛ-ᴄʟɪᴄᴋ &7ᴛᴏ ᴅᴇɴʏ'
GUI/tpa-confirm.yml
tpa-confirm-menu:
enabled-by-default: true
title: '&8ᴛᴘᴀ ᴄᴏɴꜰɪʀᴍ'
size: 27
player-head:
slot: 13
name: '&b{player}'
lore:
- '&7ꜰʟɪɢʜᴛ: {flight_status}'
- '&7ʟᴏᴄᴀᴛɪᴏɴ: &f{world}'
confirm:
slot: 15
material: LIME_STAINED_GLASS_PANE
name: '&aᴄᴏɴꜰɪʀᴍ'
deny:
slot: 11
material: RED_STAINED_GLASS_PANE
name: '&cᴄᴀɴᴄᴇʟ'
Installing on Server
- Download or build the plugin JAR
- Place the JAR file in your server's
plugins/folder - Restart your server
- Configure the plugin:
- Edit
plugins/TPAPlugin/config.yml - Edit
plugins/TPAPlugin/GUI/tpa.yml - Edit
plugins/TPAPlugin/GUI/tpahere.yml - Edit
plugins/TPAPlugin/GUI/tpaaccept.yml - Edit
plugins/TPAPlugin/GUI/tpa-confirm.yml
- Edit
- Reload using
/tpareloador restart the server
🌐 Proxy Support
Enabling Proxy Mode
- Set
proxy.enabled: trueinconfig.yml - Configure
server-blacklistto prevent teleports to specific servers - Ensure plugin is installed on all servers in your network
Server Blacklist
Players cannot teleport to/from servers in the blacklist:
proxy:
enabled: true
server-blacklist:
- lobby
- hub
- minigames
⚡ Performance Optimizations
- Concurrent Hash Maps for thread-safe data storage
- Asynchronous file I/O for player data
- Efficient request expiration with scheduled tasks
- Memory-optimized GUI rendering
- Minimal packet sending for better network performance
- Folia-compatible scheduling for multi-threaded chunk loading
🤝 Support
For issues, suggestions, or contributions:
- Contact SOULESS STUDIOS