Installation
The loader jar and the licence, the dependencies and what each optional plugin adds, the files the plugin writes, the database and its tables, networks and updating.
Getting the plugin
ExyliaMarket is a premium plugin, sold on BuiltByBit and the
Exylia store. It ships
through the Lukittu loader, so the file you install is the loader jar, Exylia-Market-Loader.jar. Bought
on BuiltByBit, the licence is embedded in that jar: there is no key to enter. The loader checks the licence
on every start, installs ExyliaLib if it is missing and then hands over to the plugin.
Before you start
| Plugin | What for |
|---|---|
packetevents | Required. Declared under depend, so without it the server does not load ExyliaMarket at all. The worth line under items is drawn on packets. |
| A server | Paper 1.21.1 or newer, or Folia 1.21.4 or newer. |
ExyliaLib | Required, version 1.448.1 or newer. Configuration, menus and prompts, the database, the economy facade, notices, pending deliveries, /settings, placeholders, the staff log and the cross-server channels. |
| An economy | Not declared as required, but without one nothing can be priced: every module that moves money warns in the console and refuses to list, buy or sell. See below. |
plugin.yml names ExyliaLib under softdepend on purpose: the loader is what installs it, so it has to
be allowed to start without it. On a server without ExyliaLib it downloads the newest release into
plugins/ and asks for a restart. On a server running an older release it stages the newest one and says
so in the console; restart once more to apply it.
Optional plugins
| Plugin | What it adds |
|---|---|
ExyliaEconomy or Vault | The money. Every price is paid through ExyliaLib's economy facade, which reaches ExyliaEconomy's currencies by id and any Vault economy. With ExyliaEconomy, listings, auctions and orders may be priced in any of its currencies; with Vault alone there is one currency. |
PlaceholderAPI | The plugin's placeholders in scoreboards, tab and holograms. See Placeholders. |
ExyliaSurvivalCore | Its statistics count what players do on the market — listed, sold, bought, bids, orders filled, wand uses — so missions, seasons and leaderboards can read them. Without it nothing is counted. See Integrations. |
ExyliaAnalytics | Every settled deal and, every five minutes, a snapshot of what each market holds are reported to the Exylia Analytics dashboard. |
Installing
Drop in the jars
Exylia-Market-Loader.jar and packetevents into plugins/, with ExyliaEconomy (or Vault and an
economy plugin) if the server has none yet.
Start the server
The loader checks the licence and installs ExyliaLib if it is missing. If it had to install it, restart once more.
Let it generate
The plugin writes config.yml, discord.yml, a config.yml per module under modules/, the worth
list and the language files, creates its tables and, on an empty database, fills the shop and the
bazaar with their default catalogues. The console ends with ExyliaMarket enabled.
Try it
Every player can already use /ah, /auction, /orders, /bazaar, /shop, /sell, /worth,
/trade and /collect. Staff open everything from /marketadmin. See
First steps.
exyliamarket.sellwands.autosell defaults to op, unlike every other player node. Give it to the ranks
that should have autosell. See Permissions.
Generated files
Everything lives in plugins/ExyliaMarket/.
| File | Contents |
|---|---|
config.yml | The language, debug, the nine module switches, feedback, categories, the price index and the market log. See Configuration. |
discord.yml | The Discord webhooks, off until enabled. |
database.yml | Where rows are stored, and Redis. Written by ExyliaLib. |
modules/<module>/config.yml | One per module: auction-house, auctions, orders, bazaar, shop, sell, sell-wands, trade. |
modules/worth/worth.yml | The worth list: a price per material for /sell. |
lang/<code>/messages.yml | The core lines: errors, notices, /collect, feedback, category names, price words, the admin screens. |
lang/<code>/modules/<module>/messages.yml | Each module's lines. |
lang/<code>/menus/ | /collect, the currency picker and the price chart. |
lang/<code>/menus/admin/ | The staff screens: the admin panel, settings, log, stats, the moderation lists, the bazaar and shop editors. |
lang/<code>/modules/<module>/menus/ | Each module's player screens. |
lang/<code>/modules/trade/window.yml | The trade window's buttons and colours. |
<code> is language in config.yml: default follows ExyliaLib's language, and en, es, pt, fr,
ru and tr are shipped. A module that is switched off writes neither its menus nor its tables.
config.yml, discord.yml, the module configs and every messages.yml are written from a schema: a key a
release adds appears with its default and every value you set is kept. The player screens are yours: a
release updates one only while you have not edited it, and offers the new version next to an edited one.
The staff screens under menus/admin/ are the plugin's and are rewritten from the jar on every start — an
edit there does not survive a restart. worth.yml is written once and never overwritten.
Database
By default the plugin uses H2, a file inside the plugin folder. The engine is chosen in
database.yml: h2, mysql, mariadb, postgresql or mongodb. The file is ExyliaLib's; its full
reference, Redis included, is the library's database page.
| Table | What it holds |
|---|---|
sc_market_listings | Auction house listings, with the item in the row while it is up. |
market_watches | Each player's auction house watchlist. |
sc_auctions | Running auctions, their top bid and auto-bid ceilings. |
sc_orders | Buy orders, with what sellers delivered into them. |
market_bazaar_products, market_bazaar_offers, market_bazaar_volume | The bazaar's products, its open buy orders and sell offers, and each player's daily volume. |
sc_shop_categories, sc_shop_products, sc_shop_limits, sc_shop_log | The server shop: its shops and products, each player's purchase allowance, and every purchase and sale. |
sc_shop_coupons, sc_shop_coupon_uses | Shop coupons, and who used a once-per-player code. |
market_history | Each player's purchases, sales and lost auctions, for the history screens. |
market_price_daily | The price index: one row per material, currency, day and server. |
market_log | The market log behind /marketadmin log and the stats screen. |
exylia_pending_rewards | ExyliaLib's store of deliveries waiting in /collect. |
The sc_ tables keep the names ExyliaSurvivalCore's market modules used. There is no importer: a server
coming from those modules starts with what these tables already hold on that database.
A network
Point every server at the same database and the markets are one market: the same listings,
auctions, orders, bazaar book and shop catalogue everywhere, with notices reaching a player on whichever
server they are. Turn Redis on in database.yml so a change on one server reaches the others at once,
and give each server its own name, which is what the market log, the price index and the webhooks record
as %server%, and what a shop's Servers and a product's Delivery name.
Servers that should not share everything — two survival servers on one market and a full-PvP server with
its own — are put in network groups in config.yml, module by module: a group keeps its rows in tables
of its own, named with the group in front (survival_sc_auctions). See
Configuration.
Every table is classified for ExyliaLib's /exylialib wipe and /exylialib resetplayer, which are how the
market's data is wiped or one player is reset. See Administration.
Updating
The loader downloads the current release when it starts, so a restart is an update. Your files are kept as described above. Config files carry a version and are migrated in place when a release moves a key.
/marketadmin reload re-reads every file and menu. Turning a module on or off still needs a restart, and
the reload names the modules waiting for one.
Something missing on this page? Tell us on Discord