Content generated with AI — it may contain mistakes.

Getting started

Installation

The loader jar and the licence, dependencies and what each optional plugin adds, the files the plugin writes, the database, networks and updating.

Getting the plugin

ExyliaProtections is a premium plugin, bought from the Exylia store. It ships through the Lukittu loader, so the file you install is the loader jar, Exylia-Protections-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 ExyliaProtections at all. The selector is an item only its holder's client sees, and border previews are drawn with packets.
ExyliaLibRequired, version 1.238.0 or newer. Configuration, menus and prompts, the database, the selector, economy, clans, teleports, placeholders and the cross-server channels.
ExyliaLib is listed as soft, and installed for you

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 a release older than 1.238.0 it stages the newest one in the update folder and says so in the console; restart once more to apply it. Without network access it skips the install and tries again on the next start — put ExyliaLib.jar in plugins/ by hand.

Optional plugins

PluginWhat it adds
ExyliaSurvivalCoreIts statistics count what players do with their land — protections created, bought, sold, rented, upgraded, raids, bans — so missions, seasons and leaderboards can read them. Its player settings let each player mute the protection titles and the raid announcements. A server coming from its protections module imports them; see Migration.
ExyliaEconomy or VaultThe currencies of the shop, the selector, the bank, upkeep, rent, sales, upgrades and moving a core, through ExyliaLib's economy. Without any economy every price above 0 is refused with "You need … for that.", so cores have to be handed out with /protections admin give.
PlaceholderAPIThe plugin's placeholders in other plugins: scoreboards, tab, holograms. See Placeholders.
WorldGuard and WorldEditThe WORLDGUARD backend, the check that new land does not overlap another WorldGuard region, and the ProtectionStones import. See Backends.
BlueMap, dynmapEvery protection drawn on the web map, coloured by its state. See Land tools.
Worlds or Multiverse-CoreListed so ExyliaProtections starts after them: the worlds they load at startup already exist when protections are set up and mirrored.

Clans come from whichever clan plugin ExyliaLib detects — Factions, HuskTowns, ZelTeams, Kingdoms, SimpleClans, UltimateClans or ExyliaClans among them. Without one, the Add clan button answers "There is no clan plugin on this server."

Installing

Drop in the jars

Exylia-Protections-Loader.jar and packetevents into plugins/. Add WorldGuard, an economy or a web map now if you want what they bring.

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, database.yml, messages.yml and its menus, creates its tables and loads every protection. The console ends with ExyliaProtections enabled.

Protect something

Every player can already open /protections, buy a core and protect land: exyliaprotections.use and exyliaprotections.select are on for everybody by default. See First steps.

Operators bypass every protection

exyliaprotections.bypass is on for operators by default: they build, open and enter anywhere, and are never refused by a protection. Test protections from an account without it. See Permissions.

Generated files

All of them live in plugins/ExyliaProtections/.

FileContents
loader.ymlWritten by the loader. A BuiltByBit purchase needs nothing in it: the licence is in the jar.
config.ymlEvery setting: the backend, limits, the selector, the feature switches, each feature's keys, the import, the cleanup, the default roles and the core tiers. See Configuration.
database.ymlWhere rows are stored, and Redis. Written by ExyliaLib.
lang/<language>/messages.ymlEvery line the plugin sends, titles, boss bars, map labels and the names of permissions, flags and log actions.
lang/<language>/menus/user/The 24 player screens: the hub, the list, the shop, a protection's overview and its sections, members, roles, switches, bans, logs, market, plots, rent, warps, perks and merge.
lang/<language>/menus/admin/The 5 staff screens: the admin search, one protection, the tier list, one tier and the cleanup.
.imported-survivalcoreWritten once the ExyliaSurvivalCore import has run. See Migration.

<language> is the language ExyliaLib is set to in its own config.yml. English, Spanish, Portuguese and French are shipped (en, es, pt, fr); any other code starts from the English files.

Which files a release may change

config.yml and messages.yml are written from a schema: a key a release adds appears with its default, and every value you set is kept. The player screens under menus/user/ are yours: a release only writes the files that are missing, and when it has to change a layout it raises menu-version at the top of that file, replaces it and keeps your previous one beside it. The staff screens under menus/admin/ are the plugin's and are rewritten from the jar on every start — an edit there does not survive a restart.

Database

By default the plugin uses H2: a file inside the plugin folder, with no server, no installation and no maintenance. The engine is chosen in database.yml:

plugins/ExyliaProtections/database.yml
database:
  type: mysql
  mysql:
    host: 127.0.0.1
    port: 3306
    database: minecraft
    username: root
    password: ""

Supported engines: h2, mysql, mariadb, postgresql and mongodb. The file is ExyliaLib's; its full reference, including the redis block, is in the library's database page.

TableWhat it holds
protectionsOne row per protection: owner, name, tier, world, box, core, home, the server it belongs to, and its data — members, clans, roles, overrides, flags, bans, plots, level, perks, greetings
protections_logsThe audit log
protections_accountsEach protection's bank balance and upkeep state
protections_listingsProtections for sale
protections_seenWhen each player was last seen, for upkeep and the inactive cleanup
protections_rent_offersPlots and protections offered for rent
protections_warps, protections_warp_ratings, protections_warp_visits, protections_warp_totalsPublic warps, their ratings and their visits

Cores that could not be handed over — a full inventory, a player who went offline — wait in ExyliaLib's exylia_pending_rewards and are given on the player's next join.

A network

Point every server at the same database in its database.yml and every server sees every protection: lists, limits, the market, rent and warps are network-wide. Each protection belongs to the server it was made on, and only that server enforces it.

  • Turn Redis on. Each server keeps every protection in memory. With Redis in database.yml, a change made on one server is announced and re-read by the others at once; without it, the other servers see it only after their next restart.
  • Give every server its own name. A protection's server is the name the proxy bridge gives the server, or server-id in the redis block of database.yml without a bridge. Two servers sharing one name both enforce each other's protections in worlds of the same name; renaming a server leaves its protections belonging to the old name, unenforced.

Updating

The loader downloads the current release when it starts, so a restart is an update. The loader jar itself only needs replacing when a release asks for it.

Your config.yml, messages.yml, database.yml and the player screens are kept. config.yml carries a version and is migrated in place when a release renames or moves a key; the console reports it.

No reload command

There is no /protections admin reload. /exylialib reload re-reads the menu files of every Exylia plugin, this one included, so a menu edit applies without a restart. A change to config.yml or messages.yml needs a restart.

Something missing on this page? Tell us on Discord