Safety Configuration Reference (safety.yml)¶
This document provides a detailed reference for all configuration options available in plugins/RTP/safety.yml.
Landing Protection¶
| Key | Type | Default | Description |
|---|---|---|---|
invulnerabilityTime |
Integer | 5 |
Seconds of invulnerability granted after teleporting. Prevents fall, fire, or drowning damage on arrival. |
safetyRadius |
Integer | 0 |
Block radius around the landing point to check for hazards. 0 = check only the landing block. |
staleChunkRetryLimit |
Integer | 2 |
Bounded retry budget for the stale-chunk guard. Prevents race conditions where a chunk unloads before evaluation. |
anvilPrefilterEnabled |
Boolean | true |
Off-thread anvil prefilter: screens candidate destinations by reading region files (.mca) from disk, dropping known-unsafe ones before they cost a chunk load. A chunk it cannot read (e.g. not yet generated) is not rejected - it passes through to the normal live-load safety check. See REGION_FILE_READING.md. |
Landing Platforms¶
Used as a legacy fallback if no solid ground is found.
| Key | Type | Default | Description |
|---|---|---|---|
platformRadius |
Integer | -1 |
Radius of the emergency platform. Set to -1 to disable (recommended). |
platformDepth |
Integer | 1 |
Depth (downward) of the platform. |
platformAirHeight |
Integer | 2 |
Height of air to ensure above the platform. |
platformMaterial |
String | GLASS |
Block type used if no solid block exists. |
platformRestoreSeconds |
Integer | -1 |
Optional timeout after which a built platform's footprint is restored to its original blocks. -1 disables restoration (permanent platform). 0 restores as soon as the footprint chunk is loaded again; a positive value restores after that many seconds. The countdown only advances while the footprint chunk is loaded (it pauses while the area is unloaded), and pending restores survive a server restart. |
Note on
platformRestoreSeconds. Restoration writes the captured original blocks back; every restore (and any failure) is logged, never silently dropped. Available on the Bukkit/Spigot/Paper and Folia platforms; the Fabric platform does not build emergency platforms, so the timeout has no effect there. Because the platform is only ever built on land the safety pipeline already cleared of claims, the footprint starts in unclaimed terrain; if you expect players to build on top of the temporary platform before it expires, leave restoration disabled (-1).
Block Filters & Token Grammar¶
The airBlocks and unsafeBlocks lists use a specific grammar to match blocks and properties.
Edition note (Pro only). The plain-material rows below work in every edition, but the block-tag and block-state-predicate grammar (
#namespace:tag,MATERIAL[...],*[...], including the numeric range predicates) ships only in the full (Pro) edition. The rtp-lite build parsesunsafeBlocks/airBlocksas a flat material allow/deny list and does not honour any#tagtoken or[...]predicate. See the bundled lite docs (SAFETY.mdinside the lite jar) for the lite-only surface.
Grammar (Token Syntax)¶
MATERIAL— Plain material (e.g.,LAVA). (All editions.)- (Pro)
MATERIAL[prop=val,prop2=val2]— Match only when block-state properties match (string equality). - (Pro)
MATERIAL[prop>=n]— Match only when a numeric block-state property satisfies a range comparison. Operators:>=,<=,>,<. The boundnmust be a whole number (e.g.,LAVA[level<=3]for near-source lava,FIRE[age>=10]). - (Pro)
#namespace:tag— Expands to every material in that block tag (e.g.,#minecraft:logs). - (Pro)
#namespace:tag[prop=val]— Tag members only when properties match. - (Pro)
*[prop=val]— ANY material when properties match (wildcard, e.g.,*[waterlogged=true]).
Predicate notes¶
- Multiple predicates inside one
[ ... ]combine with logical AND (e.g.,WATER[falling=true,level>=5]). - Two range bounds on the same key form an interval, e.g.,
LAVA[level>=2,level<=5]. - Equality (
=) compares values as case-insensitive strings; the range operators parse both sides as integers. A live block whose property is absent or non-numeric is treated as a miss (fail-open) - it is never rejected by a predicate it cannot satisfy. - Malformed tokens (non-integer bound, empty value, duplicate
key+operator, unbalanced brackets) are dropped at load with a single startupWARNINGand never silently ignored.
airBlocks¶
Materials treated as walkable / non-blocking space above the landing.
- Includes: AIR, VOID_AIR, #minecraft:flowers, #minecraft:saplings, #minecraft:crops, #minecraft:leaves (to allow landing beneath canopies), etc.
unsafeBlocks¶
Materials the plugin will reject as a landing target.
- Includes: LAVA, WATER, *[waterlogged=true], MAGMA_BLOCK, CACTUS, #minecraft:logs (to prevent landing on top of trees), etc.
Biome Filter¶
| Key | Type | Default | Description |
|---|---|---|---|
biomeWhitelist |
Boolean | false |
If true, the biomes list is a whitelist. If false, it is a blacklist. |
biomes |
List | (Ocean, etc.) | Biomes to skip or allow. Default blacklist excludes oceans, rivers, and void biomes. |
Versioning¶
version: Internal config version (do not change).