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

Off-tick random teleport engine with spatial memory

Report LeafRTP?

R

3.3.0

Upgrade note. rtp.servers.* now defaults to true instead of op, so in network mode every player can reach open cross-server regions; restrict with negative permissions if you relied on the old default. CIRCLE and SQUARE use new selection engines that ignore weight; use CIRCLE_DEPRECATED_PURE_SPIRAL or SQUARE_DEPRECATED_PURE_SPIRAL to keep the 3.2.1 behavior. Region shapes default to mode: REROLL instead of ACCUMULATE; files that set mode keep their value. In config.yml, defaults.shape.uniquePlacements defaults to "auto" instead of 0, and defaults.spatialResolution to "auto" instead of 3. The jar needs Minecraft 1.18+ and Java 17+; it no longer loads on 1.13 - 1.17. Folia is supported from 1.21.11. Saved memory and region cache files from 3.2.1 still load but are rewritten in a new format that 3.2.1 can't read, so back up plugins/RTP/ if you may need to roll back.

Added

  • Runs on Spigot and Paper 1.18 - 1.20.6, and on Java 17. These older versions are best effort and not covered by automated tests. Folia is supported from 1.21.11. Bug reports are accepted for 1.21.11 through the latest release (support matrix).
  • Actions. Script multi-step teleports in YAML: what happens before, during and after the teleport, failure and timeout handling, and conditions (permission, balance, cooldown, world, biome, time, server load and more). Destinations can be anchored to a player, claim, faction or world center, teams can be placed together, and walk-in triggers start an action when a player enters a zone. Commands: /rtp action, /rtp action cancel, /rtp back. The bundled action addon ships arena, KOTH, scatter and teams modes.
  • Web config editor (/rtp editor). Edit configs in a browser and apply them back to the server. Secrets are redacted before anything leaves the server, only files in the plugin folder can be written, and a browser must be trusted before it can apply changes (revoke with /rtp editor untrust).
  • Import from other RTP plugins (/rtp config import). Reads BetterRTP, JustRTP or EzRTP config folders and carries over worlds, radius, shape, cooldowns, prices, database, effects and JustRTP zones. Nothing is replaced without overwrite=true, and files are backed up first. /rtp config import permissions prints the matching LuckPerms commands.
  • Setup wizard (/rtp admin setup). Guided first-time setup in chat or console; your config is backed up first.
  • Teleport near your own claim or faction (Towny, GriefPrevention, SaberFactions/FactionsUUID via the bundled claim addon).
  • More claim plugins: HuskTowns, PlotSquared, UltimateClaims and MinePlots.
  • Selection heatmap and pipeline views (/rtp visualization heatmap, /rtp visualization pipeline).
  • Holograms for status and pre-teleport text (text displays on 1.19.4+, or DecentHolograms / HolographicDisplays).
  • New engines for CIRCLE and SQUARE. Picks spread evenly by area and never repeat a chunk within a pass; REROLL keeps players apart without using up expand: false regions. Bad-land memory is smaller and faster.
  • Tag exclusions in block lists, e.g. #minecraft:slabs - OAK_SLAB.
  • Commands as teleport effects, and a death effect stage.
  • Claim and spacing rejections expire after the time set in advanced/ttl.yml; bad terrain is still remembered permanently.
  • Units in configs and commands: radius: 5km, teleportCooldown: 2h30m, cacheCap: 256mb.
  • World border check: RTP warns when a region reaches past the border and keeps destinations inside it.
  • API on Maven Central: rtp-api, rtp-core and their API libraries.

Changed

  • MIT-licensed in full. Free and Pro jars are both MIT; Pro is a support tier.
  • Queues renamed to hot, cold and backlog in /rtp info and the docs.
  • Background search loads far fewer chunks. It checks loaded or on-disk chunks first, preloads the view-distance area only for ready locations, and pauses when the server is short on memory.
  • The backlog queue never loads chunks; region-file-accepted picks move into the cold queue with no chunk load.
  • Queued locations are fully checked before a player gets one (world border, biome filter, safety radius, claims), including locations from the backlog or database.
  • The region-file pre-check tunes itself per region. Nothing to configure.
  • Faster region-file access: each file is opened once per batch, and buffers are reused.
  • Paper picks sync or async teleport per teleport; set teleportPath: ASYNC in advanced/performance.yml to always use async.
  • Less main-thread work per teleport on Paper, Spigot and Folia.
  • REROLL is the default selection mode; regions that set mode keep their value.
  • ELLIPSE turns off expand: true with a one-time warning, as POLYGON already did.
  • bStats without a bundled bStats library; same data, opt-out and server ID.
  • RTP leaves more of each tick to the server. syncAllottedTime defaults to 5 ms and asyncAllottedTime to 25 ms (both capped at 25 ms); queued commands, actions and promotion checks count against the sync budget.
  • minTPS pauses background filling, and the new maxMSPT (default 45 ms) pauses it when ticks run long. Waiting players are still served.
  • Folia spreads RTP's work across region threads instead of stacking it on one. Under heavy load one region could previously fall to about 1.4 TPS while the mean stayed near 19.
  • Tidier shipped config files; comments stay attached when RTP rewrites a file.

Removed

  • Party and tether addons. Use the action addon's teams and scatter modes.

Fixed

  • Moving during the /rtp warmup now cancels the teleport (cancelDistance was ignored).
  • Arriving players could trigger a main-thread chunk load; the landing chunk now stays loaded briefly after arrival.
  • Reserving chunks around a destination could load them on the main thread on Spigot and Paper.
  • Claim protection switched itself off after a single error; an error now rejects only that location. WorldGuard regions also block landings when RTP's custom flag couldn't be registered.
  • Teleports could stall under heavy load due to config-read lock contention.
  • uniquePlacements could use up a region with expand: false within seconds.
  • Background safety checks read whole region files to inspect one chunk.
  • Some region-file chunks always fell back to a full chunk load.
  • region-file-compression=lz4 worlds never got the region-file check.
  • lz4-java is no longer bundled (closes CVE-2025-12183 and CVE-2026-59949).
  • Corrupt or crafted region chunks could crash the safety check or force huge memory use.
  • MySQL and PostgreSQL storage stopped saving after a few minutes (connections were never returned to the pool).
  • Cross-server /rtp requests could vanish with multiple proxies sharing Redis, or after a Redis hiccup.
  • Paper and Folia 26.1+ didn't recognize pregenerated land (new world/dimensions/... layout).
  • /rtp scan fixes: rejected generated land on 26.3, stalled on large pregenerated worlds, checked chunks outside circle regions, showed wrong land %, and showed jumpy speed/ETA.
  • Shape mode and uniqueplacements inconsistencies across shapes, including NEAREST returning known-bad locations.
  • The JUMP vertical adjustor discarded whole chunks after one bad column.
  • Players who left stayed in memory through teleport history and boss bars.
  • On Folia, delayed tasks ran immediately, cancelled tasks still ran, and one failing task skipped the rest of the tick's queue; RTP also lost its TPS readings with spark installed.
  • Background area scans could stall a tick thread waiting for claim plugins.
  • period refilled each region one tick early.
  • Presets wrote syncAllottedTime/asyncAllottedTime values above the 25 ms cap.
  • Repeated hex colors showed a stray & without Adventure.
  • The free jar now declares the same permissions as Pro (rtp.version, rtp.biome, rtp.menu.admin, rtp.personalqueue, rtp.onevent.*).

Security

Network mode upgrade note. Upgrade every backend and proxy together: network messages and shared-store records use a new signed format older builds can't read, and old-format tokens and queue entries are rejected. Network mode requires a Base64 RTP_NET_SECRET of at least 32 bytes; plugin-message, proxy-cache and auto can run unsigned with network.allowUnsigned: true.

  • More network traffic is signed: proxy-cache replies, request queues and Redis waitlists.
  • One cross-server request at a time per player.
  • Proxy-direct link hardening: signed requests, 127.0.0.1 bind by default, IP allowlist, optional TLS with client certificates, capped connections.
  • Redis options: TLS, ACL usernames and passwordEnv; a password left in YAML logs a warning. Oversized or deeply nested replies are rejected.
  • RTPAPI.teleport checks destination permissions, so menus and addons can't bypass them.
  • reg: command patterns are capped at 256 characters. Full changelog: https://github.com/DailyStruggle/RTP/blob/V3/CHANGELOG.md

Information

Published
October 19, 2026
Author
11Downloads

Platforms

Paper
Paper
1.18–26.3
Velocity
Velocity
3.3–4.3.0

Dependencies

PaperPaper

Dependencies: Paper

Plugins and libraries a server needs for this version to run.

No dependencies

Add anything a server has to install alongside this version.