Configuration
Every option in config.yml, what it does, and its default.
plugins/ZyAuctions/config.yml. Run /ah reload after editing — no restart needed, except
for the storage section.
A bad value never stops the server. It is logged with what was expected and the default is used in its place, so a typo costs you one console line rather than a crash.
Durations
Anywhere this page says duration, the format is a number followed by d, h, m or
s, optionally combined: 30s, 45m, 12h, 7d, 1d12h, 2d4h30m. A bare number is
read as seconds.
appearance
appearance:
primary: "#5B8DEF"| Key | Type | Default | What it does |
|---|---|---|---|
appearance.primary | #RRGGBB | #5B8DEF | The one colour you choose. Used for the chat prefix, menu titles, button names and headings. Everything else — success green, error red, muted grey — is fixed. |
Anything that is not a six-digit hex colour with a leading # falls back to the default.
See Appearance for what it affects and why there is only one.
language
language: auto| Key | Type | Default | What it does |
|---|---|---|---|
language | auto or a locale name | auto | auto shows each player their own client language, falling back to English. Any locale name — de_DE, fr, pt_BR — shows that language to everyone regardless of their client. |
See Languages for how to add one.
storage
storage:
type: sqlite
file: auctions.db
mysql:
host: localhost
port: 3306
database: zyauctions
username: root
password: ""
properties: "useSSL=false"
pool-size: 6| Key | Type | Default | What it does |
|---|---|---|---|
storage.type | sqlite or mysql | sqlite | Which database backend to use. |
storage.file | text | auctions.db | SQLite only. The file name, relative to plugins/ZyAuctions/. |
storage.mysql.host | text | localhost | MySQL server host. |
storage.mysql.port | 1-65535 | 3306 | MySQL server port. |
storage.mysql.database | text | zyauctions | Database name. It must already exist; the plugin creates its tables but not the database. |
storage.mysql.username | text | root | User to connect as. Needs SELECT, INSERT, DELETE and CREATE TABLE. |
storage.mysql.password | text | "" | That user's password. |
storage.mysql.properties | text | useSSL=false | Appended to the JDBC URL after a ?. |
storage.mysql.pool-size | 1-32 | 6 | How many pooled connections to keep. |
MySQL is for one server, not a network. ZyAuctions keeps active listings in memory and treats that as the source of truth. Two servers pointed at the same database would not see each other's sales and could sell the same item twice. Use MySQL if you want your auction data in your existing database for backups or external tooling — not to share an auction house between servers.
Changing the storage section takes a full restart. /ah reload logs a warning and keeps
using the backend it started with, because swapping underneath a loaded in-memory index
would lose data.
listings
listings:
default-duration: 48h
max-duration: 7d
max-per-player: 5
min-price: 1.0
max-price: 10000000.0
fee:
flat: 0.0
percent: 2.0
tax-percent: 5.0
blacklist:
- BEDROCK
# ...| Key | Type | Default | What it does |
|---|---|---|---|
listings.default-duration | duration | 48h | How long a listing runs when the player does not give a duration. |
listings.max-duration | duration | 7d | The longest a player may run a listing for. A longer request is refused with a message naming this value. |
listings.max-per-player | 1-1000 | 5 | How many listings one player may have at once. Raise it per player with permissions — see below. |
listings.min-price | number ≥ 0.01 | 1.0 | The lowest allowed asking price or starting bid. |
listings.max-price | number ≥ min-price | 10000000.0 | The highest allowed asking price. Also caps bids. |
listings.fee.flat | number ≥ 0 | 0.0 | Charged when a listing is created, whatever the price. |
listings.fee.percent | 0-100 | 2.0 | Also charged when a listing is created, as a percentage of the asking price. |
listings.tax-percent | 0-100 | 5.0 | Withheld from the seller's payout when something sells. The buyer still pays the full price. |
listings.blacklist | list of materials | see below | Materials that may not be listed. Unknown names are logged and ignored. |
The total listing fee is flat + (price × percent ÷ 100). It is charged whether or not
the listing sells — that is the point of it, to discourage listing spam. Set both to 0
to charge nothing.
zyauctions.bypass.fee and zyauctions.bypass.tax waive the fee and the tax respectively.
If default-duration is longer than max-duration, the maximum is used as the default and
a warning is logged.
The default blacklist
listings:
blacklist:
- BEDROCK
- COMMAND_BLOCK
- CHAIN_COMMAND_BLOCK
- REPEATING_COMMAND_BLOCK
- COMMAND_BLOCK_MINECART
- STRUCTURE_BLOCK
- STRUCTURE_VOID
- JIGSAW
- BARRIER
- LIGHT
- DEBUG_STICK
- SPAWNER
- END_PORTAL_FRAMEThese are items players should not normally have, so trading them usually means something
went wrong somewhere else. zyauctions.bypass.blacklist ignores the list entirely.
auctions
auctions:
enabled: true
min-increment: 1.0
anti-snipe:
enabled: true
threshold: 30s
extend-by: 30s| Key | Type | Default | What it does |
|---|---|---|---|
auctions.enabled | boolean | true | Turn off to allow fixed-price listings only. /ah auction then refuses with a message pointing at /ah sell. |
auctions.min-increment | number ≥ 0.01 | 1.0 | The smallest bid step a seller may set on their own auction. |
auctions.anti-snipe.enabled | boolean | true | Whether a late bid pushes the end time back. |
auctions.anti-snipe.threshold | duration | 30s | A bid placed with less than this remaining triggers an extension. |
auctions.anti-snipe.extend-by | duration | 30s | How much time such a bid adds. |
Anti-snipe stops an auction being won by clicking at the last possible moment: bid in the last thirty seconds and everyone gets another thirty seconds to respond. There is no cap on how many times it can extend, which is intentional — an auction ends when the bidding actually stops.
collection
collection:
max-entries: 90| Key | Type | Default | What it does |
|---|---|---|---|
collection.max-entries | 9-999 | 90 | How many items may wait in one player's collection bin. |
This is enforced at listing time, not at delivery time. A player whose bin is at capacity is refused when they try to create a new listing, and told to claim some items first. Nothing that is already in flight is ever dropped — an expiring listing always has somewhere to return to, which is exactly what this limit guarantees.
Two full pages is 90, which is why that is the default. Lowering it below what your players routinely hold in flight will just annoy them; raising it costs nothing but memory.
notifications
notifications:
sold: true
outbid: true
expired: true
broadcast-new-listings: false
broadcast-min-price: 10000.0| Key | Type | Default | What it does |
|---|---|---|---|
notifications.sold | boolean | true | Tell a seller when their listing sells, and when their auction receives a bid. |
notifications.outbid | boolean | true | Tell a bidder when they are outbid. Their money is refunded either way; this only controls the message. |
notifications.expired | boolean | true | Tell a seller when a listing runs out of time. |
notifications.broadcast-new-listings | boolean | false | Announce expensive new listings to everyone online. |
notifications.broadcast-min-price | number ≥ 0 | 10000.0 | The asking price a listing needs before it is announced. |
Broadcasts are off by default because on a busy server they turn chat into a shopping
channel. If you turn them on, set broadcast-min-price high enough that only genuinely
notable listings trigger one.
Players can opt out of all notifications by losing zyauctions.notify.
sounds
sounds:
enabled: true
volume: 1.0| Key | Type | Default | What it does |
|---|---|---|---|
sounds.enabled | boolean | true | Whether the plugin plays anything at all. |
sounds.volume | 0.0-1.0 | 1.0 | A multiplier applied to every cue. |
Every sound is played to one player only, never broadcast to bystanders, and everything
sits under the Master volume slider. volume: 0.4 is a good setting if you find the
defaults intrusive but do not want silence.
gui
gui:
fill-empty: true| Key | Type | Default | What it does |
|---|---|---|---|
gui.fill-empty | boolean | true | Put a grey pane in unused menu slots. Turn off for a plainer look. |
sweep-interval
sweep-interval: 5s| Key | Type | Default | What it does |
|---|---|---|---|
sweep-interval | duration ≥ 1s | 5s | How often expired listings are settled and finished auctions are paid out. |
This is the longest a listing can linger past its end time before being settled. Lower
values are more responsive; the work is proportional to the number of live listings and is
not measurable at any sane setting. Values below 1s are clamped, because that would mean
running every tick.