
EzRTP
Advanced Random Teleport (RTP) plugin for Paper, Spigot, Purpur and Folia. Safe random teleportation with biome filters, GUI world selection, Vault economy support, cooldowns, WorldGuard integration and high-performance teleport caching for Minecraft serve
- Загрузки
- 6K
- Подписчики
- 7
- Обновлён
- 7 июля 2026 г.
- Лицензия
- MIT
Опубликован 23 декабря 2025 г.
Advanced Random Teleport Plugin
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.0build on Java 17 (MC 1.13 - 1.21.11.*) for Bukkit/Paper/Spigot/Purpur/Folia>= 3.0.0build on Java 25 (MC 26.1.*) for Bukkit/Paper/Spigot/Purpur/Folia>= 3.1.0build on Java 17 (MC 1.13 - 1.21.11.*) for Bukkit/Paper/Spigot/Purpur/Folia
Modrinth • SpigotMC • Hangar • Discord
Feature Summary
- Safe random teleport with configurable unsafe-block filtering and recovery behavior.
- Biome include/exclude filtering, pre-cache, and rare-biome optimization (weighted search + hotspot tracking).
- Search pattern control:
random,circle,square,triangle,diamond. - Queue controls and cooldown/usage limits per world and per group.
- GUI destination selector with per-destination permissions.
- Heatmap tools (
/rtp heatmap,/rtp heatmap save) and simulated samples (/rtp fake). - Named centers (
/rtp addcenter,/rtp <center-name>) and center editing (/rtp setcenter). - Optional network selector entries via
network.yml. - Optional Chunky pre-generation command (
/rtp pregenerate [world] [radius]). - Optional performance and unsafe-location monitoring exports.
- Folia-compatible runtime behavior for modern server scheduling models.
Feature Preview
Biome Statistics Dashboard

Heatmap Visualization

World Selector GUI

Subcommands
Main Commands
| 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 |
Extra RTP Routing
/rtp <center-name>: teleports usingcenters.named.<name>fromrtp.yml./rtp <region-id>: WorldGuard region-based RTP whenworldguard.region-command.enabled: true.
Permissions
Declared in 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 |
Used by Runtime/Config
| 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 |
Configuration Files
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-* |
Current Core Defaults (selected)
# 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
Requirements
- Java 17 or newer.
- Bukkit, Paper, Purpur, Spigot, or Folia 1.7+.
- Optional: Vault/EzEconomy for pricing.
- Optional: WorldGuard/GriefPrevention for claim-aware behavior.
- Optional: Chunky for pre-generation workflows.
Support
- Discord: https://discord.gg/yWP95XfmBS
- Project and releases: https://github.com/ez-plugins/EzRTP
Ченджлог
3.4.2Релиз26.1.1, 26.1.2, 26.2 · 7 июля 2026 г.
Fixed
/rtp reloadnow immediately applies GUI configuration updates fromgui.ymlby rebuilding GUI rendering from the current in-memory configuration instead of startup-cached values.- Reload now closes both standard RTP GUI sessions and faction-claim GUI sessions so open inventories cannot retain stale pre-reload settings.
Added
- Focused regression test coverage for GUI reload behavior:
RandomTeleportGuiManagerReloadConfigTestverifies that opening the GUI after configuration replacement uses the updated title and row count immediately.
3.4.1Релиз26.1.1, 26.1.2, 26.2 · 6 июля 2026 г.
Added
- Minecraft
26.2compatibility updates:- added
SULFUR_CAVESto rare-biome defaults/search paths, - updated biome compatibility handling for modern registry-based lookup paths.
- added
Changed
- CI server download resolution migrated to PaperMC Fill API (
fill.papermc.io) and now sends an explicit non-genericUser-Agentheader as required by the service. - Smoke testing workflow expanded from a single Folia target to a matrix that validates:
- latest Folia build, and
- Paper
1.13.xfor earliest supported compatibility coverage.
- Dependency and tooling updates merged via Dependabot:
com.github.ez-plugins:teams-api1.8.0->2.4.0.- GitHub Actions
actions/checkoutv6->v7. - GitHub Actions
DavidAnson/markdownlint-cli2-actionv23->v24.
- Kyori Adventure BOM and related versions moved to
5.2.0for current Paper API compatibility.
Fixed
- GitHub Actions workflow resolver for smoke-test target versions:
- fixed YAML parsing issues in embedded resolver scripting,
- fixed selector propagation into Python resolver invocation,
- fixed mixed-type version sort key handling that could fail on Paper version token comparisons.
- Removed a duplicate stale block in
messages/en.ymlthat produced duplicate-key warnings at startup. - Replaced deprecated
Biome.valueOf/Biome.valuesusage with compatibility-safe registry-backed resolution paths used across biome-related logic.
3.4.0Релиз26.1, 26.1.1, 26.1.2 · 24 мая 2026 г.
Added
- EzCountdown integration (optional soft-dependency):
- RTP countdown display can now be delegated to EzCountdown for richer, configurable display channels.
- Configurable display types per RTP world:
ACTION_BAR,BOSS_BAR,TITLE,CHAT,SCOREBOARD,DIALOG. - Configurable MiniMessage format string with
{formatted}placeholder for remaining time. - Each teleporting player receives an ephemeral, per-player countdown with permission-scoped visibility.
- Falls back to the built-in bossbar/chat countdown automatically when EzCountdown is absent or
ezcountdown.enabled: false. - New
countdown.ezcountdown.*config section inrtp.yml(disabled by default).
EzCountdownadded as optional soft-dependency inplugin.yml.- Factions RTP (TeamsAPI):
- Added
/rtp factionto open a claim-selection GUI from all TeamsAPI claims available to the player's team. - Added TeamsAPI subcommand integration for
/f rtpvia the TeamsAPI subcommand API (when provided by the installed TeamsAPI version). - Claim selection now sets the selected claim chunk as RTP center and then applies normal per-world RTP behavior/settings.
- Added
- New
faction-gui.ymlfile for full claim-GUI configuration. - Heatmap claim overlays (admin insight):
- Added claim border overlay mode for
/rtp heatmapand/rtp heatmap saveviaclaims-overlayflag. - Added
rtp.ymloptions underheatmap.claims-overlay.*:enabledstyle(border)colorline-width
- Added claim border overlay mode for
- Claim-constrained fake RTP simulation:
- Added
/rtp fake <amount> claims [world]to generate simulated points on faction claims owned by the executor’s team.
- Added
Changed
- TeamsAPI dependency bumped from
1.4.1to1.8.0. - TeamsAPI
/f rtpsubcommand integration rewritten: replaced the reflection-basedProxyapproach with a properAbstractTeamsSubcommandsubclass (requires TeamsAPI ≥ 1.8.0). - TeamsAPI subcommand registration now uses an explicit
isPluginEnabled("TeamsAPI")guard instead of relying onNoClassDefFoundErrorsuppression. - Faction claim GUI icons now attempt to use player skulls when claimant/owner identity is available, with configurable fallback material when unavailable.
- Added configurable title, size, claim item format/lore, skull toggle, and navigation slot/name settings for faction GUI pages.
- Update checker refactored to use
mc-plugin-update-notifierwith Modrinth as primary source and GitHub Releases as fallback source.
Fixed
- Heatmap enablement now resolves correctly for inherited/fallback world settings (
heatmap.enabled) and no longer reads as disabled unexpectedly in world/GUI override paths. /rtp heatmapno longer hard-requires biome cache for non-biome heatmaps. Biome cache is only required for biome-filtered heatmap requests.- Spigot startup compatibility fixed in update checking (
JavaPlugin#getDescription().getVersion()used instead of Paper-only metadata calls). - Message loading now supports both top-level keys and nested
messages.*language-file layouts. - Language file handling is now non-destructive: startup repair only targets clearly corrupted message files, with automatic backfill of missing message keys while preserving existing translations/customizations.
3.3.0Релиз26.1, 26.1.1, 26.1.2 · 16 мая 2026 г.
Added
- PvP tag integration: EzRTP now detects when a player enters combat and cancels their
pending teleport or active countdown. Three plugins are supported out of the box:
- CombatLogX — auto-detected at startup; soft dependency.
- PvPManager — auto-detected at startup; soft dependency.
- Simple Combat Log (NikeyV1/CombatLog) — auto-detected at startup; soft dependency.
- All three are added to
softdependinplugin.ymlso they load before EzRTP when present. No configuration change is required on servers that do not use any of them. - New
pvp-tag-integrationsection inrtp.yml:cancel-countdown-on-pvp-tag(defaulttrue): cancel an active countdown the moment the player is tagged.cancel-queued-on-pvp-tag(defaulttrue): skip a queued teleport if the player is already in combat when their slot is dispatched.
- New message keys
countdown-pvp-cancelandqueue-pvp-tag-cancelinmessages/*.ymlfor the cancellation notifications. - Modrinth release metadata now declares
pvpmanagerandsimple-combatlogas optional dependencies.
3.2.3Релиз26.1, 26.1.1, 26.1.2 · 16 мая 2026 г.
Fixed
- Folia teleport crash (
UnsupportedOperationException: Must use teleportAsync while in region threading):BukkitPlatformSchedulernow overridesteleportAsyncand, when running on Folia (regionizedRuntimecapability), callsplayer.teleportAsync(Location)via reflection instead of the forbidden synchronousplayer.teleport(). The Bukkit module was the only scheduler that still used the synchronous fallback from the interface default;PaperPlatformScheduleralready calledteleportAsyncdirectly.
3.2.2Релиз26.1, 26.1.1, 26.1.2 · 12 мая 2026 г.
Fixed
BukkitPlatformSchedulernow handles Folia servers correctly. Previously, running EzRTP on Folia without the Paper runtime module caused anUnsupportedOperationExceptionduring plugin enable because the BukkitCraftSchedulerrejects all synchronous task scheduling on Folia. The scheduler now detectsregionizedRuntimecapabilities and routes all scheduling calls through Folia'sGlobalRegionScheduler/RegionSchedulervia reflection, matching the behaviour already present inPaperPlatformScheduler.
3.2.1Релиз26.1, 26.1.1, 26.1.2 · 11 мая 2026 г.
Fixed
PerformanceSnapshot#fmtnow passesLocale.UStoString#format, ensuring decimal separators are always locale-independent (dots, not commas).
Changed
- Dependency scope for
ezrtp-commonin theezrtp-paperandezrtp-purpurmodules changed toprovided; the common module is bundled by the main plugin JAR and must not be re-included by platform modules.
3.2.0Релиз26.1, 26.1.1, 26.1.2 · 10 мая 2026 г.
Added
- TeamsAPI claim avoidance: EzRTP now integrates with TeamsAPI to skip chunk-claimed areas during RTP destination search.
- New protection provider id:
teamsapi. Works alongside the existingworldguardandgriefpreventionproviders. - Enabled automatically when TeamsAPI (with a compatible claim provider) is installed. Silently skipped when absent, no errors, no configuration changes required.
teamsapiadded to the defaultprotection.providerslist inrtp.yml.TeamsAPIadded tosoftdependinplugin.yml.- Claim availability is evaluated dynamically per check, so a claim plugin that loads after EzRTP is picked up without a reload.
- New protection provider id:
Комментарии
Загружаем…


