Installation
The loader jar and the licence, dependencies, the files the plugin writes, the database and updating.
Getting the plugin
ExyliaTabletop is a premium plugin, sold on
BuiltByBit. It ships through
the Lukittu loader, so the file you install is the loader jar, Exylia-Tabletop-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 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 ExyliaTabletop at all. Every board, the room round the player and keeping them inside it are drawn with packets. |
ExyliaLib | Required, version 1.376.0 or newer. Configuration, menus and prompts, the lobby, the escrow, the economy, the database, the stage, the side panels, tables in the world and their chairs, the announcements and the games catalogue. |
| An economy | ExyliaEconomy, Vault with an economy plugin, or PlayerPoints. Without one there is no currency to play for, and every game answers "There is no currency you can play for." |
The loader's plugin.yml names ExyliaLib under softdepend on purpose: the loader is what installs it, so
the loader 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 |
|---|---|
PlaceholderAPI | The plugin's placeholders in other plugins: scoreboards, tab, holograms. See Placeholders. |
Installing
Drop in the jars
Exylia-Tabletop-Loader.jar and packetevents into plugins/, and an economy if the server has none.
Start the server
The loader writes loader.yml, 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, one modules/<game>/config.yml per game, its messages and menus, and
creates its table. The console ends with ExyliaTabletop enabled.
Play
Every player can already open a game's lobby, open a table and invite others: exyliatabletop.play,
exyliatabletop.create and exyliatabletop.duel are on for everybody by default. See
Playing a match.
Generated files
All of them live in plugins/ExyliaTabletop/.
| File | Contents |
|---|---|
loader.yml | Written by the loader. A BuiltByBit purchase needs nothing in it: the licence is in the jar. |
config.yml | What every game shares: language, stakes, currencies and the server fee, waiting times, what players may do while they play, the board look, the room and the command names. See Configuration. |
modules/<game>/config.yml | One per game: whether it is on, its name, icon, commands, rules, timings, look and sounds. See Games. |
tables.yml | The tables set down in the world with /tabletopadmin table: each one's game, where it stands and its seats. Written by the plugin; a table in a world that is not loaded is kept and shown once it is. |
database.yml | Where rows are stored. Written by ExyliaLib. |
lang/<language>/messages.yml | The shared lines: stakes, tables and invitations, the match, results, the games catalogue cards, the admin lines and the labels menus show. |
lang/<language>/modules/<game>/messages.yml | Each game's own texts: buttons, headings and its in-play lines. Tic-Tac-Toe has none; it uses only the shared lines. |
lang/<language>/menus/user/lobby.yml | The lobby every game opens. Yours to restyle: a release only adds what is missing. |
lang/<language>/menus/admin/ | The admin screens hub, matches and match. Rewritten from the jar on every start. |
The database
Each player's record per game — wins, losses and draws — is a row of tabletop_stats in the database
database.yml points at: H2 in a file by default, or MySQL, MariaDB, PostgreSQL or MongoDB through
ExyliaLib. Rows of online players are kept in memory; results are written as atomic increments, so several
servers sharing one database never lose a result.
| Column | Holds |
|---|---|
id | The player's UUID and the game id, as <uuid>:<game> |
player | The player's UUID (indexed) |
game_id | The game, such as tictactoe |
wins, losses, draws | The counts. A pair that wins at Truco counts a win for each partner. |
Stakes are held by ExyliaLib's escrow in the same database. What a restart leaves held is refunded on the next start, and what cannot be handed over at once is delivered on the player's next join. Until the escrow has finished that, tables are closed: "Tables are closed for a moment. Try again shortly."
Updating
Replace the loader jar and restart. Your config.yml, module files, messages and lobby menu are kept; new
keys are added with their defaults.
Something missing on this page? Tell us on Discord