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, moving from ExyliaSpecials and updating.

Getting the plugin

ExyliaCombat is a premium plugin, bought on BuiltByBit. It ships through the Lukittu loader, so the file you install is the loader jar, Exylia-Combat-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
ExyliaLibRequired. Configuration, menus and prompts, the database, cooldowns, the action bar, rewards, the economy, regions and the Combat facade.
packeteventsOptional, recommended. Draws the PvP barrier as translucent tiles (without it the wall is made of fake blocks), and is required by the combat-nametag module.
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.

Every other plugin ExyliaCombat talks to is optional and only used when it is installed: WorldGuard and the claim plugins for safe zones, DeluxeCombat, CelestCombat or PvPManager as the tag provider, PlaceholderAPI, and the Lunar and Feather client APIs. See Integrations.

Installing

Drop in the jars

Exylia-Combat-Loader.jar into plugins/, and packetevents if the server does not have it yet.

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, one modules/<module>/config.yml per module, its messages and menus, and creates its tables. The console names the combat provider it picked and ends with ExyliaCombat enabled.

Choose the modules

Switch modules on or off under modules in config.yml and restart: a switch is read at startup. See Configuration.

Generated files

All of them live in plugins/ExyliaCombat/.

FileContents
loader.ymlWritten by the loader: license_key, and version (auto keeps the plugin on the newest release).
config.ymlLanguage, module switches, command names, the player record's save interval, the combat tag and logging out, and the safe-zone sources. See Configuration.
modules/<module>/config.ymlThe settings of one module, documented on that module's page. action-bar has none.
database.ymlWhere rows are stored, and the Redis connection. Written by ExyliaLib.
lang/<language>/messages.ymlThe combat tag, /combat, the action bar, the admin lines, the older restriction refusals, the logout NPC's name and the combat log broadcast.
lang/<language>/modules/<module>/messages.ymlThe text of one module.
lang/<language>/modules/stats/menu.yml, leaderboard.ymlThe /pvpstats screen and the leaderboard screen. Yours to restyle: an update only adds what is missing.
lang/<language>/admin/The admin panel: players, player and cooldowns. Regenerated from the jar on every start, so edits there are lost.

The database

Two tables, in the database database.yml points at: H2 in a file by default, or MySQL, MariaDB, PostgreSQL or MongoDB through ExyliaLib.

TableWhat it holds
exyliacombat_playersOne row per player: the PvP switch, newbie protection left, kills, deaths, streak, best streak, combat logs, points and KDR. Loaded when the player connects, saved when they leave and every player-data.save-interval. Only used while pvp-toggle, newbie-protection or stats is on.
exyliacombat_loggersCombat loggers waiting to come back: their gear, health, position and whether their logout NPC died. Read on start, so a restart in the middle never loses anyone's inventory.

Both tables are player progress with the player as owner, so ExyliaLib's /exylialib resetplayer and /exylialib wipe cover them; a reset also removes the player's standing logout NPC. See ExyliaLib's commands.

When the database cannot be read as a player joins, their record is kept in memory for that session only, and the console says so.

Coming from ExyliaSpecials

ExyliaCombat took over the combat tag of ExyliaSpecials 4.0. On its first start (no config.yml yet, and an ExyliaSpecials folder next to it) it imports combat, actionbar.enabled, vanilla-cooldowns and language from ExyliaSpecials, the combat and action bar lines of each lang/<code>/messages.yml, and database.yml. A Specials that already moved on keeps its copy in plugins/ExyliaSpecials/exyliacombat-export.yml, which is read first. The old exyliaspecials.combat.bypass permission still bypasses the restrictions.

Updating

Replace the loader jar and restart, or leave version: auto in loader.yml. Your files are kept; new keys are added with their defaults. Keys that moved between versions are carried over with their values:

  • From 1.0, actionbar.enabled becomes modules.action-bar, and vanilla-cooldowns moves to modules/vanilla-cooldowns/config.yml (key cooldowns). The stats anti-boost keys move to modules/kill-abuse/config.yml.
  • From config version 3, combat.logout-npc moves to modules/logout-npc/config.yml, combat.barrier to modules/pvp-barrier/config.yml (their enabled become modules.logout-npc and modules.pvp-barrier), and combat.allowed-commands, blocked-inventories, blocked-teleport-causes, disable-flight, disable-elytra and the refusal notifications move to modules/combat-restrictions/config.yml.
  • From 1.1, the streak broadcast and shutdown lines of kill-rewards play short note-block sounds instead of the dragon growl and wither death, and the bounty and newbie granted level-ups are quieter. Only a line still holding the old sound tag is changed.

Something missing on this page? Tell us on Discord