Astral Realms Documentation Help

Overview

AstralHomes provides personal homes, global network warps, /back, /spawn, and cross-server teleport requests (/tpa, /tpahere) for the AstralRealms network.

Requirements

Dependency

Required

Notes

Paper 1.21

Yes

api-version: '1.21'

Java 25

Yes

Compiled with <source>/<target> 25

AstralCore

Yes

Hard depend in plugin.yml; provides DatabaseService, CacheService, MessagingService, menus, actions, placeholders.

AstralSync

Yes

Hard depend in plugin.yml; persists HomePlayerData across the network.

Both AstralCore and AstralSync are listed under depend in plugin.yml — the plugin will not load if either is missing.

Runtime infrastructure

AstralHomes leans entirely on AstralCore for its backing services; it opens no connections of its own beyond what those services manage:

Service

Backing tech

Used for

DatabaseService

MariaDB via HikariCP

The global warps table.

CacheService

Redis

Pending teleport requests (RequestCacheRepository), keyed homes:requests:<sender>:<recipient> with a 5‑minute TTL, plus homes:requests:latest:<recipient>/homes:requests:sender:<sender> lookups for argument‑less /tpaccept and /tpacancel.

MessagingService

Cross-server packet bus

Teleport request packets (TeleportationRequestPacket 0x01, TeleportationRequestStatusPacket 0x02, TeleportationResponsePacket 0x03) so /tpa and /tpahere work when sender and recipient are on different servers.

SyncAPI (AstralSync)

Binary-serialized per-player data

HomePlayerData, registered via HomeSnapshotAdapter and looked up with SyncAPI.findData(uuid, HomePlayerData.class).

Persistence split

Two storage models coexist, and the plugin is deliberate about which one owns which data:

  • Warps are global and stored in MariaDB (the warps table: name, server_group, x/y/z, yaw/pitch, world). They're loaded into an in-memory map at startup and kept in sync with the database on every set/delete.

  • Homes, last-locations, and the TPA toggle are per-player and live in HomePlayerData, replicated across the network by AstralSync — they are never written to MariaDB.

See Homes and Warps & Spawn for the full behavior of each.

Feature map

Feature

Page

Personal homes (/home, /sethome, /delhome)

Homes

Global warps and /spawn

Warps & Spawn

Cross-server /tpa//tpahere requests

Teleport Requests

Warmup

/home, /warp, /spawn, and /back teleports go through a shared WarmupService: a progress bar built out of coloured | characters plus a percentage is shown in the action bar while the player waits, and the warmup is cancelled by WarmupListener when the player changes block (moves) or disconnects. Warmup duration is permission-driven, configured under warmup in config.yml as a permission → duration map; the lowest duration among permissions the player holds wins (e.g. astralhomes.mvp: 0s overrides astralhomes.default: 5s), and a duration of 0s skips the warmup entirely.

Accepted teleport requests (/tpaccept) are the exception — TeleportationRequestService hands the move straight to AstralCore's TeleportationService without going through WarmupService, so there is no countdown before the teleport happens. See Teleport Requests → Movement.

Commands at a glance

Command

Purpose

/home, /homes, /h

Teleport to / list homes.

/sethome

Create a home at the player's location.

/delhome

Delete a home.

/warp, /warps

Teleport to / list global warps.

/back

Return to the last location (requires homes.back).

/spawn

Teleport to the server spawn.

/tpa

Request to teleport to another player.

/tpahere

Request another player to teleport to you.

/tpaccept

Accept a pending teleport request.

/tpadecline

Decline a pending teleport request.

/tpacancel

Cancel a request you sent.

/tpatoggle

Toggle whether you accept incoming teleport requests.

Full syntax, aliases, and permissions for every (sub)command are on the Commands page.

Configuration and messages

Runtime behavior is controlled by config.yml (home/warp limits, warmup durations, world blacklist, protected-world permissions, join-location restore groups) and user-facing text by messages.yml. Start at Configuration.

Last modified: 25 July 2026