Installation
The loader jar and the licence, dependencies, the files the plugin writes, the database and updating.
Getting the plugin
ExyliaDuels is a premium plugin, bought on BuiltByBit. It ships through the Lukittu loader, so the file you install is the loader
jar, Exylia-Duels-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
ExyliaDuels runs on Paper 1.21.1 or newer, or a fork of it, and on Folia 1.21.4 or newer, with Java 21.
| Plugin | What for |
|---|---|
packetevents | Required. Declared under depend, so without it the server does not load ExyliaDuels at all. Freezing both players through the countdown is done with packets. |
ExyliaLib | Required, the newest release. Configuration, menus and prompts, the escrow, the trade window, snapshots, the arena pool, the economy, the database and the network. |
| An economy | Only for money bets: ExyliaEconomy, Vault with an economy plugin, PlayerPoints, or any currency ExyliaLib serves. Without one, duels without money work as usual. |
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. |
FastAsyncWorldEdit | Used to save and paste arena schematics when installed. Without it ExyliaLib's own engine does the same with the same .schem files. |
ExyliaRandomKitsCore | A Random kit in the challenge screen's kit picker. See Arenas and kits. |
AuraSkills, mcMMO | Nothing to set up: while a player is in a duel, spectating one or watching a replay, these plugins give them no experience, abilities or combat stats. |
ExyliaProxyUtils | On the proxy, for duels across servers. See Network. |
Installing
Drop in the jars
Exylia-Duels-Loader.jar and packetevents into plugins/, and an economy if you want money bets.
Start the server
The loader checks the licence embedded in the jar and hands over to the plugin. The loader installs ExyliaLib if it is missing; if it had to, restart once more.
Let it generate
The plugin writes config.yml, its messages and menus, and creates its tables. The console ends with
ExyliaDuels enabled.
Build an arena and a kit
Duels need at least one ready arena. Open /duelsadmin and follow
Arenas and kits. Players can already type /duel <player>:
exyliaduels.duel is on for everybody by default.
Generated files
All of them live in plugins/ExyliaDuels/.
| File | Contents |
|---|---|
loader.yml | Written by the loader: license_key, and version (auto keeps the plugin on the newest release). |
config.yml | Requests, match times, modes, bets, spectators, after the duel, history, replays, network, the duel scoreboards and the command allowlist. See Configuration. |
database.yml | Where rows are stored, and Redis for a network. Written by ExyliaLib. |
lang/<language>/messages.yml | Every chat line, title, boss bar and label. |
lang/<language>/menus/user/ | The player screens: challenge, duel_inventory (the end-of-duel inventory view), history and history_entry. Yours to restyle: an update only adds what is missing. |
lang/<language>/overlays/replay.yml | The hotbar shown while watching a replay. Yours to restyle, like the player screens. |
lang/<language>/menus/admin/ | The admin screens: panel, arenas, arena, kits, kit, kit_external, kit_start, kit_attributes, kit_combat, kit_win, settings, own and own_win. Regenerated from the jar on every start, so do not edit them. |
schematics/duels_<arena>.schem | Each arena's schematic, which it is regenerated and copied from. |
The database
ExyliaDuels keeps seven tables in the database database.yml points at: H2 in a file by default, or MySQL,
MariaDB, PostgreSQL or MongoDB through ExyliaLib.
| Table | Rows |
|---|---|
exyliaduels_players | Each player's wins, losses, current and best streak, money won, and whether they take challenges. |
exyliaduels_arenas | Every arena: name, icon, world, box, both spawns, copies, enabled, and the kit it is bound to. |
exyliaduels_kits | Every kit: name, icon, items, whether it is enabled, its arena flags and its rules. |
exyliaduels_kit_profiles | The arena flags and rules of the kits other plugins offer, and of own inventory duels. |
exyliaduels_history | One row per player for every finished duel: opponent, result, mode, arena, score, bet, duration, date, server and the replay it links to. |
exyliaduels_replays | The recordings, one per duel, shared by both players' history rows. |
exyliaduels_post_duels | The end-of-duel summaries of a network duel, so the inventory and rematch buttons work from any server until their window closes. |
Records are safe on a database several servers share: each change is written only while the row still holds what it was read at, and tried again otherwise, so a win on one server and a toggle on another never overwrite each other. Rows of online players are kept in memory.
Stakes are held by ExyliaLib's escrow and each player's state by ExyliaLib's snapshots, in the same database. What a crash leaves held is refunded on the next start; what a player had before a duel is given back on their next join.
Wiping data
ExyliaDuels has no reset command of its own. Its tables are classified for ExyliaLib's commands:
/exylialib wipe ExyliaDuels <table|*> empties a table or all of them, and
/exylialib resetplayer <player> ExyliaDuels clears one player's record and duel history. Arenas, kits and
their flags and rules are setup, not player data. See ExyliaLib's commands.
Updating
Replace the loader jar and restart, or leave version: auto in loader.yml. Your config.yml, messages
and the challenge screen are kept; new keys are added with their defaults.
Something missing on this page? Tell us on Discord