Content generated with AI — it may contain mistakes.

Between players

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.

ButtonWhat it does
Instant buyBuys now from the cheapest sell offers. Starts at 64 units.
Instant sellSells now into the highest buy orders. Starts at what you carry.
Buy orderPlaces an order at your price; money for all of it is held.
Sell offerPlaces 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

WhatWho paysWhen
tax-percent (1.25% by default)The seller, out of what they receiveEvery 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 offerWhen it is placed, even if it fills at once. Not refunded. Instant trades pay none.

Limits

  • Open orders and offers: max-offers-per-player together, or the player's exyliamarket.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-volume or the player's exyliamarket.bazaar.volume.<n>. Days are UTC, so it resets at 00:00 UTC.
How the daily volume is counted

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 endsBuy orderSell offer
It expiresMoney left is refunded to the balanceItems left go to /collect
You cancel it (right-click in /bazaar mine, then confirm)Refunded to the balanceInto your inventory, the rest to /collect
Staff cancel itRefunded to the balanceTo /collect
The expiry message says /collect for both

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.

modules/bazaar/config.yml
categories:
  mining:
    icon: DIAMOND_PICKAXE
  farming:
    icon: GOLDEN_HOE

The products editor

/bazaaradmin (also /bzadmin) opens the staff hub: the products editor and every open order and offer.

ButtonWhat it does
AddPick one material from a search. Only plain, stackable materials can be products.
Put items downAdds a product for every plain material among the items you place in the window, then gives them back.
Import my inventoryThe same, from your inventory.
Load default catalogueAdds whatever of the shipped 227 is missing, never twice.
A rowSets that product's category and position.
SaveWrites 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.

KeyDefaultWhat it does
currency''The currency the bazaar trades in. Empty is the server's default currency.
tax-percent1.25Taken from what a seller is paid.
flat-fee0.0Charged per order or offer placed.
max-offers-per-player14Open orders and offers per player.
daily-volume-1Money one player may trade per day. -1 for no limit.
max-amount2304Most units one order, offer or instant trade may move.
max-unit-price-1.0Highest price per unit. -1 for no ceiling.
price-step0.1How far best + step moves past the best price. Never less than the currency's smallest amount.
offer-hours168How long an order or offer stays. 0 for forever.
levels-shown5Prices of each side the product screen lists.
toast-frameTASKThe 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