Tpa Plus
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 GUIsThree 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

  1. Download or build the plugin JAR
  2. Place the JAR file in your server's plugins/ folder
  3. Restart your server
  4. 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
  5. Reload using /tpareload or restart the server

🌐 Proxy Support

Enabling Proxy Mode

  1. Set proxy.enabled: true in config.yml
  2. Configure server-blacklist to prevent teleports to specific servers
  3. 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