tapscrollWIKI

Configuration

A guided tour of Gavel's config.yml — fees, bidding, offers, blacklist, notifications and performance.

Gavel v1.0.0Paper · Folia supported1.21 – 1.21.x

plugins/Gavel/config.yml holds behaviour only. Strings live in lang/<code>.yml, menu layouts in gui/<name>.yml. Apply changes with /aha reload.

Two sections need a restart

storage and sync are read once at startup. Everything else reloads.

general

plugins/Gavel/config.yml
general:  server-name: "survival-1"  default-language: "en"  follow-client-locale: true  timezone: "system"  date-format: "dd.MM.yyyy HH:mm"  debug: false

server-name is stored on every listing so you can tell where it came from — keep it unique per server. follow-client-locale gives players the language matching their Minecraft client if a matching lang/ file exists; /ah lang beats both.

economy

YAML
economy:  provider: VAULT  currency-format: "%amount%$"  thousands-separator: ","  decimal-separator: "."  number-pattern: "#,##0.##"  compact-numbers: true  compact-threshold: 1000000

VAULT is the only bundled provider. EconomyProvider is public API, so CoinsEngine, PlayerPoints or an item currency can be wired in.

compact-numbers shortens large figures in tight GUI spots (1.2M instead of 1,234,567.00). Confirmation screens always show the exact number regardless — nobody should ever agree to a rounded price.

auction

YAML
auction:  durations: [ 6, 12, 24, 48, 72 ]  default-duration-hours: 24  listing-limits:    default: 5  price-bounds:    minimum: 1.0    maximum: 1000000000.0    max-multiple-of-median: 0  listing-fee:    percent: 1.0    flat: 0.0    minimum: 0.0    maximum: 10000.0  sales-tax-percent: 5.0  tax-destination: NOTHING  tax-account: ""  cancel-fee-percent: 0.0  list-cooldown-seconds: 3
KeyDefaultNotes
durations6–72hOffered in the sell menu. Gated by gavel.duration.<hours>.
listing-limits.default5Fallback when a player has no gavel.limit.<n>.
price-bounds.max-multiple-of-median0Rejects listings priced absurdly above the market median. A hard stop against coin laundering via nonsense listings. 0 disables.
listing-fee1%Charged on creation, never refunded. Discourages spam listing.
sales-tax-percent5.0Deducted from the seller's payout. Overridden by gavel.tax.<percent>.
tax-destinationNOTHINGNOTHING removes the money from the economy (a sink). ACCOUNT pays tax-account.
cancel-fee-percent0.0Cost of cancelling an active listing.
list-cooldown-seconds3Stops chat-spam listing.

The blacklist

YAML
auction:  allow-shulker-boxes: true  allow-written-books: true  allow-damaged-items: true  blacklist:    materials:      - "BEDROCK"      - "COMMAND_BLOCK"      - "BARRIER"      - "DEBUG_STICK"    name-contains: [ ]    max-enchant-levels:      "*": 10      "minecraft:sharpness": 5      "minecraft:protection": 4    reject-suspicious-attributes: true

max-enchant-levels is the classic 32k-sword filter — "*" sets the cap for anything not listed individually. reject-suspicious-attributes refuses items carrying attribute modifiers beyond vanilla ranges.

name-contains matches plain display names and lore case-insensitively, which is useful against renamed dupe markers you have already identified.

bidding

YAML
bidding:  enabled: true  min-increment-percent: 5.0  min-increment-flat: 1.0  anti-snipe:    enabled: true    trigger-window-seconds: 15    extend-seconds: 15    max-extensions: 20  proxy-bidding: true  refund-on-outbid: true  broadcast-above: 100000

The minimum raise is the larger of the percent and the flat amount. Anti-snipe pushes the end time out when somebody bids in the last 15 seconds, capped at 20 extensions so an auction cannot run forever.

Leave refund-on-outbid on

With it off, nothing is escrowed and everything settles at the end — which means the winning bid can fail because the money is gone. See Auctions & offers.

offers

YAML
offers:  enabled: true  min-percent-of-price: 40.0  expire-hours: 24  max-open-per-player: 5  escrow: true

Buyers propose a price on a buy-it-now listing. min-percent-of-price stops lowball spam; 40% is a reasonable floor. Money is held in escrow while the offer is open.

YAML
featured:  enabled: true  cost-flat: 5000.0  cost-percent-of-price: 0.0  duration-hours: 6  max-concurrent: 10  highlight: true

Paid promotion. max-concurrent is the important one — with no cap, the front page becomes entirely featured listings and the promotion stops being worth paying for.

mailbox

YAML
mailbox:  purge-after-days: 0  notify-on-join: true

Items from expired, cancelled and won listings land here. 0 means never purge, which is the recommended setting: this is the anti-item-loss guarantee, and a purge turns it into a deadline.

watchlist

YAML
watchlist:  enabled: true  max-per-player: 5  check-interval-seconds: 30  notify-once-per-listing: true  actionbar: true

Alerts also fire immediately when a matching listing is created on this server; the interval is the sweep that catches listings created elsewhere on a network.

notifications and discord

YAML
notifications:  sale-message: true  deliver-on-join: true  broadcast-listings-above: 0 discord:  enabled: false  webhook-url: ""  post:    rare-listings: true    grand-auction: true    integrity-flags: false  rare-listing-threshold: 250000.0  username: "Gavel"  weekly-report:    enabled: false    day: "MONDAY"    hour: 12

Send integrity flags to a private channel

If you turn on post.integrity-flags, use a staff-only webhook. The flags name accounts, and a public accusation based on an automated heuristic is a bad look.

performance

YAML
performance:  listing-cache-seconds: 30  price-cache-seconds: 120  expiry-check-seconds: 20

Browse pages are served from a cache invalidated on every write, locally and across the network when sync is on. listing-cache-seconds is the ceiling for how stale a page can get if an invalidation is ever missed — not the normal refresh interval.

The rest