Configuration
Every key of config.yml: language, stakes, currencies and the server fee, waiting times, what players may do while they play, the board look, the room, the side panels, tables in the world and the command names.
config.yml holds what every game shares. Each game's own settings are in modules/<game>/config.yml,
described on Games. Times are written 30s, 5m or 1h30m; colours use
palette tokens such as {primary}. Apply a change with /tabletopadmin reload, except where a key says it
needs a restart.
Language
| Key | Default | What it does |
|---|---|---|
language | default | default follows the language set in ExyliaLib's config.yml; en, es, ru, tr, fr or pt sets this plugin alone. Each is a folder under lang/ you can edit. |
debug | false | Explains in the console what the plugin is doing. |
Stakes: wager
| Key | Default | What it does |
|---|---|---|
wager.currencies | [] | Currencies a stake may use, by their ExyliaLib id. Empty offers every currency the player may use. |
wager.minimum | 10 | Smallest stake a player may put in. |
wager.maximum | 0 | Largest stake. 0 for no limit. |
wager.fee-percent | 5.0 | Share of the pot the server keeps from a win, from 0 to 100. A draw is refunded in full. Players with exyliatabletop.bypass.fee keep everything. |
List only currencies players earn in game. Never offer a currency bought with real money.
The fee is rounded down to the currency's decimals and is not paid to anyone: it leaves the economy.
Waiting times: matches
| Key | Default | What it does |
|---|---|---|
matches.open-expiry | 10m | How long an open table waits in the lobby before its stakes are refunded. A table in the world waits tables.fill-time instead. |
matches.invite-expiry | 60s | How long an invitation waits for an answer. |
matches.join-cooldown | 1s | Time from one attempt to create or join to the next, so a stake is never charged twice by a double click. |
matches.start-delay | 3s | Countdown before the first move, once every player is seated. |
While they play: arena
| Key | Default | What it does |
|---|---|---|
arena.allowed-commands | [msg, r, tell] | Commands a player may still type during a match, without the slash. The game's own commands always work, so /<game> leave does. |
arena.freeze | true | Keeps players inside their room: they may walk around in it, never out. At a table in the world, keeps a standing player within tables.reach of their seat. |
The board look: theme
Shared by every board: ExyliaLib's stage theme.
| Key | Default | What it does |
|---|---|---|
theme.table-block | BLACK_CONCRETE | The block behind every board. |
theme.frame-block, theme.frame-glow | GRAY_CONCRETE, {secondary_light} | The frame round it, and its outline colour. |
theme.button-block, theme.button-glow | GRAY_CONCRETE, {primary} | What buttons are made of, and their outline under the crosshair. |
theme.hover-sound, theme.press-sound | empty, empty | Left empty on purpose: every game plays its own hover and press sounds from its sounds section. Filling them adds a second sound on top. |
theme.verdict-block | BLACK_CONCRETE | The plaque a finished game's verdict lands on. |
theme.verdict-win, -lose, -draw | {success}, {error}, {warning} | Its outline on a win, a loss and a draw. |
theme.rain-item, theme.rain-count | AMETHYST_SHARD, 10 | A win rains this item over the board, this many. Empty or 0 for none. |
theme.fireworks, theme.win-colours | true, [{primary}, {secondary_light}, {info}] | A win sets off fireworks only the winner sees, in these colours. |
theme.zoom | 2.4 | How many times nearer, and so larger, every board is drawn than its game's own distance says. 1 draws them as each game's file places them. |
theme.max-wide, theme.max-tall | 110, 80 | A board never spans more than this many degrees across, or up and down: it stops growing there. Lower them to fit every board on a narrow field of view. |
theme.nearest | 2.5 | The nearest a board may come to the eyes, in blocks. |
The room: room
A closed dark room drawn round a player while they play, only for them, so they see the board and nothing of the world behind it. Other players are hidden from them meanwhile.
| Key | Default | What it does |
|---|---|---|
room.enabled | true | Draws the room. Off, the board stands in the open world; the blocks round the player are still cleared and other players still hidden. |
room.block, room.floor | BLACK_CONCRETE, true | The block of its walls, ceiling and floor, and whether it has a floor (off shows the ground). |
room.reach, room.ceiling | 4.5, 3.5 | How far from the eyes the walls stand, and how far above the eyes the ceiling is, in blocks. |
room.stars, room.star-colours, room.star-scale | 40, [{secondary}, {secondary_light}, {letters}], 0.32 | Faint twinkling stars on the walls and ceiling: how many (0 for none), their colours and their size. |
Side panels: guide
While a match is played, two panels stand at the player's sides, a turn of the head away and never over the board: how the game is played on their left, how it is won on their right.
| Key | Default | What it does |
|---|---|---|
guide.enabled | true | Shows the panels. Off shows none. |
guide.distance, guide.lift | 1.9, 0.05 | How far from the eyes they stand, and how far above eye level their middle is (negative is below), in blocks. |
guide.scale | 0.42 | How big their text is drawn; the titles are drawn larger. |
Tables in the world: tables
Tables an admin sets down with /tabletopadmin table (see
Commands). Players sit down at them and play in sight of
whoever stands round; a hand, dice under a cup or a fleet stay hidden from those watching. No room is
drawn there.
| Key | Default | What it does |
|---|---|---|
tables.only | false | Matches are played at the tables alone: create, duel, the lobby's OPEN A TABLE and the API open no table anywhere else. |
tables.sit | true | Players sit down on their seat (set seats on stairs or slabs). Off, they stand at it. |
tables.reach | 0.6 | How far a standing player may step from their seat while they play, in blocks. |
tables.watch-radius | 12 | How near a player must stand to watch the boards, in blocks. |
tables.fill-time | 90s | How long a table waits for its seats to fill before it is closed, every stake refunded and everyone at it stood up, so nobody keeps a table from others by sitting at it. |
tables.busy-lift | 1.8 | How far the hologram rises while the table is played, so it stands clear over the boards. |
tables.hologram | ExyliaLib's table look | The hologram over the centre of each table: an ExyliaLib hologram section. Its lines come from seating in messages.yml. |
Command names
| Key | Default | What it does |
|---|---|---|
games-command | [games] | Names of the command that opens the games catalogue. The first is the command. Needs a restart. |
tabletop-command | [tabletop] | Names of the command that opens the catalogue on this plugin's games alone. The first is the command. Needs a restart. |
admin-command | [tabletopadmin, tta] | Names of the admin command; the first is the command, the rest aliases. Needs a restart. |
Each game's command is set by commands in its own module file, and also needs a restart.
Messages and menus
Every line a player reads is in lang/<language>/messages.yml and in each game's
lang/<language>/modules/<game>/messages.yml. Colours are palette tokens, so recolouring the server never
means editing them. A message may open with an effect tag that never reaches the screen:
[sound:NAME|volume|pitch] plays a sound, [center] centres the line. %prefix% is replaced by the
prefix value; an empty message is not sent.
Section of messages.yml | Holds |
|---|---|
general | Tables closed while the escrow settles, a game switched off, the cooldown and a blocked command. |
wager | The stake checks, the currency, amount and seats prompts, and a duel sent to more players than the game seats. |
tables | Opening, joining, answering, leaving and expiry, the invitation block and its ACCEPT, DECLINE and START buttons. Every line can use %game%, %amount% (the stake), %pot%, %seated%, %seats%, %min%, %missing% and %command%. |
offer | The confirmation before taking a seat from the lobby, and announce, the line told to the whole server when a table opens for anybody (%player%, %game%, %amount%, %pot%, %command%). |
match | The countdown, the board heading and turn lines, the boss bar, the results and their titles, the leave confirmation, the leave button in the hotbar, a match called off and the titles of the side panels. |
modes | The Tabletop category card in the games catalogue and the description on each game's card (%min%, %max%, %command%). |
admin | Reload, calling a match off and its confirmation. |
labels | The words the admin screens show for a match's kind and state. |
seating | Tables in the world: the hologram over a table (free, waiting, being played), sitting down, the refusals, and the admin lines of table create, remove and list. |
The lobby is lang/<language>/menus/user/lobby.yml: yours to restyle, and a release only adds what is
missing. The admin screens under menus/admin/ are rewritten from the jar on every start.
Something missing on this page? Tell us on Discord