TPA DonutSMP
This plugin brings TPA from Donut SMP to your server. Fully customisable for easy use with permissions for roles.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
TPA DonutSMP
TPA DonutSMP
A highly-configurable 1:1 replica of the DonutSMP TPA system for Paper servers (Java 17). Features Safe-Teleport logic, a modern GUI request popup, MiniMessage messages, PlaceholderAPI integration and optional bStats metrics.
Features
- Full TPA command suite: `/tpa`, `/tpahere`, `/tpaccept`, `/tpdeny`, `/tpacancel`, `/tpatoggle`, `/tpareload`. - Safe-Teleport (safeplace) checks destinations for lava, fire, suffocation and void and searches for the nearest safe location before teleporting. - Warmup and cooldown support with bypass permissions for VIPs/staff. - Clickable chat components (`[ACCEPT]` / `[DENY]`) and optional 3-row GUI request popup (player head + green/red wool). - Configurable cancel-on-move and cancel-on-damage behavior. - Full MiniMessage support for colored/gradient/hex messages and PlaceholderAPI support for placeholders. - bStats metrics support (configure your plugin id in the main class).
Commands & Permissions
- `tpa.use` — Use basic TPA commands (default: true) - `tpa.bypass.warmup` — Bypass teleport warmup (default: op) - `tpa.bypass.cooldown` — Bypass cooldown between teleports (default: op) - `tpa.admin` — Reload config and admin actions (default: op)
Example commands:
- `/tpa <player>` — Request to teleport to a player. - `/tpahere <player>` — Request that a player teleport to you. - `/tpaccept` — Accept incoming request. - `/tpdeny` — Deny incoming request. - `/tpacancel` — Cancel your outgoing request. - `/tpatoggle` — Toggle incoming requests on/off. - `/tpareload` — Reload `config.yml` (requires `tpa.admin`).
Config (high level)
The plugin ships with `config.yml` exposing:
- `settings.warmup` — Warmup time in seconds before teleport. - `settings.cooldown` — Seconds between requests. - `settings.request-expire` — Request lifetime (default 60s). - `settings.cancel-on-move` / `settings.cancel-on-damage` — Cancel warmup. - `settings.safe-teleport-enabled` — Toggle safeplace logic. - `settings.safe-search-radius` / `settings.safe-search-vertical` — Safe search area. - `gui.enabled` — Enable the 3-row GUI popup. - `messages.*` — All user-facing text (MiniMessage-compatible).
Use MiniMessage tags and hex colors in `messages.*` entries. PlaceholderAPI placeholders are expanded when PlaceholderAPI is present.
Notes for Server Owners
- bStats ID is left as a placeholder — edit `TPADonutSMPPlugin` to set your Modrinth/bStats id. - Toggle state for incoming requests is in-memory by default (resets on restart). If you want persistence I can add a small storage layer. - Safeplace logic uses a configurable radius/vertical search; on very large servers you may want to reduce the search area.
Technical
- Java: 17+ - Target: Paper (1.21+ recommended) - Optional: PlaceholderAPI (softdepend)