Drops support for Minecraft 1.20.5 and below on Paper
Bug Fixes
#631 Fixes unregistered commands reappearing after a minecraft:reload. This comes with some other notable changes around command registrations and unregistrations. You can read about these on the command unregistration page in the documentation.
#608 The RecipeArgument no longer throws any exceptions on Spigot
#494, #503 Fixes the ConcurrentModificationException from happening when registering/unregistering commands at runtime
Module Changes
#414, #517 Splits up the CommandAPI into modules specific for Paper and Spigot:
Removes the commandapi-bukkit-shade module and the commandapi-bukkit-shade-mojang-mapped module
Adds the commandapi-paper-core and the commandapi-paper-shade modules which are made to work on Paper
Adds the commandapi-spigot-core and the commandapi-spigot-shade modules which are made to work on Spigot
Adds the commandapi-paper-test-toolkit and the commandapi-spigot-test-toolkit which are replacing commandapi-bukkit-test-toolkit for Paper and Spigot respectively
On Paper it is now possible to register commands at bootstrap
API Changes
Changes the CommandAPIBukkitConfig class into an abstract one in favour of the newly added CommandAPIPaperConfig or CommandAPISpigotConfig classes, depending on the modules you use
The FloatRangeArgument has been renamed to DoubleRangeArgument and now returns a DoubleRange
The PlayerArgument and OfflinePlayerArgument have been replaced by the PlayerProfileArgument which returns a List<PlayerProfile>. The PlayerProfile class changes depending on if you are on Paper or on Spigot. Use the EntitySelectorArgument.OnePlayer if you want a Player object.
The AsyncOfflinePlayerArgument has been replaced by the AsyncPlayerProfileArgument
The ChatArgument, ChatComponentArgument and ChatColorArgument no longer have any Adventure prefixes and return different types depending on the platform.
The ChatArgument returns a SignedMessage object on Paper. Also resolves #381
The BlockStateArgument now returns a BlockState object instead of a BlockData object
Config Changes
Replaces the use-latest-nms-version and be-lenient-for-minor-versions config options with a fallback-to-latest-nms config option:
When loading the CommandAPI and this config option is set to true it will first check if the current version is supported and chooses that
In case the current version isn't a supported version, the CommandAPI will choose the latest nms version available which might or might not work correctly
This config option is set to true by default on Paper and false on Spigot