Developer API
AstralAuctionHouse exposes its services through the main plugin instance, registers two AstralCore actions, and contributes three placeholder namespaces. There is no shared interface in core-commons for the auction house itself — integrating plugins depend on the auction-house artifact directly.
Maven coordinates
Repository: https://maven.astralrealms.fr/repository/maven-public/.
Plugin handle
Services
Getter | Type | Use |
|---|---|---|
|
| Sell / buy / claim, list cached items. |
|
| Persist and look up sales. |
|
| Cached weighted unit prices. |
|
| TTL, sell tax, listing limits, blacklist. |
|
| Category registry. |
|
| Menu loader. |
ItemService
All four mutating methods take the Redis lock (auctionhouse:locks:<itemId>) internally; you do not need to acquire it yourself. Errors are surfaced to the player via AHMessages; the future resolves silently.
TransactionService
AverageService
Actions
[buy-item]
Calls ItemService.buy(executor, item). The argument is a placeholder that must resolve to an AuctionItem — typically %item_id% while iterating a layout that already provides AuctionItem context.
[claim-item]
Calls ItemService.claim(executor, item).
Placeholders
item_* (AuctionItem)
Placeholder | Type | Description |
|---|---|---|
| UUID | Primary key. |
| ItemStack | Chain into |
| MinecraftPlayer | Seller (network-aware lookup). |
| ItemStatus |
|
| String | Category id. |
| int | Raw asking price. |
| String | Thousands-separated. |
| int | Stack size. |
| TimePlaceholder | Expiry (createdAt + TTL). Chain |
| Integer | Weighted unit price for the item's |
| int |
|
transaction_* (AuctionTransaction)
Placeholder | Type | Description |
|---|---|---|
| UUID | — |
| ItemStack | — |
| MinecraftPlayer | — |
| MinecraftPlayer | — |
| int | Final price. |
| TimePlaceholder | When the sale happened. |
| String |
|
category_* (AuctionCategory)
Placeholder | Type | Description |
|---|---|---|
| String | — |
| int | Menu slot. |
| ItemStack | The display icon. |
Analytics
AstralAuctionHouse pushes two event types through AstralAnalytics:
Event type | Payload |
|---|---|
|
|
|
|
Use them to build retention / market-velocity dashboards in Metabase. See AstralAnalytics for example queries.
Extending the category matcher
There is no extension hook for category matching — the CategoriesConfiguration.find(ItemStack) walks the YAML in order and falls back. To classify a new custom item, add its material (or supplier key) to the relevant category's materials list in categories.yml. See Configuration.