Content generated with AI — it may contain mistakes.

Getting started

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

PluginWhat for
packeteventsRequired. Declared under depend, so without it the server does not load ExyliaMarket at all. The worth line under items is drawn on packets.
A serverPaper 1.21.1 or newer, or Folia 1.21.4 or newer.
ExyliaLibRequired, 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 economyNot 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.
ExyliaLib is listed as soft, and installed for you

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

PluginWhat it adds
ExyliaEconomy or VaultThe 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.
PlaceholderAPIThe plugin's placeholders in scoreboards, tab and holograms. See Placeholders.
ExyliaSurvivalCoreIts 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.
ExyliaAnalyticsEvery 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.

Autosell is for operators by default

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/.

FileContents
config.ymlThe language, debug, the nine module switches, feedback, categories, the price index and the market log. See Configuration.
discord.ymlThe Discord webhooks, off until enabled.
database.ymlWhere rows are stored, and Redis. Written by ExyliaLib.
modules/<module>/config.ymlOne per module: auction-house, auctions, orders, bazaar, shop, sell, sell-wands, trade.
modules/worth/worth.ymlThe worth list: a price per material for /sell.
lang/<code>/messages.ymlThe core lines: errors, notices, /collect, feedback, category names, price words, the admin screens.
lang/<code>/modules/<module>/messages.ymlEach 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.ymlThe 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.

Which files a release may change

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.

TableWhat it holds
sc_market_listingsAuction house listings, with the item in the row while it is up.
market_watchesEach player's auction house watchlist.
sc_auctionsRunning auctions, their top bid and auto-bid ceilings.
sc_ordersBuy orders, with what sellers delivered into them.
market_bazaar_products, market_bazaar_offers, market_bazaar_volumeThe 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_logThe server shop: its shops and products, each player's purchase allowance, and every purchase and sale.
sc_shop_coupons, sc_shop_coupon_usesShop coupons, and who used a once-per-player code.
market_historyEach player's purchases, sales and lost auctions, for the history screens.
market_price_dailyThe price index: one row per material, currency, day and server.
market_logThe market log behind /marketadmin log and the stats screen.
exylia_pending_rewardsExyliaLib'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