Skip to content

maybeizen/zenrtp

Repository files navigation

ZenRTP

A lightweight random teleport plugin for Paper servers. Pick a ring around a center point, find a safe surface, and teleport players there—with cooldowns, costs, optional per-world rules, and messages you can edit.

Requirements: Paper 1.21.x (API 1.21), Java 21.
ZenRTP is built for the Paper API; Spigot-only servers are not supported.


Features

  • Random location in a configurable distance band from center-x / center-z, with per-world overrides.
  • Safety checks: configurable “unsafe” blocks (lava, fire, cactus, etc.), air at feet/head, solid ground, and Y bounds (min-y / max-y).
  • Sky visibility (Overworld only): optional clear column to build height. Nether and End ignore this—there is no sky there.
  • Teleport delay with a chat countdown (e.g. 3, 2, 1); movement can cancel the pending RTP if enabled.
  • Cooldowns, optional daily limits, and costs (hunger, XP, money via Vault).
  • World blacklist / whitelist, spawn avoidance, avoid nearby players, chunk preloading around the destination.
  • Titles and sounds (configurable); messages in messages.yml (MiniMessage or legacy & codes).

Installation

  1. Download the latest ZenRTP-<version>.jar from the releases page or Modrinth.
  2. Place it in your server’s plugins folder.
  3. Start or restart the server.
  4. Edit plugins/ZenRTP/config.yml and plugins/ZenRTP/messages.yml as needed, then run /zenrtp reload (or restart).

Commands

Command Description
/rtp Random teleport in the world you are currently in.
/rtp <world> Random teleport in the named world (you must be allowed in that world).
/rtpo <player> Teleport another player in their current world.
/rtpo <player> <world> Teleport another player to a random spot in the given world.
/zenrtp reload Reload config.yml and messages.yml.

Permissions

Permission Default Purpose
zenrtp.use true Use /rtp.
zenrtp.rtp.<world> (not set) Allow RTP into the world named <world> (e.g. zenrtp.rtp.world_nether). Grant per world via your permissions plugin.
zenrtp.others op Use /rtpo.
zenrtp.admin op Use /zenrtp reload.
zenrtp.bypass.cooldown op Ignore cooldown.
zenrtp.bypass.cost op Ignore hunger/XP/money costs (unless require-costs is true in config).
zenrtp.bypass.daily op Ignore the daily RTP limit.

If a player lacks zenrtp.rtp.<world> for a world, they cannot RTP there, even if /rtp is allowed.


Optional plugins

Plugin Role
Vault Money cost (currency-cost) when configured.
PlaceholderAPI Present if you use placeholders elsewhere; ZenRTP does not require it for core RTP.

Configuration (overview)

Main file: plugins/ZenRTP/config.yml.

  • Distance & area: min-distance, max-distance, center-x, center-z.
  • Height: min-y, max-y (per-world under per-world-settings if needed).
  • Safety: safe-location-check, unsafe-blocks (Bukkit material names), require-sky-visibility (Overworld only).
  • Worlds: world-blacklist, world-whitelist (empty whitelist = all worlds except blacklist).
  • Flow: teleport-delay, cancel-on-move, max-attempts, preload-chunks, preload-radius.
  • Spawn / players: spawn-radius, avoid-near-players, avoid-player-radius.
  • Limits & costs: cooldown, daily-limit, hunger-cost, xp-cost, currency-cost, require-costs.
  • Feedback: enable-sounds, title timings, effect durations, log-teleports.

All options are documented with comments in the default config.yml shipped with the jar.


Messages

Edit plugins/ZenRTP/messages.yml to change chat text, prefixes, and placeholders. After a reload, changes apply without a full restart.


Building from source

git clone https://github.com/maybeizen/zenrtp.git
cd ZenRTP
./gradlew shadowJar

The plugin jar is produced under build/libs/ (name includes the version from plugin.yml).


Links