DzusillCore
Module lifecycle · Commands · GUI · Async DB · MiniMessage
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Required for puting this into your plugins folder for working my other plugins!
✦ What is DzusillCore?
DzusillCore is a free, open-source Paper plugin framework — drop the JAR into your plugins folder and every plugin built on it gains annotation-driven commands, a permission-gated GUI system, HikariCP-pooled async database access, MiniMessage messaging, hot-reload config, and lazily-loaded soft dependency hooks, all wired together through a clean module lifecycle. Server owners install it once; developers declare it as a single Maven dependency and skip writing the same boilerplate for every new plugin. Built on Apache 2.0, with full source and documentation on GitHub.
Module lifecycle · Commands · GUI · Async DB · MiniMessage
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Required for puting this into your plugins folder for working my other plugins!
✦ What is DzusillCore?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Features
✦ Features
- Module lifecycle — Plugins declare an ordered array of CoreModule instances; the framework enables them in order and tears them down in reverse, so startup dependencies are a single source of truth with no manual ordering logic
- ⚡ Service registry — Modules publish services they own and resolve services they need through a shared ServiceRegistry; no static singletons, no tight coupling between features
- Annotation-driven command framework — Decorate a class with @CommandMeta(name, permission, playerOnly) and extend CoreCommand; registration, tab-completion, permission checks, and player-only gating are handled automatically via Paper's CommandMap — no plugin.yml entry needed
- Built-in argument types — Ships with StringArgument, IntArgument, PlayerArgument, OnlinePlayerArgument, EnumArgument, and MaterialArgument; custom types implement a single ArgumentType<T> interface
- SubCommand nesting — Parent commands group children declared in their constructor; the framework routes, validates, and tab-completes the full command tree automatically
- ️ GUI / Menu system — Annotate with @MenuMeta(title, size, permission) and place buttons with the fluent button(slot).icon(...).permission(...).onClick(...).add() API; permission-gated slots are auto-hidden and click-blocked without extra code
- YAML-driven menu layouts — Menu shapes can be defined in menus.yml via YamlMenuTemplate so server owners can restyle GUIs without a recompile
- ️ Async database layer — MySQL and PostgreSQL supported via HikariCP connection pooling; every query returns a CompletableFuture and runs off the main thread; the entire layer is optional and skips cleanly when enabled: false in database.yml
- Typed repository pattern — Extend AbstractSqlRepository<ID, T> for a dialect-aware insert-or-update that works on both MySQL and PostgreSQL without any branching logic in your code
- MiniMessage messaging — All player-facing text lives in messages.yml, parsed with Adventure's MiniMessage; automatically falls back to legacy section-sign format on plain Spigot servers
- ♻️ Hot-reload config — Extend AbstractConfig and implement Reloadable; ConfigManager reloads every registered config in a single call, wired into the reload command of any downstream plugin
- ⏱️ Generic cooldown manager — Type-safe CooldownManager<K> keyed by any identifier (commonly UUID); each feature owns its own instance with a fixed TimeUnit duration, no scattered timestamp maps
- Lazy-loaded integration hooks — Register Vault, PlaceholderAPI, or EssentialsX hooks by plugin name via HookManager; hook classes are only classloaded when that plugin is present, so the same JAR works on servers with or without those plugins
- Shaded & relocated Adventure — Adventure 4.17 is shaded and relocated under me.dzusill.core.lib.kyori; downstream plugins import from that path and never clash with other plugins' Adventure copies
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Commands
DzusillCore exposes no player-facing commands of its own — it is a developer framework. Commands are registered at runtime by plugins built on it using
CommandRegistry and
@CommandMeta; no plugin.yml declaration is required in any downstream plugin either.
✦ Commands
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Permissions
DzusillCore defines no permissions of its own. Each downstream plugin declares its own permission nodes via
@CommandMeta(permission = "...") and
@MenuMeta(permission = "..."); the framework enforces them automatically on command dispatch and menu open/click.
✦ Permissions
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Requirements
✦ Requirements
- Paper 1.21 or newer (Paper-only APIs are used for command registration and native Adventure rendering)
- Java 17 or newer
- Optional: Vault, PlaceholderAPI, EssentialsX — all soft dependencies, safe to omit
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Setup Guide
Server Owners
✦ Setup Guide
Spoiler: Install DzusillCore
# plugins/DzusillCore/database.yml
enabled: false # set true for MySQL or PostgreSQL support
type: MYSQL # or POSTGRESQL
host: localhost
port: 3306
database: dzusill
username: root
password: ""
Developers
- Drop DzusillCore-v1.1.0.jar into your plugins/ folder
- Restart the server — DzusillCore generates its config files on first run
- If any plugin you install requires database support, open plugins/DzusillCore/database.yml and configure your MySQL or PostgreSQL credentials, then set enabled: true
- Install any plugins that list DzusillCore as a depend — they will pick up the framework automatically at startup
Code (Text):
# plugins/DzusillCore/database.yml
enabled: false # set true for MySQL or PostgreSQL support
type: MYSQL # or POSTGRESQL
host: localhost
port: 3306
database: dzusill
username: root
password: ""
Spoiler: Add DzusillCore as a Maven dependency
// Minimal plugin entry point
public class MyPlugin extends CorePlugin {
@Override
protected CoreModule[] modules() {
return new CoreModule[]{
new FoundationModule(this),
new CommandModule(this)
};
}
}
- Add the JitPack repository and the DzusillCore dependency to your pom.xml at provided scope
- Add depend: [DzusillCore] to your plugin.yml
- Extend CorePlugin and return your CoreModule[] array from modules()
- Declare commands with @CommandMeta, menus with @MenuMeta, and register them through their respective registries — full documentation linked in the resource description
Code (Text):
// Minimal plugin entry point
public class MyPlugin extends CorePlugin {
@Override
protected CoreModule[] modules() {
return new CoreModule[]{
new FoundationModule(this),
new CommandModule(this)
};
}
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Made by dzusill · Apache License 2.0 · Source on GitHub
Made by dzusill · Apache License 2.0 · Source on GitHub
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.20, 1.20.6, 1.21
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
DzusillCore | Commands • GUI • Async DB • Module Framework is a free Minecraft Java mod. Compatible with Minecraft 1.20, 1.20.6, 1.21. Downloaded 36 times (via Spigot). Download it and open it directly in the game.