Teleportation
Last updated Oct 28, 2026
Teleportation
Homes, warps, TPA, staff teleports, RTP, and world manager. Config: teleport.yml, rtp.yml, waypoints.yml. Modules: teleportation, homes, warps, tpa, spawn, death-settings, rtp, waypoints, world-manager.
Commands reference: Commands: Player, Commands: Admin. Defaults: Default teleport.yml · Default rtp.yml · Default waypoints.yml · Config Reference.
Player how-to
- Set a home:
/sa sethome [name]→ teleport with/sa home [name]. - Request a teleport:
/sa tpa <player>or/sa tpahere <player>→ target/sa tpacceptor/sa tpdeny. - Use warps:
/sa warpsthen/sa warp <name>. - Go to spawn:
/sa spawn. Random explore:/sa rtp(or/sa rtp <world>). - Save a waypoint:
/sa waypoint→ Create, or/sa waypoint set <name>. Right-click to track (boss bar). - Return:
/sa backafter SoapsAdmin teleports, RTP, portals, or death (in-memory until logout).
Staff how-to
- Pull / go to players:
/sa tphere,/sa tpto,/sa tppos,/sa tpall,/sa tpoffline. - Set server spawn:
/sa setspawn(and optional/sa setfirstspawn). Per-world Bukkit spawn:/sa setworldspawn. - Create warps:
/sa setwarp <name>. Manage worlds:/sa world …(moduleworld-manager). - Tune warmups/claims in
teleport.yml, RTP inrtp.yml, waypoints inwaypoints.yml, then/sa reload teleport/rtp/waypoints.
Config keys (teleport.yml)
| Key | Default | Effect |
|---|---|---|
teleportation.warmup-seconds |
3 |
Delay before teleport (0 = instant) |
teleportation.cooldown-seconds |
0 |
Cooldown after teleport |
teleportation.cancel-on-move |
true |
Cancel warmup if player moves >1 block |
teleportation.cancel-on-damage |
true |
Cancel warmup on damage |
teleportation.claims.enabled |
true |
Soft hooks for WorldGuard / Lands / GriefPrevention |
teleportation.claims.block-rtp-in-claims |
true |
Reject RTP landings in foreign claims |
teleportation.claims.block-set-in-claims |
true |
Block /sa sethome and /sa setwarp where player cannot build |
teleportation.claims.allow-friends |
true |
Allow set/teleport when claim owner is a SoapsAdmin friend |
homes.default-max |
3 |
Default home limit (soapsadmin.home.limit.<n> overrides) |
homes.max-name-length |
16 |
Max home name length |
warps.per-warp-permission |
false |
Require soapsadmin.warp.<name> per warp |
tpa.timeout-seconds |
60 |
Pending TPA expiry |
tpa.cooldown-seconds |
10 |
Cooldown between sending TPA requests |
tpa.pending-bossbar |
true |
Boss bar countdown while a request is pending |
death-settings.insta-respawn |
false |
Skip death screen / instant respawn |
death-settings.bed-respawn |
true |
Allow bed/respawn-anchor respawn |
death-settings.spawn-respawn |
true |
Respawn at server spawn when no bed |
death-settings.rtp-respawn |
false |
Respawn via RTP (needs rtp module) |
Bypass warmup/cooldown: soapsadmin.teleport.bypass. Claim bypass: soapsadmin.teleport.bypass-claims.
Homes (Shared Invite)
| Action | Command |
|---|---|
| Set / delete | /sa sethome [name], /sa delhome <name> |
| Teleport / list | /sa home [name], /sa homes [player] |
| Rename / default / move | /sa home rename, setdefault, move |
| Share | /sa home invite <name> <player> |
| Unshare | /sa home uninvite <name> <player> |
| List shared with you | /sa home shared |
Invited players teleport via shared-home resolution (owner + name). Limits: soapsadmin.home.limit.<n>. Others' homes: soapsadmin.home.others. Claim/region checks: teleport.yml → claims; bypass soapsadmin.teleport.bypass-claims.
Warps
| Action | Command | Permission |
|---|---|---|
| Teleport | /sa warp <name> |
soapsadmin.warp |
| List / info | /sa warps, /sa warp info <name> |
soapsadmin.warp |
| Create / delete | /sa setwarp <name>, /sa delwarp <name> |
soapsadmin.setwarp |
TPA Cancel / Auto
| Command | Effect |
|---|---|
/sa tpa <player> / /sa tpahere <player> |
Request |
/sa tpaccept / /sa tpdeny |
Respond |
/sa tpacancel |
Cancel outgoing |
/sa tpa pending |
Pending list |
/sa tptoggle |
Block incoming |
/sa tpauto |
Auto-accept |
Warmup/cooldown: teleport.yml. Bypass: soapsadmin.teleport.bypass. Claim checks run before consuming a pending accept.
Staff Teleports / Jump / Offline
| Command | Usage | Permission |
|---|---|---|
/sa tphere <player> |
Pull player to you | soapsadmin.tphere |
/sa tpto <player> |
Go to player | soapsadmin.tpto |
/sa tppos <x> <y> <z> [world] |
Absolute coords | soapsadmin.tppos |
/sa tpall [world|player…] |
All players, one world, or a named list to you | soapsadmin.tpall |
/sa jump |
Teleport to looked-at block | soapsadmin.jump |
/sa top / /sa bottom |
Highest / lowest block | soapsadmin.top / soapsadmin.bottom |
/sa tpoffline <player> |
Last logout location | soapsadmin.tpoffline |
/sa back |
Previous location (SoapsAdmin TPs, RTP, world TP, portals, death; in-memory until logout) | soapsadmin.back |
/sa biome <biome> |
Find and teleport to a biome | soapsadmin.biome |
/sa spawn [player] |
Server spawn | soapsadmin.spawn / spawn.others |
/sa setspawn / /sa delspawn / /sa setfirstspawn |
Server spawn points | soapsadmin.setspawn |
/sa worldspawn |
Current world's spawn | soapsadmin.worldspawn |
/sa setworldspawn |
Set current world's spawn | soapsadmin.setworldspawn |
Server spawn vs world spawn
SoapsAdmin has two spawn systems. They are independent.
| Server spawn | World spawn | |
|---|---|---|
| Commands | /sa setspawn, /sa spawn, /sa setfirstspawn, /sa delspawn |
/sa setworldspawn, /sa worldspawn |
| Storage | plugins/SoapsAdmin/data/server/spawns.yml |
Bukkit / vanilla world spawn (level.dat) |
| Scope | One (or first-join) point used across the server | Per world you are standing in |
| Typical use | Lobby / hub for /sa spawn and death respawn |
Entry point for that world, /sa world tp, new world create |
/sa spawn never uses the Bukkit world spawn. /sa worldspawn never reads spawns.yml.
Death respawn at the server spawn is controlled by death-settings.spawn-respawn in teleport.yml (module death-settings). New worlds created with the world manager get a Bukkit world spawn set on create; overwrite it with /sa setworldspawn.
RTP
| Command | Usage | Permission |
|---|---|---|
/sa rtp |
World picker GUI (or current world if GUI off) | soapsadmin.rtp |
/sa rtp <world> |
Random teleport into that world | soapsadmin.rtp |
/sa tprandom / /sa tp random |
Teleport to a random online player | soapsadmin.tprandom |
/sa tprandom cycles through online players before repeating the same target.
How search works
- Samples random X/Z within
min-radius–max-radius(from spawn, or from you whensame-world-from-playerand same world). - If the chunk is unloaded and
load-chunks: true, SoapsAdmin loads/generates it, then checks height, biomes, unsafe blocks, claims. - On success, teleport warmup/cooldown from
teleport.ymlstill apply; destination chunks are preloaded (3×3) before you arrive.
| Platform | Chunk load during RTP |
|---|---|
| Paper | Async (getChunkAtAsync). Preferred. |
| Spigot | Sync getChunkAt on the main thread. Works, but may hitch under heavy generation. |
Cooldown bypass: soapsadmin.rtp.bypass-cooldown. Claim blocking: teleport.yml → teleportation.claims.block-rtp-in-claims. Placeholder: %soapsadmin_rtp_cooldown%.
If search fails with CHUNK_NOT_READY and chunksLoaded=0, ensure settings.load-chunks: true in the server rtp.yml and update to 1.7.0+.
Config keys (rtp.yml)
| Key | Default | Effect |
|---|---|---|
settings.min-radius |
500 |
Minimum search radius |
settings.max-radius |
10000 |
Maximum search radius |
settings.max-attempts |
60 |
Strict-pass attempts |
settings.attempts-per-tick |
6 |
Attempts spread per tick |
settings.max-search-ticks |
120 |
Search timeout in ticks |
settings.cooldown |
60 |
Seconds after a successful RTP |
settings.respect-world-border |
true |
Stay inside world border |
settings.same-world-from-player |
true |
Same-world RTP centers on you; cross-world still uses spawn/center |
settings.load-chunks |
true |
Load/generate unloaded chunks during search |
settings.max-pending-chunk-loads |
4 |
In-flight chunk loads during search |
settings.use-motion-blocking-no-leaves |
true |
Prefer surface under canopy |
settings.fallback.enabled |
true |
Fallback pass when strict pass fails |
settings.fallback.attempts |
30 |
Fallback attempts |
safety.min-y / max-y |
48 / 320 |
Landing Y bounds |
safety.require-air-above |
true |
Require air above feet |
safety.avoid-blocks |
lava/fire/… | Unsafe landing blocks |
safety.avoid-biomes |
ocean variants | Biomes skipped on strict pass |
worlds.disabled |
world_the_end |
Worlds excluded from RTP |
World picker look: gui.yml → menus.rtp-worlds. Reload with /sa guiconfig reload. RTP settings reload with /sa reload rtp.
World Manager
| Command | Usage | Permission |
|---|---|---|
/sa world list |
List worlds | soapsadmin.world / worldmanager |
/sa world tp|create|load|unload ... |
Manage worlds | soapsadmin.worldmanager |
/sa world fixgenerator <name> |
Reattach void/custom generator after a bad boot load | soapsadmin.worldmanager |
Module: world-manager. Settings: server.yml. New worlds get a Bukkit world spawn set on create (void: bedrock platform at 0,64,0; other types: surface at the generator spawn). Use /sa setworldspawn to overwrite it.
Void worlds
Void worlds use the named generator SoapsAdmin:void (saved into level.dat) so Paper/Spigot reattach it on restart. Meta also lives in plugins/SoapsAdmin/worlds.yml as generator: VOID.
If land suddenly appears (chunk walls of normal terrain):
- Confirm
worlds.ymlhasgenerator: VOIDfor that world. - Run
/sa world fixgenerator <world>(unload → reload with void generator). - Already-generated terrain stays in
region/. To wipe it: unload, delete the world'sregion/folder (optionally keep other data), then/sa world load <world>. - Do not put the void world in
bukkit.ymlwith a different generator.
Waypoints
/sa waypoint opens the waypoint list. Create waypoint places one at your feet, then opens the edit GUI (rename, move here, marker, color). You can still use /sa waypoint set <name> from chat.
Right-click a waypoint to track it. A boss bar at the top shows the name and how many meters away you are. The bar drains as you get closer. When you walk into settings.arrive-radius (default 3 blocks), the bar goes away and you get You reached waypoint <name>. Right-click again, or Stop Tracking in the GUI, to cancel.
Marker names float above the block when you are within display.marker-view-distance (default 48 blocks, same as the beam). Farther away the world marker hides so it does not become a distant black speck; tracking (boss bar / compass) still works. In the edit GUI, open Label style to change brightness, background plate, see-through, shadow, bold, and size. Server defaults live under display.label in waypoints.yml. If an old waypoints.yml is missing the new keys, jar defaults still apply: bossbar-tracking: true, bossbar-full-distance: 100, marker-view-distance falls back to beam-view-distance. Optional action bar: use-player-tracking: true.
Teleport, track, and display permissions: soapsadmin.waypoint.*. Reload: /sa reload waypoints.
Config keys (waypoints.yml)
| Key | Default | Effect |
|---|---|---|
settings.default-max |
5 |
Max waypoints (soapsadmin.waypoint.limit.N overrides) |
settings.max-name-length |
24 |
Name length cap |
settings.arrive-radius |
3.0 |
Auto-stop tracking when this close |
settings.max-tracking-distance |
1000 |
Hide distance beyond this (0 = unlimited) |
settings.use-player-tracking |
false |
Optional action-bar tracking |
settings.compass-tracking |
true |
Point compass at tracked waypoint |
settings.bossbar-tracking |
true |
Boss bar HUD while tracking |
settings.bossbar-full-distance |
100 |
Distance at which boss bar is full |
settings.cross-world |
false |
Allow tracking across worlds |
settings.require-safe-location |
true |
Reject set/update in lava/void/etc |
settings.warmup-override |
-1 |
Teleport warmup override (−1 = use teleport.yml) |
display.enabled |
true |
World markers (BlockDisplay + label + beam) |
display.owner-only |
true |
Owner-only markers on Paper; public on Spigot |
display.beam-view-distance |
48.0 |
Particle beam cull distance (blocks) |
display.marker-view-distance |
48.0 |
Hide BlockDisplay + label beyond this; tracking HUD still works |
display.label.* |
bright/soft/… | Floating name style (brightness, plate, size, …) |
Related
Still stuck? Ask about this page