3.3.0
Upgrade note.
rtp.servers.*now defaults totrueinstead ofop, so in network mode every player can reach open cross-server regions; restrict with negative permissions if you relied on the old default.CIRCLEandSQUAREuse new selection engines that ignoreweight; useCIRCLE_DEPRECATED_PURE_SPIRALorSQUARE_DEPRECATED_PURE_SPIRALto keep the 3.2.1 behavior. Region shapes default tomode: REROLLinstead ofACCUMULATE; files that setmodekeep their value. Inconfig.yml,defaults.shape.uniquePlacementsdefaults to"auto"instead of0, anddefaults.spatialResolutionto"auto"instead of3. 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 upplugins/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 withoutoverwrite=true, and files are backed up first./rtp config import permissionsprints 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
CIRCLEandSQUARE. Picks spread evenly by area and never repeat a chunk within a pass;REROLLkeeps players apart without using upexpand: falseregions. Bad-land memory is smaller and faster. - Tag exclusions in block lists, e.g.
#minecraft:slabs - OAK_SLAB. - Commands as teleport effects, and a
deatheffect 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-coreand 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 infoand 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: ASYNCinadvanced/performance.ymlto always use async. - Less main-thread work per teleport on Paper, Spigot and Folia.
REROLLis the default selection mode; regions that setmodekeep their value.ELLIPSEturns offexpand: truewith a one-time warning, asPOLYGONalready did.- bStats without a bundled bStats library; same data, opt-out and server ID.
- RTP leaves more of each tick to the server.
syncAllottedTimedefaults to 5 ms andasyncAllottedTimeto 25 ms (both capped at 25 ms); queued commands, actions and promotion checks count against the sync budget. minTPSpauses background filling, and the newmaxMSPT(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
teamsandscattermodes.
Fixed
- Moving during the
/rtpwarmup now cancels the teleport (cancelDistancewas 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.
uniquePlacementscould use up a region withexpand: falsewithin 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=lz4worlds 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
/rtprequests 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 scanfixes: 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
modeanduniqueplacementsinconsistencies across shapes, includingNEARESTreturning known-bad locations. - The
JUMPvertical 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.
periodrefilled each region one tick early.- Presets wrote
syncAllottedTime/asyncAllottedTimevalues 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_SECRETof at least 32 bytes;plugin-message,proxy-cacheandautocan run unsigned withnetwork.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.1bind 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.teleportchecks 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
Platforms
Dependencies
- CombatLogX Optional
- Factions Optional
- GriefDefender Optional
- GriefPrevention Optional
- HuskTowns Optional
- Lands Optional
- PvPManager Optional
- RedProtect Optional
- SimpleCombatLog Optional
- Towny Optional
- Vault Optional
- WorldGuard Optional