Astral Realms Documentation Help

Installation

1. Pre-flight

Before dropping the JAR, make sure these are reachable from every server that will run the auction house:

  • RabbitMQ (auctionhouse.items exchange is registered on enable).

  • Redis (locks + average cache live there).

  • MariaDB / PostgreSQL credentialled for AstralCore.

  • AstralCore, AstralEconomy / Polaris, AstralItems, AstralPets, AstralScrolls installed.

2. Drop the JAR

Copy AstralAuctionHouse-<version>.jar into plugins/ on every server where players should be able to sell or buy. The plugin starts disabled on servers whose group is not in config.yml > commands-enabled-groups, but the cross-server cache and packet listener still spin up so prices stay consistent.

3. First start

On first start the plugin generates:

plugins/AstralAuctionHouse/ ├── config.yml ← TTL, sell tax, listing limits, blacklisted materials, enabled groups ├── messages.yml ← player-facing strings ├── categories.yml ← UI category definitions ├── database.properties ← JDBC config (copied from JAR) └── menus/ ├── listing.yml ├── players-items.yml ├── expired.yml └── confirmation.yml

The database schema is applied automatically via schema.sql on the first DB connection:

Table

Purpose

items

One row per listed item with JSONB-style LONGBLOB payload.

transactions

One row per completed sale. Auto-pruned to 60 days by the cleanup task.

4. Configure

In order:

  1. config.yml — set the global TTL, sell tax, blacklisted materials, and the listing limits per permission node. See Configuration.

  2. categories.yml — adjust the slot layout and the materials each category catches.

  3. messages.yml — localise. See Messages.

  4. menus/*.yml — every screen is an AstralCore menu; tweak freely without rebuilding the JAR.

Reload at runtime with /ah reload — no restart needed when only YAML changes.

Permissions

Node

Default

Description

auctionhouse.use

true

Required to open /ah and /ah open <player>.

auctionhouse.admin

op

Run /ah refresh to recompute averages.

auctionhouse.reload

op

Run /ah reload.

ah.<tier>

per tier

Listing-limit override — e.g. ah.arcane raises a player's slot cap.

/ah sell is not behind a permission node; it is gated by commands-enabled-groups (typically spawn). See Selling, Buying & Claiming.

RabbitMQ

The plugin registers one exchange: auctionhouse.items. Two packets:

Opcode

Packet

Fired by

0x00

ItemUpdatedPacket(uuid)

ItemRepository.save()

0x01

ItemDeletedPacket(uuid)

ItemRepository.delete()

Every server with the plugin enabled subscribes and refreshes its Caffeine cache for that item. See Architecture.

Redis keys

Key

Type

Purpose

auctionhouse:locks:<itemId>

string + EX 30s

Distributed lock around buy / claim / expire.

auctionhouse:average

hash

itemKey → averagePrice cache, refreshed every 30 minutes.

Last modified: 25 July 2026