ZephMC Docs

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

config.yml
appearance:
  primary: "#5B8DEF"
KeyTypeDefaultWhat it does
appearance.primary#RRGGBB#5B8DEFThe 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

config.yml
language: auto
KeyTypeDefaultWhat it does
languageauto or a locale nameautoauto 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

config.yml
storage:
  type: sqlite
  file: auctions.db
  mysql:
    host: localhost
    port: 3306
    database: zyauctions
    username: root
    password: ""
    properties: "useSSL=false"
    pool-size: 6
KeyTypeDefaultWhat it does
storage.typesqlite or mysqlsqliteWhich database backend to use.
storage.filetextauctions.dbSQLite only. The file name, relative to plugins/ZyAuctions/.
storage.mysql.hosttextlocalhostMySQL server host.
storage.mysql.port1-655353306MySQL server port.
storage.mysql.databasetextzyauctionsDatabase name. It must already exist; the plugin creates its tables but not the database.
storage.mysql.usernametextrootUser to connect as. Needs SELECT, INSERT, DELETE and CREATE TABLE.
storage.mysql.passwordtext""That user's password.
storage.mysql.propertiestextuseSSL=falseAppended to the JDBC URL after a ?.
storage.mysql.pool-size1-326How 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

config.yml
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
    # ...
KeyTypeDefaultWhat it does
listings.default-durationduration48hHow long a listing runs when the player does not give a duration.
listings.max-durationduration7dThe longest a player may run a listing for. A longer request is refused with a message naming this value.
listings.max-per-player1-10005How many listings one player may have at once. Raise it per player with permissions — see below.
listings.min-pricenumber ≥ 0.011.0The lowest allowed asking price or starting bid.
listings.max-pricenumber ≥ min-price10000000.0The highest allowed asking price. Also caps bids.
listings.fee.flatnumber ≥ 00.0Charged when a listing is created, whatever the price.
listings.fee.percent0-1002.0Also charged when a listing is created, as a percentage of the asking price.
listings.tax-percent0-1005.0Withheld from the seller's payout when something sells. The buyer still pays the full price.
listings.blacklistlist of materialssee belowMaterials 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

config.yml
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_FRAME

These 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

config.yml
auctions:
  enabled: true
  min-increment: 1.0
  anti-snipe:
    enabled: true
    threshold: 30s
    extend-by: 30s
KeyTypeDefaultWhat it does
auctions.enabledbooleantrueTurn off to allow fixed-price listings only. /ah auction then refuses with a message pointing at /ah sell.
auctions.min-incrementnumber ≥ 0.011.0The smallest bid step a seller may set on their own auction.
auctions.anti-snipe.enabledbooleantrueWhether a late bid pushes the end time back.
auctions.anti-snipe.thresholdduration30sA bid placed with less than this remaining triggers an extension.
auctions.anti-snipe.extend-byduration30sHow 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

config.yml
collection:
  max-entries: 90
KeyTypeDefaultWhat it does
collection.max-entries9-99990How 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

config.yml
notifications:
  sold: true
  outbid: true
  expired: true
  broadcast-new-listings: false
  broadcast-min-price: 10000.0
KeyTypeDefaultWhat it does
notifications.soldbooleantrueTell a seller when their listing sells, and when their auction receives a bid.
notifications.outbidbooleantrueTell a bidder when they are outbid. Their money is refunded either way; this only controls the message.
notifications.expiredbooleantrueTell a seller when a listing runs out of time.
notifications.broadcast-new-listingsbooleanfalseAnnounce expensive new listings to everyone online.
notifications.broadcast-min-pricenumber ≥ 010000.0The 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

config.yml
sounds:
  enabled: true
  volume: 1.0
KeyTypeDefaultWhat it does
sounds.enabledbooleantrueWhether the plugin plays anything at all.
sounds.volume0.0-1.01.0A 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

config.yml
gui:
  fill-empty: true
KeyTypeDefaultWhat it does
gui.fill-emptybooleantruePut a grey pane in unused menu slots. Turn off for a plainer look.

sweep-interval

config.yml
sweep-interval: 5s
KeyTypeDefaultWhat it does
sweep-intervalduration ≥ 1s5sHow 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.

On this page