Strata

Strata

Shared storage, utilities, and a Java-friendly API for Paper/Folia plugins.

Strata is a shared library plugin for the alazso Minecraft plugin ecosystem. It gives every dependent plugin one battle-tested set of building blocks (a Folia-safe scheduler, a pooled storage layer, typed PDC, a hook/integration system, conditions, GUIs, commands, and metrics) instead of each plugin re-implementing them.

It runs as a standalone server plugin (so shared state like a connection pool lives in a single classloaded instance) and publishes a thin, Java-friendly API artifact that your plugins compile against.

Pick your path

Why a plugin, not a shaded dependency?

The shared StorageProvider and other stateful services must live in a single classloaded instance. Shading Strata into every consumer would give each plugin its own isolated copy, breaking shared state. So Strata follows the same model as Vault, LuckPerms, and PlaceholderAPI: install it once on the server, and your plugins depend on it.

Two artifacts ship from one build:

strata-<version>.jar        server plugin, install in /plugins (heavy deps runtime-loaded)
strata-api-<version>.jar     compile-time API, published to repo.alaz.so

Heavy runtime libraries (Kotlin stdlib, coroutines, Exposed, HikariCP, JDBC drivers) are runtime-loaded by Paper's library loader, so server owners install nothing extra and the plugin jar stays small.

Java-friendly by design

Strata is written in Kotlin but its public surface is authored for pure-Java consumers: async APIs return CompletableFuture (no coroutine machinery leaks), @JvmStatic/@JvmOverloads where it helps, and no Kotlin-only types in public signatures. You ship no kotlin-stdlib of your own, because it resolves at runtime through Strata.

// From any plugin that hard-depends on Strata:
StrataApi.scheduler(this).async(() -> doWork());
TextRenderer text = StrataApi.text();
EconomyHook eco = StrataApi.hooks().get(EconomyHook.class); // null-safe if absent

What's inside

AreaWhat you get
SchedulerFolia-safe wrapper over Region/Global/Async/Entity schedulers
TextMiniMessage plus PlaceholderAPI in the correct resolution order
StoragePooled SQLite/MySQL, a migration runner, optional Exposed/coroutines
PDCTyped PdcKey<P, C> read/write over PersistentDataContainer
ConfigA schema validator with rich errors and deprecation warnings
HooksPermission / Economy / Region / Item / Hologram behind one registry
ConditionsConfig-driven predicates (permission, economy, region, and more)
CooldownsKeyed, thread-safe cooldown manager
GUIHolder-based chest menus, pagination, anvil/chat input
CommandsFluent Brigadier builder plus common and debug subcommands
MetricsbStats and FastStats (shaded, relocated) behind one wrapper

New here? Head to Getting Started.

On this page