Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
ChorusRTP
Fast, safe and fully customizable random teleport for Paper 26.2. Every message is editable, hex colors work everywhere, and the whole plugin is dressed in purple out of the box.
Why ChorusRTP?
Random teleport plugins are one of the first things every survival server installs, and also one of the most common sources of lag spikes, players dropped into lava, and "it teleported me into the ocean" tickets. ChorusRTP is built around fixing exactly those problems.
- No main-thread chunk loading. Every candidate spot is loaded with Paper's async chunk API.
- Hard attempt limit. The search never loops forever: after
max-attemptstries it stops and tells the player. - Location queue. Candidate spots are found in the background, only when the server TPS is healthy, and re-checked right before use.
- Search while counting down. The location is looked up during the countdown, so the teleport fires the moment it ends.
- Safety first. Blocked ground blocks, nearby hazards (lava, fire, cactus...), blocked biomes, world border checks, 2 blocks of free space, and a proper cave scan in the Nether so nobody lands on the roof.
- Pay only on success. Money is taken right before the teleport and refunded automatically if it fails.
- Cooldowns survive restarts.
Features
- Per-world settings, disabled worlds and world redirects
- Permission groups with priorities (VIP, MVP...) that override radius, cooldown, delay and cost
- Square or circle shape, custom center or vanilla world border center
- Min / max radius, world border aware
- Countdown with action bar, title and sound, cancel on move and cancel on damage
- Vault economy support (optional)
- Optional RTP on first join and on respawn
- Admin command to teleport other players
- Sounds and particles on departure and arrival
- Events for developers to veto locations or teleports
- Tab completion everywhere
Fully customizable messages
Every single message lives in messages.yml: chat messages, action bar, titles, help, info, even the time units.
Supported color formats, and you can mix them freely:
| Format | Example |
|---|---|
| Hex with ampersand | &#A855F7Hello |
| Plain hex | #A855F7Hello |
| MiniMessage hex | <#A855F7>Hello |
| Gradient | <gradient:#7E22CE:#E9D5FF>Hello</gradient> |
| Classic codes | &5&lHello |
Placeholders you can use in messages:
| Placeholder | Meaning |
|---|---|
{prefix} |
The prefix from messages.yml |
{time} |
Remaining cooldown |
{seconds} |
Countdown seconds |
{cost} |
Teleport cost |
{world} |
World name |
{x} {y} {z} |
Destination coordinates |
{player} |
Player name (admin command) |
{min} {max} {shape} {center} {border} {cooldown} {delay} |
Values shown by /rtp info |
Edit the files, then run /rtp reload.
Commands
| Command | Description | Permission |
|---|---|---|
/rtp |
Random teleport in your world (or the default world) | chorusrtp.use |
/rtp <world> |
Random teleport in a specific world | chorusrtp.use |
/rtp player <name> [world] |
Random teleport another player, ignoring cooldown, delay and cost | chorusrtp.admin.others |
/rtp info [world] |
Show the settings that apply to you in a world | chorusrtp.info |
/rtp queue |
Show the location queue | chorusrtp.admin |
/rtp reload |
Reload config and messages | chorusrtp.reload |
/rtp help |
Show help | none |
Aliases: /crtp, /chorusrtp, /wild
If another plugin owns /rtp, use /chorusrtp:rtp or one of the aliases.
Permissions
| Permission | Default | Description |
|---|---|---|
chorusrtp.use |
everyone | Use /rtp |
chorusrtp.world.<world> |
op | Needed per world when per-world-permission is enabled (chorusrtp.world.* for all) |
chorusrtp.group.<name> |
none | Apply the group of that name from the config |
chorusrtp.bypass.cooldown |
op | Skip the cooldown |
chorusrtp.bypass.delay |
op | Skip the countdown |
chorusrtp.bypass.cost |
op | Skip the cost |
chorusrtp.bypass |
op | All bypasses |
chorusrtp.admin.others |
op | Teleport other players |
chorusrtp.info |
op | Use /rtp info |
chorusrtp.admin |
op | Use /rtp queue |
chorusrtp.reload |
op | Use /rtp reload |
Configuration
config.yml sections:
- settings: default world, per-world permissions, max attempts, debug, RTP on first join and on respawn
- defaults: radius, center, shape, world border, cooldown, delay, cost, cancel rules
- worlds: overrides for a single world, same keys as
defaults - disabled-worlds: worlds where
/rtpdoes nothing - redirects: send
/rtpof one world to another, for exampleworld_the_end: world - groups: permission groups, lower
prioritywins, can also override per world - safety: blocked blocks, hazard blocks and radius, blocked biomes, Nether scan height
- queue: size, refill speed, minimum TPS, revalidation tries
- effects: sound and particle for countdown, departure and arrival
Order of priority, lowest to highest: defaults → worlds → group → group world override.
Example group:
groups:
enabled: true
list:
vip:
priority: 10
cooldown: 30
delay: 1
max-radius: 8000
worlds:
world_nether:
max-radius: 3000
Give the group to a player with the permission chorusrtp.group.vip.
Economy
Install Vault and any economy plugin, then set cost in defaults, a world or a group. Without Vault the cost is ignored.
For developers
Two cancellable events are fired:
RtpLocationCheckEvent: called for every candidate location, cancel it to reject the spot (perfect for claim and region plugins)RtpTeleportEvent: called right before the player is teleported, you can change the destination or cancel it
Installation
- Requires Paper 26.2 and Java 25
- Drop
ChorusRTP.jarintoplugins/ - Start the server
- Edit
plugins/ChorusRTP/config.ymlandmessages.yml - Run
/rtp reload
Made by Controll3r24


