Astral Realms Documentation Help

Configuration

AstralTower's paper and bridge modules each load their own config.yml and messages.yml. Both are reloadable at runtime with /tower reload (paper) and /tower reload (bridge) — see Commands. Content data (rooms, mobs, artifacts, shop, coins, rewards) is covered on Tower Instances and Loot, Shop & Rewards; this page covers the two config.yml files and messages.

Paper config.yml

Key

Type

Description

fallback-group

string

Server group participants are sent to if teleportation elsewhere fails. Default spawn.

permanent-effects

map of PotionEffectType → int

Potion effects (key = effect name, value = amplifier) applied to every player for the duration of their tower session, on join.

reward-types

map of RoomRewardTypeItemStack (material id)

Display material used to represent each RoomRewardType (ARTIFACTS, COINS, SHOP, BOSS) — e.g. on doors.

damage-zone.delay

duration

Tick interval between damage ticks inside a room's damage-zone cuboid.

damage-zone.damage-per-second

double

Damage dealt per second while standing in a room's damage zone.

hand-slot

int

The raw packet slot (0-8 hotbar range) treated as the player's "held" slot for the cosmetic hand-slot illusion.

inventory

map of int (slot) → ItemStackWrapper

Fake items shown at specific inventory slots via packet interception — not real items in the player's inventory. See Overview: cosmetic hand slot.

damage-indicators.immune

component

Floating text shown when a hit dealt no damage (target invulnerable or 0 final damage).

damage-indicators.damaged

component

Floating text shown for a normal hit. Supports {amount}.

damage-indicators.critical

component

Floating text shown for a critical hit (magic damage modifier > 1).

lobby-hologram

component list

Lines of the hologram spawned above the lobby room's GENERIC position component.

room-complete-actions

action list

Run against every participant whenever RoomClearedEvent fires (a room's mobs are cleared), before the room transitions to REWARDS.

fallback-group: "spawn" permanent-effects: jump-boost: 2 speed: 1 reward-types: ARTIFACTS: "nether_star" COINS: "gold_nugget" SHOP: "emerald" BOSS: "diamond" damage-zone: delay: 1s damage-per-second: 1.0 hand-slot: 36 inventory: 36: material: "wooden_sword" name: "<red>Starter Sword" lore: - "<green>A basic sword to get you started." damage-indicators: immune: "<yellow>Immune</yellow>" damaged: "<red>-{amount}</red>" lobby-hologram: - "<green>Welcome to the Arena!</green>" - "<yellow>Prepare for battle and earn rewards!</yellow>"

Bridge config.yml

Key

Type

Description

target-server-group

string

Server group /tower create picks a target from, via findEmptiestByGroup.

maximum-party-size

int

Maximum party size (including the owner) allowed to create an instance.

daily-tickets.default

int (YAML key default)

Base number of tickets a player is refilled to each day.

daily-tickets.permissions

map of permission → int

Bonus tickets added on top of the default for each matching permission the player holds (checked in TowerConfiguration#tickets(Player), cumulative across all matches).

access-permission

string

Permission required to use the entry portal (not required for /tower create).

portal-enabled-groups

list of string

Server groups on which the portal listener is registered at all — portal.enabled() checks the current server's group against this set.

portal.min/portal.max

{x, y, z, world}

The cuboid whose bounds define the entry portal (a Cuboid).

target-server-group: "tower" maximum-party-size: 2 daily-tickets: default: 1 permissions: group.vip: 3 group.premium: 5 access-permission: "tower.access" portal-enabled-groups: - "spawn" portal: min: x: -100 y: 0 z: -100 world: "world" max: x: 100 y: 255 z: 100 world: "world"

Messages

Both modules load their messages.yml into a TowerMessages enum (MessageEnum) — each enum constant name is converted to a kebab-case key (_-, e.g. SHOP_PURCHASEDshop-purchased) and looked up under that key. Missing keys log a "Missing configuration key" warning at load and fall back to the enum's toString().

Message key

Enum constant

Module

reward-already-claimed

REWARD_ALREADY_CLAIMED

Paper

no-rewards

NO_REWARDS

Paper

room-reward

ROOM_REWARD

Paper

completion-reward

COMPLETION_REWARD

Paper

shop-purchased

SHOP_PURCHASED

Paper

shop-not-enough-money (shipped, does not resolve)

SHOP_NOT_ENOUGH_POINTS

Paper

shop-already-purchased

SHOP_ALREADY_PURCHASED

Paper

shop-invalid-item

SHOP_INVALID_ITEM

Paper

death-message

DEATH_MESSAGE

Paper

coins-room/artifact-room/shop-room/boss-room

COINS_ROOM/ARTIFACT_ROOM/SHOP_ROOM/BOSS_ROOM

Paper

chat-format

CHAT_FORMAT

Paper

creating-instance/instance-created

CREATING_INSTANCE/INSTANCE_CREATED

Bridge

party-too-large/not-in-party/not-party-owner/party-not-found/party-already-in-instance

PARTY_TOO_LARGE/NOT_IN_PARTY/NOT_PARTY_OWNER/PARTY_NOT_FOUND/PARTY_ALREADY_IN_INSTANCE

Bridge

no-server-found/not-enough-tickets/no-permission/unexpected-error

NO_SERVER_FOUND/NOT_ENOUGH_TICKETS/NO_PERMISSION/UNEXPECTED_ERROR

Bridge

queue-enabled/queue-disabled/queue-already-enabled/queue-already-disabled/queue-paused

QUEUE_ENABLED/QUEUE_DISABLED/QUEUE_ALREADY_ENABLED/QUEUE_ALREADY_DISABLED/QUEUE_PAUSED

Bridge

queue-status-active/queue-status-paused

QUEUE_STATUS_ACTIVE/QUEUE_STATUS_PAUSED

Bridge

ticket-balance/ticket-balance-other/ticket-balance-updated-other

TICKET_BALANCE/TICKET_BALANCE_OTHER/TICKET_BALANCE_UPDATED_OTHER

Bridge

The bridge's messages support %balance% (ticket count) and %player_name% where applicable — see Commands: /tower tickets.

Resource pack (pack.yml, paper)

Key

Type

Description

url

string

Resource pack download URL sent to players on a tower server.

staging-url

string

Alternate pack URL. Not present in the shipped pack.yml — resolves to null when omitted.

checksum

string

SHA-256 checksum (sha256:...) of the pack, validated by the client.

unload-on-quit

boolean

Whether the pack is unloaded when a player leaves the tower server. Skipped entirely in the DEVELOPMENT environment (PackListener is not registered).

url: "https://cdn.astralrealm.com/astral-pack-1.0.0.zip" checksum: "sha256:abc123def456ghi789jkl012mno345pqr678stu901" unload-on-quit: true
Last modified: 25 July 2026