tapscrollWIKI

What Gavel does

An auction house that tells players what an item is actually worth — and refuses to let a market be manipulated.

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

Gavel is a full auction house: buy-it-now listings, timed auctions with proxy bidding, offers, a mailbox that never eats items, and real cross-server support. What makes it different from every other auction plugin is the two systems underneath it.

The pricing problem

Every auction plugin that shows a "suggested price" derives it from active listings. Active listings are asking prices: they are what optimists want, not what anybody paid. The result is a number that drifts upward forever, because each new seller anchors on the last one's fantasy.

Gavel only counts completed sales, and then does four things to that sample:

  • Time decay — a sale from today counts twice as much as one from five days ago.
  • IQR trimming — samples more than 1.5 interquartile ranges from the median are dropped.
  • Seller cap — no single seller may contribute more than 30% of the sample.
  • Confidence tiers — below 25 samples the estimate is labelled medium, below 10 it is low.

Then, instead of one authoritative number, it offers three: quick (25th percentile), fair (median) and patient (75th percentile), each with the sell-through rate for that price band. The player answers "will it sell?", not just "what is it worth?".

Why three numbers matter

A single suggested price becomes self-fulfilling: everyone lists at it, so every sale happens at it, so the median never moves. Three percentiles keep the sample spread out and the market alive.

Market integrity

Price data is only as good as the trades feeding it. Gavel scores seller/buyer pairs for wash trading — repeated trades between the same two accounts, unusual volume between them, or a price ten times the item's median — and checks for shared IP addresses and self-trades through alts.

Flagged trades are excluded from pricing by default, so a coin-laundering ring cannot poison the market data even if you never notice them. Blocking the transaction outright is available but off by default: a false positive that blocks a legitimate trade costs more than a logged flag does.

What players get

FeatureNotes
Buy it now/ah sell <price> [hours]
Timed auctionsProxy bidding, anti-snipe extension, instant refund on outbid
OffersPropose a price on a BIN listing; the seller accepts or declines
WatchlistAlerts when a matching listing appears under your price
MailboxExpired, cancelled and won items land here — nothing is ever deleted
Price checker/ah price with sell-through rates and a 14-day sparkline
Market tabTrends, movers and the cheapest listings right now
Grand auctionsServer-wide live auction with a bossbar countdown
Featured listingsPaid promotion that sorts above everything else

What operators get

  • SQLite or MySQL, with real cross-server sync over Redis pub/sub.
  • Vault economy out of the box, and a public EconomyProvider interface for CoinsEngine, PlayerPoints or item currencies.
  • Fees and taxes with a choice of sink or destination account.
  • A blacklist that actually works: materials, name matching, enchantment level caps and suspicious attribute modifiers — the 32k-sword filter, built in.
  • Custom-item support for ItemsAdder, Nexo, Oraxen, MMOItems, ExecutableItems and EcoItems.
  • Every string in lang/<code>.yml, every menu layout in gui/<name>.yml.

Item safety

Two design decisions worth knowing about, because they are the difference between an auction house and an item-duplication bug:

  • Menus never contain real items. What you see in a GUI is a rendered copy; clicking resolves to a listing ID. The sell flow takes the item by inventory slot, not by value.
  • Money moves before the row does. A purchase debits the buyer first, then does a compare-and-set on the listing row. If somebody else won the race, the money is refunded. Doing it the other way round produces sold listings that were never paid for.

Items are stored via ItemStack#serializeAsBytes, which runs through Mojang's DataFixerUpper — so listings survive the format changes that broke other plugins on 1.20.5 and 1.21.5.

Requirements

Server softwarePaper 1.21 or newer · Folia supported
Java21
RequiredVault + an economy plugin
OptionalRedis (cross-server), PlaceholderAPI, custom item plugins

Next: install it.