Описание
## 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
[](https://ez-plugins.github.io/EzRTP)
[](https://discord.gg/yWP95XfmBS)
[Modrinth](https://modrinth.com/plugin/ezplugins-ezrtp) • [SpigotMC](https://www.spigotmc.org/resources/1-19-1-21-%E2%AC%85%EF%B8%8F-ezrtp-%E2%9E%A1%EF%B8%8F-highly-configurable-rtp-plugin-for-minecraft-servers.129828/) • [Hangar](https://hangar.papermc.io/EzPlugins/EzRTP) • [Discord](https://discord.gg/yWP95XfmBS)
---
## 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 `) 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 [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 [world]` | `ezrtp.heatmap.fake` | Add/clear simulated heatmap samples |
| `setcenter` | `/rtp setcenter ` or `/rtp setcenter ` | `ezrtp.setcenter` | Updates world center and reloads |
| `addcenter` | `/rtp addcenter ` | `ezrtp.setcenter` | Stores named center at player location |
| `pregenerate` | `/rtp pregenerate [world] [radius]` | `ezrtp.pregenerate` | Starts Chunky-assisted warmup tasks |
### Extra RTP Routing
- `/rtp `: teleports using `centers.named.` from `rtp.yml`.
- `/rtp `: 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.` | `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..*` |
| `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)
```yaml
# config.yml
message-prefix: "&7[&bEzRTP&7] &r"
language: en
enable-bstats: true
worldguard:
region-command:
enabled: false
autocomplete: false
```
```yaml
# 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
```
```yaml
# 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
```
```yaml
# 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

[](https://modrinth.com/collection/Q98Ov6dA)