Bazaar
An order book per product: instant buys and sells, buy orders and sell offers at a price, how orders match, fees, limits and the daily volume, and the products editor.
The bazaar is a two-sided order book for each product. Players place buy orders (their money is held) and sell offers (their items are held) at a price per unit, or buy and sell instantly against the best of them. Products are plain materials, chosen by staff and filed in categories.
Module id bazaar, file modules/bazaar/config.yml, command /bazaar (also /bz).
Using it
/bazaar opens the front with its categories; /bazaar <item> goes straight to one product, such as
/bazaar diamond. /bazaar mine lists your open orders and offers.
A product's screen shows the best buy and sell prices and the spread, the top prices on each side with how
many units wait at each (levels-shown, 5 by default), the last price, average and trend from the
price index, how many you carry, and a button for the 7-day price chart. It
updates while it is open.
| Button | What it does |
|---|---|
| Instant buy | Buys now from the cheapest sell offers. Starts at 64 units. |
| Instant sell | Sells now into the highest buy orders. Starts at what you carry. |
| Buy order | Places an order at your price; money for all of it is held. |
| Sell offer | Places an offer at your price; the items are held. |
Instant trades need exyliamarket.bazaar.instant, orders and offers exyliamarket.bazaar.create; both are
held by everybody unless a server denies them.
Each opens a review first. An instant trade shows how many units are available, the total, the average and the worst price it reaches, and for a sale the tax and the payout. If the book moved between the review and Confirm, fewer units trade, never at a worse price than the review showed: unspent money is refunded and unsold items handed back.
An order or offer starts at best + step: one price-step past the best price on its side. Match
uses the best price exactly. With nothing on that side the other side's best price is used, then the 7-day
average.
How orders match
- The best price trades first, and among equal prices the oldest.
- Every fill happens at the price of the order that was waiting. A buy order placed above the cheapest offer buys at the offer's price and is refunded the difference.
- A new order first fills against everything its price crosses; only what is left waits in the book.
- Your own orders and offers never fill each other.
When an order of yours fills while you are away, a sell offer pays you at once, minus tax, and a buy order's
items go to /collect. You hear about it on any server, with a toast framed by
toast-frame.
Money
| What | Who pays | When |
|---|---|---|
tax-percent (1.25% by default) | The seller, out of what they receive | Every fill. Buyers pay no tax. exyliamarket.bazaar.tax.<n> sets it per rank, the lowest winning, read from the seller at the fill (offline: this rate). |
flat-fee (0 by default) | Whoever places an order or offer | When it is placed, even if it fills at once. Not refunded. Instant trades pay none. |
Limits
- Open orders and offers:
max-offers-per-playertogether, or the player'sexyliamarket.bazaar.limit.<n>. Checked before placing, even an order that would fill at once. - Units: one order, offer or instant trade moves at most
max-amount. - Price: at least the currency's smallest amount per unit, at most
max-unit-price. - Daily volume: money traded per day, bought and sold together,
daily-volumeor the player'sexyliamarket.bazaar.volume.<n>. Days are UTC, so it resets at 00:00 UTC.
The limit is checked before a trade: the trade that crosses it still goes through, and an order already
waiting in the book keeps filling. Each fill adds its value in whole currency units to both sides.
-1 turns the limit off; 0 blocks every bazaar trade, since any volume is at the limit.
Expiry and cancelling
Orders and offers last offer-hours (168, a week, by default; 0 keeps them forever), checked every minute.
| What ends | Buy order | Sell offer |
|---|---|---|
| It expires | Money left is refunded to the balance | Items left go to /collect |
You cancel it (right-click in /bazaar mine, then confirm) | Refunded to the balance | Into your inventory, the rest to /collect |
| Staff cancel it | Refunded to the balance | To /collect |
The shipped line for an expired order reads "… is waiting in /collect" whichever side it was. For a buy
order the money is on the balance, not in /collect.
Products and categories
The shipped catalogue is filled in the first time the products table is empty: 227 products in seven categories — mining 55, farming 42, mobs 33, woods 26, blocks 36, fishing 9, oddities 26. Materials the server's version does not know are skipped.
Categories and their icons are in config.yml; their names are in the bazaar's messages.yml under
categories. A product in a category that is no longer configured is not shown on any category screen,
but /bazaar <item> still opens it.
categories:
mining:
icon: DIAMOND_PICKAXE
farming:
icon: GOLDEN_HOEThe products editor
/bazaaradmin (also /bzadmin) opens the staff hub: the products editor and every open order and offer.
| Button | What it does |
|---|---|
| Add | Pick one material from a search. Only plain, stackable materials can be products. |
| Put items down | Adds a product for every plain material among the items you place in the window, then gives them back. |
| Import my inventory | The same, from your inventory. |
| Load default catalogue | Adds whatever of the shipped 227 is missing, never twice. |
| A row | Sets that product's category and position. |
| Save | Writes the list. Nothing changes until then; a product removed from the list is deleted. |
New products land in the shipped catalogue's category when they are part of it, otherwise in the first configured category. Orders on a removed product stay until they are cancelled or expire.
The offers list cancels any order or offer with a right-click and a confirmation, and
/bazaaradmin cancel <id> does it by id. Everything here needs exyliamarket.bazaar.admin.
Settings
Under settings: in modules/bazaar/config.yml, and editable in game from /marketadmin.
| Key | Default | What it does |
|---|---|---|
currency | '' | The currency the bazaar trades in. Empty is the server's default currency. |
tax-percent | 1.25 | Taken from what a seller is paid. |
flat-fee | 0.0 | Charged per order or offer placed. |
max-offers-per-player | 14 | Open orders and offers per player. |
daily-volume | -1 | Money one player may trade per day. -1 for no limit. |
max-amount | 2304 | Most units one order, offer or instant trade may move. |
max-unit-price | -1.0 | Highest price per unit. -1 for no ceiling. |
price-step | 0.1 | How far best + step moves past the best price. Never less than the currency's smallest amount. |
offer-hours | 168 | How long an order or offer stays. 0 for forever. |
levels-shown | 5 | Prices of each side the product screen lists. |
toast-frame | TASK | The toast when an order of yours fills: TASK, GOAL, CHALLENGE or NONE. |
Bazaar prices are also placeholders.
Something missing on this page? Tell us on Discord