LeafRTP icon

LeafRTP -----

Fast Random Teleportation for everyone, configurable and extensible



menu api hooks, pvp detectors, schematic platforms, skyblock prefab, live map updates
lots of useful stuff

Added


  • German (de) locale shipped across all config/message files; full locale parity maintained.
  • Region-specific schematic paste platforms (ADR-058) with new PasteOptions API and RegionVerifierRegistry footprint claim checks (S-003). New prefabs updated to use it (skyblock, oneblock, high-performance, multi-world).
  • Pluggable bare-/rtp root action (ADR-056, REQ-API-F-006). New RootActionRegistry SPI (RTPAPI.hooks().rootAction()) lets an addon take over a bare /rtp (e.g. open a GUI menu) instead of teleporting; subcommands are never routed through it. Shipped with an example menu addon.
  • Platform-agnostic addon SPI (ADR-057). New RTPAddon lifecycle interface + AddonRegistry (RTP.addons, ServiceLoader-based) so an addon jar runs unchanged on Bukkit/Paper/Folia, Fabric, and proxy JVMs. RTP_ExampleAddon ported with zero org.bukkit.* imports.
  • Optional PvP / combat-tag gate (ADR-055). Off by default (safety.yml#pvpCheckEnabled=false). When enabled, /rtp is refused for a player currently in combat, using either a bound PvPCombatStateRegistry provider (combat-tag plugins such as PvPManager / SimpleCombatLog / CombatLogX) or RTP's built-in native damage tracker. The native tracker is now fed on every supported platform: Bukkit/Paper/Folia via an EntityDamageByEntityEvent listener and Fabric via ServerLivingEntityEvents.AFTER_DAMAGE (both resolve the projectile shooter / primed-TNT igniter as the aggressor and stamp victim/aggressor per pvpTagVictim / pvpTagAggressor). The gate is consulted at the /rtp pre-dispatch surface before the player is enrolled, fails open (a broken external provider never blocks a teleport), audits every refusal at WARNING (REQ-RTP-S-004), and uses the new configurable messages.yml#pvpInCombat string (REQ-RTP-F-013). Six safety.yml knobs: pvpCheckEnabled, pvpCombatTagSeconds, pvpOnCombat, pvpSource, pvpTagVictim, pvpTagAggressor.
  • Bundled combat-tag plugin integrations for the PvP gate (ADR-055). New reflection-based soft-depend adapters for PvPManager, CombatLogX, and Simple Combat Log (rtp-plugin/.../softdepends/pvp/); PvPIntegrations.setup binds the first enabled plugin (priority PvPManager, then CombatLogX, then Simple Combat Log) to PvPCombatStateRegistry via RTPAPI.hooks().pvpCombatState(), gated on isPluginEnabled(...) like the claim integrations. When none is installed (or pvpSource: NATIVE), the native combat tracker answers; a reflective/API-version failure disables the adapter for the session and treats the player as not-in-combat (REQ-RTP-S-004). Wired in both the full and rtp-lite bootstraps. Covered by PvPCombatAdapterTest.
  • uniquePlacements is now an integer chunk radius (was boolean; defaults to 0 = off). N >= 1 clears a (2N-1)x(2N-1) chunk square around each used spot so placements spread out; legacy true/false still coerce to 1/0. Retired spots tagged with a dedicated uniquePlacement fail cause.
  • Config getters tolerate boolean<->int cross-typing, so a legacy true/false on a now-numeric knob (or 0/1 on a boolean knob) resolves instead of throwing.
  • Optional emergency-platform block-restoration timeout (ADR-060). New safety.yml knob platformRestoreSeconds (-1 = disabled default; 0 = restore on first loaded pulse; > 0 = after that many seconds). Restores are chunk-load-aware (never force-loads, S-005), Folia-safe, and persisted across restarts.
  • /rtp info now surfaces generation outcomes (REQ-RTP-OBS-007, ADR-052): success/failure rate and a per-cause rejection breakdown, via six new placeholders and three messages.yml lines.
  • Live-updating bad-locations map during a world scan: the admin "Region shape" chart now re-renders ~1 Hz from the in-memory bad-keys cache so scan progress is visible without re-issuing the command.
  • New bStats charts: language_selection, MSPT-p99 by platform/game-version/plugin-version, and aggregate generation-outcome (success rate + top failure cause). All privacy-safe (bucketised / whitelisted categories).
  • /rtp clearcache admin command (permission rtp.admin). Clears the L1 (kept), L2 (unkept), and L3 (backlog) location caches for every region across the board in one shot, releasing any held chunk reservations and dropping the associated persisted rows; the scan/queue machinery refills the caches afterwards. Backed by a new RegionQueueManager.clearCaches().
  • rtp.admin permission node declared in plugin.yml (both full and lite), gating /rtp clearcache and grouping the existing admin tooling permissions (rtp.reload, rtp.config, rtp.scan, rtp.info) as children so a single grant covers all admin commands.
  • (Pro) Numeric range predicates in the safety-list grammar (ADR-017 amendment). safety.yml::unsafeBlocks / airBlocks now accept block-state comparisons (LAVA[level<=3], FIRE[age>=10], *[level>=8]); multiple bounds AND together. rtp-lite ignores tag/predicate tokens.
----------, May 31, 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