https://github.com/commandapi/commandapi
A Bukkit/Spigot API for the command UI introduced in Minecraft 1.13
https://github.com/commandapi/commandapi
brigadier bukkit-api commandapi minecraft minecraft-plugin nms paper spigot spigot-api
Last synced: 8 months ago
JSON representation
A Bukkit/Spigot API for the command UI introduced in Minecraft 1.13
- Host: GitHub
- URL: https://github.com/commandapi/commandapi
- Owner: CommandAPI
- License: mit
- Created: 2018-08-19T01:01:33.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-05-06T21:10:44.000Z (8 months ago)
- Last Synced: 2025-05-06T21:36:55.623Z (8 months ago)
- Topics: brigadier, bukkit-api, commandapi, minecraft, minecraft-plugin, nms, paper, spigot, spigot-api
- Language: Java
- Homepage: https://commandapi.jorel.dev
- Size: 99.4 MB
- Stars: 598
- Watchers: 8
- Forks: 72
- Open Issues: 58
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
A Bukkit/Spigot API to use the command UI introduced in Minecraft 1.13


[](https://discord.gg/G4SzSxZ)
[](https://www.codefactor.io/repository/github/commandapi/commandapi)






**Support and Project Discussion**:
-
[Discord](https://discord.gg/G4SzSxZ)
-
[Spigot page](https://www.spigotmc.org/resources/commandapi.62353/)
-
[Modrinth page](https://modrinth.com/plugin/commandapi)
-
[Hangar page](https://hangar.papermc.io/Skepter/CommandAPI)
**Downloads & Documentation:**
-
[All downloads](https://github.com/CommandAPI/CommandAPI/releases)
-
[Documentation (includes usage for server owners!)](https://docs.commandapi.dev/)
**Other**
-
[Buy me a coffee](https://ko-fi.com/jorelali)
**Compatible Minecraft versions:**
The list of what version of the CommandAPI you'll need to run on a specific version of Minecraft is as follows:
| Minecraft version | Compatible versions | Latest compatible
version | Minimum Java
version required
to run latest version |
|--------------------|------------------------------|------------------------------|-----------------------------------------------------------|
| **1.13.x** | v1.0 - 5.12, 8.3.0 - 8.8.0 | 8.8.0 | 16 |
| **1.14.1, 1.14.2** | v2.0 - 5.12, 8.3.0 - 8.8.0 | 8.8.0 | 16 |
| **1.14.3, 1.14.4** | v2.1 - 5.12, 8.3.0 - 8.8.0 | 8.8.0 | 16 |
| **1.15.x** | v2.3a - 5.12, 8.3.0 - 9.3.0 | 9.3.0 | 16 |
| **1.16.1** | v3.0 - 5.12, 8.3.0 - 9.4.2 | 9.4.2 | 16 |
| **1.16.2** | v4.0 - 5.12, 8.3.0 - 9.4.2 | 9.4.2 | 16 |
| **1.16.3** | v4.2 - 5.12, 8.3.0 - 9.4.2 | 9.4.2 | 16 |
| **1.16.4** | v5.2 - 5.12, 8.3.0 - 9.4.2 | 9.4.2 | 16 |
| **1.16.5** | v5.7 - 7.0.0, 8.3.0 - 9.7.0 | 9.7.0 | 16 |
| **1.17** | 6.0.x - 9.7.0 | 9.7.0 | 16 |
| **1.17.1** | 6.1.x - 9.7.0 | 9.7.0 | 16 |
| **1.18, 1.18.1** | 6.5.2 - 9.7.0 | 9.7.0 | 16 |
| **1.18.2** | 6.5.4 - 9.7.0 | 9.7.0 | 16 |
| **1.19** | 8.3.0 - 9.7.0 | 9.7.0 | 16 |
| **1.19.1** | 8.5.0 - 9.7.0 | 9.7.0 | 16 |
| **1.19.2** | 8.5.1 - 9.7.0 | 9.7.0 | 16 |
| **1.19.3** | 8.7.0 - 9.7.0 | 9.7.0 | 16 |
| **1.19.4** | 8.8.0 - 9.7.0 | 9.7.0 | 16 |
| **1.20** | 9.0.2 - 10.0.0 | 10.0.1 | 17 |
| **1.20.1** | 9.0.3 - 10.0.0 | 10.0.1 | 17 |
| **1.20.2** | 9.2.0 - 10.0.0 | 10.0.1 | 17 |
| **1.20.3, 1.20.4** | 9.3.0 - 10.0.0 | 10.0.1 | 17 |
| **1.20.5, 1.20.6** | 9.4.0 - 10.0.0 | 10.0.1 | 17 |
| **1.21** | 9.5.0 - 10.0.0 | 10.0.1 | 17 |
| **1.21.1** | 9.5.2 - 10.0.0 | 10.0.1 | 17 |
| **1.21.2, 1.21.3** | 9.6.0 - 10.0.0 | 10.0.1 | 17 |
| **1.21.4** | 9.7.0 - 10.0.0 | 10.0.1 | 17 |
| **1.21.5** | 10.0.0 - 10.0.1 | 10.0.1 | 17 |
-----
## Purpose
This project provides an API to help Bukkit/Spigot developers use the Minecraft 1.13 command UI, which includes:
- **Better commands** - Prevent players from running invalid commands, making it easier for developers - you won't get dodgy input!

- **Better arguments** - Choose from over 50 arguments including location arguments, raw JSON, enchantments, lists, particles... all fully supported with built-in error checking!

- **Support for proxied command senders** - Run your command as other entities using `/execute as ... run command`

- **Argument tooltips** - Let your users know exactly what their command will do using argument tooltips

- **Support for the `/execute` command** - Let your command to be executed by the built in `/execute` command, as well as command blocks!
- **Support for Minecraft's functions** - Allow your command to be executed from Minecraft's functions and tags
- **No plugin.yml registration** - Commands don't need to be registered in the `plugin.yml` file anymore
- **No need for Brigadier** - You don't need to import Brigadier in your projects to use the CommandAPI
- **No tracking** - The CommandAPI doesn't collect any stats about its plugin; what you see is what you get!
Still not convinced? In addition to all of the above, the CommandAPI also provides:
- **Built-in command converter** - Convert other plugin commands into `/execute`-compatible ones - no code required!
- **Tree-structure command registration** - Like Brigadier's code format? We've got you covered with `CommandTree`
- **Kotlin DSL** - Prefer writing plugins in Kotlin? The CommandAPI has an optional Kotlin DSL just for you
- **Powerful suggestion generation** - Generate new suggestions for each argument, or add to existing suggestions
- **Safe suggestion generation** - The CommandAPI offers compile-time type safety for specific arguments
- **Precise permission support** - Apply permissions to specific arguments - you need perms to even _see_ the argument
- **Fast updates** - Consistently supports new Minecraft versions within a week of their release
- [**Insanely detailed documentation**](https://docs.commandapi.dev/) - Trust me, you've never seen a plugin documentation look so good.
-----
## Code examples
Simple command registration
```java
new CommandAPICommand("enchantitem")
.withArguments(new EnchantmentArgument("enchantment"))
.withArguments(new IntegerArgument("level", 1, 5))
.executesPlayer((player, args) -> {
Enchantment enchantment = (Enchantment) args.get("enchantment");
int level = (int) args.get("level");
//Add the enchantment
player.getInventory().getItemInMainHand().addEnchantment(enchantment, level);
})
.register();
```
Potion removing, suggesting potions that a player has currently
```java
List> arguments = new ArrayList<>();
arguments.add(new EntitySelectorArgument.OnePlayer("target"));
arguments.add(new PotionEffectArgument("potioneffect").replaceSafeSuggestions(SafeSuggestions.suggest(info -> {
Player target = (Player) info.previousArgs().get("target");
//Convert PotionEffect[] into PotionEffectType[]
return target.getActivePotionEffects().stream()
.map(PotionEffect::getType)
.toList().toArray(new PotionEffectType[0]);
})));
new CommandAPICommand("removeeffect")
.withArguments(arguments)
.executesPlayer((sender, args) -> {
Player player = (Player) args.get("target");
PotionEffectType effect = (PotionEffectType) args.get("potioneffect");
player.removePotionEffect(effect);
})
.register();
```
Subcommands
```java
new CommandAPICommand("perm")
.withSubcommand(new CommandAPICommand("group")
.withSubcommand(new CommandAPICommand("add")
.withArguments(new StringArgument("permission"))
.withArguments(new StringArgument("groupName"))
.executes((sender, args) -> {
//perm group add code
})
)
.withSubcommand(new CommandAPICommand("remove")
.withArguments(new StringArgument("permission"))
.withArguments(new StringArgument("groupName"))
.executes((sender, args) -> {
//perm group remove code
})
)
)
.withSubcommand(new CommandAPICommand("user")
.withSubcommand(new CommandAPICommand("add")
.withArguments(new StringArgument("permission"))
.withArguments(new StringArgument("userName"))
.executes((sender, args) -> {
//perm user add code
})
)
.withSubcommand(new CommandAPICommand("remove")
.withArguments(new StringArgument("permission"))
.withArguments(new StringArgument("userName"))
.executes((sender, args) -> {
//perm user remove code
})
)
)
.register();
```
Command trees
```java
new CommandTree("perm")
.then(new MultiLiteralArgument("group", "user")
.then(new MultiLiteralArgument("add", "remove")
.then(new StringArgument("permission")
.then(new StringArgument("groupName")
.executes((sender, args) -> {
// args = ["group" or "user", "add" or "remove", permission, groupName]
})
)
)
)
)
.register();
```
Annotation-based commands
```java
@Command("warp")
public class WarpCommand {
// List of warp names and their locations
static Map warps = new HashMap<>();
@Default
public static void warp(CommandSender sender) {
sender.sendMessage("--- Warp help ---");
sender.sendMessage("/warp - Show this help");
sender.sendMessage("/warp - Teleport to ");
sender.sendMessage("/warp create - Creates a warp at your current location");
}
@Default
public static void warp(Player player, @AStringArgument String warpName) {
player.teleport(warps.get(warpName));
}
@Subcommand("create")
@Permission("warps.create")
public static void createWarp(Player player, @AStringArgument String warpName) {
warps.put(warpName, player.getLocation());
}
}
```
Kotlin DSL
CommandAPICommand
```kotlin
commandAPICommand("mute") {
playerArgument("target")
integerArgument("duration")
playerExecutor { player, args ->
val target: Player = args["target"]!!
val duration: Int = args["duration"]!!
// Implementation...
}
}
```
CommandTree
```kotlin
commandTree("mute") {
playerArgument("target") {
integerArgument("duration") {
playerExecutor { player, args ->
val target: Player = args["target"]!!
val duration: Int = args["duration"]!!
}
}
playerExecutor { player, args ->
val target: Player = args["target"]!!
// Some default duration
// Implementation...
}
}
}
```
Command conversion (no compilation required)
```yml
plugins-to-convert:
- Essentials:
- speed [0..10]
- speed [minecraft:game_profile]
- speed (walk|fly) [0..10]
- speed (walk|fly) [0..10] [minecraft:game_profile]
```
-----
## Building the CommandAPI
The CommandAPI is built using the Maven build tool - if you don't have it, you can download it [here](https://maven.apache.org/download.cgi).
- Clone the repository using your preferred method, or with the command below:
```bash
git clone https://github.com/CommandAPI/CommandAPI.git
```
- Run `mvn clean install -P Platform.Bukkit,Platform.Velocity`
Notable artifacts can be found here:
- Spigot-mapped Spigot/Paper plugin `.jar`:
```sh
commandapi-platforms/commandapi-bukkit/commandapi-bukkit-plugin/target/CommandAPI-X.X.X_DATE.jar
```
- Mojang-mapped Spigot/Paper plugin `.jar`:
```sh
commandapi-platforms/commandapi-bukkit/commandapi-bukkit-plugin-mojang-mapped/target/CommandAPI-X.X.X_DATE.jar
```
- Velocity Plugin `.jar`:
```sh
commandapi-platforms/commandapi-velocity/commandapi-velocity-plugin/target/CommandAPI-X.X.X_DATE.jar
```
-----
## CommandAPI Project Timeline
This is the current roadmap for the CommandAPI (as of 1st April 2025):
- **Hard Paper fork support**
Paper's moving up in the world and it's about time the CommandAPI got with the times. We've got an active PR https://github.com/CommandAPI/CommandAPI/pull/517 that will have better support for Paper. In future, we'll only release Paper builds on Hangar and Spigot builds on SpigotMC. Modrinth will support both releases.
- **Annotation improvements**
The CommandAPI's annotation system has always been a bit limited and was primarily introduced as a proof-of-concept. In this update, the CommandAPI's annotation system will be improved to be (ideally) as powerful as the non-annotation system and have slightly better type safety, support for non-static methods and better checks to prevent invalid command generation. More information about annotations can be found in the [Annotation specification document](./annotations_spec_doc.md).
- **Argument conflict detection**
The CommandAPI simply uses the Brigadier system under the hood. This system is prone to _argument conflicts_, which is where certain arguments are given priority over other arguments. (For example "hello" and "123" are both valid string arguments, but if you have a command that has a string argument or an integer argument, Brigadier may ignore the integer argument). In this update, the CommandAPI will try to spot potential conflicts and add a warning in the console.
- **'True' custom arguments and server-side argument implementations**
Through some brief testing of the [regex-mod branch](https://github.com/CommandAPI/CommandAPI/tree/dev/regex-mod) and my [MinecraftRegexArgumentMod](https://github.com/JorelAli/MinecraftRegexArgumentMod) repository, it was discovered that 'true' custom arguments (arguments with a custom implementation of the returned type and parser) are possible with the aid of a client-sided mod. Additionally, this functionality also works _without_ a client-sided mod, assuming this is only used server-side. This can be useful for server-only datapacks, functions and tags, as well as command blocks. It is possible that this may lead into being ported to Fabric, but there are no concrete plans to do so as of now.
-----
## Changelog
Version
Date
Features / Changes
10.0.1
May 2025
Bug Fixes:
- Fixes command unregistration not working on Paper
- https://github.com/CommandAPI/CommandAPI/issues/645 Ignore requirements for null senders
10.0.0
April 2025
⚠️ This version is incompatible with any plugin that used the CommandAPI version 9.X.X or below! (See documentation for more information)
Minecraft Version Changes:
- Adds support for Minecraft 1.21.5
- Drops support for Minecraft 1.16.5 - 1.19.4
Java Version Changes:
- Change from requiring Java 16 to Java 17 (LTS)
CommandAPI Changes:
- https://github.com/CommandAPI/CommandAPI/pull/633 Adds an
AsyncOfflinePlayerArgumentto allow asynchronous fetching of an offline player - https://github.com/CommandAPI/CommandAPI/pull/636 The default namespace has been updated from
minecraftto the plugin's name. If you are not shading, the default namespace is going to becommandapi. If you are shading, the default namespace is going to be your plugin's name. - Updates the config defaults for the datapack reloading step to be opt-in instead of opt-out.
- https://github.com/CommandAPI/CommandAPI/issues/634 Updates methods that previously accepted
Componentto now acceptComponentLikeinstead.
Bug Fixes:
- https://github.com/CommandAPI/CommandAPI/issues/477 Fixed
NativeProxyCommandSendernot being able to run Vanilla (and CommandAPI) commands - https://github.com/CommandAPI/CommandAPI/issues/578, https://github.com/CommandAPI/CommandAPI/issues/583, https://github.com/CommandAPI/CommandAPI/pull/629 Fixes
Bukkit#dispatchCommand()not working after Paper's Brigadier API changes - Fixes
PotionEffectArgument.NamespacedKeynot having suggestions in some versions
Website Changes:
- The CommandAPI has a new website: https://commandapi.dev/
- The CommandAPI has moved from https://github.com/JorelAli/CommandAPI to https://github.com/CommandAPI/CommandAPI
- The CommandAPI's documentation source code is now over at https://github.com/CommandAPI/docs
- The CommandAPI's JavaDocs can be viewed over at https://javadocs.commandapi.dev
9.7.0
December 2024
Minecraft Version Changes:
- Adds support for Minecraft 1.21.4
CommandAPI Changes:
- https://github.com/CommandAPI/CommandAPI/pull/575 Adds a NMS independent test toolkit to allow developers to test their commands with MockBukkit
- https://github.com/CommandAPI/CommandAPI/pull/613 Adds a
thenNestedmethod forCommandTrees to reduce nesting
9.6.1
October 2024
Bug fixes:
- Fixes Mojang-mapped builds not working on 1.21.2 and 1.21.3
9.6.0
October 2024
Minecraft Version Changes:
- Adds support for Minecraft 1.21.2 and 1.21.3
CommandAPI Changes:
- https://github.com/CommandAPI/CommandAPI/pull/594 Adds a config option to allow the CommandAPI to be more lenient when updating to a new minor version (e.g. from 1.21 to 1.21.1)
- https://github.com/CommandAPI/CommandAPI/pull/596, https://github.com/CommandAPI/CommandAPI/pull/605 The plugin's
config.ymlfile will be updated when config options are added or removed
9.5.3
August 2024
- Fixes Folia crash on startup due to a delay of 0
9.5.2
August 2024
Minecraft Version Changes:
- Adds support for Minecraft 1.21.1
CommandAPI Changes:
- https://github.com/CommandAPI/CommandAPI/pull/588 Fix Folia scheduling methods using the wrong scheduler implementation
- https://github.com/CommandAPI/CommandAPI/issues/577 Adds a
CommandAPIBukkit#failWithAdventureComponent(ComponentLike)method - https://github.com/CommandAPI/CommandAPI/pull/580 Fix running a non-vanilla command on paper in Minecraft functions with the CommandAPI throwing runtime exceptions
- Fix namespaces not being propagated when registering subcommands
9.5.1
June 2024
- Fixes the CommandAPI not loading properly on Paper 1.21
9.5.0
June 2024
- Adds support for Minecraft 1.21
- Drops support for Minecraft 1.16.1, 1.16.2, 1.16.3 and 1.16.4
- Fixes
ResourceLocationArgumentnot working in 1.20.5 and 1.20.6 - Fixes
/minecraft:reloaddeleting commands on Paper 1.20.6 (build 65+)
9.4.2
May 2024
- https://github.com/CommandAPI/CommandAPI/pull/555 Hotfix CommandAPI not loading correctly on Paper 1.20.6 build 65+ servers
9.4.1
May 2024
CommandAPI Changes:
- https://github.com/CommandAPI/CommandAPI/issues/551 Fixes mojang-mapped versions of the CommandAPI causing errors in certain Minecraft versions
- https://github.com/CommandAPI/CommandAPI/issues/552 Adds a configuration option to disable datapack reloading on server load
9.4.0
April 2024
CommandAPI Changes:
- https://github.com/CommandAPI/CommandAPI/issues/495 Adds a parameter to
EntitySelectorArgumentto allow failure when no entity lists are empty - https://github.com/CommandAPI/CommandAPI/issues/367, https://github.com/CommandAPI/CommandAPI/pull/509 Adds the ability to register commands with a custom namespace
- https://github.com/CommandAPI/CommandAPI/pull/523 Exposed more details of the
CommandPermission - https://github.com/CommandAPI/CommandAPI/issues/536, https://github.com/CommandAPI/CommandAPI/pull/537 Fixes
MultiLiteralArgumenthelp displaying the node name instead of the literal text - Fixed implementation issues with
FunctionArgument - https://github.com/CommandAPI/CommandAPI/issues/490 Adds (experimental) support for Mojang-mapped servers via the CommandAPI config
- https://github.com/CommandAPI/CommandAPI/issues/524 Fixes
CommandAPIBukkit.get().getTags()erroring in 1.20.4 - https://github.com/CommandAPI/CommandAPI/pull/540 Add methods to "safe-cast" arguments to
CommandArguments - https://github.com/CommandAPI/CommandAPI/pull/541 Adds support for a
NamespacedKeyvariant for thePotionEffectArgument
Minecraft Version Changes:
- Drops support for version 1.15.x
- Adds support for version 1.20.5
- Adds support for version 1.20.6
9.3.0
December 2023
⚠️ This version has limited support for the
FunctionArgument! (See documentation for more information)
- Adds support for Minecraft 1.20.3 and 1.20.4
- Fixed bug where calling
SimpleFunctionWrapper.getTag()on 1.19+ would throw an error - https://github.com/CommandAPI/CommandAPI/pull/499 Fix typo in Adventure methods for tooltips
- Adds
ExecutionInfoexecutors for the Kotlin DSL - https://github.com/CommandAPI/CommandAPI/issues/497 Adds support for
RemoteConsoleCommandSender - Fixed
executesFeedbackForwarding()not checking for aFeedbackForwardingCommandSendercorrectly thus allowing every executor to execute the command - https://github.com/CommandAPI/CommandAPI/issues/473 Fix RGB colors in
CustomArgument.CustomArgumentException#fromStringcreating the wrong colors
9.2.0
September 2023
- https://github.com/CommandAPI/CommandAPI/issues/487 Added support for disabling integer centering for location arguments
- https://github.com/CommandAPI/CommandAPI/issues/488 Fixed calling CommandAPI commands with
Bukkit.createCommandSender()not working on paper - https://github.com/CommandAPI/CommandAPI/pull/482 Adds Kotlin DSL support for delegated properties
- Fixed a bug where the CommandAPI would throw errors when unregistering commands when a command exists with a
:at the end of its name
9.1.0
August 2023
- Fixed the CommandAPI disabling datapacks on Paper 1.20.1 #40+ because it thought it was running on a Folia server
- https://github.com/CommandAPI/CommandAPI/pull/459 Added the ability to access raw arguments in the command executor
- https://github.com/CommandAPI/CommandAPI/issues/469 Adds
AdventureChatColorArgument - https://github.com/CommandAPI/CommandAPI/pull/417 Added the ability for commands to be registered and unregistered while the server is running
9.0.3
June 2023
-
https://github.com/CommandAPI/CommandAPI/pull/455 Reworked theMapArgumentwith 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)
- Fixed
use-latest-nms-versionnot pointing to 1.20 - Adds support for Minecraft 1.20.1
9.0.2
June 2023
CommandAPI changes:
- Add the ability to retrieve
LiteralArguments andMultiLiteralArguments by their node names - https://github.com/CommandAPI/CommandAPI/issues/363 Adds
withUsage()method to customise command usage info - https://github.com/CommandAPI/CommandAPI/issues/371 Updates default short description to now mention the plugin creating the command
- Fixed literal arguments in command conversion causing errors due to parsing problems
- Adds support for Minecraft 1.20
Other changes:
- Update the look-and-feel of the CommandAPI website
- Update the look-and-feel of the CommandAPI JavaDocs
- Fix various classes in the CommandAPI JavaDocs not having their methods declared
9.0.1
May 2023
- Fixed
MapArgumentnot always allowing player names as keys - Fixed
/execute as ...not working due to casting to a player instead of a proxied sender - https://github.com/CommandAPI/CommandAPI/pull/441 Added
CommandArguments#count()utility method - https://github.com/CommandAPI/CommandAPI/issues/440 Added several
CommandArguments#getOptional()methods - Fixed bug where
IntegerArgumentwould fail to compile due to a missing Brigadier dependency - Added basic support for Folia
- Added support for the
CustomArgumentExceptionto accept Adventure and Spigot text components
9.0.0
April 2023
⚠️ This version is incompatible with any plugin that used the CommandAPI version 8.X.X or below! (See documentation for more information)
New features:
- https://github.com/CommandAPI/CommandAPI/issues/360, https://github.com/CommandAPI/CommandAPI/pull/369 Made executor methods now use
CommandArgumentsto allow for accessing arguments by name instead of index - https://github.com/CommandAPI/CommandAPI/issues/162, https://github.com/CommandAPI/CommandAPI/issues/387, https://github.com/CommandAPI/CommandAPI/pull/393 Added optional arguments
- https://github.com/CommandAPI/CommandAPI/pull/388 Added new
hook-paper-reloadconfig option to toggle whether the CommandAPI hooks into/minecraft:reload - https://github.com/CommandAPI/CommandAPI/issues/399, https://github.com/CommandAPI/CommandAPI/pull/418 Added a
MapArgument - Reworked the implementation of
ItemArgument, so theItemStackcount is correctly reflected andItemMetais properly assigned - Made the
TeamArgumentreturn aTeaminstead of a String - Made the
ObjectiveArgumentreturn aObjectiveinstead of a String - https://github.com/CommandAPI/CommandAPI/pull/391 Made the CommandAPI only complain about commands registered in a
plugin.ymlif thisplugin.ymlbelongs to the plugin calling the CommandAPI - https://github.com/CommandAPI/CommandAPI/issues/422 Added a way to access the raw command a player typed from the executor
- https://github.com/CommandAPI/CommandAPI/issues/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
CommandAPICommandDSL
Bug fixes:
- Fixed
commandapi-preprocessorappearing in the plugin and shaded jar file - https://github.com/CommandAPI/CommandAPI/issues/390 Fixed
.executesNative()'s CommandSender'sgetLocation()method returning the wrong pitch and yaw - Fixed tags showing up in the
BiomeArgumentwhen they shouldn't have been doing so - Fixed
LocationArgumentwithBLOCK_POSITIONnot returning locations in unloaded chunks
Testing and validation:
- Created the testing matrix to perform multi-Minecraft-version testing
- Fixed
IntegerRangeArgumentandFloatRangeArgumentnot working on Minecraft 1.16.4 and 1.16.5 - Fixed
RecipeArgumentnot working on Minecraft 1.17 - Fixed
TeamArgumentnot working on Minecraft 1.17 - Fixed
AdventureChatArgumentnot working on Minecraft 1.17 - Fixed commands with no executors not being caught by the CommandAPI
- Fixed
ParticleArgumentproducing "Invalid particle data type" warnings on Minecraft 1.16.5 and below - Fixed
FunctionArgumentnot working on Minecraft 1.17.x and 1.18.x - Fixed
NamespacedKeyArgumentnot working on Minecraft 1.18 - Integrated the CommandAPI repository with SonarCloud to identify bugs and improve the internal code
- Fixed the
FunctionArgumentnot correctly retrieving datapack (function) tags in 1.17+ - Added some code coverage reports to identify how well tested the CommandAPI is, and what code paths need attention to during development
- Removed some redundant vibration particle handling code that would never be run under any circumstances
Bugs found (and fixed) as a result of the testing matrix:
Bugs found (and fixed) as a result of using SonarCloud:
Issues found (and fixed) as a result of using code coverage reports:
Documentation changes:
- https://github.com/CommandAPI/CommandAPI/issues/384 Fixed various particle data not being documented for the
ParticleArgumentdocumentation 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 commandapi-live-docs.jorel.dev
- 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
GitHub Actions changes:
- Fixed NodeJS 12 deprecation warnings
- Added markdownlint to verify that the documentation adheres to suitable Markdown standards
- Fixed building the CommandAPI example projects not failing if they failed to compile
- Added the CommandAPI documentation to GitHub Actions
- Added deployment of snapshot builds to GitHub Actions
8.8.0
March 2023
- Adds support for Minecraft 1.19.4
8.7.6
February 2023
- https://github.com/CommandAPI/CommandAPI/issues/415 Fixed NullPointerException when the CommandAPI fixes permissions in its post-load step
8.7.5
February 2023
- Fixed
@AWorldArgumentannotation not being handled by the annotation processor
8.7.4
January 2023
- Fixed
LootTableArgument(function, recipe, sound, advancement, biome and entities) in 1.17 - 1.19.3
8.7.3
January 2023
- https://github.com/CommandAPI/CommandAPI/issues/397 Fixed
WorldArgumentnot working in 1.16.5
8.7.2
January 2023
- Hotfixed issue where various arguments wouldn't work in 1.19.3 (function, recipe, sound, advancement, biome, entities, loot table)
- Fixed issue where the
WorldArgumentwouldn't work in 1.19.3
8.7.1
December 2022
- https://github.com/CommandAPI/CommandAPI/issues/310 Hotfixed a null pointer exception with redirected commands
- https://github.com/CommandAPI/CommandAPI/issues/383 Fixed
ParticleArgumentnot working in 1.19.3 - Fixed
EnchantmentArgumentnot working in 1.19.3 - Fixed JavaDocs in IDEs not working when using
commandapi-shade - Hotfixed permission check failing when permissions have been incorrectly initialized
8.7.0
December 2022
- Note: This version is incompatible with any plugin that used the
SoundArgumentin version 8.6.0! (See documentation for more information) - Adds support for Minecraft 1.19.3
- Deprecates Argument "type" constructors in favour of static inner classes
8.6.0
December 2022
- https://github.com/CommandAPI/CommandAPI/issues/307 Adds a
CommandArgumentto let users submit commands as an argument - https://github.com/CommandAPI/CommandAPI/issues/330 Improve the documentation for disabling the CommandAPI gracefully with
CommandAPI.onDisable() - https://github.com/CommandAPI/CommandAPI/issues/334 Adds support for chat components in
CommandAPI.fail() - https://github.com/CommandAPI/CommandAPI/issues/338 Adds a way to clone a
CommandAPICommandinstance usinginstance.copy() - https://github.com/CommandAPI/CommandAPI/issues/340 Adds Kotlin examples in the documentation
- https://github.com/CommandAPI/CommandAPI/issues/341 Fix incorrect code block in normal executors documentation page
- https://github.com/CommandAPI/CommandAPI/issues/351 Adds support for a ListArgument with the TextArgument backend, to allow inline lists
- https://github.com/CommandAPI/CommandAPI/issues/358 Adds a new WorldArgument argument that lets you get a list of Minecraft dimensions
- Adds support for
SoundArgumentto return string-based sounds via theNamespacedKey - https://github.com/CommandAPI/CommandAPI/pull/352 Adds some helper methods to the LiteralArgument to make it easier to use via a static import
- https://github.com/CommandAPI/CommandAPI/pull/357 Adds a Kotlin DSL to register commands in Kotlin!
8.5.1
August 2022
- https://github.com/CommandAPI/CommandAPI/issues/311 Fix packets with invalid signatures kicking the client when sending certain commands with a chat preview enabled argument
- https://github.com/CommandAPI/CommandAPI/issues/312 Safeguards against command paths with duplicate node names which could cause the client to crash
- https://github.com/CommandAPI/CommandAPI/issues/313 Fix subcommand information being overwritten after a command has been registered
- https://github.com/CommandAPI/CommandAPI/issues/314 Fix
TimeArgumentnot working as intended - https://github.com/CommandAPI/CommandAPI/issues/316 Fix server reloading on Spigot throwing asynchronous-related exceptions in the console
- https://github.com/CommandAPI/CommandAPI/issues/323 Fix
NamespacedKeyArgumentnot working in 1.17 - Fix various command issues with Minecraft versions before 1.19
- Fix argument suggestions not working if a subcommand's node name is the same as the argument's node name
- Improves the underlying implementation of chatcolor, enchantment and potion arguments in 1.17+
- Improves NMS code sharing between 1.19, 1.19.1 and 1.19.2
- Improves the implementation of the list argument to only display suggestions for the last item in the list and prevent unlisted items being entered
- Adds support for Minecraft 1.19.2
8.5.0
July 2022
Development improvements:
- Improves the issue templates on GitHub for creating bug reports and feature requests
- Adds a testing suite for the CommandAPI which can test for successful command registration and execution
- Adds an example of shading the CommandAPI with Maven in
examples/maven-shaded/
Bug fixes:
- Fixes suggestions not working in 1.16.5 and below due to Brigadier implementation versions
- Fixes the CommandAPI allowing spaces in command names
- Fixes datapack reloading on 1.17.1
New features/improvements:
- Adds support for Minecraft 1.19.1
- Adds support for chat preview with
ChatArgumentandAdventureChatArgument - Adds a
CommandAPI.onDisable()method to disable the CommandAPI gracefully - Adds Kotlin-DSL gradle to the documentation
- Prevents the CommandAPI re-parsing previous arguments multiple times when running a command
- Adds
CommandAPI.isLoaded()to check if the CommandAPI is loaded - Shares NMS code for 1.13.x and 1.14.x, reducing the jar size
8.4.1
June 2022
- Fix issue where converted commands would handle arguments incorrectly
- Fix commandapi-annotations dependency depending on spigot instead of spigot-api
8.4.0
June 2022
Jar minimization improvements:
- Decouples CustomArgument from CommandAPIHandler
- Decouples EntitySelector from EntitySelectorArgument
NBT API Support:
- Allow developers to shade their own copy of an NBT API framework (e.g. NBT API or PowerNBT)
- Includes the NBT API built-in for plugin versions
Other:
- Implement base arguments for CustomArguments, allowing more powerful parsing
- Implement common NMS code for 1.17+
- Adds
NamespacedKeyArgument - Adds support for shaded versions of the CommandAPI to create their own
command_registration.jsonfiles for debugging - Fixes bug where
WrapperCommandSyntaxExceptionwouldn't work as intended - Adds support for
/minecraft:reloadon paper servers - Adds
CommandAPI.getRegisteredCommands()to get a list of registered commands
8.3.1
June 2022
- Fixes critical issue where non-Vanilla commands were not showing suggestions
8.3.0
June 2022
- Change Java target version to Java 16 instead of Java 17
- Adds support for old Minecraft versions (1.13 - 1.16.4) again
- Adds support for Minecraft 1.19
8.2.1
June 2022
- Adds a
.withSubcommands()method to add multiple subcommands in one go - Exposed
registeredCommandsfield in the CommandAPIHandler to get a list of registered commands - Fixed CommandAPI logging prefix twice in shaded versions of the CommandAPI
8.2.0
May 2022
- Adds a list argument
- Brings back support for Minecraft 1.16.5
- Fixes documentation bug with multiple executor types
- Fixes bug where suggestions wouldn't "filter" while being typed in chat
8.1.0
May 2022
- Adds generic types to arguments to improve compile-time type checking
- Fix particle data safe suggestions crashing the CommandAPI
- Improves error logging of greedy string arguments
- Fix bug with
CommandPermission.OPthrowing a null pointer exception - Prevent the CommandAPI crashing when shaded plugins don't call
CommandAPI.onLoad() - Fix initialization of
WrapperCommandSyntaxExceptionbug
8.0.0
April 2022
- Note: This version is incompatible with existing plugins that use the particle argument (See documentation for more information)
- Improved support for particle arguments, now supporting particle data (e.g. color, size)
- Dropped support for Minecraft 1.16.5
- Adds an error message if the
config.yml'splugins-to-convertoption has an invalid type - Improve
WrapperCommandSyntaxExceptionto include passthrough methods to access the underlying exception
7.0.0
April 2022
Development improvements:
- Adds a GitHub action to build the CommandAPI (and share it's lovely artifacts)
- Moves the Maven repo for 7.0.0 and future updates to Maven Central
New features:
- Adds support for using the same command executor for multiple command sender types
- Makes the CommandAPI display a warning if it finds commands present in a
plugin.ymlfile - Adds more helper methods to the Brigadier class
- Adds a tree-like syntax for command declarations
- Adds support for asynchronous suggestions
- Rewrote how argument suggestions are declared, instead of lots of overloads, require a single object which encompasses the various different suggestion methods
Other:
- Fix transitive dependencies in the CommandAPI which caused various libraries to be exposed
- Remove various deprecated
safeOverrideSuggestionsmethods - Improve certain colors of elements in the CommandAPI's documentation so it's easier to read
- Fix various broken links in the documentation
- Changed
CommandAPI.fail()so it doesn't automatically throw the exception it generates
6.5.4
March 2022
- Support for Minecraft 1.18.2
- Improve converted command support for
/execute atand/execute positioned
6.5.3
December 2021
- Support for Minecraft 1.18.1
6.5.2
December 2021
- Fix Maven build script with 6.5.1, fixing broken CommandAPI annotation builds
6.5.1
December 2021
- Fix Maven build script with 6.5.0, fixing broken CommandAPI shaded builds
6.5.0
December 2021
- Adds support for Minecraft 1.18 (requires Java 17)
6.4.0
November 2021
- Adds support for CommandAPI command help topics via
/help - Improve CommandAPI initialization stability
- (Hopefully) fix conflicting issues with duplicate Bukkit and CommandAPI command names
- Code cleanup (fix a lot of minor warnings)
6.3.1
September 2021
- Fixes issue with converted commands where executing as a player with lower permissions fails
- Adds very limited support for plugin reloading by unregistering commands on disable
- Fixes issue where converted commands with greedy string arguments would almost always fail
6.3.0
August 2021
- Adds a new constructor to
CustomArgumentwhich takes in a record containing all inputs - Adds support for
CustomArgument's parser to use previously declared arguments
6.2.0
July 2021
- Adds config option to customize messages
- Adds config option to use the latest NMS version
- Update documentation instructions for shading with Maven
6.1.0
July 2021
- Adds support for 1.17.1
6.0.5
June 2021
- Fix issue where converted commands which didn't use entity selectors would always fail
6.0.4
June 2021
- Fix issue where some multi literal arguments would be skipped, causing a crash
6.0.3
June 2021
- Fix issue where custom CommandSender subclasses could not run CommandAPI commands
6.0.2
June 2021
- Fix bug where multi literal arguments would crash due to poor array preservation
6.0.1
June 2021
- Fix bug where the CommandAPI would crash if it tries to register duplicate permissions
6.0.0
June 2021
Version support changes:
- Adds support for Minecraft 1.17
- Drops support for Minecraft 1.16.4 and below
- Changes build version from Java 8 to Java 16
Development improvements:
- Switches version convention to use Semanic Versioning
- Uses CodeFactor.io for code quality checking
New features:
- Adds
OfflinePlayerArgumentfor offline players - Adds a way to add suggestions to existing vanilla suggestions
- Adds a way to access the
CommandSenderforCustomArgumentparsing - Adds support for Paper's console tab-completion
- Adds a way to completely silence all CommandAPI logs
- Adds access to the current input and current argument input for argument suggestions
- Improve API for setting configuration for plugins that shade the CommandAPI
Bug fixes:
- Fixes bug with converted commands crashing due to poor interface proxying
- Adds a way to access the
CommandSenderforCustomArgumentparsing - Adds support for Paper's console tab-completion
- Adds a way to completely silence all CommandAPI logs
- Fix bugs where the NBTAPI wouldn't be hooked into properly
- Fixes critical issue where converted commands with entity selectors may sometimes just not run
Other:
- Improves overall performance
- Improves performance for the
PotionArgument - Improves performance for the
MathOperationArgument - Fixes spacing issues with code blocks in the documentation
- Fixes invalid code examples in the documentation
- Fixes typos in the documentation
- Adds syntax highlighting for command code blocks in the documentation
5.12
May 2021
- Moves the Maven repo for 5.12 and future updates to jitpack.io
- Fixes issue with sound arguments on Minecraft 1.16.4 and 1.16.5
5.11
May 2021
- Allows converted commands to use entity selectors in plugin commands
- Allows arbitrary commands to be converted with the CommandAPI's converter system
5.10
May 2021
- Adds support for Paper's Adventure API for ChatComponent and Chat arguments.
- Deprecated a few methods in favour of some slightly better ones.
- Update proxied sender for Spigot 1.16.5
5.9
February 2021
- Fixed a critical bug where plugin conversion would run the caller methods instead of callee methods, which prevented command blocks from running commands.
5.8
January 2021
- Removed a debug
/testcommand which wasn't supposed to be released!
5.7
January 2021
- Add support for Minecraft 1.16.5
5.6
January 2021
- Fix bug where plugins that use Aikar's ACF were incompatible with the CommandAPI
- Add a new configuration option
skip-sender-proxywhich prevents certain plugins from running properly
5.5
January 2021
- Fix bug with annotations where
@NeedsOpdidn't work if placed on a class - Fix bug where entity selector arguments with
@selectors return empty values if the sender is not op
5.4
December 2020
- Fix bug where the NBT-API wasn't compatible with the CommandAPI when both are shaded into a plugin
5.3
November 2020
- Fix bug where permissions weren't being applied for subcommands and multi literal arguments
- Adds detection system for command graph conflicts
- Adds a way to "negate" permissions using
.withoutPermission - Adds an annotation-based command framework
- Fix minor documentation inaccuracies
- Fix bug where converted commands didn't apply multiple parameters
- The fields in
CommandAPICommandcan now be accessed via getters and setters
5.2
November 2020
- Adds
CommandAPI.reloadDatapacks()method to reload datapacks in the same way the CommandAPI does - Adds support for Minecraft 1.16.4
5.1
October 2020
- Fixes bug where converted commands could not be executed by players ingame
- Adds
withPermission(String)to arguments and CommandAPICommands - Adds SimpleFunctionWrapper with helper methods to get functions and tags from ingame, as well as run them without needing to parse them via commands
- Greatly improve the type-safety of the internal CommandAPI code
- Move the
Brigadierclass outside of theCommandAPIHandlerclass
5.0
October 2020
- Note: This version is incompatible with any plugin that used the CommandAPI version 4.3c or below! (See documentation for more information)
- API improvements:
- The
.withArgumentsmethod can now take varargs - String tooltips are now much easier to implement for custom objects using
IStringTooltip - Removes
LinkedHashMapfor argument registration in favour ofList
- The
- Adds subcommands
- Adds
AngleArgument - Arguments can now be omitted from the
Object[] argsusing the method.setListed(). This means Literal arguments can now be "present" in the arguments if desired. - Remove lots of reflection calls, so start up should be a little faster
- Bug fixes:
- Fixes bug where verbose logging of permission linking was inaccurate
- Fixes bug where overriding suggestions can break when generating suggestions
- Fixes bug where
nullcould appear in the suggestions list of arguments - CommandAPI's non-verbose logging is now actually quiet
- Fixes bug where converted commands couldn't be run from the console
- Fixes bug where
LongArgumentwouldn't let you use long values as minimum or maximum - Command conversion improvements:
- The
Converter.convert()method can now take varargs for arguments - Command conversion code that was specific to the CommandAPI plugin is no longer included in the shaded version of the CommandAPI
- Command conversion in the configuration for server owners can now let server owners apply their own command argument implementations!
- Documentation improvements:
- Documentation code examples are now guaranteed to compile
- The list of CommandAPI arguments to Minecraft argument IDs is now in the documentation
- CommandAPI-Brigadier improvements:
- Adds
toSuggestions()to the CommandAPI-Brigadier library to convert CommandAPI suggestions into Brigadier'sSuggestionProvider - CommandAPI-Brigadier library methods got renamed
- Changed the way literal arguments are constructed in the CommandAPI-Brigadier library - they are no longer unnecessarily registered into the command graph
4.3c
October 2020
- Fixes bug where function loading would break because permissions could not be properly computed
4.3b
September 2020
- Fixes minor command sender related bugs from 4.3a. Fixes permissions with
/execute ... as ...from converted commands
4.3a
September 2020
- Fixes a bug where running converted commands via
/execute ... as ...wouldn't apply the command sender correctly
4.3
September 2020
- Fix bug where resulting command executors with command block senders would not work
- Improves the power of command conversion by letting you declare CommandAPICommand arguments for conversion
- Adds support for YAML's "null" for command conversion via the config.yml file, which should be way more comprehensible rather than trailing colons
4.2
September 2020
- Adds support for Minecraft 1.16.3
- Fixes a bug where shading the CommandAPI and the NBT-API together causes the CommandAPI to incorrectly think that the NBT-API isn't present
- Fixes a bug where commands with redirects (4.0+ aliases and redirects from /execute) that have two consecutive arguments with suggestions would spam the console and not provide suggestions
- Adds
NativeProxyCommandSenderwhich lets you access the location and world of a command sender via/execute in|positioned|at|facing|rotated
4.1
September 2020
- Allows the CommandAPI to be shaded into plugins
- Adds a way to set hover tooltips for suggestions
- Adds multi-literal arguments
- Adds a logo!
- Adds a new method to the CommandAPI/Brigadier system to easily create Brigadier arguments from CommandAPI arguments
-
Rename maven modules You can view more information about this on the public maven repository
4.0
August 2020
- Suggestion overriding can now be populated by Bukkit objects instead of strings
- Fixes a bug with the
FloatRangeArgumentwhere it caused a casting error - Adds support for 1.16.2
-
ChatArgumentnow works on Minecraft 1.16.2 (still doesn't work on 1.16.1)
-
- Adds new arguments:
UUIDArgumentItemStackPredicateArgumentBlockPredicateArgument
- Fix bug where
CustomArguments break when using the namespaced key flag - Adds a list of commands that
FunctionWrapperexecutes which is now accessible - Command aliases are now much more efficient
- Documentation changes (briefly):
-
BlockStateArgumentis now documented properly - Documentation now has pictures to show you what arguments look like
- Documentation now has a page dedicated to what doesn't work on what Minecraft version
-
- Adds Brigadier support for developers (lets you use the CommandAPI and Brigadier code side by side!)
- Fixes a bug where Java 12+ had incompatibility issues
- Adds support for setting arbitrary requirements to arguments and commands
3.4
July 2020
- Fix bug with custom recipes not registering in Minecraft 1.16+
- Fix bug where command conversion didn't actually register commands
- Adds command conversion as a built-in feature via the CommandAPI's
config.yml
3.3
July 2020
- Fixes a bug where functions didn't work in Minecraft 1.16+
- Fixes a bug where spigot produces a warning about api-versions
3.2
July 2020
- Fixes a bug with
.overrideSuggestions()from version 3.1
3.1
July 2020
- Fixes bug where command senders didn't work properly, causing commands to not work properly
- Adds the ability to override suggestions with the information of previously declared argument
3.0
June 2020
- Note: This version is incompatible with pre 3.0 versions CommandAPI plugins (See documentation for more information)
- Complete code refactor to make command syntax slightly more intuitive and consistent
- Removes lots of reflection to improve performance
- Adds better documentation
- Adds JavaDocs
- Adds support for 1.16.1
- Adds new command executors (These let you filter commands based on what type of command executor runs the command):
- Player command executors
- Command block command executors
- Console command executors
- Entity command executors
- Proxied command executors
- Adds new arguments:
- Axis Argument
- Biome Argument
- ChatColor Argument
- Chat Argument
- FloatRange Argument
- IntegerRange Argument
- Location2D Argument
- MathOperation Argument
- NBT Argument (NBTAPI required)
- Scoreboard arguments:
- Objective Argument
- ObjectiveCriteria Argument
- ScoreboardSlot Argument
- ScoreHolder Argument
- Team Argument
- Time Argument
- Rotation Argument
- Environment Argument
- Removes old arguments:
- SuggestedStringArgument
- DynamicSuggestedStringArgument
- DefinedCustomArguments
2.3a
December 2019
- Adds support for Minecraft 1.15, 1.15.1 and 1.15.2
2.3
August 2019
- Fixes bug where permissions didn't work
- Fixes bug where functions weren't working on 1.14.3 and 1.14.4
2.2
July 2019
- Adds support for Minecraft 1.13 and 1.13.1 (Funny isn't it? It's called the 1.13 CommandAPI but never supported Minecraft 1.13 until now)
- Improves support for different versions
- Adds pointless witty comments into changelog notes
- Adds 1.13-Command-API-SafeReflection library to greatly improve reliability of reflection calls
2.1
July 2019
- Adds RecipeArgument
- Adds SoundArgument
- Adds AdvancementArgument
- Adds LootTableArgument
- Adds support for 1.14.3 and 1.14.4
- Fixes bug where aliases weren't registering properly (#43)
- Fix documentation for tooltips
- Improve documentation for dependencies and repositories
2.0.1
May 2019
- Fix a bug where Brigadier was required as a dependency to build plugins
2.0
May 2019
- Compatibility for 1.14
- Major overhaul of the CommandAPI's internals - greatly improves performance
- Deprecates SuggestedStringArgument, adding overrideSuggestions as an alternative for any argument type
- Adds CustomArguments, allowing you to create your own ... custom arguments
- Excludes dependencies from final jar (#40)
- Adds DefinedCustomArguments - CustomArguments that have been created by yours truly
- DynamicSuggestedArguments now have access to the CommandSender (#41)
- Adds Loot Table support
1.8.2
January 2019
- Fix bug with PlayerArgument when player cannot be found
- Adds LocationArgument options for block precision or exact precision
1.8.1
December 2018
- Fix permissions for argument from 1.8
- Neaten up logging with verbose outputs
1.8
December 2018
- Fix bugs where DynamicSuggestedArguments don't work as the last argument
- Fix support for latest spigot version
- Adds permissions for arguments
- Adds support to override suggestions for arguments
1.7.2
December 2018
- Fix a bug where default return value was 0 instead of 1, causing issues with commandblocks
1.7.1
December 2018
- Fix a bug with permission checks. Other than that, it's the same as 1.7 (in terms of documentation)
1.7
December 2018
- Adds DynamicSuggestedStringArguments for dynamically updating suggestions
- Adds support for
successandresultvalues for/execute store - Overhaul permissions system so it works properly
- Note: This version is incompatible with pre-1.7 version CommandAPI plugins
1.6
November 2018
- Adds FunctionArguments to handle Minecraft functions
- Remove useless test code
- Fix bug with ProxiedCommandSender callee and caller
- Adds Converter for legacy plugin support
- Improved performance by caching NMS better than in version 1.5
1.5
October 2018
- Adds ChatComponentArgument to handle raw JSON
- Adds SuggestedStringArgument to suggest strings
- Adds config file
- Fix bug where command errors weren't being thrown
- Improved performance by caching NMS
1.4
October 2018
- Fix critical bug where arguments weren't being handled properly
- Adds GreedyStringArgument
- Adds various Exception classes
1.3
October 2018
- Migrate to Maven
- Remove unnecessary reflection
- Adds EntitySelectorArgument
- Adds LiteralArgument
- Adds support for ProxiedCommandSender
1.2
August 2018
- Adds TextArgument
1.1
August 2018
- Adds PlayerArgument
- Adds ParticleArgument
- Adds ChatColorArgument
- Adds EnchantmentArgument
- Adds LocationArgument
- Adds EntityTypeArgument
- Adds permissions support
- Adds alias support
1.0
August 2018
- Initial release