Configuration Files
Two YAML files steer behaviour: config.yml (global limits, tax, enabled groups) and categories.yml (category layout for the listing menu).
config.yml
Field | Type | Description |
|---|---|---|
| Duration | How long a listing stays in |
| double | Fraction of the listing price withdrawn from the seller on |
|
| AstralCore server-group names where |
|
| Per-permission cap on concurrent active listings. The highest matching entry wins; |
|
| Bukkit material names. Trying to list any of these triggers |
Listing limits
The limit lookup walks the player's permissions and picks the largest matching value:
That means a tiered ladder works out of the box. Grant ah.arcane to a VIP and they automatically get 20 slots; promote them to ah.mystique and they get 30. Negative values are not supported.
Blacklist
Items are matched by Material only — variants of the same material are blocked together. To block a custom item (CraftEngine, AstralItems, …) by key, extend the model via the API; the built-in blacklist is intentionally narrow because the goal is to keep technical / debug items off the market, not to police gameplay.
categories.yml
Categories shape the browse experience. Each category occupies a slot in the listing menu and owns a list of materials; the matcher picks the first category whose materials set contains the item being filtered.
Fields
Field | Type | Description |
|---|---|---|
| String | Internal identifier. Used by |
| int | Menu slot in |
| boolean | Exactly one category must be |
|
| Standard AstralCore item — material, MiniMessage name, lore, model data, … |
|
| The materials (vanilla and custom) this category catches. Empty for the fallback. |
Matching logic
The "similar" check goes through AHUtils.areSimilar — a deep equality that respects custom-item suppliers from AstralItems / AstralPets / AstralScrolls. See Averaging for the related itemKey logic, which determines how items are grouped for price averaging.
database.properties
A standard JDBC properties file copied from the JAR. It reuses the connection model from AstralCore — see the AstralCore database docs.