Sueta

Roam

1.4.0

Advanced asynchronous random teleport (RTP) plugin for Paper, Purpur and Folia. Features a modern GUI, biome targeting, favorites, history, stats, claim protection bypass, Vault economy integration, a

·Plugin
  1. 1.4.0latestRoam 1.4.0Aug 12, 2026

    Roam 1.4.0 — one jar, 1.20.1 → 26.2

    If you run anything newer than 1.21.4, update now. Roam crashed with IncompatibleClassChangeError on those servers. This release fixes it, extends support down to 1.20.1, and adds a build gate that verifies the whole range instead of just claiming it. Supported: 1.20.1 → 1.21.11 → 26.1.x → 26.2 — 19 releases, one jar, each one verified against its real API. ---
    🔴 Fixed — crash on every server above 1.21.4
    Paper turned Biome and Sound from enums into interfaces in 1.21.5. Four Roam call sites were compiled against the enum form, so the JVM refused to link them and threw IncompatibleClassChangeError — an Error, not an Exception, so the defensive catch blocks around the search didn't contain it: commands broke outright instead of degrading. Affected: the biome label on every teleport, the smart-shoreline check, the /rtp biome roster + tab-complete + GUI, and the biome-unlock sound. All four now resolve through the registries, which are interfaces on both sides of the split. No config, message or API change — biomes.yml entries, placeholders and /rtp biome arguments keep working exactly as before.
    🟢 Added —
    - Bytecode now targets Java 17, so Roam never raises your Java floor (1.20.1–1.20.4 on 17, 1.20.5–1.21.11 on 21, 26.x on 25). - Fixed the same enum/interface trap on InventoryView, which flipped in 1.21 and would have broken three GUI handlers. - Action bar moved to Adventure (sendActionBar), dropping the deprecated BungeeCord chat bridge. - Registry lookups survive an uninitialised Registry on 1.20.x; an unreachable registry degrades instead of aborting config loading. - api-version drops to 1.20.
    🟢 Added — Paper 26.2 support, and proof
    tools/ApiCompatCheck.java walks every API reference the shipped jar makes and resolves it against a target server API, failing on removed members and on class/interface flips. It runs in CI on every push, and --all sweeps all 19 published releases in the range — which matters: InventoryView breaks in the middle while both endpoints look clean. - Unlock-sound warning spammed the console — an unresolvable biome-finder.unlock.sound warned on every unlock. Now once per bad value. It also accepts both spellings (ENTITY_PLAYER_LEVELUP and entity.player.levelup) and validates against the server's real sound registry, so resource-pack and datapack sounds resolve. - `/roamadmin edit` accepted worlds that don't exist — a typo'd world name was written into config.yml as a new worlds.<typo> block and reported as "Applied immediately" when nothing was applied. Now rejected unless the world is loaded or already configured (pre-configuring a world that loads later still works), with the configured world list echoed back. Disabled worlds get their own message. - Doubled `[Roam]` prefix in console — 33 of 64 logger calls hard-coded the prefix Bukkit already adds. Console output is consistent again.
    🔧 Dependencies & build
    - sqlite-jdbc 3.46.1.0 → 3.53.2.1, mariadb-java-client 3.4.1 → 3.5.10 — both now run under the Java 25 runtime Paper 26.x requires. Both backends were verified against live servers, schema built from scratch. - Shading merges META-INF/services instead of letting one jar win, so both JDBC drivers are properly declared. - maven-compiler-plugin uses <release> so building on a newer JDK can't silently link against methods your server doesn't have. - JUnit 5.10.2 → 6.1.3, surefire 3.2.5 → 3.5.6, shade 3.6.0 → 3.6.2, compiler 3.13.0 → 3.15.0. --- Upgrading: drop in the new jar and restart. No config migration, no breaking API change.
    108 downloads
  2. 1.3.0Roam 1.3.0Jun 10, 2026

    Roam 1.3.0

    ## Added - Exploration-gated biome unlocks (opt-in, biome-finder.unlock.enabled): /rtp biome — new alias /rtp biomes — only accepts biomes the player has physically discovered. First contact grants an advancement toast, a chat notice and a sound. Staff bypass via roam.biome.bypass-unlock. Existing discoveries are honoured on upgrade. - Biome collection GUI: undiscovered biomes render as sealed crystal cards that flip to each biome's own icon once explored — 54 curated textured heads bundled, plus a description and a "You'll find:" line for all ~110 shipped biomes, and a Discovered: N/M progress counter. Custom heads via icon: "head:<base64>" in biomes.yml. - `/rtp location <name>`: teleport to admin-defined spawn-point presets, gated per-preset with roam.location.<name>. - Four new languages: Russian, Simplified Chinese, Romanian and German join EN/ES/PT_BR — seven bundled translations covering chat and GUI (gui_<lang>.yml), switched together by language:. ## Performance - Chunk-free candidate screening on Iris worlds: water and biome checks now run against Iris' own noise streams instead of generating a chunk per rejected candidate — the single biggest cost of RTP on custom generators is gone. - Adaptive mode (on by default): an MSPT probe classifies the server as RELAXED / BUSY / STRESSED — background generation throttles down to zero under load, and search parallelism clamps so /rtp never piles chunk loads onto a struggling tick loop. Each world also learns its own search difficulty and borrows extra parallel candidates only where they pay off. - Demand-gated location cache: idle worlds stop generating terrain in the background entirely (one bootstrap entry kept); active worlds refill as a slow trickle. With warm-chunks, a cache hit costs a disk read instead of fresh generation — effectively instant /rtp, even on Iris. - Two-phase chunk preload: teleports block only on the 9 chunks around the player; the outer ring loads in the background after arrival. - Per-candidate slot timeouts with replacement: one stuck chunk generation no longer freezes the whole search, and late-finishing winners are rescued instead of discarded. - Cached biome rosters and engine handles: tab-complete and the biome menu no longer walk registries/reflection on every keystroke. ## Fixed - GUI pagination dying after the first page navigation; border/footer clicks could resolve to a real biome; world menu broke with customised item names. - "Searching..." boss bar stuck on screen after teleporting — full lifecycle rework (kind-tagged bars, exception-safe teleport tail, quit cleanup) plus a self-healing watchdog. - Search slot timeouts discarding valid locations found moments later on slow hardware. - Citizens biome NPCs bypassed the biome-finder toggle and the unlock gate. ## Changed - Iris integration flagged experimental: works without server lag, but chunk loading on Iris teleports is still slow. Mitigations documented in the README. - Unified teleport pipeline (seven entry points over four shared gates) backed by a 21-test suite that gates every build. - Professional text pass: emojis removed from every player-facing surface (GUI, boss bars, titles, messages in all languages). ## Removed - /rtp structure — out of scope for Roam's design. No config migration needed — every new key ships with a sensible default.
    116 downloads
  3. 1.2.0Roam 1.2.0May 6, 2026
    Initial release - Initial release of Roam - High-performance asynchronous RTP system - Modern GUI with favorites, history, and stats - Support for vanilla biomes, Iris and TerraformGenerator - Protection against claims from 12 popular plugins - Vault economy and Citizens NPC integration - Full support for Paper, Purpur and Folia - Multiple storage backends (YAML, SQLite, MariaDB)
    44 downloads

Similar projects

Plugin →