Content generated with AI — it may contain mistakes.

Getting started

Playing a match

The lobby, opening a table and inviting players, tables in the world, choosing the stake, the match itself, the payout and every way a match ends.

Finding a match

Every way in leads to the same tables:

WayWhat it does
/gamesOpens ExyliaLib's games catalogue. Under Tabletop, every game the server has on has a card with its seats and the players at it right now; clicking one opens its lobby.
/tabletopThe same screen, on this plugin's games alone.
/<game>Opens that game's lobby: /ttt, /poker, /battleship.
/<game> create [amount] [currency]Opens a table anybody may take.
/<game> duel <player> [player...] [amount] [currency]Invites one player or several.
A table in the worldClick it to sit down. See Tables in the world.

The lobby

The lobby lists the game's open tables, oldest first, and follows them live: a table somebody opens or fills appears or vanishes while the screen is open, and its age counts up. Tables in the world are not listed: they are joined where they stand.

ItemWhat it does
A tableThe host's head, the stake, the pot once every seat is taken, the currency and how long it has been listed. A click asks "Stake … against …? The winner takes …" and seats you on a yes.
YOUR TABLEYour own table, while it waits. A click closes it and refunds your stake.
OPEN A TABLEAsks for the stake and opens a table. Replaced by CLOSE YOUR TABLE while you host one.
YOUR RECORDYour wins, losses, draws and win rate at this game, the open tables, the matches being played and the server fee.
CHALLENGE A PLAYERHow to invite players: /<game> duel <player> [player...] <amount>.

Choosing the stake

Whatever is left out of the command is asked:

  1. The seats, only when a host opens a table of a game for more than two: a choice dialog lists every count from 2 up to the game's players (2 or 4 for Truco). A duel is never asked: it seats the players invited and the host.
  2. The currency, only when the player may play for more than one and typed no amount. A choice dialog lists them.
  3. The stake, in an amount dialog that states the minimum (and the maximum, when there is one).

An amount typed in the command uses the server's default currency when the player may use it, and the first currency offered otherwise. Amounts accept the short forms of ExyliaLib's economy, such as 2.5k.

Every seat pays the same stake, the host's included: the host's stake is held as soon as the table opens, each guest's as they sit down.

When a seat is refused

Refused becauseThe player reads
No currency they may use is offeredThere is no currency you can play for.
The currency typed is not offered… can't be staked here.
Not a positive amountThat is not an amount you can stake.
Under wager.minimum or over wager.maximumThe smallest stake is … / The largest stake is …
They cannot afford itYou need … to take that seat.
They are already at a tableYou are already at a table.
A duel invites more players than the game seats… seats at most … players.
tables.only is on and they open a table by commandMatches are played at the tables: walk up to one and click it.
Another plugin holds themYou are busy in …
Another plugin advises against seating themIts own reason.
Two attempts inside matches.join-cooldownSlow down. Try again in …
The game is switched off… is not available on this server.
The escrow is still settling the last runTables are closed for a moment. Try again shortly.

Every check runs before anything is charged. A charge that fails answers "Your stake could not be taken. Nothing was charged."

Tables and invitations

  • One table at a time. A player has one table, open, invited or played, across the whole server.
  • An open table seats as many players as its host picked. It waits in the lobby for matches.open-expiry (10 minutes). If nobody fills it, it is closed and every stake refunded. When it opens, the whole server reads "… opened a … table for …" with a clickable [JOIN] that opens the game's lobby. The announcement goes out on ExyliaLib's tabletop-tables channel, which each player can mute in /settings. Invitations and tables in the world are not announced.
  • An invitation goes to one player or several, and seats exactly them and the host: its seats are kept for them, nobody else may take one. It reaches each of them as a centred block in chat, with the game, the stake, the pot and clickable ACCEPT and DECLINE buttons, and waits matches.invite-expiry (60 seconds). /<game> accept [player] and /<game> deny [player] answer it too; without a name they answer the newest. If every invitee declines, the host is refunded; if some decline and the rest sat down, the host may start with them.
  • Tables of more than two start when every seat is taken. Each new player is announced to the table with the seats left and the command others join with. Once enough are seated, the host gets a clickable START button and may also type /<game> start to begin without waiting. Enough is two, except where the game cannot be played by fewer: a Truco table of four starts only when full.
  • Before the start, a guest who leaves gets their seat and stake back; a host who leaves or types /<game> cancel closes the table and every stake is refunded.

Tables in the world

An admin sets a table down for one game with /tabletopadmin table create <game>, by clicking the chairs round it (see Commands). A hologram over it says whether it is free, how many have sat down and for what stake, or who is playing; each free chair is marked.

  1. The first player to click a free table sets the stake, pays it and sits down as its host. The table seats as many as it has chairs, up to what its game seats.
  2. The next players click it, confirm "Sit down at …'s … table for …? The winner takes …", pay the same stake and sit down on the next free chair.
  3. It starts when every chair is taken, or when the host clicks the table again with at least two seated. A table that does not fill within tables.fill-time (90 seconds) is closed, every stake refunded and everyone stood up.

Players are brought to their chair and sit down on it (tables.sit). Sneaking stands a player up before the start, which gives them their seat and stake back; once the match starts the seat holds. The match is played there, with no room: whoever stands within tables.watch-radius (12 blocks) watches the boards, while hands, dice under a cup, fleets and hidden picks stay hidden from them. With tables.only on, these tables are the only way to play.

The match

When the table fills, each player is seated where they stand (or on their chair at a table in the world): nobody is sent anywhere else, and their inventories stay theirs. A countdown title (matches.start-delay, 3 seconds) names the opponents, then:

  • The room. A closed dark room goes up round each player with the countdown, only for them, and other players are hidden from them meanwhile. It is styled by room in config.yml. Tables in the world have none.
  • The board. The game is drawn in front of their eyes, on a dark board with a softly lit frame, under a heading with the game and the pot.
  • The side panels. How the game is played stands on their left, how it is won on their right, a turn of the head away (guide in config.yml).
  • The clock. A boss bar says whose turn it is and how long is left.
  • Kept in the room. With arena.freeze on, they may walk around inside their room, never out of it.
  • The hotbar. Their own items are out of sight; the last slot holds a LEAVE MATCH button, and right-clicking it asks to confirm and forfeits.

The crosshair plays the game: what can be clicked glows under it with a soft sound, and a left or right click presses it. In turn-based games whoever moves first is drawn at random, so hosting is never an advantage. A turn that runs out is played for the player with an automatic move; it is never a forfeit. See Games for what each game plays.

While a match is up the player cannot be hurt, does not get hungry, cannot drop, pick up, break or place anything, and cannot move items in their inventory. Commands are blocked, except the game's own commands (so /ttt leave works) and those listed in arena.allowed-commands (msg, r, tell by default). A blocked command answers "Leave the match with /ttt leave first."

The result

OutcomeWhat happens
A winThe winner takes the pot less the server fee: "You won …! (server fee …)" and a VICTORY title. Every other player reads "You lost …" and a DEFEAT title.
A win by a pair (Truco for four)The pot less the server fee is split evenly between the two partners; each reads their own share.
A drawEvery stake is refunded, with a DRAW title.

The verdict also lands on each board, and stays there for three seconds before the room is taken down.

The server fee is wager.fee-percent (5% by default) of the pot, rounded down to the currency's decimals so rounding favours the winner. The fee is not paid to anyone: it leaves the economy. A winner with exyliatabletop.bypass.fee keeps the whole pot.

Every finished match counts for every seat: a win for the winner (for each partner of a winning pair), a loss for the others, a draw for all. Matches called off are not counted.

How a match ends

What happensWhat it costs
The game plays outPaid or refunded as the result says.
/<game> leave (asked to confirm), quitting, dying, a teleport not made by a plugin, changing worldThe player forfeits. In a game of two, the opponent wins the pot. In a game of more, the player is taken out, their stake stays in the pot and the rest play on; the last one left wins.
A player leaves during the start countdownThe match is called off and every stake refunded.
The match outlasts its game's time limitCalled off and every stake refunded. The limit is worked out from the game's turn time and length (Ludo has its own max-duration; Truco and Escoba allow an hour).
An admin calls it offEvery stake refunded: "The match was called off. Every stake was refunded."
The server stops or the plugin is disabledEvery table, waiting or played, is called off and refunded.

Dying in a match keeps the inventory and the levels. /tabletopadmin reload does not touch matches under way: they are left to finish, and a game switched off only refuses new tables.

Teleports by other plugins

A teleport whose cause is a plugin (or unknown) does not forfeit a match, so another plugin moving a player does not cost them their stake. A teleport by command, an ender pearl or a portal does; so does any change of world.

Something missing on this page? Tell us on Discord