Skip to content

Module Registry

The module registry is DaisyConfig’s first-class API for:

  • modules/<category>/<module>/settings.yml
  • modules/<category>/<module>/lang.yml

Declares one category/module pair and its managed settings and lang files.

Required

Typed module runtime value containing settings and optional lang.

Required

Managed module handle exposing current settings and a DaisyCore text source.

Required

Lookup and reload surface for all registered modules.

Required

Loads the registry from plugin-managed module definitions.

Required

Fetches one typed module handle by category and module name.

Required

Reloads all registered modules while preserving last-good state on failure.

Required

Runs managed merge and migration across all modules and aggregates reports.

Required

val spawn = registry.require<SpawnSettings>("commands", "spawn")
val delay = spawn.current.settings.delaySeconds
when (val result = registry.reloadAll()) {
is DaisyManagedBundleReloadResult.Success -> logger.info("Reloaded ${result.value.size} modules.")
is DaisyManagedBundleReloadResult.Failure -> logger.warning(result.errors.joinToString { "${it.path}: ${it.message}" })
}

One DaisyModuleHandle<S> gives you:

  • definition
  • current.settings
  • current.lang
  • textSource
  • migrate()

That makes module lang/settings pairing a first-class DaisyConfig concern instead of a plugin-local convention.