Configuration Reference¶
One jar covers every platform. Configuration is generated on first server start and lives under plugins/RTP/ on the Bukkit family (Paper, Spigot, Folia and their forks, Arclight, Mohist) or under config/rtp/ on Fabric / NeoForge.
How to Update Configuration¶
RTP provides multiple ways to view and update settings:
- Interactive Admin Menu (
/rtp adminor/rtp menu): The recommended in-game interface for inspecting, editing, and validating settings, worlds, and regions. - Command Line (
/rtp config <section> <key>=<value>): Quick runtime updates from console or chat with immediate atomic persistence. - Direct File Editing (
plugins/RTP/...): Edit YAML files directly and run/rtp reloadto apply changes.
📎 Detailed Admin Guide: See IN_GAME_CONFIG.md for full instructions on navigating the
/rtp adminmenu and using/rtp configsubcommands.Folder layout: the everyday files (
config.yml,economy.yml,language.yml,safety.yml) sit at the top level. The named definitions you author (regions/,worlds/,effects/, plus the sharedshape/andvert/catalogs) live underdefinitions/. The rarely-hand-edited tuning and text files (performance.yml,logging.yml,metrics.yml,ttl.yml,network.yml,database.yml,biomes.yml,blocks.yml, themessages/tree, and theschematics/folder) live underadvanced/. The per-locale translation mirror stays atlang/. Each rename map is a co-located hidden dotfile (.<name>.lang.yml) beside the file it describes. On upgrade from an older layout, RTP relocates your authored files automatically and archives the old folders as<name>.migrated.Inheritance: to avoid repeating the same value across many region/world files, a region/world setting can inherit a global default with an
@<file>token (e.g.@config,@economy). See CORE_CONFIG.md → Defaults (inheritance).📎 How RTP loads, reloads, and upgrades these files (including what the
.old1/.old2files are, and how your customizations are preserved across version bumps and locale switches): see CONFIG_LIFECYCLE.md.
File Overview¶
| File | Purpose | Detailed Reference |
|---|---|---|
config.yml |
Core plugin settings (delays, database) | CORE_CONFIG.md |
economy.yml |
Teleport costs and refund policy (requires Vault) | ECONOMY.md |
safety.yml |
Landing safety checks, invulnerability, biome filters | SAFETY.md |
language.yml |
Locale selection (loaded before all other files) | LANGUAGE.md |
definitions/regions/*.yml |
Per-region teleport area, shape, queue settings | REGIONS.md |
definitions/worlds/*.yml |
Per-world default region and permission settings | WORLDS.md |
definitions/effects/*.yml |
Per-event teleport effects (sounds, particles, potions) | EVENTS_AND_EFFECTS.md |
advanced/performance.yml |
Background task timing, cache behaviour, TPS thresholds | PERFORMANCE.md |
advanced/messages/*.yml |
All player-facing message strings (split by concern) | MESSAGES.md |
advanced/logging.yml |
Console logging verbosity | LOGGING.md |
advanced/metrics.yml |
Runtime-health metrics SPI reporting knobs | METRICS.md |
advanced/ttl.yml |
Spatial memory expiration and cause-based TTL tiers | TTL.md |
advanced/network.yml |
Multi-server / multi-proxy network mode | proxies/CONFIGURATION.md |
advanced/database.yml |
Database backend and connection settings | CORE_CONFIG.md |
advanced/biomes.yml, advanced/blocks.yml |
Biome / block tag catalogs used by safety filters | SAFETY.md |
advanced/schematics/ |
Per-region arrival structures (.schem) pasted on landing; also where prefabs drop their bundled schematic |
SCHEMATICS.md |
definitions/regions/<name>.yml — Region Configuration¶
Each file in the definitions/regions/ folder defines one teleport region. The filename (without .yml) is the region's name.
📎 Detailed Reference: See REGIONS.md for a full breakdown of every key and engine parameter in the region configuration.
Top-level keys¶
| Key | Type | Default | Description |
|---|---|---|---|
world |
String | "[0]" |
Target world name. [0] = main world, [1] = the_nether, [2] = the_end, or a literal world name. |
worldBorderOverride |
Boolean | false |
If true, uses the vanilla /worldborder radius instead of the shape radius. |
requirePermission |
Boolean | false |
If true, players need rtp.regions.<regionName> to use this region. |
override |
String | "default" |
Region to redirect to if a player lacks permission for this region. |
cacheCap |
Integer | 50 |
Maximum pre-generated safe locations to hold in the queue. Set to 0 to disable background caching. |
backlogCacheCap |
Integer | 1000 (lite: 0) |
Maximum unverified candidates staged upstream of cacheCap. Spiral picks land here without chunk I/O, then a per-region pulse verifies one .mca bin at a time and promotes in insertion order. Set to 0 to disable. See REGIONS.md → Backlog Cache (L3). |
activeChunkCap |
Integer | 10 |
Maximum chunks kept loaded simultaneously for zero-latency teleportation. |
price |
Double | 0.0 |
Economy cost override for this region (overrides the global economy.yml price). |
spatialResolution |
Integer | 3 |
Precision level for storing spatial memory in the database. Higher = more memory, finer detail. |
version |
String | "1.0" |
Internal config version (do not change). |
shape section¶
The shape block defines how horizontal coordinates are selected. The name key selects the shape engine; the remaining keys configure it.
Keys common to all shapes¶
| Key | Type | Description |
|---|---|---|
name |
String | Shape engine: CIRCLE, CIRCLE_NORMAL, CIRCLE_OPTIMIZED_DUAL_LAYER, CIRCLE_DEPRECATED_PURE_SPIRAL, SQUARE, SQUARE_NORMAL, SQUARE_OPTIMIZED_DUAL_LAYER, SQUARE_DEPRECATED_PURE_SPIRAL, ELLIPSE, RECTANGLE, POLYGON. |
mode |
String | Selection logic. See table below. |
centerX |
Integer | Chunk X coordinate of the region centre (default 0). |
centerZ |
Integer | Chunk Z coordinate of the region centre (default 0). |
uniquePlacements |
Integer | Chunk radius cleared around each used location so it is never reused. 0 = off (default), 1 = the landing chunk only, N = an (2N-1)x(2N-1) chunk square centred on the landing chunk. (Legacy true/false are still accepted and map to 1/0.) |
mode options:
| Value | Behaviour |
|---|---|
ACCUMULATE |
Even distribution; accumulates all sectors up to the current point to compute a shift, with distances precomputed at region load. Recommended default. |
NEAREST |
Tries the closest non-blocked spot. Fast, but can cause clustering near edges. |
REROLL |
Re-selects when a bad sector is hit. Even distribution and fast, but not strictly bounded. |
NONE |
No pre-check at all. Best for massive radii where pre-checking is impractical. |
CIRCLE and SQUARE — additional keys¶
| Key | Type | Default | Description |
|---|---|---|---|
radius |
Integer / Distance | 256 |
Maximum distance from the centre in chunks (supports spatial suffixes, e.g. 4096b, 256c, 4r, 5km). |
centerRadius |
Integer / Distance | 64 |
Minimum distance from the centre (donut hole) in chunks (supports spatial suffixes, e.g. 1024b, 64c). Players won't land inside this radius. |
weight |
Double | 1.0 |
Distribution weight. > 1.0 shifts landings toward the centre; < 1.0 shifts toward the edge. |
expand |
Boolean | false |
If true, the radius grows automatically as locations are consumed. |
CIRCLE_NORMAL and SQUARE_NORMAL — additional keys¶
Normal-distribution variants replace weight with explicit statistical parameters.
| Key | Type | Default | Description |
|---|---|---|---|
radius |
Integer / Distance | 256 |
Maximum distance from the centre in chunks (supports spatial suffixes, e.g. 4096b, 256c, 4r, 5km). |
centerRadius |
Integer / Distance | 64 |
Minimum distance from the centre in chunks (donut hole, supports spatial suffixes). |
mean |
Double | — | Mean of the normal distribution (0.0 = centre, 1.0 = edge). |
deviation |
Double | — | Standard deviation. Smaller = tighter cluster; larger = wider spread. |
expand |
Boolean | false |
If true, the radius grows automatically as locations are consumed. |
RECTANGLE — additional keys¶
| Key | Type | Default | Description |
|---|---|---|---|
width |
Integer / Distance | — | Full width of the rectangle (total X-axis extent, centred on the region; supports spatial suffixes). |
height / length |
Integer / Distance | — | Full height / length of the rectangle (total Z-axis extent, centred on the region; supports spatial suffixes). |
rotation |
Double | 0.0 |
Rotation of the rectangle in degrees around the centre. |
ELLIPSE — additional keys¶
| Key | Type | Default | Description |
|---|---|---|---|
radius / radius2 |
Integer / Distance | 256 |
The two outer semi-axes in chunks (supports spatial suffixes). The wider of the two bounds the spiral mapping. |
centerRadius / centerRadius2 |
Integer / Distance | 0 |
The two semi-axes of the inner exclusion ellipse, in chunks. |
rotation |
Double | 0.0 |
Rotation of both the outer and inner ellipse in degrees around the centre. |
weight |
Double | 1.0 |
Distribution weight, same meaning as CIRCLE. |
expand |
Boolean | false |
If true, the radii grow automatically as locations are consumed. |
POLYGON — additional keys¶
| Key | Type | Default | Description |
|---|---|---|---|
vertices |
List of [x, z] pairs |
— | Boundary vertices in traversal order, in the same format Chunky uses: one pair per list item, e.g. - [-125c, 187c] / - [2000b, 3000b], or inline vertices: [[-125c, 187c], [2000b, 3000b], [10, -4]]. Each coordinate takes a spatial suffix (b blocks, c chunks, ...); a coordinate without a suffix is in chunks. At least 3, not all collinear, no self-intersections. Invalid or self-intersecting vertices trigger a warning and fall back to the bounding square. See REGIONS.md. |
weight |
Double | 1.0 |
Distribution weight across the vertex bounding box. |
expand is not part of the polygon surface and is ignored: the boundary is admin-authored, so growing it would push landings outside it.
vert section¶
The vert block controls how the Y coordinate (height) is chosen once a horizontal position is selected.
Keys common to all vert adjustors¶
| Key | Type | Default | Description |
|---|---|---|---|
name |
String | "JUMP" |
Vertical adjustor engine: JUMP, LINEAR, or FIXED. |
minY |
Integer | 32 |
Minimum Y level a player can land at. |
maxY |
Integer | 255 |
Maximum Y level a player can land at. |
requireSkyLight |
Boolean | false |
If true, only accept locations with direct sky access (above-ground only). |
JUMP — additional keys¶
| Key | Type | Default | Description |
|---|---|---|---|
step |
Integer | 16 |
Number of blocks to skip per vertical search iteration. Larger = faster but coarser scan. |
LINEAR — additional keys¶
| Key | Type | Default | Description |
|---|---|---|---|
direction |
Integer | 2 |
Search direction: 0 = bottom-up (scan from minY to maxY), 1 = top-down (scan from maxY to minY), 2 = middle-out (default), 3 = edges-in, any other integer = randomized order. |
FIXED — additional keys¶
| Key | Type | Default | Description |
|---|---|---|---|
y |
Integer | 64 |
Exact Y level for mid-air placement. No terrain scan runs, so minY, maxY, direction, and requireSkyLight are ignored. Intended for skyblock-style worlds; pair it with a platform builder or the player falls through air. See REGIONS.md. |
Full example — a nether region:
world: "world_nether"
worldBorderOverride: false
requirePermission: false
override: "default"
cacheCap: 10
activeChunkCap: 5
price: 0.0
spatialResolution: 3
shape:
name: "CIRCLE"
mode: "ACCUMULATE"
radius: 128
centerRadius: 32
centerX: 0
centerZ: 0
weight: 1.0
uniquePlacements: 0
expand: false
vert:
name: "JUMP"
minY: 32
maxY: 120
step: 16
requireSkyLight: false
definitions/worlds/<name>.yml — World Configuration¶
Each file in the definitions/worlds/ folder maps a world to its default region and permission settings. See WORLDS.md for the complete reference.
| Key | Type | Default | Description |
|---|---|---|---|
region |
String | "default" |
Default region used when a player runs /rtp in this world. |
requirePermission |
Boolean | false |
If true, players need rtp.worlds.<name> to RTP in this world. |
override |
String | "[0]" |
World to redirect to if a player lacks permission. |
version |
String | "1.0" |
Internal version — do not change. |
Dedicated Configuration Guides¶
For in-depth explanations and complete key tables of each configuration file:
- Core & Defaults: CORE_CONFIG.md
- Safety & Hazard Checks: SAFETY.md
- Economy (Vault): ECONOMY.md
- Language / Locale: LANGUAGE.md
- Regions: REGIONS.md
- Worlds: WORLDS.md
- Events & Effects: EVENTS_AND_EFFECTS.md
- Performance: PERFORMANCE.md
- Messages: MESSAGES.md
- Logging: LOGGING.md
- Metrics: METRICS.md
- Multi-Server / Proxy Network: proxies/CONFIGURATION.md
- Arrival Schematics: SCHEMATICS.md
Custom Shapes and Addons¶
The built-in shape engines (CIRCLE, CIRCLE_NORMAL, CIRCLE_OPTIMIZED_DUAL_LAYER, CIRCLE_DEPRECATED_PURE_SPIRAL, SQUARE, SQUARE_NORMAL, SQUARE_OPTIMIZED_DUAL_LAYER, SQUARE_DEPRECATED_PURE_SPIRAL, ELLIPSE, RECTANGLE, POLYGON) are configured inline inside each region's shape: block, as there are no separate per-shape config files.
That list is the set this build registers at startup. Addons can register more, so the authoritative list for your install is written to plugins/RTP/definitions/regions/SHAPES.md (and VERT.md for vertical adjustors) on every start and /rtp reload, generated from the live registry.
Custom shapes can be registered at runtime via rtp-api. See addons/ for examples. A registered custom shape appears as a valid shape.name value in any region config.
Tips¶
- Run
/rtp reloadafter every edit; no restart needed. - Never change
version:fields, as they are used internally for config migration. - Use
[0],[1],[2]as world placeholders instead of hardcoded names if your world names may change. - Set
cacheCapto match your player count — a server with 50 concurrent players benefits from a larger cache than a server with 5. - Lower
minTPS(e.g.,18.0) on busy servers to prevent the plugin from adding load during lag spikes.