ZenRTP is a straightforward random teleport plugin for Paper servers: pick a ring around your world center, find a safe surface, and send players there—with cooldowns, optional costs (hunger, XP, or Vault money), world rules you control, and messages you can tailor.
ZenRTP is built on the Paper API 1.21.x. Spigot-only setups are not supported.
| Servers | Paper 1.21.x, Java 21+ |
| Optional hooks | Vault (money costs), PlaceholderAPI (not required for core RTP) |
| Config | config.yml + messages.yml (MiniMessage or legacy & colors), reloadable with /zenrtp reload |
center-x / center-z, with optional per-world overrides.min-y / max-y bounds.messages.yml.ZenRTP-*.jar from GitHub Releases or Modrinth.plugins folder.plugins/ZenRTP/config.yml and plugins/ZenRTP/messages.yml, then run /zenrtp reload (or restart).| Command | What it does |
|---|---|
/rtp | Random teleport in your current world. |
/rtp <world> | Random teleport in <world> (you need permission for that world). |
/rtpo <player> | RTP another player in their current world. |
/rtpo <player> <world> | RTP another player into a random spot in <world>. |
/zenrtp reload | Reload config.yml and messages.yml. |
| Permission | Default | Meaning |
|---|---|---|
zenrtp.use | true | Use /rtp. |
zenrtp.rtp.<world> | (unset) | Allow RTP into <world> (e.g. zenrtp.rtp.world_nether). Set per-world in your permission plugin. |
zenrtp.others | op | Use /rtpo. |
zenrtp.admin | op | /zenrtp reload. |
zenrtp.bypass.cooldown | op | Skip cooldown. |
zenrtp.bypass.cost | op | Skip hunger/XP/money costs (unless require-costs is enforced in config). |
zenrtp.bypass.daily | op | Skip the daily RTP cap. |
If a player lacks zenrtp.rtp.<world> for a world, they cannot RTP there—even if /rtp works elsewhere.
| Plugin | Role |
|---|---|
| Vault | Money cost when currency-cost is set. |
| PlaceholderAPI | Handy elsewhere on your server; ZenRTP does not need it for basic RTP. |
Everything lives under plugins/ZenRTP/. The bundled config.yml includes inline comments explaining each option.
| Area | What to look for |
|---|---|
| Distance & center | min-distance, max-distance, center-x, center-z |
| Height | min-y, max-y (and per-world-settings overrides) |
| Safety | safe-location-check, unsafe-blocks, require-sky-visibility (Overworld only) |
| Worlds | world-blacklist, world-whitelist (empty whitelist = all except blacklist) |
| Teleport flow | teleport-delay, cancel-on-move, max-attempts, preload-chunks, preload-radius |
| Spawn & players | spawn-radius, avoid-near-players, avoid-player-radius |
| Limits & economy | cooldown, daily-limit, hunger-cost, xp-cost, currency-cost, require-costs |
| Feedback | enable-sounds, title timings, effect durations, log-teleports |
Edit messages.yml to change prefixes, chat text, and placeholders. After /zenrtp reload, updates apply without a full server restart.
git clone https://github.com/maybeizen/zenrtp.git
cd ZenRTP
./gradlew shadowJar
The shaded plugin jar lands in build/libs/ (the filename includes the version from plugin.yml).
Licensed under the MIT License.
