adds a system for processing strings found in annotations before they're used by AnnotationParser implements #347 Also, because we're using "-Werror", the code won't actually build (and thus tests won't work) using JDK18. To remedy this, a bunch of @SuppressWarnings("serial")s has been added to the exceptions. We don't serialize exceptions, and they're in fact non-serializable because of their members, so this is the appropriate solution (well, the better solution would be to make them serializable, but that's outside the scope of this PR).
210 lines
11 KiB
Markdown
210 lines
11 KiB
Markdown
# Changelog
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [Unreleased]
|
|
|
|
### Added
|
|
- Annotations: Annotation string processors ([#353](https://github.com/Incendo/cloud/pull/353))
|
|
|
|
### Fixed
|
|
- Fix missing caption registration for the regex caption ([#351](https://github.com/Incendo/cloud/pull/351))
|
|
|
|
## [1.6.2]
|
|
|
|
### Fixed
|
|
- Fix incorrect inputQueue usage in some default argument types
|
|
|
|
### Changed
|
|
- Bukkit: Update for Minecraft 1.18.2
|
|
|
|
## [1.6.1]
|
|
|
|
### Fixed
|
|
- Fix concurrent cause of execution exception not being wrapped right ([#326](https://github.com/Incendo/cloud/pull/326))
|
|
- Paper: Fix handling of empty slash buffer in async suggestion listener ([#327](https://github.com/Incendo/cloud/pull/327))
|
|
- Fix StringParser sometimes removing from input queue on failure
|
|
|
|
## [1.6.0]
|
|
|
|
### Added
|
|
- Kotlin: New module `cloud-kotlin-coroutines`: Support for suspending command handlers in builders and the Kotlin builder DSL
|
|
- Kotlin: New module `cloud-kotlin-coroutines-annotations`: Support for suspending annotated command functions using `AnnotationParser<C>.installCoroutineSupport()`
|
|
- Flags can be bound to a permission
|
|
- Paper: Implement KeyedWorldArgument for matching worlds by their namespaced key
|
|
- Annotations: Parser parameter annotations are now also parsed for flags ([#315](https://github.com/Incendo/cloud/pull/315))
|
|
|
|
### Changed
|
|
- Added `executeFuture` to `CommandExecutionHandler` which is now used internally. By default, this delegates to the old
|
|
`execute` method
|
|
- Added `@Liberal` annotation to mark boolean arguments as liberal when using the annotation parser ([#288](https://github.com/Incendo/cloud/pull/288))
|
|
- Annotations: Apply builder modifiers from class annotations ([#303](https://github.com/Incendo/cloud/pull/303))
|
|
- Annotations: Add default value to `@Argument`, which will force the parser to infer the argument name from the parameter name
|
|
- Annotations: `@CommandMethod` can now be used to annotate a class, allowing for a common literal prefix on all annotated command methods in that class. ([#301](https://github.com/Incendo/cloud/pull/301))
|
|
|
|
### Fixed
|
|
- Bukkit: Permission checking and syntax string for Bukkit '/help' command
|
|
- And/OrPermission factory method `of` did not preserve the conditional tree
|
|
- Formatting of literal arguments with no siblings in StandardCommandSyntaxFormatter
|
|
- Replaced improper usages of TypeToken#toString in error messages
|
|
- Fixed unhandled exceptions being swallowed when AsynchronousCommandExecutionCoordinator is configured with Synchronous Parsing enabled ([#307](https://github.com/Incendo/cloud/pull/307))
|
|
|
|
## [1.5.0]
|
|
|
|
### Added
|
|
- `@Quoted` annotation for the `String` argument ([#239](https://github.com/Incendo/cloud/pull/239))
|
|
- Expose `min` and `max` values on numerous number aruments ([#255](https://github.com/Incendo/cloud/pull/255))
|
|
- `CommandArgument.TypedBuilder`, a variant of `CommandArgument.Builder` designed for subclassing, that returns a self type
|
|
- `MappedArgumentParser` and `ArgumentParser#map` for creating mapped argument parsers
|
|
- Helper methods for mapping values/failures of `ArgumentParseResult`s (`ArgumentParseResult#mapParsedValue`, `ArgumentParseResult#flatMapParsedValue`, and `ArgumentParseResult#mapFailure`)
|
|
- JDA: Role argument parser ([#219](https://github.com/Incendo/cloud/pull/219))
|
|
- Brigadier: `WrappedBrigadierParser` for wrapping Brigadier `ArgumentType`s as cloud `ArgumentParser`s
|
|
- Bukkit: Implement parser for ProtoItemStack ([#257](https://github.com/Incendo/cloud/pull/257))
|
|
- Bukkit: Implement parsers for ItemStackPredicate and BlockPredicate ([#259](https://github.com/Incendo/cloud/pull/259))
|
|
- Bukkit: Support for Mojang mapped servers ([#267](https://github.com/Incendo/cloud/pull/267))
|
|
- Fabric: Fabric implementation added ([#223](https://github.com/Incendo/cloud/pull/223))
|
|
- Minecraft-Extras/Bukkit/Paper/Velocity: `AudienceProvider.nativeAudience`, `MinecraftHelp.createNative` , `BukkitCommandManager.createNative` , `PaperCommandManager.createNative`, `CloudInjectionModule.createNative` helper methods for `Audience` sender types ([#240](https://github.com/Incendo/cloud/pull/240))
|
|
|
|
### Changed
|
|
- `Long` argument parser is now public ([#229](https://github.com/Incendo/cloud/pull/229))
|
|
- JDA: Add isolation system to JDA user argument ([#220](https://github.com/Incendo/cloud/pull/220))
|
|
- Bukkit: Use Command instead of TabCompleteEvent on Bukkit
|
|
- Bukkit: Minecraft 1.17 support added
|
|
|
|
### Deprecated
|
|
- JDA: Deprecated old UserParser that did not take an isolation parameter ([#220](https://github.com/Incendo/cloud/pull/220))
|
|
|
|
### Fixed
|
|
- Tuple implementations now do not throw an error when using the toArray method ([#222](https://github.com/Incendo/cloud/pull/222))
|
|
- Argument parser for `long` types was not registered ([#229](https://github.com/Incendo/cloud/pull/229))
|
|
|
|
## [1.4.0] - 2021-01-16
|
|
|
|
### Added
|
|
- Predicate command filters to the help system ([#187](https://github.com/Incendo/cloud/pull/187))
|
|
- Allow flags to contain compound arguments ([#192](https://github.com/Incendo/cloud/pull/192))
|
|
- Allow for components in exceptions and meta data ([#200](https://github.com/Incendo/cloud/pull/200))
|
|
- Location2DArgument ([#201](https://github.com/Incendo/cloud/pull/201))
|
|
- Expose the Command which led to `InvalidCommandSenderException`s ([#204](https://github.com/Incendo/cloud/pull/211))
|
|
- Expose the CommandContext which led to `CommandExecutionException`s ([#204](https://github.com/Incendo/cloud/pull/211))
|
|
- Helper methods for command flags to MutableCommandBuilder ([#205](https://github.com/Incendo/cloud/pull/205))
|
|
- CommandFlag accepting getters to FlagContext ([#206](https://github.com/Incendo/cloud/pull/206))
|
|
- More abstract description concept ([#207](https://github.com/Incendo/cloud/pull/207))
|
|
- Predicate permissions ([#210](https://github.com/Incendo/cloud/pull/210))
|
|
- Injection services ([#211](https://github.com/Incendo/cloud/pull/211))
|
|
- Sponge v7 support ([#212](https://github.com/Incendo/cloud/pull/211))
|
|
- Logical `AND` and `OR` operations for `CommandPermission`s ([#213](https://github.com/Incendo/cloud/pull/213))
|
|
|
|
### Changed
|
|
- Allow command argument names to include `_` and `-` ([#186](https://github.com/Incendo/cloud/pull/186))
|
|
- Make it easier to use translatable components with MinecraftHelp ([#197](https://github.com/Incendo/cloud/pull/197))
|
|
- Show "No result for query" when a multi-help topic is empty
|
|
- Use the method+field annotation accessor rather than the method accessor when injecting method parameters
|
|
|
|
### Deprecated
|
|
- Description, and everything using Description directly ([#207](https://github.com/Incendo/cloud/pull/207))
|
|
- ParameterInjectorRegistry#injectors ([#211](https://github.com/Incendo/cloud/pull/211))
|
|
|
|
### Fixed
|
|
- Issue where suggestions were shown multiple times when using Brigadier ([#184](https://github.com/Incendo/cloud/pull/184))
|
|
- Issue where the command manager was in the wrong state if no commands had been registered ([#196](https://github.com/Incendo/cloud/pull/196))
|
|
- Issues with JDA ([#198](https://github.com/Incendo/cloud/pull/198)) ([#199](https://github.com/Incendo/cloud/pull/199)) ([#214](https://github.com/Incendo/cloud/pull/214))
|
|
- Console suggestions for Bukkit
|
|
|
|
## [1.3.0] - 2020-12-18
|
|
|
|
### Added
|
|
- `@Suggestions` annotated methods
|
|
- `@Parser` annotated methods
|
|
- Type safe meta system
|
|
- Allow interception of command builders based on annotations in AnnotationParser
|
|
- Kotlin DSL
|
|
|
|
### Changed
|
|
- Move the parser injector registry into CommandManager and added injection to CommandContext
|
|
- Supporting repeating literals or argument names
|
|
- Make CommandMeta and FlagContext more Kotlin friendly
|
|
|
|
### Deprecated
|
|
- String keyed command meta
|
|
- ParameterInjectorRegistry#injectors
|
|
|
|
### Fixed
|
|
- Fixed issue with task synchronization
|
|
|
|
## [1.2.0] - 2020-12-07
|
|
|
|
### Added
|
|
- Access to the CloudBrigadierManager from Brigadier-enabled command managers
|
|
- Parameter injectors (cloud-annotations)
|
|
- Store currently parsing command argument in the command context
|
|
- A method to CloudBrigadierManager to enable or disable Brigadier native suggestions for specific argument types
|
|
- A method to get the failure reason of SelectorParseExceptions
|
|
- Some methods to FlagContext to work with flag values as optionals
|
|
- Allow for use of named suggestion providers with `@Flag`s (cloud-annotations)
|
|
- `CommandExecutionException` which wraps any exception thrown during the execution of command handlers. Should be
|
|
handled using `CommandManager#registerExceptionHandler`, similar to `NoSuchCommandException`, `ArgumentParseException`, etc.
|
|
- Registration state to command managers
|
|
- ALLOW_UNSAFE_REGISTRATION ManagerSetting to disable state checks when registering commands
|
|
- OVERRIDE_EXISTING_COMMANDS ManagerSetting to allow for overriding of existing commands on supported platforms
|
|
|
|
### Changed
|
|
- Allow for use of `@Completions` annotation with argument types other than String
|
|
- Allow for use of a BiFunction<C, E, Component> instead of just a Function<E, Component> in MinecraftExceptionHandler
|
|
|
|
### Deprecated
|
|
- LockableCommandManager in favor of CommandManager state
|
|
|
|
### Fixed
|
|
- Use the correct default range for Double and Float parsers in the StandardParserRegistry
|
|
- Bukkit alias command suggestions without Brigadier
|
|
- Bukkit command alias registration when using Brigadier
|
|
- A bug where providing valid input for an argument caused cloud to no longer make suggestions
|
|
- Detect and throw an exception for ambiguous nodes in more cases
|
|
- CloudBrigadierManager no longer forgets the command sender
|
|
|
|
## [1.1.0] - 2020-10-24
|
|
|
|
### Added
|
|
- ExampleVelocityPlugin
|
|
- CloudInjectionModule to cloud-velocity
|
|
- PlayerArgument to cloud-velocity
|
|
- TextColorArgument to minecraft-extras
|
|
- LocationArgument to cloud-bukkit
|
|
- ServerArgument to cloud-velocity
|
|
- LockableCommandManager to cloud-core
|
|
- VelocityCommandPreprocessor to cloud-velocity
|
|
- PlayerArgument to cloud-bungee
|
|
- ServerArgument to cloud-bungee
|
|
- ExampleBungeePlugin
|
|
- CaptionKeys to cloud-bungee
|
|
- BungeeCommandPreprocessor to cloud-bungee
|
|
- Named suggestion providers
|
|
- PircBotX implementation
|
|
|
|
### Changed
|
|
- Allow for combined presence flags, such that `-a -b -c` is equivalent to `-abc`
|
|
- Allow for class annotations as a default for when an annotation is not present on a method
|
|
- Allow for annotated annotations
|
|
|
|
### Fixed
|
|
- Arguments with no required children not being executors (cloud-brigadier)
|
|
|
|
## [1.0.2] - 2020-10-18
|
|
|
|
### Fixed
|
|
- Quoted parsing in StringArgument
|
|
- Wrong suggestions following invalid literals
|
|
- Chained optionals not allowing the command to be executed when more than one optional is omitted
|
|
|
|
### Changed
|
|
- Update adventure-api from 4.0.0 to 4.1.1
|
|
- Update Velocity module for breaking API changes (sendMessage needs an Identity)
|
|
|
|
## [1.0.1] - 2020-10-14
|
|
|
|
### Changes
|
|
- Switch from a snapshot to a release version of adventure 4.0.0
|
|
- Add `Identity.nil()` when sending adventure messages
|