Uploaded image for project: 'Spigot'
  1. Spigot
  2. SPIGOT-5279

Implementation to add Brigadier as an option in Bukkit API


    • Icon: New Feature New Feature
    • Resolution: Unresolved
    • Icon: Minor Minor
    • None
    • None
    • 1.14.4-R0.1-SNAPSHOT
    • Yes

      Brigadier's tab completion and native support makes sense to support within Bukkit features such as type safety and modernization of the Command API.

      I will be making an implementation for this but I have this here to also discuss recommended features and which arguments to support. So far I have gotten working commands within tests. But HelpTopics/Plugin prefixes and abstracting the game's arguments are still work in progress.

      This system will do the following:
      Work in tandem with the current CommandExecutor system. This would be a better alternative to hopefully phase out the old legacy system instead of a radical change that would break every single plugin overnight.

      Survive reloads.

      Entirely version safe.

      Hides commands from view that Player does not have permission to use at all.

      Client side popups for error correction on the fly such as range limited integers or locations.

      But there are a few things to debate over:

      How to handle dimension arguments, Bukkit has support for many more dimensions than the game normally has and these new dimensions do not tab complete on the client.

      How to handle TabCompletion via SuggestionProviders (such as suggestions based on player permissions which is entirely possible via SuggestionBuilders).

      Requirement of inclusion of Brigadier as a dependency of Bukkit API (MIT License which Brigadier uses doesn't make shadowing it into the Bukkit API jar any issue).

      A new in-depth tutorial for the new system. Brigadier is system with many features and quirks as I have learned writing my Command Tutorial for Fabric API such as CommandExceptions, Forks and Redirects.

      How to handle 2D location argument when Bukkit's Location class is 3D.

      Quirks with Key based arguments such as LootTables, Sounds, Scoreboards, Biomes, etc.

            Unassigned Unassigned
            i509VCB i509vcb
            2 Vote for this issue
            6 Start watching this issue