Repository navigation
feat(commands)!: migrate to modern Cloud command trees - #112
Merged
Merged
Conversation
Zoriot
added this pull request to stack #113
October 4, 2026 20:19
Closed
Qodana for JVMIt seems all right 👌 No new problems were found according to the checks applied 💡 Qodana analysis was run in the pull request mode: only the changed files were checked Contact Qodana teamContact us at qodana-support@jetbrains.com
|
Zoriot
force-pushed
the
command-system-rework
branch
2 times, most recently
from
October 4, 2026 21:14
248f4d8 to
88d2ccf
Compare
Redstoner507
previously approved these changes
Oct 6, 2026
Redstoner507
left a comment
Member
There was a problem hiding this comment.
The migration looks great and everything’s seems to work properly.
Zoriot
commented
Oct 8, 2026
Zoriot
force-pushed
the
command-system-rework
branch
2 times, most recently
from
October 10, 2026 20:37
19638c2 to
61f9378
Compare
Redstoner507
approved these changes
Oct 11, 2026
Replace Bukkit command executors, plugin.yml command definitions and tab-completer infrastructure with a shared Cloud command manager. Remove obsolete command listeners, completion helpers and inert command registrations while retaining permission metadata and module-enabled guards. Use the modern PaperCommandManager with native Brigadier integration and require Paper 1.20.6 or newer. Add cloud-minecraft-extras, MinecraftHelp at /btt help, and rich command descriptions. Register administrative, generator, navigation, address, warp, palette and KML actions as explicit Cloud subcommands. Parse warp migration sources as enums and preserve free-form geographic payloads and multi-word names. Share canonical command trees with configured aliases to avoid ambiguous root registration. Respect immutable Cloud builders so handlers, arguments and permissions are retained. Apply the same command shapes and permission checks to standalone labels and /btt routes. Make every standalone label configurable, including canonical names such as warp. Empty alias lists disable standalone registration without removing /btt feature routes. Update internal generator links, copied commands and KML command blocks to use always-available root routes. Rename warpsbt to btwarps and reverse the corresponding aliases to btwarp and buildteamwarps. Document configuration migration, root-only registration and the new minimum Paper version. Add command-tree regression coverage for default aliases, root-only configuration, custom standalone labels, nested routes, typed arguments, defaults, permissions, handler execution and invalid input. BREAKING CHANGE: Paper 1.20.6+ is required. Standalone labels must be explicitly listed in commands.aliases; empty lists now expose features only under /btt. Rename the warpsbt configuration key to btwarps and add canonical standalone labels to existing lists where desired.
Replace outdated command and alias details with links to maintained documentation pages for commands, permissions, and configuration.
Commands of modules that are disabled in the config or failed to start (for example Navigation and Stats when the API key is not configured) were still registered, and therefore visible in help and tab completion. - Defer registration until module state is known: registrations are queued per owner module and flushed by registerEnabledCommands() after ModuleHandler.enableAll() in BuildTeamTools.onEnable. - Register late when a module is enabled afterwards (for example via NetworkModule.enableDisabledModules() after /btt reload-config or /btt cache update). Module.enable() flushes that module's queue and ManagerSetting.ALLOW_UNSAFE_REGISTRATION is enabled for this. - Skip registration entirely for modules listed in disabledModules. - Add Permission-typed register/registerAliased overloads and give the /warp and /address roots the permissions their handlers enforce, so help only lists commands the sender can actually execute. - Update the MainConfig comments accordingly. - Add regression tests for root permissions, config-disabled modules, failed-startup modules and late enabling.
/btt reload and /btt reload-config ran the same handler. Keep only reload-config, which is the more descriptive name, and drop "reload" from the reserved command names. BREAKING CHANGE: /btt reload no longer exists, use /btt reload-config.
The configured lists are the full set of standalone command labels (the first entry is the primary label), not only extra aliases. Removing a command's own name from its list removes the standalone command, which the old name did not make clear. - Rename MainConfig.Aliases to Labels and commands().aliases() to labels(); update BttCommandManager, KmlCommand and the tests. - Shorten the config comments and state that a command's own name must stay in its list, that an empty list disables the standalone command and that /btt <command> is always available. - Rename the local variable in featureBuilders and add a short comment. BREAKING CHANGE: the commands.aliases section in config.yml is now commands.labels. Existing customized lists must be moved to the new key, otherwise the defaults are used.
Zoriot
force-pushed
the
command-system-rework
branch
from
October 11, 2026 20:24
bcb11e6 to
c925876
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replace Bukkit command executors, plugin.yml command definitions and tab-completer infrastructure with a shared Cloud command manager. Remove obsolete command listeners, completion helpers and inert command registrations while retaining permission metadata and module-enabled guards.
Use the modern PaperCommandManager with native Brigadier integration and require Paper 1.20.6 or newer. Add cloud-minecraft-extras, MinecraftHelp at /btt help, and rich command descriptions.
Register administrative, generator, navigation, address, warp, palette and KML actions as explicit Cloud subcommands. Parse warp migration sources as enums and preserve free-form geographic payloads and multi-word names.
Share canonical command trees with configured aliases to avoid ambiguous root registration. Respect immutable Cloud builders so handlers, arguments and permissions are retained. Apply the same command shapes and permission checks to standalone labels and /btt routes.
Make every standalone label configurable, including canonical names such as warp. Empty alias lists disable standalone registration without removing /btt feature routes. Update internal generator links, copied commands and KML command blocks to use always-available root routes.
Rename warpsbt to btwarps and reverse the corresponding aliases to btwarp and buildteamwarps. Document configuration migration, root-only registration and the new minimum Paper version.
Add command-tree regression coverage for default aliases, root-only configuration, custom standalone labels, nested routes, typed arguments, defaults, permissions, handler execution and invalid input.
BREAKING CHANGE: Paper 1.20.6+ is required. Standalone labels must be explicitly listed in commands.aliases; empty lists now expose features only under /btt. Rename the warpsbt configuration key to btwarps and add canonical standalone labels to existing lists where desired.