AstralAuctionHouse Overview
AstralAuctionHouse is the player-to-player marketplace for AstralRealms. Players list items at a fixed price; buyers browse by category and purchase; the seller receives Polaris currency; the buyer receives the item through the AstralCore mailbox. Listings expire after a TTL; expired items go to a "claim" state so sellers can recover them.
What it does
Listings with permission-tiered limits, a configurable sell tax, and a 14-day default TTL.
Categories keyed by material similarity, including a fallback bucket for unmatched items.
Custom-item awareness — works with AstralItems, AstralScrolls, AstralPets out of the box.
Weighted price averaging based on the last 90 days of completed transactions, refreshed hourly.
Cross-server consistency via two RabbitMQ packets and a Redis-backed distributed lock.
In-game UI rendered through AstralCore menus, with two new actions (
buy-item,claim-item).Audit trail — every sale persists in the
transactionstable for 60 days.Telemetry — listing and purchase events flow into AstralAnalytics.
Requirements
Dependency | Required | Notes |
|---|---|---|
Paper 1.21+ | Yes | — |
AstralCore | Yes | Menus, configuration, economy service, mailbox, chat, analytics. |
AstralEconomy (Polaris) | Yes | Currency back-end. The plugin uses |
AstralItems | Yes | Custom-item key resolution for averaging. |
AstralPets | Yes | Pet food and pet items are matched as their custom types. |
AstralScrolls | Yes | Scrolls participate in averaging via their rarity-aware key. |
MariaDB / PostgreSQL | Yes | Two tables: |
Redis | Yes | Average cache + distributed lock + listing snapshots. |
RabbitMQ | Yes |
|
Architecture at a glance
Storage at a glance
Index hints: idx_owner_status (owner_id, status), idx_buyer_transaction (buyer_id, created_at DESC), idx_seller_transaction (seller_id, created_at DESC).