Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
AsyncRTP
Random teleport that never stalls the server tick.
Most RTP plugins load their candidate chunks in the middle of the tick. The server sits and waits for the disk, and on rented hardware that turns into a visible freeze. Spikes of 300 ms are not unusual. AsyncRTP hands that work to Paper's asynchronous chunk API instead. The tick keeps running while the chunk loads, and only the final block check and the teleport itself touch the main thread.
On top of that it keeps a small stack of already verified destinations ready, refilled one at a time while the server idles. When a player runs the command, the spot is usually waiting, so the teleport is instant instead of a multi-second search.
Why it is different
| AsyncRTP | Typical RTP plugin | |
|---|---|---|
| Chunk loading | asynchronous, off the tick | synchronous, blocks the tick |
| Destination | prepared in advance, instant | searched on demand |
| Failed attempt | schedules the next one, tick stays free | loops inside one tick |
| Nether | walks up from the floor, never the bedrock roof | often drops players on the ceiling |
| World border | radius follows the border when you want it to | fixed radius |
What you can configure
Everything. The list below is the short version.
Per rank. Cooldown, warmup, radius, price and attempt budget can each be overridden per permission group. A group inherits anything it does not set, so a VIP entry with just cooldown-seconds: 120 changes exactly that and nothing else.
Per world. Centre, minimum and maximum radius, circle or square, height limits, headroom, blocked ground blocks, blocked or explicitly allowed biomes, and how many destinations to keep ready. Worlds that are not listed simply reject the command.
Search mode. SURFACE for the overworld, NETHER to walk up from the floor and land under the roof, HIGHEST_SOLID to ignore the height map.
On join. Drop players into the wild when they connect, either only on their first ever join or every time, with a delay so the client finishes loading first, and optionally only for players without a respawn point.
Safety. A warmup that cancels on movement or damage, a few seconds of damage immunity on arrival, an optional check for a free inventory slot, and a choice of whether a failed search should still start the cooldown.
Presentation. Depart and arrival sounds, particle type and count, and the arrival title, each switchable on its own. All player-facing text lives in a language file; English and German ship with the plugin, and any other language is a copy of one of them.
Commands
| Command | What it does | Permission |
|---|---|---|
/rtp |
teleport yourself | asyncrtp.use (default: everyone) |
/rtp <player> |
teleport somebody else | asyncrtp.other |
/rtp world <name> |
teleport into a specific world | asyncrtp.world |
/rtp info |
show configured worlds and how many spots are ready | asyncrtp.info |
/rtp reload |
re-read config and language file | asyncrtp.reload |
Aliases: /wild, /randomtp.
Three bypass permissions exist on their own, so you can hand out one without the others: asyncrtp.bypass.cooldown, asyncrtp.bypass.warmup and asyncrtp.bypass.cost.
Optional integrations
Vault. Charge a price per teleport. Without Vault the plugin runs fine and teleports stay free.
PlaceholderAPI. %asyncrtp_cooldown%, %asyncrtp_cooldown_seconds%, %asyncrtp_ready% and %asyncrtp_queue%.
Neither is required. Both are picked up automatically when present.
Requirements
Paper 1.21 or newer, Java 21 or newer. Purpur works, and so does anything else built on the Paper API. Plain Spigot and CraftBukkit are not supported, because the asynchronous chunk API this plugin is built around only exists on Paper.

