LeafRTP icon

LeafRTP -----

Fast Random Teleportation for everyone, configurable and extensible



## [3.1.2] - Folia+Velocity shims
"it works" support that's still far above the competition, meant for end users.

Pro-level load balancing configuration and nitpicking is still tied to the pro version.

This release fixes the last blockers for Folia and cross-server networking in the free build. Folia support required adjusting a handful of scheduler call sites so work lands on the correct region thread; networking required a new proxy-direct transport that uses the proxy itself as the shared store, so the average server owner doesn't need to set up Redis or SQL to get cross-server /rtp.

Added

  • Basic Folia support. The lite build now runs on Folia: folia-supported: true is set in plugin.yml, a new FoliaAwareScheduler routes work through Paper API's regionized and per-entity schedulers, and teleports go through Entity#teleportAsync. The throughput-optimized rtp-folia adapter remains Pro-only.
  • Cross-server /rtp on the DB-free proxy-direct tier, as a drop-in alternative to Redis/SQL. A cross-server /rtp <server>:<region> issued on a lobby now moves the player and runs /rtp on the destination backend with no Redis/SQL required. proxy-direct uses the proxy's own in-memory transport as the shared store, reached over an outbound TCP connection via a thin RPC, HMAC-signed when RTP_NET_SECRET is set.
  • proxy-direct network transport: player-independent cross-server region discovery. transport.type: proxy-direct lets a backend publish its real region list at startup with no player online, so cross-server tab-completion converges with zero players on any backend. No Redis/SQL required.
  • Per-server /rtp permission gate for networked backends. Cross-server /rtp <server>:<region> is now gated by rtp.servers.<server> in addition to rtp.regions.<region>, so operators can allow/deny teleport per backend. rtp.servers.* defaults to op and is a child of rtp.*.
  • /rtp info biomes biome-occupancy leaderboard. Reports which biomes online players actually spend their time in, ranked by share - useful for gauging where players congregate. Counts are in-memory only and reset on restart/reload. Gated by the existing rtp.info permission.
  • spark profiler is now an optional source for /rtp info TPS/MSPT metrics. When spark is installed, RTP merges spark's richer per-window TPS (1m/5m/15m) and mean MSPT over the native binding. Pure soft-dependency via reflection; no compile dependency added.
  • performance.yml#biomeWeights ships the full vanilla biome set pre-listed at weight 1.0. Every vanilla overworld/nether/end biome is now enumerated as a ready-to-edit reference. Behaviour is unchanged: an all-1.0 map is identical to the prior default.
  • Biome-probability weighting. New performance.yml knobs biomeWeighted (default false) and biomeWeights (biome id -> relative weight) let operators bias or suppress specific biomes in the teleport draw. When enabled, the location selector draws a target biome proportionally to its configured weight, then explores via the bounded spiral until that biome is confirmed.
  • Registry-aware gray-space steering for biome weighting. A requested biome the world can produce but that recall memory has not yet recorded stays reachable via bounded-spiral exploration rather than being treated as weight 0. Each recorded biome defers a run-count-proportional share of its weight to exploration, so a high weight on a thinly-recorded biome can never amplify single-run clustering.
  • /rtp version (alias /rtp about) subcommand. Reports the running plugin version, platform brand, and host server version. Gated by a new rtp.version permission (default true, child of rtp.*).

Fixed

  • Map charts and metrics work correctly on Folia (new in this release alongside Folia support). Map chart delivery is dispatched to the region thread owning the viewer's chunk via RTP.scheduler.runTask(viewerLocation, ...) rather than the global region thread, avoiding a NullPointerException on delivery. Metrics install falls through Folia -> Paper -> raw Bukkit sampler so bStats and /rtp info report live data from first boot.
  • Relative coordinate tokens (/rtp centerx=~ centerz=~) now resolve to the player's position. A ~ value previously fell through to Boolean.valueOf("~") == false, silently setting the center to 0. A new resolveRelativeCoordinate helper resolves ~, ~<n>, -~, and -~<n> against the player's current X/Z.
  • Fabric and NeoForge no longer suggest /rtp subcommands or parameters the caller lacks permission for. The Brigadier bridge's suggestion provider now gates suggestions through BrigadierBridgeContext.permissionCheck(), closing a tab-completion leak on Brigadier-dispatched platforms.

Changed

  • Released jars trimmed of dead weight. Both Pro and lite jars now exclude compile-only IntelliJ annotation classes and orphan Maven metadata that leaked in from shaded dependencies. No code or API change.
  • /rtp info stays compact before any metrics are sampled. TPS, MSPT, pipeline latency, percentile, and database-latency rows are suppressed until their underlying values exist. Always-available rows (JVM heap, queue depth, pending teleports, generation outcomes) are unchanged.
  • Per-batch [TRACE] ScanTask diag line demoted from INFO to FINE. No longer spams the console during a world scan; still available at elevated log levels.
----------, Jun 13, 2026
Resource Information
Author:
----------
Total Downloads: 439,437
First Release: Jul 30, 2021
Last Update: Jun 18, 2026
Category: ---------------
All-Time Rating:
31 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings