
Add /rtp easily to your server. By default a simple RTP plugin but under the hood a highly configurable random teleport plugin with GUI world selection, Vault charging, heatmaps, safe-location scanning and smart pre-caching.
Production-ready random teleport plugin for modern Minecraft servers.
Documentation: https://ez-plugins.github.io/EzRTP
Installation guide: https://ez-plugins.github.io/EzRTP/overview-installation.html#installation
< 3.0.0 build on Java 17 (MC 1.13 - 1.21.11.*) for Bukkit/Paper/Spigot/Purpur/Folia>= 3.0.0 build on Java 25 (MC 26.1.*) for Bukkit/Paper/Spigot/Purpur/Folia>= 3.1.0 build on Java 17 (MC 1.13 - 1.21.11.*) for Bukkit/Paper/Spigot/Purpur/FoliaModrinth • SpigotMC • Hangar • Discord
random, circle, square, triangle, diamond./rtp heatmap, /rtp heatmap save) and simulated samples (/rtp fake)./rtp addcenter, /rtp <center-name>) and center editing (/rtp setcenter).network.yml./rtp pregenerate [world] [radius]).


| Command | Description | Permission |
|---|---|---|
/rtp |
Default RTP flow (GUI or direct teleport based on setup) | ezrtp.use |
/forcertp <player> [world] |
Force RTP for a target player | ezrtp.forcertp |
/rtp Subcommands| Subcommand | Usage | Permission | Notes |
|---|---|---|---|
reload |
/rtp reload |
ezrtp.reload |
Reload configuration |
stats |
/rtp stats |
ezrtp.stats |
Overall RTP metrics |
stats biomes |
/rtp stats biomes [page] |
ezrtp.stats |
Biome activity + paging |
stats rare-biomes |
/rtp stats rare-biomes |
ezrtp.stats |
Rare-biome optimization stats |
stats performance |
/rtp stats performance |
ezrtp.stats |
Percentile/timing metrics |
unsafe-stats |
/rtp unsafe-stats |
ezrtp.stats |
Unsafe rejection breakdown |
heatmap |
/rtp heatmap [biome] |
ezrtp.heatmap |
Gives in-game heatmap map |
heatmap save |
/rtp heatmap save |
ezrtp.heatmap |
Saves heatmap PNG to plugin folder |
fake |
`/rtp fake <amount | clear> [world]` | ezrtp.heatmap.fake |
setcenter |
/rtp setcenter <x> <z> or /rtp setcenter <world> <x> <z> |
ezrtp.setcenter |
Updates world center and reloads |
addcenter |
/rtp addcenter <name> |
ezrtp.setcenter |
Stores named center at player location |
pregenerate |
/rtp pregenerate [world] [radius] |
ezrtp.pregenerate |
Starts Chunky-assisted warmup tasks |
/rtp <center-name>: teleports using centers.named.<name> from rtp.yml./rtp <region-id>: WorldGuard region-based RTP when worldguard.region-command.enabled: true.plugin.yml| Permission | Default | Purpose |
|---|---|---|
ezrtp.use |
true |
Use /rtp |
ezrtp.reload |
op |
Use /rtp reload |
ezrtp.stats |
op |
Use stats/unsafe-stats |
ezrtp.heatmap |
op |
Use heatmap generation/export |
ezrtp.heatmap.fake |
op |
Use /rtp fake |
ezrtp.queue.bypass |
op |
Bypass queue |
ezrtp.forcertp |
op |
Use /forcertp |
| Permission | Source | Purpose |
|---|---|---|
ezrtp.setcenter |
command code | Access setcenter and addcenter |
ezrtp.pregenerate |
command code | Access /rtp pregenerate |
ezrtp.bypass.cooldown |
limits.yml defaults |
Cooldown bypass |
ezrtp.bypass.limit |
limits.yml defaults |
Daily/weekly limit bypass |
ezrtp.gui.<name> |
gui.yml entries |
Per-destination GUI access |
EzRTP now splits configuration by concern.
| File | Scope | Example Keys |
|---|---|---|
config.yml |
Core plugin/global options | message-prefix, language, enable-bstats, worldguard.region-command.* |
rtp.yml |
RTP behavior and safety | search-pattern, radius.*, countdown.*, unsafe-blocks, biomes.*, chunky-integration.* |
limits.yml |
Cooldowns/usage/cost profiles | rtp-limits.default, rtp-limits.worlds, allow-gui-during-cooldown |
storage.yml |
Limits storage backend | rtp-limits.storage, rtp-limits.mysql.* |
gui.yml |
GUI layout and destinations | enabled, rows, worlds.*.icon, disable-cache-filtering, rare_biomes.* |
queue.yml |
Queue throttling | enabled, max-size, start-delay-ticks, interval-ticks |
network.yml |
Proxy/server selector | enabled, lobby, servers.<name>.* |
force-rtp.yml |
/forcertp behavior |
default-world, bypass.cooldown, bypass.permission, bypass.safety |
performance.yml |
Optional perf monitoring | performance.monitoring.enabled, warnings.*, metrics.*, percentiles.* |
unsafe-location-monitoring.yml |
Optional unsafe tracking | unsafe-location-monitoring.monitoring.enabled, logging.*, metrics.* |
messages/en.yml |
User-facing text templates | teleport-*, queue-*, forcertp-*, heatmap-*, fake-*, stats-* |
# config.yml
message-prefix: "&7[&bEzRTP&7] &r"
language: en
enable-bstats: true
worldguard:
region-command:
enabled: false
autocomplete: false
# rtp.yml
search-pattern: random
max-attempts: 16
countdown-seconds: 5
heatmap:
enabled: false
biomes:
enabled: true
pre-cache:
enabled: false
rare-biome-optimization:
enabled: false
chunky-integration:
enabled: false
# limits.yml
rtp-limits:
default:
cooldown-seconds: 300
daily-limit: 10
weekly-limit: 50
bypass-permissions:
- ezrtp.bypass.cooldown
- ezrtp.bypass.limit
allow-gui-during-cooldown: true
# storage.yml
rtp-limits:
storage: yaml # yaml or mysql