Content generated with AI — it may contain mistakes.

Getting started

Introduction

What ExyliaLib is, the forty-six modules it ships, and the rules it is built on.

ExyliaLib is the shared library every Exylia plugin depends on. It is installed once on the server and never shaded into a plugin: one copy, one class, one cache.

It is not a grab-bag of helpers. It is forty-six modules with one guiding rule — the server should do as little work as possible. Where something can be a packet instead of real server state, the library sends the packet: sidebars, holograms, nametags and boss bars never create a scoreboard team or an armour stand.

Java21
APIPaper 1.21.4
Runs onSpigot, Paper, Purpur and Folia, from one build
Version documented here1.61.0

What it gives a plugin

The full list, with what each module is for, is in Module index.

Three rules worth knowing before reading further

Read once, render per viewer

An item, a menu and a sidebar are definitions compiled when a file loads, and drawn per player afterwards. Parsing is the expensive half and happens once; drawing is cheap and happens constantly. That split is why Item is not an ItemStack and UiDefinition is not an open window.

A value is text unless you say otherwise

Anything substituted into a message, an item or a menu row is inserted as literal text by default. A player named {error}X shows those characters rather than repainting the line. withFormatted is the other door, for values a server owner wrote — a rank display written {highlight}&lMVP.

The question is never what type the value is. It is whose value it is.

A broken part is reported, not fatal

A mistyped enchantment becomes a dead button and a line in the console; the other fifty buttons keep working. A file that does not describe a menu at all throws, because guessing would hide the mistake.

Why not shade it

Shading would put one copy of the scoreboard library, the skull cache and the placeholder registry inside every plugin. With one installed copy there is one cache to warm, one registry to look in, and a placeholder registered by one plugin is visible to the next.

What depends on it

Every Exylia plugin: ExyliaFFA, ExyliaCapture, ExyliaEvents, ExyliaPracticeCore and the rest. They list it under softdepend only so the loader that installs it can load first; none of them runs without it.

Every Exylia plugin also needs PacketEvents, and so does the library: it lists PacketEvents under depend, so the server refuses to load it without it. Install both.

Some modules lean on optional plugins and say so when they are missing rather than failing quietly — FastAsyncWorldEdit for schematics, PlaceholderAPI for exposing placeholders outside the server, Vault or PlayerPoints for economy.

Something missing on this page? Tell us on Discord