The command argument processing and permission checking is done asynchronously, mainly because LuckPerms (rightfully) complains that loading player data (for unconnected DC users) should not be done on the main thread.
The actual command execution is still done on the main thread.
Setting to modOnly if any of the superclasses are modOnly
Re-added support for command path inheritance
getHelpText() for a particular command
Subcommands are properly printed across classes now
Using a general number converter for both the config and commands
Default value for config maps added
Added support for array types in configs and handling null in setting
Added support for TextArg annotation
Allowing to override the command path
Fixed optional argument detection in the annotation processor ("Optional" --> "OptionalArg")
Removed Vault repo as it seems to be offline and wasn't even used
Fixed CommandSender type, no subcommands handling
Made the default handler use the correct sender type (actually, the generic type might be completely unnecessary but oh well)
No longer checking param types to match methods (needed for generic types)
Member command converted
Now requiring the permissions plugin
Added support for optional arguments
Automatically sending an error if parameter conversion fails
Automatically sending the help text if there aren't enough args
Automatically converting the first line of the help text to a header
Fixed/implemented number handling in config
Fixed help text error
Fixed annotation processing in other plugins
Fixed error message on console chat
Fixed CI building (hopefully) - Spigot repo
Fixed default command handler not being overridable in some cases
Schrestart now takes seconds as param, not ticks
Allowing to change the current timer value in the restart event
HelpText support added
Automatically generating usage text (ButtonProcessor)