HomeJavaModsbTpa
bTpa
ModsJava

bTpa

by blackowlzz · on Modrinth

Tpa plugin, Donut-Like, but with enhanced features, similar to Donut TPA. Suitable for lifesteal and SMP. Free Minecraft Java mod for 1.20.5, 1.20.6, 1.21.

⬇ Download on Modrinth

banner

dragon

A professional and feature-rich TPA (Teleport Ask) plugin for Minecraft 1.20.5+ servers, inspired by Donut TPA with enhanced features.

gif

Features

Core Features

Advanced Features

Commands

Command Aliases Description Permission
/tpa <player> /teleportask Send a teleport request to a player btpa.use
/tpahere <player> /tphere Request a player to teleport to you btpa.use
/tpaccept /tpyes, /tpac Accept a teleport request btpa.use
/tpdeny /tpno, /tpdc Deny a teleport request btpa.use
/tpagui /tpgui Open the teleport GUI btpa.use
/tpatoggle /tpat Toggle TPA requests on/off btpa.toggle
/tpablock <player> /tpab Block a player from sending requests btpa.block
/tpaunblock <player> /tpaub Unblock a player btpa.block
/tpacancel /tpac Cancel your outgoing request btpa.use
/tpafriend Send/Deny/Remove friend request btpa.use
/tpareload /tparl Reload the plugin configuration btpa.reload

Permissions

🌟 Comparison with Donut TPA

Feature Donut TPA bTpa
TPA Commands
GUI System ✅ Enhanced
Friend System ✅ Enhanced
Toggle System
Block System
Statistics ✅ Enhanced
Clickable Messages
Sound Effects ✅ Configurable
Action Bar
Acceptance Rate
Data Persistence ✅ YAML
Cancel Requests
Documentation Good Comprehensive
Open Source
Price $6.99 Free

🏆 Production Ready

This plugin is 100% production-ready for:

stats

Configuration

# bTpa Configuration File

# Teleport settings
teleport:
  # Cooldown in seconds before teleport starts (countdown)
  countdown: 5
  # Cooldown in seconds before player can use /tpa again
  cooldown: 10
  # Request expiration time in seconds
  request-expire: 60
  # Cancel teleport if player moves during countdown
  cancel-on-move: true
  # Cancel teleport if player takes damage during countdown
  cancel-on-damage: true

# Sound settings
sounds:
  enabled: true
  # Use namespaced key format: e.g. "block.note_block.pling"
  # Full list: https://minecraft.wiki/w/Sounds.json
  countdown-tick: block.note_block.hat
  teleport-success: entity.enderman.teleport
  teleport-cancel: entity.villager.no
  request-received: block.note_block.pling
  volume: 0.8
  pitch: 1.0

# Unicode font style (small caps and fancy text)
# Set to true to use Unicode small caps in titles and messages (e.g., ᴛᴘᴀ)
# Set to false for regular text (default: true)
unicode-font: true

# Messages
messages:
  prefix: ""
  player-only: "&7Only players can use this command."
  no-permission: "&7You do not have permission to do that."
  player-not-found: "&7Player not found or offline."
  player-offline: "&7That player is no longer online."
  cannot-self-request: "&7You cannot send a request to yourself."
  request-sent: "&7Request sent to &b{player}&7."
  request-received: "&b{player} &7sent you a teleport request."
  request-expired: "&7Your request to &b{player} &7expired."
  no-pending-request: "&7You have no pending teleport requests."
  request-accepted: "&7You accepted &b{player}&7's request."
  request-accepted-sender: "&b{player} &7accepted your request."
  request-denied: "&7You denied &b{player}&7's request."
  request-denied-sender: "&b{player} &7denied your request."
  already-pending: "&7You already have a pending request for that player."
  outgoing-request-active: "&7You already have an active request. Use &b/tpacancel &7or wait for it to expire."
  teleporting: "&7Teleporting in &b{seconds}s&7..."
  teleport-cancelled-move: "&7Teleport cancelled: you moved."
  teleport-cancelled-damage: "&7Teleport cancelled: you took damage."
  teleport-success: "&7Teleport completed."
  cooldown: "&7Wait &b{seconds}&7s before sending another request."
  teleport-here-request-sent: "&7Teleport-here request sent to &b{player}&7."
  teleport-here-request-received: "&b{player} &7wants you to teleport to them."
  reload-success: "&aConfiguration reloaded successfully."

  # TPA Toggle messages
  tpa-enabled: "&7TPA requests enabled."
  tpa-disabled: "&7TPA requests disabled."
  player-tpa-disabled: "&b{player} &7has TPA requests disabled."
  tpauto-enabled: "&7TPA auto-accept enabled."
  tpauto-disabled: "&7TPA auto-accept disabled."
  tpauto-accepted-target: "&7You automatically accepted &b{player}&7's request."

  # Block/Unblock messages
  player-blocked: "&7You blocked &b{player}&7 from sending TPA requests."
  player-unblocked: "&7You unblocked &b{player}&a."
  player-already-blocked: "&b{player} &7is already blocked."
  player-not-blocked: "&b{player} &7is not blocked."
  player-blocked-you: "&7You cannot send requests to &b{player}&c."

  # Cancel command messages
  request-cancelled: "&7Request to &b{player}&7 cancelled."
  request-cancelled-target: "&b{player} &7cancelled their request."
  no-outgoing-request: "&7You have no outgoing requests."

  # tpafriend messages (trusted players / auto-accept)
  tpafriend-added: "&7Added &b{player} &7to your trusted players."
  tpafriend-removed: "&7Removed &b{player} &7from your trusted players."
  tpafriend-list-empty: "&7You have no trusted players."
  tpafriend-not-trusted: "&b{player} &7is not in your trusted list."

  # Generic usage message used by some commands
  usage: "&7Usage: &b{usage}"

  # Friend request messages
  friend-request-sent: "&7Friend request sent to &b{player}&7. If they accept, both of you will be added to each other's trusted list (mutual) and TPA requests between you will be auto-accepted."
  friend-request-received: "&b{player} &7sent you a friend request. Accepting will add both of you to each other's trusted list (mutual) and enable automatic acceptance of TPA requests between you."
  friend-request-accepted-sender: "&b{player} &7accepted your friend request."
  friend-request-accepted-target: "&7You accepted &b{player}&7's friend request."
  friend-request-denied-sender: "&b{player} &7denied your friend request."
  friend-request-denied-target: "&7You denied &b{player}&7's friend request."
  friend-request-expired: "&7Your friend request expired."

# GUI Settings
gui:
  # Legacy/global switch (kept for backwards compatibility)
  enabled: true

  # Selector GUI (/tpa with no args, /tpagui, /tpahere with no args)
  selector-enabled: true

  # Incoming request GUI (shown to target player on request)
  incoming-enabled: true

  # Outgoing request GUI (shown to sender after sending request)
  outgoing-enabled: true

  # Auto-open incoming GUI on request (only if incoming-enabled = true)
  auto-open: false

  title: "&bTeleport Requests"
  size: 27

update-check:
  enabled: true
  frequency-minutes: 360

security:
  # Require that both players have added each other for auto-accept to work
  require-mutual-trust: false
  # Require trusted players to have played before (more secure)
  require-played-before-for-trusted: true

# Friend request settings
friend:
  request-expire: 120

Note: When auto-open is enabled, players will automatically see the GUI when they receive a TPA request, just like in Donut TPA. They can still use chat commands if they prefer.

Messages

All messages are fully customizable in the configuration file. Support for color codes using &.

How It Works

Sending a Request

  1. Player A types /tpa PlayerB
  2. Player B receives a message with clickable buttons: [Accept] [Deny] [GUI]
  3. Player B can click on the buttons or use commands to accept/deny

Teleporting

  1. When a request is accepted, the countdown starts
  2. The player sees an actionbar message: "Teleporting in: X seconds"
  3. Sound effects play every second during countdown
  4. If the player moves or takes damage (if enabled), the teleport is cancelled
  5. After countdown completes, the player is teleported successfully

GUI

Requirements

Support

For issues, feature requests, or questions, please contact me.

License

Copyright © 2026 blackowlzz. All rights reserved.


Made with ❤️ for the Minecraft community

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more