Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for Shadow48402

Configurable random teleportation - Supports multiple worlds

Report EzRTP?

EzRTP

Configurable random teleport command with GUI world selection, Vault charging, and safe-location scanning.

  • Paper/Purpur/Spigot 1.7 - 1.21+
  • Java 17+
  • World-border aware
  • MiniMessage chat output
  • Optional Vault economy hook
  • Lightweight standalone jar

Why EzRTP?

  • Player-friendly RTP/rtp finds solid ground inside the configured world border, skips unsafe blocks, and reports the final coords with MiniMessage styling. RTP GUI
  • 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>.
  • Teleport flair – Trigger configurable particle effects at the landing spot so players know the teleport completed.
  • Economy feedback – Configure the teleport cost, enable Vault integration automatically, and localise insufficient balance messaging.
  • Biome inclusion/exclusion – Restrict teleports to approved biome lists or skip unwanted regions like oceans and deserts.
  • 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.
  • Per-player cooldowns, limits, & costs – Configure per-world, per-group cooldowns, daily/weekly usage limits, and optional cost overrides for /rtp, with permission-based bypass and persistent tracking (YAML or MySQL).
  • Configurable teleport countdown – Add an optional, per-player countdown before teleportation with optional bossbar and particle rings. Set countdown-seconds or use the countdown block in config.yml to control visuals and timing.
  • Y-level and debug controls – Restrict random teleports to a min/max Y-level range (min-y, max-y), and enable detailed debug logging for rejected locations with debug-rejection-logging in config.yml for troubleshooting safe-location logic.
  • Protection-aware search – Optionally avoid protected regions/claims by enabling protection.avoid-claims and listing providers like worldguard or griefprevention.

Quick Start

  1. Drop EzRTP.jar into your Paper or Purpur plugins/ directory and restart the server.
  2. Edit plugins/EzRTP/config.yml to set the target world, teleport center, radius bounds, teleport cost, unsafe block list, particles, and on-join behaviour.
  3. Localise the MiniMessage output in plugins/EzRTP/messages.yml so the searching, success, failure, and queue prompts match your server's style.
  4. Toggle enabled inside gui.yml and add world entries to present a permission-aware teleport selector menu.
  5. Adjust queue.yml if you need to throttle teleport requests during peak hours or grant bypass permissions to staff.
  6. Hook Vault + your economy plugin if you want to charge for teleports; leave cost at 0 for free usage.
  7. 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 gui.yml.

Configuration Overview

config.yml
# EzRTP teleport configuration
# Set to true to enable debug logging for rejected random teleport locations (for troubleshooting safe location logic).
debug-rejection-logging: false
# Optional: restrict random teleport Y-levels (inclusive). If omitted, world min/max height is used.
# min-y: 64
# max-y: 120
world: world
center:
  x: 0
  z: 0
radius:
  min: 256
  # max: 2048
  use-world-border: true
max-attempts: 32
cost: 0.0
countdown-seconds: 0 # Optional countdown before teleport (0 = disabled)
countdown:
  # Optional: override countdown seconds here instead of countdown-seconds.
  # seconds: 5
  bossbar:
    enabled: false
    title: "<yellow>Teleporting in <white><seconds></white> seconds...</yellow>"
    color: YELLOW
    style: SOLID
  particles:
    enabled: true
    # Primary Bukkit particle to use for the countdown ring.
    type: ENCHANTMENT_TABLE
    # Number of points in the ring around the player.
    points: 12
    # Ring radius in blocks.
    radius: 1.2
    # Height offset from the player's feet.
    height-offset: 0.8
    # Additional speed/extra parameter passed to the particle effect.
    extra: 0.0
    # Force the particles to render for players at long distances (1.13+ servers).
    force: false
    # Optional secondary sparkle particle.
    secondary-particle: PORTAL
    secondary-count: 6
    secondary-offset: 0.35
unsafe-blocks:
  - WATER
  - LAVA
  - MAGMA_BLOCK
  - POWDER_SNOW
  - FIRE
  - CAMPFIRE
  - SOUL_FIRE
biomes:
  # Optional: list of allowed biomes. Leave empty to allow all.
  include: []
  # Optional: list of biomes to avoid.
  exclude: []
protection:
  avoid-claims: false
  providers:
    - worldguard
    - griefprevention
particles:
  enabled: false
  type: PORTAL
  count: 40
  offset:
    x: 0.5
    y: 1.0
    z: 0.5
  extra: 0.0
  force: false
on-join:
  enabled: false
  only-first-join: false
  bypass-permission: ""
  delay-ticks: 40
# RTP cooldowns and usage limits
rtp-limits:
  default:
    cooldown-seconds: 300   # Cooldown in seconds between /rtp uses
    daily-limit: 10         # Max uses per day
    weekly-limit: 50        # Max uses per week
    cost: 0.0               # Optional cost override for this group
  worlds:
    world:
      default:
        cooldown-seconds: 300
        daily-limit: 10
        weekly-limit: 50
        cost: 0.0
      group.vip:
        cooldown-seconds: 60
        daily-limit: 50
        weekly-limit: 200
        cost: 0.0
    world_nether:
      default:
        cooldown-seconds: 600
        daily-limit: 5
        weekly-limit: 20
        cost: 0.0
      group.staff:
        cooldown-seconds: 0
        daily-limit: -1   # -1 = unlimited
        weekly-limit: -1
        cost: 0.0
  bypass-permissions:
    - ezrtp.bypass.cooldown
    - ezrtp.bypass.limit
  storage: yaml # or mysql
  mysql:
    url: jdbc:mysql://localhost:3306/mc
    user: root
    password: ""
messages.yml
# EzRTP MiniMessage templates
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>"
# Cooldown and usage limit messages
cooldown: "<red>You must wait <white><seconds></white> seconds before using /rtp again.</red>"
limit-daily: "<red>You have reached your daily /rtp limit for this world.</red>"
limit-weekly: "<red>You have reached your weekly /rtp limit for this world.</red>"
# Countdown messages
countdown-start: "<yellow>Teleporting in <white><seconds></white> seconds...</yellow>"
countdown-tick: "<gray><seconds>...</gray>"
queue.yml
# EzRTP teleport queue configuration
enabled: false
max-size: 0
bypass-permission: "ezrtp.queue.bypass"
start-delay-ticks: 20
interval-ticks: 40
gui.yml
# EzRTP GUI configuration
enabled: false
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
network.yml
# EzRTP proxy / network configuration
enabled: false
lobby: false
ping-interval-ticks: 200
ping-timeout-millis: 1500
servers:
  skyblock:
    bungee-server: "skyblock"
    host: "127.0.0.1"
    port: 25566
    slot: 4
    permission: ""
    display-name: "Skyblock"
    hide-when-offline: false
    allow-when-offline: false
    connect-message: "<gray>Connecting you to <white><server></white>...</gray>"
    offline-message: "<red><server></red> is currently unavailable."
    icon:
      material: ENDER_PEARL
      name: "<gold><server></gold>"
      lore:
        - "<gray>Status: <status></gray>"
        - "<gray>Ping: <white><ping></white>ms</gray>"

Requirements

  • Java 17 or newer
  • Paper, Purpur, or SpigotMC 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
  • 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.
  • Get EzEconomy – Modern Vault Economy Plugin

Ready to launch players into adventure?

Install EzRTP and give explorers a safe, stylish way to discover your world—across every dimension!

Information

CategoryGameplay
Published onDecember 24, 2025
LicenseUnspecified
Downloads9
Stars0
Watchers0

Pinned Versions

Members