
LeafRTP | Random Teleport
Fast Random Teleportation for everyone, configurable and extensible
Список изменений
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: trueis set inplugin.yml, a newFoliaAwareSchedulerroutes work through Paper API's regionized and per-entity schedulers, and teleports go throughEntity#teleportAsync. The throughput-optimizedrtp-foliaadapter remains Pro-only. -
Cross-server
/rtpon the DB-freeproxy-directtier, as a drop-in alternative to Redis/SQL. A cross-server/rtp <server>:<region>issued on a lobby now moves the player and runs/rtpon the destination backend with no Redis/SQL required.proxy-directuses the proxy's own in-memory transport as the shared store, reached over an outbound TCP connection via a thin RPC, HMAC-signed whenRTP_NET_SECRETis set. -
proxy-directnetwork transport: player-independent cross-server region discovery.transport.type: proxy-directlets 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
/rtppermission gate for networked backends. Cross-server/rtp <server>:<region>is now gated byrtp.servers.<server>in addition tortp.regions.<region>, so operators can allow/deny teleport per backend.rtp.servers.*defaults to op and is a child ofrtp.*. -
/rtp info biomesbiome-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 existingrtp.infopermission. -
spark profiler is now an optional source for
/rtp infoTPS/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#biomeWeightsships the full vanilla biome set pre-listed at weight1.0. Every vanilla overworld/nether/end biome is now enumerated as a ready-to-edit reference. Behaviour is unchanged: an all-1.0map is identical to the prior default. -
Biome-probability weighting (ADR-062). New
performance.ymlknobsbiomeWeighted(defaultfalse) andbiomeWeights(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 newrtp.versionpermission (defaulttrue, child ofrtp.*).
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 aNullPointerExceptionon delivery. Metrics install falls through Folia -> Paper -> raw Bukkit sampler so bStats and/rtp inforeport live data from first boot. -
Relative coordinate tokens (
/rtp centerx=~ centerz=~) now resolve to the player's position. A~value previously fell through toBoolean.valueOf("~") == false, silently setting the center to0. A newresolveRelativeCoordinatehelper resolves~,~<n>,-~, and-~<n>against the player's current X/Z. -
Fabric and NeoForge no longer suggest
/rtpsubcommands or parameters the caller lacks permission for. The Brigadier bridge's suggestion provider now gates suggestions throughBrigadierBridgeContext.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 infostays 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 diagline demoted from INFO to FINE. No longer spams the console during a world scan; still available at elevated log levels.
