Commands Overview
Commands Overview
Section titled “Commands Overview”DaisyCore commands are designed to feel clean in plugin code while still making it obvious which library they come from.
Commands are global plugin features, so DaisyCore treats them differently from menus or sidebars. You define providers, DaisyCore discovers them at startup, then the command registry registers the active tree.
@DaisyCommandSetobject IslandCommands : DaisyCommandProvider { override fun commands(): List<DaisyCommand> = listOf( command("island") { description("Island management") executePlayer { reply("Hi from DaisyCore.") } }, )}Why this shape works
Section titled “Why this shape works”command(...)stays short because it is a DSL verbDaisyCommandandDaisyCommandProvidermake library ownership obvious- providers auto-load, so normal plugin code does not need a manual registration call
- startup availability can be controlled with
enabled { ... }orignore(true)
What to expect from the current implementation
Section titled “What to expect from the current implementation”- DaisyCore scans your plugin jar for
@DaisyCommandSetproviders - availability is evaluated before validation and registration
- disabled roots and subcommands are removed before collision checks
- full command replacement still requires a real plugin reload if the Paper registration set changes
Learn next
Section titled “Learn next”- Provider discovery: Auto-Loaded Commands
- Discovery explanation: Why Commands Auto-Load
- API reference: Command DSL