All Mods Resource Packs Data Packs Shaders Modpacks Plugins
justRTP

justRTP

by kotorinet • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

thumbnail

ㅤㅤㅤgif1

ㅤㅤㅤgif2

bstats

JustRTP

A random teleport plugin for Paper, Folia, and proxy networks. It drops players at a safe spot, handles the cooldowns, costs, and warmups around it, and adds an arena style zone system, an admin dashboard, and full cross server support on top. The goal is to stay fast and stable on busy servers and across a network.

Runs on Minecraft 1.21.11 up to 26.2, on Paper, Folia, and Folia forks like CanvasMC.

How it works

A safe /rtp looks for a spot that is not lava, not inside a wall, and not in a biome or block you have blacklisted, then teleports the player there. It handles the Overworld, Nether, and End, plus a VOID type for skyblock and void worlds. A background location cache keeps ready spots on hand, so a normal /rtp lands close to instant instead of searching live every time.

Everything is set per world: radius, center, cooldown, warmup, cost, which worlds are allowed, and the biomes or blocks to avoid. Permission groups can override the radius, cost, cooldown, and delay for ranks like VIP, by priority.

Ways to teleport

  • /rtp to a random safe spot in the current or default world
  • /rtp <world> for a specific world with its own radius, cost, and rules
  • /rtp <world> <min> <max> for a custom radius, with optional radius based pricing tiers
  • /rtp <player> to teleport someone else
  • /rtp nearplayer to land near a random online player
  • /rtp nearclaim to land near a claimed base (SimpleClaim, GriefPrevention, Lands, WorldGuard), and the subcommand name is renameable
  • /rtp location <id> for named locations, each with its own permission, cost, and radius
  • /rtp gui for a clickable world picker with live cooldowns and costs
  • /rtp spectator for a circular floating head world switcher, handy for staff
  • Matchmaking queue that pairs players for 1v1, 2v2, or team RTP with /rtp queue
  • Jump RTP to teleport by double jumping, per world, with its own cooldown

Automatic teleports

  • First join RTP for new players
  • Respawn RTP after death
  • Spawn world redirect to push players out of a hub on join
  • RTP Zones: 3D regions that teleport everyone inside on a timer, with live countdown holograms, group spread, and a per player opt out

Network and cross server

  • Cross server RTP over MySQL for Velocity and BungeeCord, with instant arrival and no second warmup
  • Optional Redis for shared cooldowns, caches, and live messaging across the network
  • RTP Zone sync so the same zones stay in step across multiple servers

Visuals and feedback

  • Titles, action bar, boss bar, and chat messages, all in MiniMessage with gradients and color
  • A delay countdown with an action bar timer and a sound that rises in pitch, and moving cancels the teleport
  • Particle animations while warming up and on arrival
  • Zone countdown holograms through FancyHolograms, AxoHologram, PacketEvents, or vanilla Display Entities, picked automatically

Economy and permissions

  • Vault costs per world, per group, or by radius tier, with a confirmation step for paid teleports and an automatic refund if the teleport fails
  • Permission groups with priority based per world cooldown, delay, cost, and radius
  • Bypass permissions for cooldown, warmup, cost, and Jump RTP

Admin and technical

  • /rtp dashboard, an in game panel to enable, disable, and tune every module live, written back into config.yml in place so your comments stay
  • Built in update checker with console and in game notices for admins
  • Addon system to load extra behavior from plugins/JustRTP/addons
  • PlaceholderAPI placeholders for cooldown, cost, and delay, usable in scoreboards and other plugins
  • Folia, Canvas, and Paper detected automatically, with all chunk and entity work kept on the correct region threads
  • Location cache and an async teleport queue to keep things smooth under load

Commands

Command What it does
/rtp Random safe teleport
/rtp <world> Teleport in a specific world
/rtp <world> <min> <max> Teleport with a custom radius
/rtp <server>:<world> Cross server teleport (needs MySQL)
/rtp <player> Teleport another player
/rtp nearplayer Teleport near a random online player
/rtp nearclaim Teleport near a claimed area
/rtp location <id> Teleport to a named location
/rtp gui Open the world picker
/rtp spectator Open the spectator switcher
/rtp queue join Join the matchmaking queue
/rtp dashboard Open the admin panel
/rtpzone setup <id> Create and manage an RTP zone
/rtp reload Reload the configuration

The full command and permission list is in the docs.

Compatibility

  • Java 21 or newer
  • Paper, Folia, or a Folia fork such as CanvasMC
  • Minecraft 1.21.11 through 26.2
  • Optional hooks: Vault, PlaceholderAPI, WorldGuard, GriefPrevention, Lands, SimpleClaim, FancyHolograms, AxoHologram, PacketEvents, MySQL, Redis

Setup

  1. Put the jar in your plugins folder
  2. Start the server once to generate the config files
  3. Set your worlds, radius, and cooldowns in config.yml
  4. Run /rtp reload

Updating is safe. New options are merged into your existing files, your old configs are backed up first, and your comments and layout stay where you put them.

Visual Description

image image image image image image image image image image image test

ignore: rtp, cross server, randomtp, wildtp, redis, mysql, rtpzone

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.3 26.2 26.1.x +1
Folia Paper Purpur Spigot
12h ago 1
26.3 26.2 26.1.x +1
Folia Paper Purpur Spigot
12h ago 1
26.2 26.1.x 1.21.x
Folia Paper Purpur Spigot
12h ago 1
26.2 26.1.x 1.21.x
Folia Paper Purpur Spigot
12h ago 1
26.2 26.1.x 1.21.x
Folia Paper Purpur Spigot
12h ago 1
26.2 26.1.x 1.21.x
Folia Paper Purpur Spigot
12h ago 1
26.2 26.1.x 1.21.x
Folia Paper Purpur Spigot
12h ago 1
26.2 26.1.x 1.21.x
Folia Paper Purpur Spigot
12h ago 1
26.2 26.1.x 1.21.x
Folia Paper Purpur Spigot
12h ago 1
26.2 26.1.x 1.21.x
Folia Paper Purpur Spigot
12h ago 1
26.2 26.1.x 1.21.x
Folia
12h ago 1
26.2 26.1.x 1.21.x
Folia
12h ago 1
26.2 26.1.x 1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
26.2 26.1.x 1.21.x
Folia
12h ago 1
26.2 26.1.x 1.21.x
Folia
12h ago 1
26.2 26.1.x 1.21.x
Folia
12h ago 1
26.1.x 1.21.x
Folia
12h ago 1
26.1.x 1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Folia
12h ago 1
1.21.x
Bukkit Folia Paper Purpur Spigot
12h ago 1
1.21.x
Bukkit Folia Paper Purpur Spigot
12h ago 1
1.21.x
Folia Paper Purpur Spigot
12h ago 1
1.21.x
Folia Paper Purpur Spigot
12h ago 1
1.21.x
Folia Paper Purpur
12h ago 1
1.21.x
Folia Paper Purpur Spigot
12h ago 1
1.21.x
Paper Purpur Spigot
12h ago 1
[3.8.0] justRTP 3.8.0 by kotorinet on Oct 15, 2026
Download
[1] Fixed respawn RTP not working on Folia. Folia does not call the respawn events, so respawn_rtp never ran there. Players on Folia are now teleported once after they respawn, the same as on Paper. The option is in config.yml under respawn_rtp.

[2] Fixed cross-server RTP ignoring the destination server's radius. The lobby sent its own world radius with every request, so a destination set to max_radius: 2500 could place players more than 10,000 blocks out. The lobby now only sends a radius the player typed or one set by their permission group, and the destination server caps every incoming radius to the largest max_radius it allows for that world.

[3] Added a console warning when another plugin takes /rtp. After startup JustRTP names the plugin that owns /rtp, /jrtp, /wild or /randomtp. Set the new force-claim-aliases: true in commands.yml to let JustRTP take these commands back. Aliases set in the server's own commands.yml are never overridden, and /justrtp:rtp always reaches JustRTP.

[4] Fixed RTP GUI world buttons being hidden behind decoration items. A button in a slot that is also listed under decoration (for example slot 26) is now shown.

[5] Fixed a single invalid material stopping /rtp gui from opening. Blocks without an item form, such as WATER, are now shown as their item. Material names work in any case and with "minecraft:", and unknown names are logged with the menu entry and the name. GUI entries for worlds that are not loaded are logged as well.

[6] "Could not find a safe location" now explains the cause. When most attempts fail for one reason (no solid ground in a void or sky-island world, ungenerated chunks, excluded biomes, water or lava, protected regions), the console names the settings to change, and players with justrtp.admin see the same hint in chat. The cache pause warning includes the reason too.

[7] Added void_world.platform_block, off by default. In worlds set to VOID in world_types, a small platform of this block is placed under a player who would otherwise land with nothing below.

[8] Removed the unused PaperLib library from the plugin.

[9] Config version is now 57, messages version 30 and commands version 5. Existing values are preserved during the update.

On networks, set custom_worlds.<world>.max_radius on each destination server. If a rank should reach further on a destination server, add that permission group with its max_radius to the destination server's config as well.

[3.7.0] justRTP 3.7.0 by kotorinet on Oct 15, 2026
Download
[1] Fixed missing refunds after failed paid teleports. Search failures, search timeouts, cancelled or rejected teleports, disconnects and duplicate queue requests now refund the recorded Vault charge when economy.refund_on_fail is enabled. Each request settles once.

[2] Cancelling a search prevents its late result from teleporting the player after a refund. Once a teleport has started, its actual result determines whether the payment is refunded.

[3] Exceptions during teleport preparation and server teleports now complete the request as failed. Requests also finish when a player's scheduler retires. A successful move remains successful if the player disconnects before arrival effects run.

[4] Payment tracking records only money actually withdrawn. Failed refund deposits are logged with the amount owed and the player's UUID.

[5] Disabling the teleport queue during a reload now processes pending requests. A queue processing rate of zero no longer causes division by zero.

[6] Removed five duplicate zone-setup message keys that caused warnings when bundled messages were loaded or reloaded.

End teleports

[7] Fixed the teleport queue overriding dimension-specific attempts with the unused settings.max-attempts setting. Queued, direct and matchmaking searches now use the target dimension's limit unless an explicit limit is supplied.

[8] Added custom_worlds.<world>.attempts to override the search limit for one world. settings.attempts_end continues to control End searches without changing overworld or Nether limits.

[9] Failed-search logs report the actual attempt limit. CHUNK_NOT_GENERATED identifies missing chunks when generation is disabled; NO_SAFE_SURFACE identifies columns where the End search found no safe landing.

[10] New configurations use 100 End attempts and a search radius of 1,200 to 5,000 blocks from the configured center. End chunk generation is enabled by default. Keep the search area within the world border. Generation also applies to background cache fills; disable it if searches must remain in pre-generated terrain.

Permission groups

[11] Clarified group setup, inherited permissions, priorities, zero values, fallback settings and bypass permissions. Players need justrtp.group.<name>; a matching rank name alone does not grant membership. World entries use actual world names. Lower numeric priority wins for each setting, with missing settings falling back to the next matching group, world settings and global defaults. Existing precedence is unchanged.

Dashboard

[12] Added a built-in web dashboard configured in api.yml. Run /rtp api account to create a login. The panel includes server status, teleport statistics, worlds, zones, configuration controls and connected proxy servers.

[13] Teleport statistics are saved between restarts, including success rate, search attempts, daily activity and per-world totals.

[14] Dashboard accounts support permissions, hashed passwords, expiring sessions, login rate limits and an optional IP allowlist.

[15] Added optional deltura.net server registration and heartbeat. This integration is disabled by default.

Minecraft 26.3

[16] One release JAR supports the Paper 1.21.4 API baseline and Paper 26.3. The plugin is compiled for Java 21; run Paper 26.3 on Java 25. The Paper 26.3 API compatibility profile writes to a separate build directory and does not replace the release JAR.

Updating

[17] Existing configuration values are preserved. Set settings.attempts_end or custom_worlds.<world>.attempts as needed. For an unexplored End search area, enable location_cache.worlds.<world>.generate_chunks. Apply configuration changes with /rtp reload; restart the server after replacing the plugin JAR.

[18] Refunds cover charges made through JustRTP's Vault integration. A menu or script running eco take makes a separate charge that JustRTP cannot track. Remove that external deduction when using JustRTP's economy settings.

[19] Existing custom messages.yml files are preserved. If reload still reports duplicate zone-setup keys, keep one definition of each reported key in that file.
[3.6.9] justRTP 3.6.9 by kotorinet on Oct 15, 2026
Download
[1] Spamming /rtp no longer floods you with red "teleport in progress" lines. While a teleport is running the message is now shown at most once every 1.5 seconds instead of once per click.

[2] Fixed /rtp showing "unknown command" right after a server start on some Paper forks (seen on Pluto 26.2), where it only started working after a reload. JustRTP now re-registers the command once the server has fully started, so it works from the first join without a reload.
[3.6.8] justRTP 3.6.8 by kotorinet on Oct 15, 2026
Download
[1] Fixed the plugin not starting up when a claim plugin has a broken add-on. This showed up with SimpleClaimSystem when Pl3xMap was not installed, and it stopped JustRTP from enabling at all. Broken hooks are now skipped with a warning and the plugin starts normally.

[2] Fixed "no safe location" on tall worlds. The safety check was rejecting spots above y 255, so mountain and amplified worlds failed more than they should. Fixed.

[3] Fixed players getting stuck after a failed teleport. If the last step failed, the cost was not refunded and the player stayed "in progress" for 30 seconds. It now finishes and refunds properly.

[4] Fixed /rtp <world> when a player is named like a world. It could match an online player instead of the world. Now it matches the world.

[5] Fixed disabled worlds blocking other commands. In a disabled world you could not use /rtp confirm, queue leave, party or help. Now only actual teleports are blocked.

[6] Other plugins can now redirect the target world through PlayerRTPEvent. It was being ignored before.

[7] Small fixes from a player review: bad radius values like /rtp -5 500 are cleaned up, near-claim RTP only starts its cooldown after a successful teleport, and a couple of minor memory and edge-case issues.
[3.6.7] justRTP 3.6.7 by kotorinet on Oct 15, 2026
Download
[1] /rtp now works for everyone out of the box. The basic justrtp.command.rtp permission was op-only, so after installing or updating, normal players got "no permission" until you granted it in LuckPerms. It now defaults to true. The sensitive nodes stay op: teleporting to other worlds, to other players, across servers, and custom radius.

[2] Hardened the world redirects. rtp_world_overrides now resolves world aliases for its target and, if the target world has RTP disabled or does not exist, keeps you in your current world instead of making every /rtp fail. Cross-server GUI buttons that point at the server you are already on are hidden, since the command rejects a same-server hop and the button would be dead.

[3] first_world_rtp is more robust. If the teleport cannot find a spot it is retried the next time the player enters the world instead of being silently marked done, and it no longer teleports a player twice when first_join_rtp already sent them into the same world.

[4] Disconnect cleanup now runs once. A kick fires both the kick and the quit event, so the plugin was running its cleanup (and its database calls) twice for a single kick.

[5] Packet-hologram tracking writes are now serialised like the entity-hologram ones, so two zones saving at the same time on Folia cannot corrupt the tracking file and leave orphan holograms.

[6] Fixed and extended /rtp benchmark. The cache benchmark used to fall back to a live search on a cache miss and count that time as a cache serve, so under load it reported multi-second "cache" averages. It now measures only the cache-hit path and honestly reports the hit count (an empty cache shows "0 cache hits" instead of a fake number). The live benchmark is labelled Benchmark(live), the cache one Benchmark(cache), and a new "/rtp benchmark <world> both" runs both back to back for a side-by-side comparison.

[7] A paused background cache now recovers on its own. When a world fails to find a safe location several cycles in a row the cache still pauses it (so it stops hammering a world where nothing can be found), but instead of staying off until you run /rtp reload, it retries automatically after a cooldown. If it keeps failing the wait doubles each time up to a cap, so a genuinely misconfigured world backs off instead of spinning, and the moment it finds a spot again it resumes and logs that it recovered. The pause warning now tells you when the next auto-retry is. New location_cache.fail_world_retry_seconds (default 300) and fail_world_retry_max_seconds (default 1800). config-version 54.

[8] Flight no longer breaks the air-drop parachute. Creative fly and /fly plugins let a player float out of the descent and left the canopy rig behind. Flight is now turned off for the drop and restored exactly on landing (air_rtp.glide.block_flight, on by default). You can also list commands that are blocked while parachuting under air_rtp.glide.blocked_commands (fly and tempfly by default), which catches /fly plugins that flip flight on directly. config-version 55.

Verified locally with 200+ concurrent teleports, config auto-repair from an old version (values and comments preserved), and repeated reloads under load (hologram count stays put, no errors).
[3.6.6] justRTP 3.6.6 by kotorinet on Oct 15, 2026
Download
[1] New first_world_rtp option. It random-teleports a new player the first time they actually enter a world you list, instead of the moment they connect like first_join_rtp does. Handy when you want players to land at your spawn first and only get sent out once they step into the overworld. It fires once per world, only during a player's first session, and leaves already-established players alone. Off by default, bypass_delay controls whether the arrival warmup is skipped. config-version 51.

[2] The RTP GUI can now show cross-server buttons. The server_name field in the gui config was documented but never actually worked, so those entries silently vanished from the menu. A cross-server entry now renders when the proxy is on, the target server is one of your proxy.servers, and the player has justrtp.command.rtp.server, and clicking it sends them to that server with rtp <server>:<world>. Buttons that would not work (proxy off, unknown server, missing permission) are hidden instead of appearing dead. Regular local world buttons are unchanged.

[3] New rtp_world_overrides, BetterRTP-style per-world redirects. A plain /rtp with no world argument run inside a listed world now teleports the player in a mapped target world instead (for example /rtp in the End or Nether sends them into the overworld). It is the multi-world version of spawn_world_redirect and can be used alongside it. Typing /rtp <world> explicitly is always respected. Off by default, optional redirect notice. config-version 53.

[4] respawn_rtp can now target only players without a set spawn point. With only_without_spawn set, players who have a bed, respawn anchor or /spawnpoint respawn there as usual, and only players with no set spawn get random-teleported. Off by default, so existing setups behave exactly as before.

[5] Matchmaking queue now announces to the server when someone is looking for opponents. When a player joins the queue and still needs players, everyone gets a clickable message ("X is looking for a 2-player RTP match in world [Join] [Disable]"). [Join] drops them straight into the queue, [Disable] hides the announcements just for them (toggle back with /rtp queue broadcasts on, it is remembered per player). Nothing is sent when a join instantly completes a match, there is a per-player anti-spam cooldown, and the wording, colours and buttons are fully editable under matchmaking.broadcast in messages.yml. Off-switch and cooldown live in config.yml. config-version 52.

[6] Fixed zone holograms sometimes showing up twice. Three causes: a reload run in the first second after startup crashed the hologram cleanup (before its delayed init had finished) and left the old holograms behind while new ones spawned on top; the cleanup only knew about tracked holograms, so any orphan left by a crash or failed reload was never removed; and on Folia two zones saving their tracking at the same time could corrupt it. Now the cleanup loads its file on demand so an early reload is safe, every hologram spawn first sweeps away any stray hologram for that zone in the area, and all tracking reads and writes are serialised. Verified with repeated reloads: the entity count stays put instead of climbing.
[3.6.5] justRTP 3.6.5 by kotorinet on Oct 15, 2026
Download
[1] The search now learns the terrain of your world and stops re-checking areas it knows are bad. Every generated chunk is scored safe or bad into a coarse per-world map; once an area (like a large ocean) has proven mostly bad, rolls that land there are re-rolled before any chunk is generated. Landing spread stays exactly as configured, avoidance is just a fresh roll of the same shape. Unlike the short-term failed-area memory this learns from successes too and is saved to terrain-memory.dat, so it keeps improving across restarts, the background cache fill teaches it the whole reachable map over time and day two is faster than day one. Areas whose rules change (a biome un-blacklisted) recover on their own. New location_cache.terrain_memory block, on by default. config-version 50.

[2] Paid teleports now always refund when they don't happen. If the cost was taken but the teleport then failed (another plugin cancelled it), the player quit mid-search, or the request was a rejected duplicate, the money was silently gone. All of those refund now.

[3] /rtp nearclaim and /rtp nearplayer go through the same path as every other RTP. nearclaim was using a weaker safety check that could drop you in a claim, in lava, or on powder snow, and both skipped the normal arrival effects; they now get the full biome/region/hazard safety and the same effects, sounds and smooth landing.

[4] Fixed two rare cache races: two players could very occasionally be sent to the exact same block, and a slow background cache-fill on a heavy world could be wrongly restarted and run twice. Also hardened the air-drop parachute against a Folia region-boundary crossing mid-glide.
[3.6.4] justRTP 3.6.4 by kotorinet on Oct 15, 2026
Download
[1] Cached teleports are basically instant now. The cache keeps the chunks of the next few spots per world loaded (location_cache.warm_chunks, default 3 per world), so a cache hit no longer waits on a disk read. Went from around 47ms to 0.1ms in testing. The next spot also keeps a small 3x3 ring warm (head_radius), the whole thing runs off the main thread, and it scales down to almost nothing when the server is empty. If you want to verify it yourself: /rtp benchmark <world> cache. There is also an optional serve_trust_seconds to skip the safety recheck for freshly validated spots (off by default).

[2] The location search now runs DURING the teleport delay instead of after it. With delay 3 and a search that needs 2 seconds you used to wait 5, now you wait 3. Cancelled warmups put the found spot back into the cache. performance.prefetch_during_delay, on by default. config-version 46.

[3] Blocks load much faster when you land in fresh terrain. The plugin now pre-generates the area around the next cached spots in the background (warm_chunks.pregen_radius, default 3), so on arrival the chunks stream from disk instead of being generated live while you stare into fog. Skips already-generated terrain, pauses on low TPS. config-version 47.

[4] The search stopped wasting chunks. If the picked spot in a freshly generated chunk is unsafe (ocean, lava), it now checks up to 12 other spots in the same chunk before generating a new one (location_cache.chunk_scan_columns, 0 = old behavior). Cold searches dropped from ~1300ms to ~500-600ms.

[5] The search also remembers where it failed. Bad chunks and clusters of them are avoided for 15 minutes (location_cache.failed_area_memory), the dice are just rolled again, so the landing spread stays exactly as configured. Worst-case searches over ocean-heavy areas went from 5.4s down to about 2s and keep improving while the server runs. Cleared on reload. config-version 49.

[6] New optional smooth_transition.chunk_focus: narrows the player's send view distance for a few seconds after arrival so the terrain around them pops in sooner, then restores it. Off by default, test it with your view distance first.

[7] /rtp no longer sends you to the spot you are already standing on, or to one of your last six destinations. Those spots stay available for other players. And if literally every cached spot is one you recently visited (happens when you spam /rtp), you get the oldest one instead of waiting seconds for a fresh search.

[8] Powder snow no longer counts as safe ground, players used to sink in and freeze. The slow falling from smooth_transition now ends the moment you touch the ground, so jumping right after a teleport no longer feels floaty (air drops keep their parachute). Quiet servers also keep at least 8 learned spots per world cached.

[9] All five GUIs (dashboard, performance panel, world selection, zone browser, party) moved onto the shared JustAPI menu framework. Same layouts, same config keys, same behavior, about 700 lines less duplicated GUI code, and every menu gets the full anti-dupe protection (shift-clicks, hotbar swaps, drags, double-click collects). Zones and Performance opened from the dashboard now switch in place and their bottom button becomes Back. Sounds were compared menu by menu against the old versions: nothing doubled, nothing missing.

[10] The dashboard builds its items about 10x cheaper: one item-meta pass instead of three, and text is parsed once per config load instead of on every open. Looks and behaves exactly the same.
[3.6.3] justRTP 3.6.3 by kotorinet on Oct 15, 2026
Download
[1] New: Party RTP. One player leads a party and teleports everyone with one click. /rtp party opens a menu showing every member as their player head with live online status; the leader invites people by clicking heads in a built-in invite browser (the invite lands as a clickable ACCEPT/DENY message and expires on its own), kicks with a click, and picks in the settings screen how the party lands: spread around one shared spot, everyone on the exact same block, or each member on their own random spot, plus an optional air drop so the whole group arrives under parachutes. Switching between the party view, the invite browser and the settings happens inside one menu that never closes and reopens. The landing anchor is served from the location cache like any other /rtp and every member spot is safety-verified the same way matchmaking verifies its spread positions, so party teleports are as fast and as safe as solo ones. Leader cooldown and an optional Vault cost (refunded automatically if no location is found) are configurable under the new party block in config.yml, everything works from chat too (/rtp party invite/accept/deny/leave/kick/disband/teleport), and leadership passes on automatically if the leader leaves. config-version 44, messages-version 26.

[2] The live search can race several candidate spots at once, configurable as location_cache.parallel_candidates (1 to 4). One search chain is inherently sequential (whether try five happens depends on try four failing), so a bad streak pays one full chunk generation at a time no matter how many cores the CPU has; with 2 or more, independent chains run in parallel and the first safe spot wins, the attempt budget is split across the lanes, a losing lane's good spot goes into the location cache instead of being thrown away, lanes stop the moment the race is decided, and background cache refills always stay single-lane. The default is 1, the sequential search, because that is what measured faster: in cold-terrain A/B benchmarks the concurrent generations slowed each other down by more than the racing saved, making 2 and 3 lanes about twice as slow end to end on our test hardware. If your machine has generation headroom, try 2 or 3 and compare with /rtp benchmark on an ungenerated band; whichever wins on your hardware is the right setting.


[3] Elytras can no longer break air drops. A player wearing an elytra could open it mid parachute descent (and boost away with fireworks), escaping the drop entirely, force-loading chunks far from the landing spot and leaving the parachute rig behind in a broken state. Elytra gliding is now suppressed while the parachute is active, and a player who was already elytra-gliding when the drop starts has it closed. Configurable as air_rtp.glide.block_elytra (on by default).
[3.6.2] justRTP 3.6.2 by kotorinet on Oct 15, 2026
Download
[1] Failed teleports handle money correctly under all timings now. A failed search's economy refund always runs on the server's own thread (before, it could be called from a background thread, which risks corrupting balances in the economy plugin under load, especially on Folia). And when the same player ended up queued twice in the same instant, the losing request used to silently eat its withdrawn cost; it refunds now. The direct (non-queued) teleport path also stopped reading a config key that never existed, so attempts_nether and attempts_end finally apply there too.

[2] /rtp reload is safe while things are running. The cross-server poller no longer restarts against the old settings and then loses its database mid-poll (which threw an error every two seconds until the next reload if you toggled proxy mode off). On Folia, an in-flight search can no longer read a half-rebuilt block or biome blacklist during the reload and land somewhere it should not, and /rtp location no longer misses entries while the location list is being rebuilt. Starting the same pre-generation from the command and the performance panel at the same moment can no longer create a runaway second run that nothing could stop.

[3] The dashboard's in-place config editor and the web panel share one write lock now. Editing config.yml from both at the same time could end with one silently reverting the other's change; writes are serialized.

[4] Plugged two slow memory leaks in the web panel. The login rate limiter kept one entry per source IP address forever (an attacker rotating addresses could grow it without limit), and browser sessions that were simply abandoned were never cleaned out. Both are swept automatically now.

[5] Fixed cross-server zone sync being impossible to switch on. The zone_sync and aliases blocks were shipped nested under redis in config.yml, but the plugin reads them under proxy, so editing the shipped block did nothing. They now live under proxy where they belong, and the config updater moves existing configs over automatically (config-version 42).

[6] /rtp proxystatus tells the truth about Redis now. It read its connection, storage and pubsub details from config.yml paths that do not exist, so it always showed default values and an empty storage list; it now reads redis.yml and the real pubsub key.

[7] Messages, permissions and config cleanup. The near-claim cost check pointed at a message key that did not exist (players saw "Message not found" instead of the price), several world-not-found messages rendered a literal <worlds> placeholder instead of the actual world list, the zone-setup section of messages.yml carried five duplicate keys plus three orphaned sections (all removed), two help-menu entries filtered on permission nodes that differ from the ones the commands actually check, and /rtpaddon's permission is now declared in plugin.yml. Dead config blocks nothing reads are gone (redis storage-types, local-cache, fallback, instant_spawn_location), two misleading comments were corrected (the delay actionbar points at teleport.delay_actionbar now, and the countdown pitch table matches the real curve), matchmaking.safety_search_radius is documented, and api.yml is finally covered by the automatic config updater like every other file.
[3.6.1] justRTP 3.6.1 by kotorinet on Oct 15, 2026
Download
[1] Added a landing-distance message. After a random teleport JustRTP now tells you how far you landed from the world centre in straight-line blocks, so a /rtp <min> <max> result reads as in-range at a glance even when a single coordinate looks small (the distance is the diagonal, so X=-2880 Z=-13601 is 13903 blocks out and correctly inside a 10000-15000 request). It is on by default and configurable under effects.arrival_distance (turn it off or reword it), and the new <distance> placeholder also works in the title, action bar, boss bar and chat message if you would rather show it inline.

[2] Cross-server teleports use the cache now. A /rtp to another server used to always do a full live search on arrival, which was the slowest teleport of all. The destination server now serves it from that world's ready-location cache when it can, so arriving is close to instant. Falls back to a live search exactly as before when the destination world is not cached.

[3] Custom-radius teleports keep a small results pool. A /rtp <min> <max> whose band does not line up with the background cache used to search live every time. Now each result is remembered in a tiny per-world pool (separate from the normal cache, so it never affects plain /rtp), and a repeated or overlapping band is served from it instantly next time. Size is location_cache.custom_pool_size. For a fixed hot band (a rank's radius, a set warp), matching that world's fill_min_radius/fill_max_radius to it and pre-generating the ring still makes every request an instant hit.

[4] Matchmaking and RTP-zone group teleports use the cache too. The shared landing spot they pick for the group is a normal world-centred search, so it now serves from the cache like any other /rtp instead of always searching live (the individual spread around it still searches live, since that is centred on the group).

[5] Fixed the cache growing larger than needed. A custom-radius request that checked and put back a ready spot was being counted as if that spot had been used, which inflated the demand signal the smart cache sizes itself from. Only spots actually handed to a player count now.
[1] The safe-location search is a lot faster now, especially the first teleport into unexplored terrain. Every attempt used to generate a nine-chunk block and wait a couple of ticks, and its height lookup could stall the main thread loading a chunk it had already loaded. Now each attempt loads only the one chunk it checks and reads the height straight from it, so a search that took a few seconds lands in well under a second. This covers custom-radius teleports too. Ocean and lava spots are still rejected exactly as before.

[2] Custom-radius teleports use the cache now. A /rtp <min> <max> used to skip the ready-location cache and always search live. If a cached spot happens to fall inside the radius you asked for it is served instantly, otherwise it falls through to the faster live search. There is a switch for it, location_cache.serve_custom_radius, on by default.

[3] Fixed high overworld ground being thrown away. A leftover height cap rejected any spot at or above Y127 and even logged a scary "nether ceiling" error for it, so on 1.18+ terrain every hill and mountain wasted attempts and a mountainous area could fail outright. The overworld now uses the world's real build height, so you can land on a peak like anywhere else, and the false error is gone.

[4] The Nether and End use their own attempt counts again. Queued teleports read the wrong setting and always used the overworld number, so attempts_nether and attempts_end were quietly ignored on that path. They apply now, so sparse dimensions get the extra tries you configured.

[5] Pre-gen harvesting is gentler on the server. It pauses whenever TPS drops below the pre-gen floor, and the default cap is lower (the cache only needs a few dozen ready spots, not a couple hundred), so filling the cache while a pre-gen runs no longer piles chunk generation on top of chunk generation and drags TPS down. If your config still shows the old high cap you can lower pregen.harvest_max_per_world, but the TPS backoff already keeps it in check.

[6] Hardened the block blacklist. It accepts namespaced ids like minecraft:water as well as plain names, works on any server language, and quietly skips a bad entry instead of letting it get in the way.

[7] Steadier config and world handling. Merged config updates now apply on the very first start after an upgrade instead of needing a second restart, tested upgrading from 3.5.9 with your own values kept and the old file backed up. Worlds loaded after startup, for example by Multiverse, get their cache prepared without resetting everything else, and the background cache filler can no longer pile up duplicate workers or get stuck on a world.

Note on radius: /rtp <min> <max> places you that far from the centre as a straight-line distance, so a coordinate like -2641 can still be 5842 blocks out and correctly inside a 5000 to 6000 request. Only the SQUARE shape reaches into its corners past the max, which is by design.
[3.6.0] justRTP 3.6.0 by kotorinet on Oct 15, 2026
Download
[1] Added a built-in web panel. JustRTP now ships its own dashboard you can open in a browser, no extra software to install. Turn it on with a single switch in the new api.yml, run /rtp api account in-game to get a username and password, and open http://your-server-ip:port/ to sign in. The panel and its API are served from the plugin itself on one address, so there is no cross-origin setup and nothing to wire together.

[2] The panel gives you a real overview. A live status page with players online, server TPS, memory, active zones and cached locations, then teleport analytics: total teleports, success rate, average search attempts, matches formed, a seven day activity chart, and a breakdown of which worlds get used most. All of it is tracked automatically and saved to disk, so the numbers survive restarts and there is nothing to set up.

[3] You can change things from the browser, not just look. Edit each world's minimum and maximum radius and its teleport cost, and flip the common toggles (cooldown, delay, attempts, economy, the gui, first join and respawn RTP, matchmaking) straight from the Config panel. Saving reloads the plugin so it applies at once. Edits are limited to a safe whitelist of settings, so the panel can never write arbitrary keys.

[4] It sees your whole network. When MySQL is connected the Servers page lists every server on the network, with this one marked, so a proxy setup shows up in one place.

[5] It works on deltura.net too, no license key needed since JustRTP is free. You put your Discord ID in api.yml and the server shows up under your account on the website dashboard, next to your other plugins. When central-dashboard is on, the plugin sends only a small online heartbeat (Discord ID, API port, version); no player, teleport or account data ever leaves the server through it. Off by default.

[6] Ownership and access are handled for you. Set your Minecraft name as the owner in api.yml (or just let the first admin who runs /rtp api account claim it automatically) and that account is always a full admin, self-hosted or on deltura, so you cannot lock yourself out. Staff log in with a per-account password (PBKDF2 hashed, never stored in clear), failed logins are rate limited per IP, and sessions expire. What everyone else can do is set by groups in api.yml. There is also an optional IP allowlist and a server-to-server secret key for scripts.

[7] Fixed RTP sometimes taking a long time even when the cache was full. A cached spot that failed its last-second safety check used to fall straight into a slow chunk-generation search and throw the spot away, which also drained the cache faster than it refilled. Now it just tries the next ready spot first, so one stale entry no longer turns an instant teleport into a multi second wait.

[8] The location cache sizes itself now, and it learns. Instead of one fixed number for every world it looks at how many players are online, how fast spots are actually being used, and how much room the server has left (TPS and free memory), keeps a sensible buffer per world between a min and max you choose, and shrinks itself when the server is busy so background searches never fight with gameplay. On top of that it remembers good spots that real teleports find, so they can be reused. Every reused spot is still re-checked right before a player lands on it. It lives in the new location_cache.smart block and is on by default.

[9] Added Air RTP. Turn it on and players drop from the sky under a parachute and glide down to their landing, battle royale style. The canopy is a real display model that opens when it deploys and sways as you fall, and you steer with normal movement. Use it as /rtp air, or set an always mode per world so every /rtp becomes a sky drop. RTP zones can opt in with /rtpzone airdrop <zone>, and cross-server arrivals drop in too when the destination server has it enabled. All configurable in the new air_rtp block, off by default, and it has its own tile on the dashboard.

[10] Added a zone browser. /rtpzone gui, or the RTP Zones tile on the dashboard, lists every zone. Left-click to teleport to one, right-click to toggle its air drop.

[11] Trimmed idle load across the network and cache layers. Redis no longer pings the server on every single lookup, database and Redis work runs on its own thread pool instead of the shared one, MySQL and Redis both keep trying to reconnect if they were down when the server started, and a duplicate write plus an ineffective lock around zone sync were cleaned up. Nothing to change on your end.

[12] Made the whole plugin lighter under load. Zone hologram countdowns no longer re-parse their text every second (that was the single biggest thing on the profiler), holograms nobody is looking at do no work at all, the teleport queue stopped scanning its whole backlog on every command and can drain a rush of players faster, per-teleport config lookups got cached, zones are looked up by world instead of scanning every zone on every step, and the location search skips a wasted tick per attempt on Paper.

[13] Added world pre-generation. Build the chunks in an area ahead of time so RTP never has to generate terrain at teleport time, which is the usual reason a first teleport into an unexplored area is slow. Use /rtp pregen with a square, circle or ring shape (ring builds only the outer band you actually land in) and a radius, pick adaptive (pauses when TPS dips) or steady mode, and watch live progress. It skips chunks that are already generated, so re-running over ground you have explored is nearly instant and it never redoes finished work, and it harvests verified safe spots into the cache while it runs so the first teleports into a fresh area are instant. It paces itself and stops cleanly if the world unloads.

[14] Added a performance panel. /rtp performance shows live TPS, memory, cache and queue numbers, runs a real search benchmark so you can see how fast RTP is in a world, and opens the pre-gen controls. You type radius values (the benchmark band, the pre-gen radius and inner radius) straight into chat, and finished runs are saved so you can review them later. It is also a tile on the dashboard.

[15] Fixed teleports landing you in powder snow. The safety check only looked at the block under your feet, so a spot with solid ground but powder snow (or fire, a berry bush, a wither rose, a cobweb, a portal) at foot or head height slipped through and you sank in. Those are all rejected now, and pointed dripstone and sculk shriekers were added to the unsafe list too.

[16] Fixed the cache being skipped for players whose radius differs from the world default (a permission group, say), which was making every /rtp do a slow live search even with a full cache. A ready spot is now served as long as it falls inside that player's own min and max, and spots that do not fit are put back rather than thrown away. The default cache size is now 20.

[17] Added six RTP distribution shapes: ROUND (the classic even spread), SQUARE, RING (land far out), CROSS, STAR and SPREAD (more central). Set it globally in rtp_settings.shape, per world under custom_worlds, or from the dashboard.

[18] The pre-gen panel hands you a live map that fills in with colour as chunks generate, so you can watch coverage grow across the area and see exactly what is done.

[19] Made the safe-location search a lot faster, especially the first teleport into unexplored terrain. Every attempt used to generate a nine-chunk block and wait a couple of ticks, and its height lookup could stall the main thread loading a chunk it had already loaded. Now each attempt loads only the one chunk it checks and reads the height straight from it, so a search that took a few seconds lands in well under a second. Ocean and lava spots are still rejected exactly as before. Nothing to configure.

[20] Config files update themselves cleanly. Drop in a new version and every new option is merged into your existing files, the old file is backed up first, your own values and custom entries are kept, and the new settings apply on the very first start instead of needing a second restart. The dashboard also picks up newly added modules, like Air RTP, on its own.

[21] Steadier under awkward conditions. Worlds loaded after startup, for example by Multiverse, now get their cache prepared without resetting everything else, and the background cache filler can no longer pile up duplicate workers or get stuck on a world.
[1] Made world permissions actually controllable, in the gui and the command alike. Before, the gui checked a node the command never used (so regular players saw an empty menu full of filler glass), while /rtp <world> let everyone through unless a node was explicitly denied, so restricting worlds per group never really worked. Both now follow one clear rule: the world you are standing in is always available, justrtp.command.rtp.world unlocks every world, and justrtp.command.rtp.world.<world> (for example justrtp.command.rtp.world.world_nether) unlocks exactly that one, which also makes it appear in the gui. An explicit denial of justrtp.command.rtp.<world> still always wins. The gui shows exactly what the player can use, nothing more, and the docs got a full section with LuckPerms examples.

[2] Closed a paid teleport loophole. If a payment confirmation was still pending, the next /rtp request (or gui click) skipped the confirmation entirely and started right away, without ever charging the player. A new paid request now always asks for its own confirmation and replaces the old one, and each confirmation keeps its own full 30 second window.

[3] Fixed zone particles turned off with /rtpzone particles <id> none coming back after a reload or restart. Choosing none was never written to rtp_zones.yml, and a zone without a saved style falls back to the default style on load, so the particles quietly returned. The choice is stored explicitly now and none stays none.
[3.5.9] justRTP 3.5.9 by kotorinet on Oct 15, 2026
Download
[1] A broken config.yml can no longer wreck your settings. Until now, if you saved a config with a YAML mistake in it, /justrtp reload would log an error to the console but then happily report success in game while quietly running on the plugin's default settings, which looked exactly like JustRTP resetting itself. Now the file is checked before it is applied: if it does not parse, your previous settings stay active and you get told in game and in the console which line the error is near, so you can fix it and reload again. The config updater got the same guard, so updating the plugin with a broken config file leaves your file untouched instead of overwriting it with defaults.

[2] Fixed the /rtp gui menu popping back open when you click. The menu was being closed inside the click itself, which races the client and makes the window reopen instead of teleporting you. Clicks are handled cleanly now: pick a world and you teleport, hit close and it closes. The menu is also properly fenced off, so clicking around in your own inventory while it is open can no longer accidentally trigger a teleport, and other chests can never get mixed up with it. On top of that, three settings that were always in the config finally do something: the open and click sounds actually play, and auto_refresh_ticks live-updates the cooldown and cost lines on the world buttons while the menu is open, updating the items in place without any flicker.

[3] Fixed End teleports landing players inside terrain on height boosted End worlds like Nullscape. The End search assumed the vanilla height and never looked above Y 120, but Nullscape raises the End to 384, so the scan started inside the landmass and the first air pocket it accepted could be a sealed cave deep inside a mountain of end stone. The whole pipeline follows the world's real height now, not just the search: the safety validators and zone RTP had their own hardcoded 120 caps that would have thrown away the good spots the new search finds, and those are gone too. Anything below the surface needs proper headroom before it counts as safe, so a porous landmass can never swallow a player into a two block pore. Vanilla End behavior is unchanged.

[4] Fixed the overworld check rejecting mountain tops. A leftover from the old height limit meant any spot above Y127 was thrown away and searched again, so on 1.18+ terrain every jagged peak wasted attempts and a mountainous radius could fail entirely. The ceiling is the world's real build limit now, so you can land on top of a mountain like anywhere else.

[5] Reworked how sound names are read from configs. The old resolver leaned on an API that newer server builds ship differently, which showed up in error trackers as IncompatibleClassChangeError and could leave configured sounds silently unplayed. Sound names now map to their real registry entry and play through the API that has been stable for years, so both enum style names like BLOCK_NOTE_BLOCK_PLING and key style names like block.note_block.pling just work, on every supported version. Zone particle styles got the same treatment and survive future renames instead of quietly turning into END_ROD.

[6] Hardened item handling against other plugins' leftovers. An item with a corrupted data patch written by another plugin could make the zone wand check blow up with a NullPointerException deep in the server internals, and dropping a wand at the exact moment of a teleport on Folia could trip a cross region error. Both are guarded now: broken items are simply treated as not a wand, and the drop is handled safely no matter which region owns it.
[3.5.7] justRTP 3.5.7 by kotorinet on Oct 15, 2026
Download
[1] Fixed a teleport getting stuck. If you ran /rtp to a world, then ran /rtp to another server, came back, and every /rtp after that said a teleport was already in progress until the server restarted, that is gone. Your teleport state now gets cleared when you leave, get kicked, or get sent to another server, so coming back leaves you free to RTP straight away.


[2] Added a safety timeout on top of that. Even if a teleport gets stuck for some other reason, the lock now releases itself after a set time instead of holding forever. You can tune it with performance.processing_timeout_seconds in config.yml, and the default of 30 seconds is fine for most servers.


[3] Cleaned up a couple of related leftovers. A pending paid teleport confirmation is now dropped when you disconnect instead of lingering, and the matching teleport state is tidied up on quit and kick as well.


[4] Checked it all still runs clean on the latest builds. 1.21.11, 26.1.2, and 26.2 work, and MySQL and Redis behave the same across them since they talk to your database, not to the game version.


[5] Made cross server teleports land smoother.
[3.5.6] justRTP 3.5.6 by kotorinet on Oct 15, 2026
Download
[1] JustRTP now runs across Minecraft 1.21.11 up to 26.2, on Paper, Spigot and Folia. It loads the same as before, nothing for you to change.

[2] Fixed the particles that swirl around RTP zone holograms not showing on newer versions. Particle and sound names in your configs are now read in a way that keeps working as the game renames things, instead of silently breaking on a future update.

[3] Did a deep pass on memory and stability. A handful of background tasks used to quietly stack up every time you ran /rtp reload, the teleport queue, the location cache refill, the database and redis keepalives, and the hologram timers. On servers that reload a lot this slowly ate up CPU and memory over time. They are all tracked and stopped properly now, so reloading stays light no matter how many times you do it.

[4] Cleaned up per-player data that was never being cleared. Cooldowns and small tracking bits for the GUI, spectator switch, near-claim and jump RTP used to linger for every player who ever joined and grow forever on long-running servers. They now get pruned when players leave or their cooldown runs out, so memory stays flat.

[5] Tightened up Folia safety. Cross-server transfers, the delay particle animation, and the packet hologram visibility checks now run on the correct thread, which clears out a class of async-access errors and the odd dropped cross-server transfer under load.

[6] Trimmed wasted work on busy servers. The plugin no longer re-reads mysql.yml from disk on a timer, no longer re-parses the whole config every time a world loads, and the chatty zone-teleport search logging only shows when debug is turned on.

[7] Made /rtp a lot faster. The plugin keeps a small stash of ready safe spots in the background, but until now it was filling that stash and never actually using it, so every single /rtp searched the world from scratch. It pulls from the stash now, so on worlds with the location cache turned on a teleport is close to instant. If the stash happens to be empty, or the spot wouldn't fit your rank's radius, it quietly searches live like before, so nobody ever lands somewhere they shouldn't.

[8] Trimmed the search itself too. When it finds a spot it no longer loads the same chunk a second time to re-check it, it stops looking up the same settings over and over mid-search, and it skips building debug text unless you actually have debug turned on. Where you land doesn't change at all, it just gets there with less work per attempt.
[3.5.5] justRTP 3.5.5 by kotorinet on Oct 15, 2026
Download
[1] JustRTP works with AxoHologram now, the same way it already worked with FancyHolograms. Drop AxoHologram on your server and your RTP zone holograms can render through it, no setup, nothing to wire up. If you don't run a hologram plugin at all, JustRTP still falls back to its own display entities like always.

[2] You don't have to pick an engine yourself. On startup JustRTP looks at what's installed and goes with the best one it finds, FancyHolograms first, then AxoHologram, then PacketEvents, then plain display entities. If you'd rather lock it to one, set preferred-engine in holograms.yml to whichever you want.

[3] Your hologram lines don't change. AxoHologram draws the exact text you already have in holograms.yml, with full MiniMessage and per-player PlaceholderAPI, so your gradients, colours and the countdown look the same as before. JustRTP handles the zone holograms start to finish, so you won't get duplicates or stray ones left behind after a restart.

[4] It doesn't care which Java you're on. Whether your server runs Java 21 or Java 25, the AxoHologram link just works.

[5] There's an admin dashboard now. Type /rtp dashboard and a menu opens with every JustRTP feature laid out as an icon, a green dot if it's on and a red dot if it's off. It's staff only, behind justrtp.command.dashboard which is op by default.

[6] Left-click a module to flip it on or off. The change saves and reloads right then, and the menu doesn't close on you, the icon just updates in place so you can keep working down the list.

[7] Right-click a module to open its settings. The on/off switch sits at the top and the values that matter for that feature are below it, stuff like the Jump RTP cooldown, the matchmaking team size, the economy cost or the near-player radius.

[8] True or false settings flip with a single click, no typing. For numbers and text the menu steps aside and lets you type the new value in chat, and you can type cancel any time to back out. Once you're done it saves and drops you back into the same screen with the new value showing.

[9] Pretty much everything is in there. Location cache, teleport queue, smooth transition, the RTP GUI, spectator switch, Jump RTP, near-player, near-claim, matchmaking, first-join RTP, respawn RTP, spawn redirect, the zone countdown title, the /rtpzone command, economy, the cross-server proxy, redis, the update checker and debug logging, plus a General tile for your cooldown, delay, attempts and region-claim setting.

[10] Your config.yml keeps everything you wrote. When the dashboard saves a change it finds the one line it needs and edits just that line, so all your comments and formatting stay exactly where they were, nothing gets reformatted or wiped. If it can't find a setting it tells you in chat and leaves the file alone.

[11] It won't switch on anything risky for you. Economy, the cross-server proxy and redis stay off until you turn them on yourself, since those need Vault, MySQL or Redis set up first. You can still manage all of them from the menu, it just won't enable them behind your back.

[12] A few things need a restart and the dashboard says so. The proxy, redis and the update checker get a little restart marker, and when you turn one on it saves straight away but reminds you a restart is needed before it fully kicks in. Everything else takes effect live.

[13] Jump RTP turns on and off without a restart now, whether you do it from the dashboard or with /rtp reload. Before, that one needed a full restart to take hold.

[14] The console gives you a quick rundown on startup. Right under the JustRTP banner there's a Dashboard line and a two-column list of every module with a check or a cross next to it, and a restart marker where it applies, so you can read your whole setup straight from the log.

[15] Upgrading is painless. Drop in the new jar and your settings carry over. New options get added to your configs on their own, your old files are backed up first, and config.yml is never regenerated, so your comments and layout stay put.

[16] Works on Paper 1.21.11, 26.1.x and Folia, same as always, and it's fully Folia-safe.
[3.5.3] justRTP 3.5.3 by kotorinet on Oct 15, 2026
Download
### CRITICAL FIXES
[1] TPS dropping to ~10 immediately after installing the plugin on Paper 26.1.2. The location cache was hammering chunk generation: shouldGenerateChunks default in 3.5.2 was true and the fill worker had no throttle. Default reverted to false (chunk generation now opt-in per world)
[2] Sustained TPS drop after 3.5.2 upgrade traced to background cache filling for world_the_end with generate_chunks: true. End chunks are sparse and unexplored — every cycle generated dozens of chunks. Default for End flipped to generate_chunks: false
[3] HologramManager startup sweep was iterating every loaded chunk in every world. Replaced with targeted lookup of known hologram UUIDs from display_entities.yml
[4] PacketHologramManager particle task fired every 10 ticks even when no holograms existed. Now early-returns on empty
[5] smooth_transition preload was hardcoded to generate chunks (PaperLib.getChunkAtAsync(.., true)). Now non-generating by default; the actual teleport still loads/generates the destination. Configurable via smooth_transition.generate_chunks
[6] smooth_transition.chunk_preload_radius default lowered from 2 (5×5 = 25 chunks) to 1 (3×3 = 9 chunks)
[7] Cache refill worker now throttles between successive fills via new location_cache.fill_throttle_ticks (default 10)
[8] Background cache for a misconfigured world no longer retries forever. New location_cache.fail_world_disable_after_attempts (default 3) disables cache for a world that fails N consecutive cycles. Re-enable via /rtp reload after fixing config
[9] JumpRTPListener no longer reads YAML on every PlayerMoveEvent. ConfigManager caches jump_rtp.enabled and jump_rtp.enabled_worlds as fields populated on reload. New helper isJumpRtpEnabledInWorld(worldName) does one HashSet lookup per move

### CONFIG
[10] New location_cache.fill_throttle_ticks (default 10)
[11] New location_cache.fail_world_disable_after_attempts (default 3)
[12] New smooth_transition.generate_chunks (default false)
[13] world_the_end.generate_chunks default changed from true to false in location_cache.worlds
[14] smooth_transition.chunk_preload_radius default lowered to 1
[15] location_cache.cache_size and location_cache.refill_interval_seconds keys exposed in defaults

### COMPATIBILITY
[16] Verified on Paper 26.1.2, Paper 1.21.11, Folia 1.21.x, Folia 26.1.x.

### FOR SERVER ADMINS
  • If you saw sustained low TPS after installing 3.5.2 or earlier 3.5.3 — this build fixes it. No config edits required
  • Want background cache for a specific world? Set location_cache.worlds.<world>.generate_chunks: true explicitly
  • End RTP still works on demand (per /rtp world_the_end command). The change only affects passive background pre-caching
  • If a misconfigured world keeps spamming "Failed to find a safe location" warnings, the cache will now auto-disable for that world after 3 cycles. Fix the config and /rtp reload to re-enable
[3.5.2] justRTP 3.5.2 by kotorinet on Oct 15, 2026
Download
### NEW FEATURES
[1] Smooth teleport transition: pre-loads destination chunks plus short blindness/slow-falling/resistance so players don't see void. Configurable via smooth_transition block

### CRITICAL FIXES
[2] Nether RTP failing with UNKNOWN: 50 — air check now uses Material.isAir() so CAVE_AIR and VOID_AIR match
[3] Shutdown crash IllegalPluginAccessException — FoliaScheduler runs one-shots inline when the plugin is disabled
[4] End RTP failing on unexplored chunks — world_the_end added to default location_cache, and shouldGenerateChunks default flipped to true
[5] /rtp world getting stuck on the cross-server queue when a server alias matched a local world name — parser now checks worlds first
[6] Action bar showed 1m 22ss — removed trailing s, formatDuration already includes the unit
[7] Empty "" lines in chat_message are no longer skipped
[8] <x> <y> <z> <world> <player> placeholders work in effects.title, effects.action_bar, effects.chat_message
[9] PlaceholderAPI placeholders (e.g. %rp_left_click%) now expand in RTP GUI items
[10] RTP GUI close button can be removed cleanly (enabled: false, missing slot, or empty section)
[11] RTP GUI decoration items honor enchanted: true
[12] smooth_transition and zone_title auto-apply to existing installs — config-version bumped to 33
[13] zone_particles.yml is now registered with ConfigUpdater so future fields migrate automatically

### IMPROVEMENTS
[14] effects.teleport_delay_bar.text from config.yml now beats teleport.delay_actionbar from messages.yml
[15] Title and action bar effects no longer return early on whitespace-only text
[16] zone_particles.yml updated

### FROM PULL REQUEST #10
[17] Folia chunk-ticket and chunk.getEntities() calls in PlayerListener now wrapped in runAtChunk
[18] DatabaseManager.isConnected() is non-blocking — volatile flag, async 30s validator, reconnect-storm guard
[19] JustRTP.onDisable null-safe when rtpLogger failed to init
[20] AnimationManager double-recreation removed from reload — active animations preserved
[21] RTPMatchmakingManager.restart() called from reload, plus Math.max(1, tick_interval) clamp
[22] processMatch fallback uses the verified-safe central location instead of the unverified offset point
[23] Rich /rtp queue status — position, waited time, ready indicator, other-world queues
[24] Global zone_title config block — default countdown title for all zones
[25] <time> placeholder works in zone main_title too
[26] DataManager lazy init rewritten with volatile + DCL

### CONFIGURATION
[27] New smooth_transition block in config.yml
[28] New zone_title block in config.yml (PR #10)
[29] New matchmaking.status_* keys in messages.yml (PR #10)
[30] world_the_end added to default location_cache.worlds
[31] shouldGenerateChunks default flipped to true
[32] zone_particles.yml registered with ConfigUpdater
[33] config.yml v33, messages.yml v21

### COMPATIBILITY
[34] Verified on Paper 1.21.11, Paper 26.1, Folia 1.21.x, Folia 26.1

### FOR SERVER ADMINS
  • Nether UNKNOWN: 50 and "Pausing searches" — fixed
  • Shutdown IllegalPluginAccessException — fixed
  • /rtp world stuck on queue — fixed
  • Smooth transition is on by default; disable with smooth_transition.enabled: false
  • PAPI now works in RTP GUI items
  • <x> <y> <z> placeholders work consistently across title, action bar, and chat messages
[3.5.1] justRTP 3.5.1 by kotorinet on Oct 15, 2026
Download
### NEW FEATURES
[1] **NEW FEATURE**: Cylinder RTP zones - circular zone regions for round arenas, towers, and non-rectangular waiting areas
[2] **NEW FEATURE**: Block-selection RTP zones - pick individual blocks with a wand to build irregular, non-cubic arena shapes
[3] **NEW FEATURE**: Shape-aware zone wands - each shape gets its own wand (BLAZE_ROD for cuboid/blocks, END_ROD for cylinder) with shape-specific lore
[4] **NEW FEATURE**: Zone particle system - 5 premade animated styles (OUTLINE, BEAM, SWIRL, PULSE, DUST_WALL) plus NONE, all shape-aware
[5] **NEW FEATURE**: Live setup particle preview - while in /rtpzone setup, particles show the current selection in real time so admins can see exactly what they're building
[6] **NEW FEATURE**: Per-zone particle style configurable via /rtpzone particles <zone_id> <style> with tab completion
[7] NEW: /rtpzone setup <id> [cuboid|cylinder|blocks] - choose zone shape at setup time (defaults to cuboid for backward compat)
[8] NEW: /rtpzone done - finish block selection and continue setup flow
[9] NEW: Cylinder setup - left-click sets center, right-click on edge measures radius, or type radius in chat; Y-range configurable per zone or auto for full world height
[10] NEW: Block setup - left-click adds block, right-click removes, shift+left-click clears selection
[11] NEW: New zone_particles.yml config with per-style particle, color, density, and animation speed settings

### CRITICAL FIXES
[12] **FIXED**: respawn_rtp not working on Folia - PlayerRespawnEvent fires during a player state transition on Folia and returns stale world data, causing the respawn teleport to never trigger. Switched to PlayerPostRespawnEvent (Paper API) which fires after respawn completes, ensuring reliable respawn RTP on both Paper and Folia servers
[13] **FIXED**: Zone holograms not appearing after server restart, player rejoin, or world change - visibility was only pushed once at hologram creation, missed if timing did not line up with player join. Added a periodic 5-second visibility sweep over all online players plus three staggered join refreshes (1s, 3s, 6s after join). Holograms now appear without needing /rtp reload.
[14] **FIXED** (PR #9): Folia thread-safety violations across NearClaimRTPManager, HologramManager cleanup, JumpRTPListener, RTPService border tracking, and bundled bStats Metrics. Async block reads, off-region entity removals, parallel HashMap writes, and hardcoded Bukkit.getScheduler() calls all corrected for Folia 1.21.x and 26.1
[15] **FIXED** (PR #9): Matchmaking spread distance bug - per-player safety search was passing absolute coordinates as min/max radii, scattering duel partners hundreds of blocks apart on servers with non-zero spawn coords. Fixed to pass proper (0, safety_search_radius) distances
[16] **FIXED**: RTPCommand nearplayer was using synchronous player.teleport() while every other path used teleportAsync - inconsistency causing potential hangs on Folia, now async everywhere

### COMPATIBILITY
[17] **COMPATIBILITY**: Minecraft 26.1 (released March 24, 2026, protocol 775, data version 4786) verified working alongside 1.21.11. Plugin compiled against Paper 1.21 API with api-version: '1.21' so a single JAR runs on both versions. No code changes needed - new 26.1 blocks (e.g., GOLDEN_DANDELION) and data-driven villager trades do not affect teleport logic. Server-side Java 25 requirement for 26.1 does not affect the plugin (Java 21 bytecode runs on the Java 25 JVM)

### CONFIGURATION
[18] NEW: shape field on zone config entries - CUBOID, CYLINDER, or BLOCKS
[19] NEW: Cylinder fields - center, radius, min-y, max-y
[20] NEW: Blocks field - blocks: [x,y,z, ...] list of block coordinates
[21] NEW: particle-style field per zone - persists chosen particle style across restarts
[22] NEW: zone_particles.yml - 5 premade styles + global tuning (update_interval, render_distance, max_particles_per_tick, setup_preview)
[23] NEW: matchmaking.safety_search_radius (default 5) - tunable safety search radius for matchmaking spread (PR #9)
[24] CONFIG: rtp_zones.yml version bumped to 13 - existing cuboid zones auto-migrate without changes
[25] CONFIG: messages.yml version bumped to 21 - new zone setup messages for cylinder/block modes and particle commands

### IMPROVEMENTS
[26] IMPROVED: Particle system uses chunk-batched dispatch on Folia (one task per chunk instead of per particle) and direct inline spawning on Paper - no scheduler overhead in either case
[27] IMPROVED: Particle Y-range automatically clamped to a window around the zone center, so auto Y-range cylinders/cuboids no longer waste the per-tick particle budget on locations far below the player's view
[28] IMPROVED: Zone region logic refactored to a ZoneRegion interface - cleaner separation of cuboid/cylinder/blocks containment checks
[29] IMPROVED: Tab completion for /rtpzone setup <id> <shape>, /rtpzone done, and /rtpzone particles <zone> <style>
[30] IMPROVED: Respawn RTP scheduler delay bumped from 1 to 2 ticks for extra entity state stability
[31] IMPROVED: Early-return safety check added to respawn RTP handler when player goes offline during the delay
[32] IMPROVED: Zone setup messages carry a <shape> placeholder so admins can see which shape they started
[33] IMPROVED (PR #9): JumpRTPListener atomic via ConcurrentHashMap + compute(...) - parallel PlayerMoveEvent on Folia no longer races
[34] IMPROVED (PR #9): RTPService border-warning set is now ConcurrentHashMap.newKeySet() - prevents duplicate border warnings under parallel findSafeLocation
[35] IMPROVED (PR #9): Tab completer now exposes queue, matchmaking, sendlocation plus their sub-args and world suggestions
[36] IMPROVED: Existing zones loaded without particle-style field automatically pick up the global default style on next reload

### FOR SERVER ADMINS
  • Existing cuboid zones continue to work unchanged (auto-detected when shape is missing)
  • Circular arenas: /rtpzone setup my_arena cylinder
  • Non-cubic arenas (stairs, L-shapes, scattered platforms): /rtpzone setup my_arena blocks
  • All three shapes share the same teleport, hologram, particle, and effects system
  • Change zone particles live: /rtpzone particles my_arena swirl (or outline, beam, pulse, dust_wall, none)
  • If you run Folia/Canvas and respawn_rtp wasn't teleporting players on death, this update fixes it
  • Holograms missing on restart/rejoin/world change? Fixed in this version - no more /rtp reload workaround needed
  • Matchmaking duels scattered too far apart? Fixed - and tunable via matchmaking.safety_search_radius
[3.5.0] justRTP 3.5.0 by kotorinet on Oct 15, 2026
Download
### NEW FEATURES
[1] **NEW FEATURE**: Void World RTP Support - new VOID world type for skyblock, oneblock, and void arena worlds
[2] NEW: void_world.spawn_y config option (default: 64) - configurable Y level for void world spawns when no solid ground exists
[3] NEW: Void worlds prefer solid ground when available (platforms, islands) and fall back to spawn_y only when the world is truly empty
[4] NEW: Full biome restriction and region protection support in void worlds

### CRITICAL FIXES
[5] **FIXED**: Inventory drag exploit affecting ALL server GUIs
[6] **FIXED**: Folia threading violation in onPlayerDropItem - accessing ItemEntity state from wrong region thread caused IllegalStateException on Folia/Canvas servers. Now checks setup mode first (skips entity access for 99.9% of events) with safe fallback for cross-region edge cases

### IMPROVEMENTS
[7] IMPROVED: Update checker endpoint issue fixed
[8] IMPROVED: Void world spawn Y is bounds-checked against world min/max height to prevent out-of-bounds errors
[9] IMPROVED: SafetyValidator correctly skipped for void world locations to prevent false rejections

### CONFIGURATION
[10] CONFIG: New VOID option in world_types section - set any world to "VOID" for void world RTP support
[11] CONFIG: New void_world section with spawn_y setting for void world spawn height
[12] CONFIG: All changes fully backward compatible
[3.4.8] justRTP 3.4.8 by kotorinet on Oct 15, 2026
Download
[1] Fixed "unknown world" console errors on startup - ConfigUpdater now reads config-version via plain text instead of triggering Bukkit Location deserialization on rtp_zones.yml and cache.yml
[2] Fixed hologram text changes in holograms.yml not applying after restart or reload - FancyHologramManager was preserving old persistent data instead of reading updated config
[3] Fixed hologram templates not reloading on /rtp reload - reloadTemplates() now applies config changes to all active FancyHolograms immediately
[4] Added text-based version update for files containing serialized Bukkit objects (rtp_zones.yml, cache.yml) to prevent Location deserialization errors during config migration
[5] Improved FancyHologram lifecycle - holograms.yml is now the single source of truth for templates on create, load, and reload
[6] Fixed /rtp command showing usage message instead of working - alias enabled check defaulted to false, breaking all aliases when commands.yml was missing, empty, or failed to load
[3.4.7] justRTP 3.4.7 by kotorinet on Oct 15, 2026
Download
[1] **SECURITY FIX**: GUI Item Extraction Exploit - Players can no longer drag items from GUI during lag
[2] **SECURITY**: Comprehensive inventory drag event protection with multi-layer validation
[3] **SECURITY**: Enhanced click protection - blocks shift-click, hotbar keys (1-9), and all interaction types
[4] **NEW FEATURE**: Console-Initiated RTP Message - Custom message when console/portal executes RTP
[5] **NEW**: teleport.console_initiated message key for automated RTP systems
[6] **NEW**: Full support for command blocks, portals, and automated teleportation
[7] **FIXED**: Race condition in matchmaking queue join - synchronized queue size reading
[8] **FIXED**: NPE prevention in async teleport chains - added player online checks
[9] **IMPROVED**: GUI security with InventoryDragEvent handler blocking all drag attempts
[10] **IMPROVED**: Click validation checks inventory type, shift-click, and hotbar button presses
[11] **IMPROVED**: Debug logging for security events - tracks all blocked GUI interactions
[14] **MESSAGES**: Added console_initiated key for portal/console RTP notifications
[15] **THREAD SAFETY**: NPE-safe async chains with online status validation
[16] **COMPATIBILITY**: Fully backward compatible - all security fixes are transparent
[3.4.6] justRTP 3.4.6 by kotorinet on Oct 15, 2026
Download
[1] **NEW FEATURE**: Economy Refund System - Players automatically refunded if RTP fails after payment
[2] **NEW FEATURE**: RTP Matchmaking Queue - Players can queue together for PvP duels (1v1, 2v2, etc.)
[3] **NEW FEATURE**: Console Send Location Command - Admins can teleport players to specific coordinates
[4] NEW: economy.refund_on_fail config option (default: true) - enables automatic refunds on failure
[5] NEW: Complete matchmaking system with /rtp queue join/leave/status commands
[6] NEW: /rtp sendlocation <x> <y> <z> <world> <player> admin command for precise teleports
[7] NEW: Matchmaking configuration section with team_size, spread_distance, tick_interval, queue_timeout
[8] NEW: VaultHook.depositPlayer() method for economy refunds
[9] IMPROVED: Economy system now handles failed teleports gracefully with automatic refunds
[10] IMPROVED: Players can find dueling partners via matchmaking queue system
[11] IMPROVED: Admins have more control with direct coordinate teleportation
[12] CONFIG: New matchmaking section with full queue configuration options
[13] CONFIG: New economy.refund_on_fail option for failed RTP refunds
[14] MESSAGES: Added 14+ new message keys for matchmaking, refunds, and sendlocation
[15] PERMISSIONS: New justrtp.command.rtp.matchmaking permission for queue access
[16] PERMISSIONS: New justrtp.bypass.default_world permission added
[17] COMPATIBILITY: Fully backward compatible - all new features are optional
[3.4.5] justRTP 3.4.5 by kotorinet on Oct 15, 2026
Download
[1] **NEW FEATURE**: Auto-open GUI option - /rtp can now automatically open the GUI instead of direct teleport
[2] **IMPROVED**: Disabled by default to preserve traditional /rtp behavior
[3] **FEATURE**: Hub servers can force players to choose worlds visually via auto-open GUI
[4] **FEATURE**: Traditional /rtp <world> commands still work for direct teleportation
[5] **FEATURE**: Added command alias support – /rtp base can now be configured as an alternative command
[6] **FEATURE**: WorldGuard support for /rtp nearclaim – allows RTP near protected regions
[3.4.4] justRTP 3.4.4 by kotorinet on Oct 15, 2026
Download
[1] **NEW FEATURE**: Smart cost formatting - displays clean numbers (100 instead of 100.00)
[2] **NEW FEATURE**: Separate actionbar message for teleport delay countdown
[3] **FIXED**: RTP GUI now enabled by default in config
[4] **FIXED**: Type casting errors in GUI system resolved
[5] **IMPROVED**: Cost display shows 100, 100.5, or 100.25 based on actual value
[6] **IMPROVED**: Cleaner economy messages throughout the plugin
[7] ENHANCED: FormatUtils helper class for consistent number formatting
[8] STABILITY: Enhanced reliability for GUI and update checker systems
[3.4.3] justRTP 3.4.3 by kotorinet on Oct 15, 2026
Download

[1] **NEW FEATURE**: Added configurable dynamic pitch toggle for delay countdown sounds
[2] **NEW FEATURE**: Delay sounds can now keep constant pitch by setting dynamic_pitch: false
[3] **NEW FEATURE**: Cross-server RTP support added to GUI system
[4] **NEW FEATURE**: GUI world buttons can now teleport to other servers via server_name configuration
[5] **NEW FEATURE**: Added <server> placeholder to GUI lore (shows "Local" or server name)
[6] IMPROVED: Enhanced RTP GUI with network-wide teleportation capabilities
[7] IMPROVED: Delay sound system now more customizable with static pitch option
[8] IMPROVED: Cross-server GUI buttons automatically use /rtp <server>:<world> format
[9] IMPROVED: GUI lore dynamically shows server information for cross-server worlds
[10] CONFIG: Added dynamic_pitch option to effects.teleport_delay_sound section
[11] Full backward compatibility with existing configurations
[12] Cross-server GUI teleportation functions properly with MySQL proxy
[13] OPTIMIZED: Server placeholder efficiently shows local vs remote server status
[3.4.2] justRTP 3.4.2 by kotorinet on Oct 15, 2026
Download
[1] CRITICAL FIX: Chunk generation corruption causing flat borders, missing chunks, and weird terrain generation
[2] CRITICAL FIX: Removed problematic chunk preloading that was causing corruption
[3] CRITICAL FIX: Now relies on PaperLib.teleportAsync() for safe chunk loading/generation
[4] 1.21+ FIX: Updated Registry.BIOME to use modern RegistryAccess API (deprecated API removed)
[5] IMPROVED: Works perfectly in both explored AND unexplored worlds
[6] IMPROVED: Enhanced Folia 1.21.11 and Paper 1.21+ full compatibility
[7] IMPROVED: PaperLib handles chunk generation safely with neighbor chunk loading on 1.15+
[3.4.1] justRTP 3.4.1 by kotorinet on Oct 15, 2026
Download
[1] Added option to disable the Update Checker and message: c
heck_for_updates:
,
notify_ops_on_update
in config.yml
justRTP Icon
Download justRTP
Select game version
Select platform