3.3.2
Added
- Litematica schematics (
.litematic, ADR-058). Regions (schematicindefinitions/regions/*.yml) and actionPASTE_SCHEMATICsteps now accept.litematicfiles inschematics/alongside.schemand.schematic, including multi-region Litematica files, negative region sizes and block entities. Config and action BIT checks accept.litematicpaths as well.
Changed
Action name collisions with
/rtp,/wildor another action are now BIT errors (ACTADDON_NAME_COLLISION, ADR-121)./rtp test action-setupreportsACTADDON_NAME_COLLISIONas anERRORinstead of aWARNINGwhen an action's name or command alias collides with/rtp,/wildor another action, and names the existing owner in the message./rtp reloadreads and checks config files off the main thread. Full and single-section reloads (such as/rtp reload regionsor/rtp reload worlds) now parse files and run config BIT checks asynchronously before swapping the active configuration on the main thread, and a reload started while another is already running replies withalreadyReloadinginstead of overlapping./rtp config searchexpands multi-word queries and falls back to an online thesaurus. Multi-word searches strip punctuation before matching, and when local keys and the bundled thesaurus return no matches,/rtp config searchqueries an online synonym fallback off-thread.For addon developers.
RTPPlayeradds defaultsendTitle(title, subtitle, fadeIn, stay, fadeOut)andsendActionbar(message)methods. In-sessiononStartandonBoundaryViolationaction gates now pass the session'sActionContextto registered custom gate validators, andRTPRuntime.setServerAccessorkeepsRTPAPI.serverAccessorin sync.
Fixed
Background cache fill on NeoForge 1.21.1 could hang the server and trip the watchdog. The 1.21.1 chunk-ticket lookup bound the raw-level ticket method instead of the radius-based region-ticket method, turning a 0- or 1-chunk ticket radius into a 32-33 chunk generation radius around every loaded chunk, and temporary load tickets shared the
rtpticket type with kept-cache tickets. NeoForge 1.21.1 now binds the region-ticket method and uses a separatertp_loadticket type with a 30-second expiry for temporary loads.Folia safety checks with
safetyRadius > 0could read loaded neighbor chunks off the region thread. When a candidate chunk's center was read from an offline region file while one of itssafetyRadiusneighbors was already loaded on the server, the neighbor check ran on the async worker instead of the owning region thread. Safety checks now hop to the region thread whenever any chunk in the safety square is loaded.Failed region economy checks left players stuck as "already teleporting", and
rtp.freedid not bypassbalanceFloor. When a region'spriceorbalanceFloorrejected a teleport, the player's incomplete teleport entry stayed active and blocked later/rtpcommands withalreadyTeleporting. WithtoggleTargetPermsenabled, a target player who failed the economy check also did not refund the command sender. Economy and region checks now finish before a teleport session is recorded,rtp.freebypassesbalanceFloor, and failed target charges refund the sender.Post-teleport
title,subtitle,actionbar,consoleCommandsandplayerCommandsdid not run on Fabric or NeoForge, and togglingeffectParsingignored/rtp reload. Post-teleport titles, actionbars and commands now run on Fabric and NeoForge as well as Spigot, Paper and Folia (and are skipped for/rtp testmock players), andeffectParsinginadvanced/performance.ymlupdates on/rtp reloadwithout a restart.Visual and sound effects on Folia could run off the player's region thread. Player-targeted effects now check region ownership on Folia and reschedule onto the player's entity scheduler when called from another thread.
Bundled action definitions always loaded from the English locale folder. On startup and reload, the action addon read
definitions/actions/using"en"instead of the server's configuredlanguageinconfig.yml.Some translated keys in nested
lang/<locale>/advanced/files did not match their.lang.ymlkey maps, and/rtp docsmessages hardcoded[RTP]instead of[P0]. Nestedadvanced/locale files inde,it,pl,zhandcatnow match their.lang.ymlkey-rename maps, anddocsNotFound,docsEmpty,docsExportSuccessanddocsExportFailedinadvanced/messages/commands.ymlnow use the[P0]prefix placeholder across all locales.Unpacking an
@config,@economyor@safetyreference in/rtp editorcould not be undone withCtrl+Z. Unpacking a reference now records an undo/redo step, concurrent/rtp editorHTML exports no longer share a single temporary file, and unreachable relay servers log a single warning line without a stack trace when falling back to snapshot-only mode.The
/rtp editorbiome map on non-Anvil region formats used the.mcareader. Biome extraction for the web editor map now decodes chunks through the registered region-file reader for non-.mcaformats instead of calling the Anvil.mcaprobe directly, and counts unreadable chunks in BIT status.World border startup checks skipped
CIRCLE_DEPRECATED_PURE_SPIRALandSQUARE_DEPRECATED_PURE_SPIRALregions and string numbers. The world border check now recognizes both spiral shapes and numeric string values in region shape configs.Disconnecting players kept background-refill attribution history and could trigger warnings from open menus. Leaving the server now clears the player's
autoTunerefill attribution history, and chat or book menus and/rtp admin setuppages that finish rendering after the viewer disconnects skip the render without logging a warning stack trace.Concurrent bad-location flushes could fail with an array bounds error under heavy rejection load. Rebuilding a region's bad-location table while another worker recorded a rejected spot could overrun the snapshot buffer; the snapshot is now bounded to the allocated buffer size.
Biome activity sampling could load unloaded player chunks on the main thread. Periodic biome sampling for players standing in or crossing into an unloaded chunk could trigger a synchronous chunk load on Bukkit and Paper; biome sampling now skips unloaded player chunks.
Platforms
Dependencies
- CombatLogX Optional
- Factions Optional
- GriefDefender Optional
- GriefPrevention Optional
- HuskTowns Optional
- Lands Optional
- PvPManager Optional
- RedProtect Optional
- SimpleCombatLog Optional
- Towny Optional
- Vault Optional
- WorldGuard Optional