RTP (Random Teleport)
🌍 RTP (Random Teleport)
RTP is a surprisingly opinionated feature — should it be GUI-driven? Biome-aware? Dimension-specific? We've taken a flexible approach that covers the most important use cases for Cobblemon networks — and is designed to grow over time.
Oxygen introduces RTP Flows, a system that gives you full control over where and how players teleport across your network. You define:
Flows — groups of RTP options based on filters (e.g. current server)
Filters — simple JSON objects that match player state (e.g.
{ "server": "spawn" }
)Results — one or more RTP settings applied if the filter matches
Right now, results are selected randomly and unweighted. In the future, you’ll be able to prefer servers with fewer players, better performance, or based on custom conditions.
⚙️ How RTP Works
When a player runs /rtp
, Oxygen:
Iterates through all defined flows.
Checks whether the
filter
matches the player's current state.If it matches, a random
result
(RTP settings) is selected from that flow.The last matching flow overrides earlier ones.
Here’s a minimal example:
"flows": [
{
"filter": { "server": "beta" },
"result": [ { "server": "alpha" } ]
},
{
"filter": { "server": "alpha" },
"result": [ { "server": "beta" } ]
}
]
If a player is on beta
, they RTP to alpha
. If they’re on alpha
, they RTP to beta
.
📄 rtp_config.json
Example (Roanoke Diamond)
{
"defaultDimension": "minecraft:overworld",
"defaultCenterX": 0,
"defaultCenterZ": 0,
"defaultMinDistance": 100,
"defaultMaxDistance": 3000,
"defaultHighestY": 320,
"defaultMaxAttempts": 30,
"defaultAllowCaveTeleports": false,
"flows": [
{
"filter": { "server": "spawn" },
"result": [
{ "server": "core" },
{ "server": "prime" },
{ "server": "haven" }
]
},
{
"filter": { "server": "core" },
"result": [ { "server": "core" } ]
},
{
"filter": { "server": "prime" },
"result": [ { "server": "prime" } ]
},
{
"filter": { "server": "haven" },
"result": [ { "server": "haven" } ]
}
]
}
🔄 Flow Summary
Spawn: randomly RTPs players to
core
,prime
, orhaven
Core/Prime/Haven: RTPs stay on the same server
Because only server
is defined in each result, all other RTP settings (like distance and cave rules) fall back to the defaults at the top of the config.
🛠️ Customising Per-Server Settings
You can override default settings in a specific result
object. For example, if you want a larger RTP radius on prime
, just update its entries like so:
{
"server": "prime",
"maxDistance": 10000
}
Update both the spawn flow and the prime flow if you want the setting to apply regardless of where the player comes from:
{
"filter": { "server": "prime" },
"result": [ { "server": "prime", "maxDistance": 10000 } ]
}
🧾 Full RTP Settings Object
Each object in a result
array represents an RTP destination with optional overrides.
{
"server": "core",
"worldId": "minecraft:overworld",
"centerX": 0,
"centerZ": 0,
"minDistance": 250,
"maxDistance": 5000,
"highestY": 320,
"maxAttempts": 30,
"allowCaveTeleports": false
}
server
: target server for RTP (required)worldId
: Minecraft dimension to RTP incenterX
,centerZ
: the centre used for RTP rangesminDistance
,maxDistance
: range from (0, 0)highestY
: cap Y-level (e.g. avoid mountains)maxAttempts
: number of times to try finding a valid locationallowCaveTeleports
: whether caves are valid RTP spots
Any keys not defined will fall back to the global defaults at the top of rtp_config.json
.
Teleporting to The Nether?
Make sure to set "allowCaveTeleports" to true!
Last updated