A Bukkit/Spigot API to use the command UI introduced in Minecraft 1.13

Server LibraryUtility

Createda year ago
Updated3 months ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.
Filter loader...
Filter versions...

Minecraft version changes

  • Adds support for Minecraft 1.20.3 and 1.20.4

Bug fixes

  • Fixed bug where calling SimpleFunctionWrapper.getTag() on 1.19+ would throw an error
  • #499 Fix typo in Adventure methods for tooltips
  • Fixed executesFeedbackForwarding() not checking for a FeedbackForwardingCommandSender correctly thus allowing every executor to execute the command
  • #473 Fix RGB colors in CustomArgument.CustomArgumentException#fromString creating the wrong colors

New features

  • Adds ExecutionInfo executors for the Kotlin DSL
  • #497 Adds support for RemoteConsoleCommandSender

Known issues

  • Functions generated by the FunctionArgument will always return a value of 1 when executed, regardless if the function succeeds, fails or returns a result
  • Functions generated by the FunctionArgument will always return an empty array of commands when you retrieve the list of commands in that function

New features

  • #487 Added support for disabling integer centering for location arguments
  • #482 Adds Kotlin DSL support for delegated properties

Bug fixes

  • #488 Fixed calling CommandAPI commands with Bukkit.createCommandSender() not working on paper
  • Fixed a bug where the CommandAPI would throw errors when unregistering commands when a command exists with a : at the end of its name

Minecraft version changes

  • Adds support for 1.20.2

New features

  • #459 Added the ability to access raw arguments in the command executor
  • #469 Adds AdventureChatColorArgument
  • #417 Added the ability for commands to be registered and unregistered while the server is running

Bug fixes

  • Fixes the CommandAPI disabling datapacks on 1.20.1 Paper servers because it thought it was running on a Folia server

Minecraft version changes

  • Adds support for 1.20.1

New features

  • #455 Reworked the MapArgument with various features, including:
    • Optional quotes around keys and values
    • No restriction on the characters that are allowed in a key (previously only letters, digits, and underscore)
    • May define a String separator between key-value pairs (instead of just space)

Bug fixes

  • Fixes use-latest-nms-version not pointing to the right version

Minecraft version changes

  • Adds support for Minecraft 1.20

New features

  • Adds the ability to retrieve LiteralArguments and MultiLiteralArguments by their node names
  • #363 Adds withUsage() method to customise command usage info
  • #371 Updates default short description to now mention the plugin creating the command

Bug fixes

  • Fixed literal arguments in command conversion causing errors due to parsing problems

Bug fixes

  • Fixed MapArgument not allowing player names as keys because we forgot to allow the _ character
  • Fixed /execute as ... not working because we were casting to a player instead of a proxied sender
  • Fixed IntegerArgument failing to compile in certain circumstances

New features

  • Added CommandArguments.count() utility method to get the number of arguments
  • Added CommandArguments.getOptional() methods
  • Added CustomArgumentException static factory methods to accept Spigot/Paper text components

Platform support changes

  • Added basic support for Folia

⚠️ This version is incompatible with any plugin that used the CommandAPI version 8.X.X or below! (See documentation for more information)

New features

  • #360, #369 Made executor methods now use CommandArguments to allow for accessing arguments by name instead of index
  • #162, #387, #393 Added optional arguments
  • #388 Added new hook-paper-reload config option to toggle whether the CommandAPI hooks into /minecraft:reload
  • Reworked the implementation of ItemArgument, so the ItemStack count is correctly reflected and ItemMeta is properly assigned
  • Made the TeamArgument return a Team instead of a String
  • Made the ObjectiveArgument return a Objective instead of a String
  • #391 Made the CommandAPI only complain about commands registered in a plugin.yml if this plugin.yml belongs to the plugin calling the CommandAPI
  • #422 Added a way to access the raw command a player typed from the executor
  • #431 Added a way to access more info to construct lists for the ListArgumentBuilder
  • Added support for sidebar team colors using an enum for ScoreboardSlot

Kotlin DSL changes

  • Implemented resulting executors
  • Implemented the FunctionArgument
  • Several improvements for the CommandAPICommand DSL

Bug fixes

  • Fixed commandapi-preprocessor appearing in the plugin and shaded jar file
  • #390 Fixed .executesNative()'s CommandSender's getLocation() method returning the wrong pitch and yaw
  • Fixed tags showing up in the BiomeArgument when they shouldn't have been doing so
  • Fixed LocationArgument with BLOCK_POSITION not returning locations in unloaded chunks
  • Fixed IntegerRangeArgument and FloatRangeArgument not working on Minecraft 1.16.4 and 1.16.5
  • Fixed RecipeArgument not working on Minecraft 1.17
  • Fixed TeamArgument not working on Minecraft 1.17
  • Fixed AdventureChatArgument not working on Minecraft 1.17
  • Fixed commands with no executors not being caught by the CommandAPI
  • Fixed ParticleArgument producing "Invalid particle data type" warnings on Minecraft 1.16.5 and below
  • Fixed FunctionArgument not working on Minecraft 1.17.x and 1.18.x
  • Fixed NamespacedKeyArgument not working on Minecraft 1.18
  • Fixed the FunctionArgument not correctly retrieving datapack (function) tags in 1.17+
  • Removed some redundant vibration particle handling code that would never be run under any circumstances

Documentation changes

  • #384 Fixed various particle data not being documented for the ParticleArgument documentation page
  • Fixed broken links in the documentation (using Michael-F-Bryan/mdbook-linkcheck)
  • Refactored documentation argument page names for consistency
  • Added Kotlin DSL examples

Other changes

  • Removed all previously deprecated constructors, classes and methods
  • Completely refactored the entire CommandAPI project to help support other platforms
  • Added a live dev build of the documentation at
  • Improved mobile support for the CommandAPI home page
  • Added the CommandAPI's Modrinth link to the CommandAPI home page
  • Dropped support for Minecraft 1.13 - 1.14.4. Please use an older version of the CommandAPI, or raise an issue on GitHub to bring back support for these versions

New improvements from 8.7.6:

  • Adds support for Minecraft 1.19.4

New improvements from 8.7.5:

  • Fixes NullPointerException that occurs rarely in the CommandAPI's post-loading step

New improvements from 8.7.3:

  • Fixed @AWorldArgument not being processed properly by the annotation system
  • Fixed LootTableArgument not working in 1.17 - 1.19.3

New improvements from 8.7.2:

  • #397 Fixed issue where the WorldArgument wouldn't work in 1.16.5

New improvements from 8.7.1:

  • Hotfixed issue where various arguments wouldn't work in 1.19.3 (function, recipe, sound, advancement, biome, entities, loot table)
  • Fixed issue where the WorldArgument wouldn't work in 1.19.3

New improvements from 8.7.0:

  • Fixed ParticleArgument not working in 1.19.3
  • Fixed EnchantmentArgument not working in 1.19.3 -Hotfixed a permission check bug when permissions are incorrectly initialized
  • Hotfixed a null pointer exception when autocompletion occurs via redirected commands
  • Fixed JavaDocs not showing in your IDE when using commandapi-shade

New improvements from 8.6.0:

  • Adds support for Minecraft 1.19.3
  • Removes the need for generics and argumenttype parameters for certain arguments

New improvements from 8.5.1:

  • #307 Adds a CommandArgument to let users submit commands as an argument
  • #334 Adds support for chat components in
  • #338 Adds a way to clone a CommandAPICommand instance using instance.copy()
  • #351 Adds support for a ListArgument with the TextArgument backend, to allow inline lists
  • #358 Adds a new WorldArgument argument that lets you get a list of Minecraft dimensions
  • Adds support for SoundArgument to return string-based sounds via the NamespacedKey
  • #352 Adds some helper methods to the LiteralArgument to make it easier to use via a static import
  • #357 Adds a Kotlin DSL to register commands in Kotlin!

New improvements from 8.5.0:

  • Adds support for Minecraft 1.19.2
  • Fixes bug with players being kicked when using chat preview with colors on 1.19+
  • Prevents developers creating dodgy commands with duplicate argument node names that caused clients to crash when they tried - to run those commands
  • Fix subcommand internal information being overwritten at runtime when the parent command was registered
  • Fixes time arguments not working in 1.17+
  • Fixes namespaced key arguments not working in 1.17
  • Fixes commands not working in 1.17 and 1.18
  • Fixes server reloading on Spigot throwing asynchronous-related exceptions
  • Fixes argument suggestions not working if a subcommand's node name is the same as the argument's node name
  • Improves backend code for chatcolor, enchantment and potion arguments in 1.17+
  • Optimize code size for 1.19+
  • Improves list arguments to only display suggestions for the last item and prevent list arguments accepting unlisted items

External resources

Project members



Technical information

Project ID