Region Configuration Reference (regions/*.yml)¶
This document provides a detailed reference for all configuration options available in a region file (e.g., plugins/RTP/regions/default.yml).
Top-Level Settings¶
| Key | Type | Default | Description |
|---|---|---|---|
world |
String | "[0]" |
The target world for this region. Supports [0], [1], [2] placeholders or exact names. |
worldBorderOverride |
Boolean | false |
If true, the region radius is automatically set to match the vanilla world border. |
requirePermission |
Boolean | false |
If true, players need rtp.regions.<name> permission to use this region. |
override |
String | "default" |
If a player lacks permission, they are redirected to this region instead. |
cacheCap |
Integer | 50 |
Maximum number of safe locations to pre-calculate and store in the background. |
backlogCacheCap |
Integer | 1000 (lite: 0) |
Maximum number of unverified candidate locations to stage upstream of cacheCap. See Backlog Cache (L3) below. Set to 0 to disable. |
activeChunkCap |
Integer | 10 |
Maximum number of chunks to keep loaded for zero-latency teleports. |
price |
Double | 0.0 |
Economy cost to use this specific region (overrides global price). |
spatialResolution |
Integer | 3 |
Precision for spatial memory (bad location tracking). 1 is coarse, 5 is extremely fine. |
displayName |
String | (region name) | Optional cosmetic display name shown in menus and messages; does not change the region's identity or the permission node. |
biomeWhitelist / biomes |
Boolean / List | (inherited from safety.yml) |
Optional per-region override of the global biome filter. biomeWhitelist: true makes biomes an allow-list; false makes it a block-list. See SAFETY.md. |
version |
String | "1.0" |
Internal config version. Do not modify. |
Inheritance (
@config). Most of the keys above accept the token@configinstead of a literal value, in which case they inherit the matching global default from thedefaults:block ofconfig.yml. The type-bearingshape/vertkeys inherit as a whole named block; type-free scalars (requirePermission,cacheCap,backlogCacheCap,activeChunkCap,spatialResolution) inherit individually;pricemay reference@economy. See CORE_CONFIG.md → Defaults (inheritance)."Zone"/"arena" synonym. Other plugins call a bounded random-teleport area a "zone" or "arena"; in RTP that concept is a region - there is no separate object to configure. A region controls where a player lands, not whether they can walk back out. To keep a teleported player confined to the area, either pair the region with a WorldGuard region whose
exitflag isdeny(Bukkit family only), or use the cross-platform tether addon (LeafRTPTetherAddon), which enforces confinement on RTP's own geometry with no WorldGuard dependency.
shape Section¶
The shape block defines the horizontal area where players can land.
Common Shape Keys¶
name: The shape engine to use.mode: The selection logic.ACCUMULATE: (Recommended) Even distribution, pre-calculated sectors. Best for most cases.NEAREST: Finds the closest non-blocked spot. Fast but may cause clustering.REROLL: Simple random selection with retries. Even but unbounded.NONE: No pre-check. Fastest but ignores pre-computed safety data.centerX/centerZ: The center of the region in chunks.uniquePlacements: Chunk radius cleared around a spot once a player lands there so it is never reused.0= off,1= the landing chunk only,N= an(2N-1)x(2N-1)chunk square. (Legacytrue/falsestill work and map to1/0.)
Shape Engines and Parameters¶
CIRCLE / SQUARE¶
Standard shapes with uniform or weighted distribution.
- radius: Outer radius in chunks.
- centerRadius: Inner radius (donut hole) in chunks.
- weight: > 1.0 pulls landings toward center; < 1.0 pushes toward edges.
- expand: If true, radius grows as locations are used.
CIRCLE_NORMAL / SQUARE_NORMAL¶
Gaussian distribution variants.
- radius / centerRadius: Same as above.
- mean: Center of the bell curve (0.0 center, 1.0 edge).
- deviation: Spread of the bell curve.
RECTANGLE¶
width/height: Half-extents in chunks (X and Z axis).rotation: Rotation in degrees around the center.
vert Section¶
The vert block controls the Y-coordinate (height) selection.
Common Vert Keys¶
name: The vertical adjustor engine.minY/maxY: The allowed Y-range for teleportation.requireSkyLight: If true, only accepts locations with direct access to the sky (surface-only).
Vert Engines and Parameters¶
JUMP¶
Scans vertically using fixed steps. Efficient for finding the first safe surface.
- step: Number of blocks to skip per search iteration. Default 16.
- Caveat: Because it advances in fixed step-block jumps, it can skip over thin (one- or two-block-thick) platforms. In the Nether, where such platforms are common, prefer vert: LINEAR (see Tips for Customization).
LINEAR¶
A thorough scan of every Y level in a specific order.
- direction: Integer scan strategy (default 2):
- 0: Bottom-up — Start at minY and scan up to maxY. Best for underground/cave landings.
- 1: Top-down — Start at maxY and scan down to minY. Best for surface landings.
- 2: Middle-out — Start at the middle of the range and scan outward toward both ends.
- 3: Edges-in — Start at both ends of the range and meet in the middle.
- Any other integer: Random — Scan all Y levels in a randomized order. Best for "anywhere in this range" logic.
FIXED¶
Places the player at a single configured Y level in mid-air, with no terrain scan. Designed for skyblock-style worlds where the platform tool builds a foothold around the player after teleport.
- y: The exact Y-level for placement. Default 64.
- The destination cell (x, y, z) and the head cell (x, y+1, z) must both be air; any non-air block at either cell is treated as unsafe and the chunk is rejected so a different one is rolled.
- Ignores minY, maxY, direction, requireSkyLight, and the unsafeBlocks ground sweep — none of those apply to mid-air placement.
- Enable a platform builder when using FIXED. Without one the player will fall straight through air.
Backlog Cache (L3)¶
The backlog cache (controlled by backlogCacheCap) is an optional unverified staging buffer that sits upstream of the verified location queues (cacheCap / "kept" / "unkept"). It lets the region pre-pick spiral coordinates without paying chunk-I/O cost up front, then amortises verification across periodic pulses.
How it works¶
- The spiral selector drops unverified candidates straight into the backlog — no chunk load, no database write.
- Each region tick pulses the backlog: the oldest unverified entry is picked, the
.mcafile (32×32 chunk bin) it falls in is identified, and every unverified entry that shares that bin is classified in one pass via the anvil pre-filter. This amortises the per-bin cost over many candidates. - Entries are promoted into the verified queue in insertion order. An unverified head blocks promotion; an invalidated head is dropped silently and the next entry is considered. This preserves spiral order without stalling on failed candidates.
- The backlog is not persisted across restarts by design — entries are re-selected fresh on startup, so the cost of dropping them is bounded.
When to enable or tune it¶
- Leave at the default
1000if you have a large radius and want/rtpto feel instantaneous over long sessions: the backlog absorbs spiral selection pressure so thatcacheCaprarely empties. - Lower or set to
0on very small radii (< 1000 chunks) where the spiral exhausts quickly and the backlog mostly duplicates work, or on memory-tight servers. - The lite jar ships with
backlogCacheCapomitted fromregions/default.yml, so the in-code fallback resolves to0(disabled). Add the key explicitly to opt in on a lite deployment. - The backlog holds no chunk tickets and no in-flight teleport tasks, so a high cap has minimal runtime memory cost beyond the raw coordinate records themselves.
Relationship to other caches¶
Candidates flow through three tiers: the backlog (L3, unverified) → the cold cache (L2, verified, chunks released) → the hot cache (L1, verified, chunks held). /rtp polls the hot cache first, falls back to the cold cache (which re-loads chunks on use), and the backlog pulse keeps the cold cache supplied.
Tips for Customization¶
- Nether Support: Use
vert: LINEARwithdirection: 0(bottom-up),maxY: 120, andrequireSkyLight: falseto land on the nether floor rather than the roof. Avoidvert: JUMPhere: its coarsestep(default16) skips over the thin one- and two-block-thick platforms that are common in the Nether, so it frequently fails to find otherwise-valid footing.LINEARscans every Y level and reliably catches those thin platforms. - Cave Teleports: Use
vert: LINEARwithdirection: 0(bottom-up) and a lowmaxYto favor underground locations. - Massive Radii: If your radius is > 50,000 blocks, use
mode: NONEto avoid long pre-calculation times on startup. - Skyblock / Mid-Air Drops: Use
vert: FIXEDwithy: 128and a platform tool enabled. The platform spawns under the player so they don't fall through the void.