Repository navigation
v3 foundations
Pre-releaseRTP v3 — Foundations (beta.1)
The first beta of the v3 line. This release is the foundation the rest of v3 builds on: a stable public rtp-api, versioned platform submodules, SQL-backed persistence, lock-free pre-generation, and a hardened safety pipeline. Bukkit, Paper, and Folia are production-ready on Java 21+ for Minecraft 1.20.x / 1.21.x / 26.1.
⚠️ Major release — breakingrtp-apichanges. See MIGRATION.md before upgrading from 2.x.
Highlights
- Versioned platform submodules — compile-time NMS separation via a
commonmodule plus per-version submodules for Spigot, Paper, and Folia (ADR-010). - Stable public
rtp-api— broadened addon surface; no more reflection into internals (ADR-011). - Multi-backend persistence — flat-file sector cache replaced by SQL-backed storage: H2 (default), SQLite, MySQL, PostgreSQL, plus Redis caching and YAML fallback (ADR-002).
- Per-platform scheduling pipelines — Folia regional-thread scheduling, Paper native async chunk loading (PaperLib removed), Spigot Bukkit scheduler (ADR-004–006).
- Lock-free location buffer + state-based tasks —
LockFreeLocationBufferdecouples pre-generation from dispatch; explicit task states enable pause/resume/cancel and concurrent region fills. ChunkReservationlifecycle —AutoCloseableabstraction eliminates the 2.x ticket leak (ADR-012).- Anvil read-only pre-filter — off-tick safety probing of unloaded chunks on Spigot via direct
.mcareads (ADR-016). Measured 16–20× speedup vs. full chunk load. - Claim integrations folded into the plugin — Factions, GriefDefender, GriefPrevention, HuskTowns, Lands, RedProtect, TownyAdvanced, WorldGuard now ship in-box (ADR-019).
- Brigadier bridge for Paper/Folia tab-completion (ADR-014).
- Documentation & governance overhaul — full REQ-ID requirements, traceability matrix, ADRs, admin runbook, hazard catalog, migration guide.
Supported scope (beta)
In scope and supported:
- Spigot, Paper, Folia on MC 1.20.x / 1.21.x / 26.1, Java 21+
- H2 (default) and SQLite persistence
- Public
rtp-apitypes - Claim integrations (8 plugins)
- Anvil pre-filter (Spigot)
- Brigadier bridge (Paper/Folia)
Out of scope — do not file as bugs:
- Fabric — present in source, not functional yet. Do not deploy on Fabric. Targeted for
3.0.0final. - Forge / NeoForge — no native adapter. Use Arclight/Mohist with the Spigot/Paper build.
- Multi-server / proxy mode (Velocity, BungeeCord) — design only.
- MySQL / PostgreSQL / Redis / YAML accessors — experimental; use H2 or SQLite in production.
RTPEconomyAPI and/rtp configcommand — experimental; signatures may change before final.- Legacy MC < 1.20 / Java < 21 — unsupported (ADR-021).
Known issues
- Fabric adapter is non-functional (see above).
safety.ymland biome-filter edits do not invalidate the persisted shape cache. Workaround:/rtp scan reset <region>after changing safety predicates.- Tag-grammar tokens in
safety.yml(e.g.#minecraft:flowers) are accepted but inert — use explicit material names for now. - Pre-release cache invalidation: legacy 2.x
.binfiles and any pre-3.0.0-beta.1rtp_cached_locationsrows are abandoned by the new hash-keyed naming scheme. Expect a one-time re-scan on first launch. - Default change:
safety.ymlnow shipsplatformRadius: -1(emergency platform disabled). SetplatformRadius: 0or higher to restore legacy 2.x behaviour.
Upgrading from 2.x
- Back up your world and
plugins/RTP/folder. - Read MIGRATION.md.
- Ensure Java 21+ and a supported platform version.
- Drop in the new jar; expect a one-time region re-scan.
- Note renamed command:
/rtp fill→/rtp scan(permissionrtp.fill→rtp.scan). - Addon authors:
CachedLocationis now an immutable record.RTPCoordsis a record. See the newaddons/RTP_ExampleAddontemplate.
Roadmap toward 3.0.0 final
- Fabric platform to first-class
- Multi-server / proxy mode (Velocity, BungeeCord)
- Runtime metrics (TPS / MSPT / heap / queue depth)
- External hook API surface (ADR-026)
- Promote MySQL / PostgreSQL / Redis / YAML out of experimental
- Stabilize
RTPEconomyand/rtp config - Lite assembly variant published as the free
RTPjar alongside the fullRTP-Projar
Full changelog
See CHANGELOG.md for the complete Added / Changed / Fixed lists. Diff: v2.0.18...v3.0.0-beta.1.
Rationale for each architectural decision lives in docs/adr/.
Thanks to everyone who tested pre-release builds, filed issues, and contributed to the v3 design discussions. Please report v3 bugs against this tag with your platform, MC version, Java version, and DB backend.