Перейти к содержимому
Mineforgian

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.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/Folia

Documentation Support

ModrinthSpigotMCHangarDiscord


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

Biome Statistics

Heatmap Visualization

RTP Heatmap

World Selector GUI

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 using centers.named.<name> from rtp.yml.
  • /rtp <region-id>: WorldGuard region-based RTP when worldguard.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

Usage of the RTP plugin

Try Other EzPlugins

Ченджлог

3.4.2Релиз26.1.1, 26.1.2, 26.2 · 7 июля 2026 г.

Fixed

  • /rtp reload now immediately applies GUI configuration updates from gui.yml by 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:
    • RandomTeleportGuiManagerReloadConfigTest verifies 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.2 compatibility updates:
    • added SULFUR_CAVES to rare-biome defaults/search paths,
    • updated biome compatibility handling for modern registry-based lookup paths.

Changed

  • CI server download resolution migrated to PaperMC Fill API (fill.papermc.io) and now sends an explicit non-generic User-Agent header 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.x for earliest supported compatibility coverage.
  • Dependency and tooling updates merged via Dependabot:
    • com.github.ez-plugins:teams-api 1.8.0 -> 2.4.0.
    • GitHub Actions actions/checkout v6 -> v7.
    • GitHub Actions DavidAnson/markdownlint-cli2-action v23 -> v24.
  • Kyori Adventure BOM and related versions moved to 5.2.0 for 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.yml that produced duplicate-key warnings at startup.
  • Replaced deprecated Biome.valueOf/Biome.values usage 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 in rtp.yml (disabled by default).
  • EzCountdown added as optional soft-dependency in plugin.yml.
  • Factions RTP (TeamsAPI):
    • Added /rtp faction to open a claim-selection GUI from all TeamsAPI claims available to the player's team.
    • Added TeamsAPI subcommand integration for /f rtp via 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.
  • New faction-gui.yml file for full claim-GUI configuration.
  • Heatmap claim overlays (admin insight):
    • Added claim border overlay mode for /rtp heatmap and /rtp heatmap save via claims-overlay flag.
    • Added rtp.yml options under heatmap.claims-overlay.*:
      • enabled
      • style (border)
      • color
      • line-width
  • Claim-constrained fake RTP simulation:
    • Added /rtp fake <amount> claims [world] to generate simulated points on faction claims owned by the executor’s team.

Changed

  • TeamsAPI dependency bumped from 1.4.1 to 1.8.0.
  • TeamsAPI /f rtp subcommand integration rewritten: replaced the reflection-based Proxy approach with a proper AbstractTeamsSubcommand subclass (requires TeamsAPI ≥ 1.8.0).
  • TeamsAPI subcommand registration now uses an explicit isPluginEnabled("TeamsAPI") guard instead of relying on NoClassDefFoundError suppression.
  • 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-notifier with 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 heatmap no 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 softdepend in plugin.yml so they load before EzRTP when present. No configuration change is required on servers that do not use any of them.
    • New pvp-tag-integration section in rtp.yml:
      • cancel-countdown-on-pvp-tag (default true): cancel an active countdown the moment the player is tagged.
      • cancel-queued-on-pvp-tag (default true): skip a queued teleport if the player is already in combat when their slot is dispatched.
    • New message keys countdown-pvp-cancel and queue-pvp-tag-cancel in messages/*.yml for the cancellation notifications.
    • Modrinth release metadata now declares pvpmanager and simple-combatlog as 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): BukkitPlatformScheduler now overrides teleportAsync and, when running on Folia (regionizedRuntime capability), calls player.teleportAsync(Location) via reflection instead of the forbidden synchronous player.teleport(). The Bukkit module was the only scheduler that still used the synchronous fallback from the interface default; PaperPlatformScheduler already called teleportAsync directly.

3.2.2Релиз26.1, 26.1.1, 26.1.2 · 12 мая 2026 г.

Fixed

  • BukkitPlatformScheduler now handles Folia servers correctly. Previously, running EzRTP on Folia without the Paper runtime module caused an UnsupportedOperationException during plugin enable because the Bukkit CraftScheduler rejects all synchronous task scheduling on Folia. The scheduler now detects regionizedRuntime capabilities and routes all scheduling calls through Folia's GlobalRegionScheduler / RegionScheduler via reflection, matching the behaviour already present in PaperPlatformScheduler.

3.2.1Релиз26.1, 26.1.1, 26.1.2 · 11 мая 2026 г.

Fixed

  • PerformanceSnapshot#fmt now passes Locale.US to String#format, ensuring decimal separators are always locale-independent (dots, not commas).

Changed

  • Dependency scope for ezrtp-common in the ezrtp-paper and ezrtp-purpur modules changed to provided; 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 existing worldguard and griefprevention providers.
    • Enabled automatically when TeamsAPI (with a compatible claim provider) is installed. Silently skipped when absent, no errors, no configuration changes required.
    • teamsapi added to the default protection.providers list in rtp.yml.
    • TeamsAPI added to softdepend in plugin.yml.
    • Claim availability is evaluated dynamically per check, so a claim plugin that loads after EzRTP is picked up without a reload.

Комментарии

Загружаем…