DUXPLIMA Documentation

Modules

Every uxmlib-* module and what it gives you.

Each module is published separately — pull only what you use. Modules never depend upward, so the dependency graph is a tree with uxmlib-common at the root.

ModuleWhat it gives you
uxmlib-commonScheduler, MiniMessage text, typed config, i18n, particles, helpers
uxmlib-itemItemBuilder, player heads, serialization, persistent data
uxmlib-guiInventory menus: simple, paginated, scrolling, storage, typed
uxmlib-commandBrigadier facade plus an annotation DSL
uxmlib-storagePooled JDBC, query builder, migrations, caches, row sync
uxmlib-integrationSoft-dependency hooks, holograms, toasts, Discord webhooks
uxmlib-hudSidebar, titles, action bar, boss bars, tablist, animators
uxmlib-conditionConfig-driven condition and action engines
uxmlib-updateNotify-only release update checker
uxmlib-redisBinary Redis pub/sub for cross-server messaging
uxmlib-npc, -packet, -nametagsExperimental packet layer
uxmlib-bomVersion alignment for every module
uxmlib-allEvery module, and the standalone plugin jar

The dependency graph

graph TD
    common[uxmlib-common]
    item[uxmlib-item] --> common
    command[uxmlib-command] --> common
    gui[uxmlib-gui] --> common
    gui --> item
    storage[uxmlib-storage] --> common
    integration[uxmlib-integration] --> common
    hud[uxmlib-hud] --> common
    update[uxmlib-update] --> common
    condition[uxmlib-condition] --> common
    redis[uxmlib-redis]
    npc[uxmlib-npc] --> common
    packet[uxmlib-packet] --> npc
    nametags[uxmlib-nametags] --> common
    nametags --> npc
    nametags --> packet

uxmlib-redis depends on nothing internal — it is a standalone primitive with no relational dependencies at all.

ArchUnit tests enforce that this graph has no cycles and that nothing depends upward. It is a guarantee, not a convention.