Content generated with AI — it may contain mistakes.

Getting started

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

PluginWhat for
packeteventsRequired. 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.
ExyliaLibRequired, 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 economyExyliaEconomy, 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."
ExyliaLib is listed as soft, and installed for you

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

PluginWhat it adds
PlaceholderAPIThe 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/.

FileContents
loader.ymlWritten by the loader. A BuiltByBit purchase needs nothing in it: the licence is in the jar.
config.ymlWhat 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.ymlOne per game: whether it is on, its name, icon, commands, rules, timings, look and sounds. See Games.
tables.ymlThe 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.ymlWhere rows are stored. Written by ExyliaLib.
lang/<language>/messages.ymlThe 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.ymlEach 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.ymlThe 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.

ColumnHolds
idThe player's UUID and the game id, as <uuid>:<game>
playerThe player's UUID (indexed)
game_idThe game, such as tictactoe
wins, losses, drawsThe 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