Player-friendly RTP – `/rtp` finds solid ground inside the configured world border, skips unsafe blocks, and reports the final coords with MiniMessage styling.
Multi-world teleports – Offer curated destinations for overworld, resource, or event worlds with an optional permission-gated GUI selector.
Join protection – Optionally teleport newcomers (or everyone) on join with delay + bypass permission toggles to prevent spawn camping.
Vault economy ready – Charge a configurable fee for each teleport, refund on failure, and surface friendly "insufficient funds" prompts.
Performance-conscious queue – Throttle heavy usage with a configurable teleport queue that spaces out searches while respecting bypass permissions.
Purpose-built service – Cleanly separates config, command, and teleport logic so you can drop the jar into any survival setup without conflicts.
Feature Highlights
Interactive world selector – Enable an inventory GUI with filler items, custom icons, and per-option permissions so players pick their landing zone.
Safe block filtering – Maintain a denylist of unsafe floor blocks (lava, water, magma, powder snow, etc.) and expand it per biome or gamemode needs.
Chunk readiness checks – Skips ungenerated chunks, ensures the destination chunk is loaded, and applies configurable retry limits.
MiniMessage messaging – Customize searching, success, failure, queue, and missing-world alerts with Adventure MiniMessage placeholders `<x>`, `<z>`, and `<world>`.
Economy feedback – Configure the teleport cost, enable Vault integration automatically, and localize insufficient balance messaging.
Join-delay scheduler – Wait a configurable number of ticks after login before teleporting so players load resource packs or tutorials first.
Reload subcommand – `/rtp reload` hot-swaps config changes without kicking players or restarting the server.
Quick Start
Drop `EzRTP.jar` into your Paper or Purpur `plugins/` directory and restart the server.
Edit `plugins/EzRTP/config.yml` to set the target world, teleport center, radius bounds, teleport cost, and unsafe block list.
Toggle `gui.enabled` and add world entries to present a permission-aware teleport selector menu.
Flip `on-join.enabled` (and `only-first-join` / `bypass-permission`) to auto-move fresh players into the wilderness or starter zones.
Hook Vault + your economy plugin if you want to charge for teleports; leave `cost` at `0` for free usage.
Run `/rtp reload` or restart once you finish editing to apply the new settings.
Commands & Permissions
Command
Description
Permission
/rtp
Teleport the executing player to a random safe location.
ezrtp.use (default: true)
/rtp reload
Reload EzRTP configuration from disk.
ezrtp.reload (default: op)
Grant `ezrtp.queue.bypass` to let trusted players skip the queue, and assign per-option GUI permissions directly in `config.yml`.
Configuration Overview
Code (yml (Unknown Language)):
# EzRTP configuration
world: world
center:
x: 0
z: 0
radius:
min: 256
max: 2048
use-world-border: true
max-attempts: 32
cost: 0.0
unsafe-blocks:
- WATER
- LAVA
- MAGMA_BLOCK
- POWDER_SNOW
- FIRE
- CAMPFIRE
- SOUL_FIRE
messages:
teleporting: "<gray>Searching for a safe location...</gray>"
teleport-success: "<green>Teleported to <white><x></white>, <white><z></white> in <white><world></white>.</green>"
teleport-failed: "<red>Unable to find a safe location. Please try again.</red>"
world-missing: "<red>The configured world '<white><world></white>' is not available.</red>"
join-searching: "<gray>Finding you a safe place to explore...</gray>"
insufficient-funds: "<red>You need <white><cost></white> to use random teleport.</red>"
queue-queued: "<gray>You joined the random teleport queue. Position: <white><position></white>.</gray>"
queue-full: "<red>The random teleport queue is currently full. Please try again soon.</red>"
on-join:
enabled: false
only-first-join: false
bypass-permission: ""
delay-ticks: 40
queue:
enabled: false
max-size: 0
bypass-permission: "ezrtp.queue.bypass"
start-delay-ticks: 20
interval-ticks: 40
gui:
enabled: true
title: "<gold>Select a destination</gold>"
rows: 1
no-permission-message: "<red>You do not have permission to teleport there.</red>"
filler:
enabled: true
material: GRAY_STAINED_GLASS_PANE
name: "<gray> </gray>"
worlds:
overworld:
slot: 0
permission: ""
icon:
material: GRASS_BLOCK
name: "<green>Overworld</green>"
lore:
- "<gray>Teleport to a random location in the overworld.</gray>"
settings:
world: world
radius:
min: 256
use-world-border: true
resource:
slot: 1
permission: "ezrtp.gui.resource"
icon:
material: IRON_PICKAXE
name: "<gold>Resource World</gold>"
lore:
- "<gray>Gather materials without ruining the main world.</gray>"
settings:
world: resource
radius:
min: 512
max: 4096
use-world-border: false
Requirements
Java 17 or newer.
Paper or Purpur 1.21+ server build.
Optional: Vault + an economy plugin if you want to charge for teleports.
Optional: A permissions plugin (LuckPerms, etc.) if you want granular control over `/rtp reload`, queue bypass, GUI option access, or cost bypasses.
Support & Links
Need help? Join our Discord and open a ticket under the EzRTP category.
Share seeds, biome rules, or config presets on the discussion tab so other admins can jumpstart their setup.
Pair EzRTP with EzSpawners, EzAuction, and the rest of the Ez-series utilities for a cohesive network toolkit.
Ready to launch players into adventure? Install EzRTP and give explorers a safe, stylish way to discover your world—across every dimension!