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).
11 KiB
11 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Annotations: Annotation string processors (#353)
Fixed
- Fix missing caption registration for the regex caption (#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)
- Paper: Fix handling of empty slash buffer in async suggestion listener (#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 usingAnnotationParser<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)
Changed
- Added
executeFuturetoCommandExecutionHandlerwhich is now used internally. By default, this delegates to the oldexecutemethod - Added
@Liberalannotation to mark boolean arguments as liberal when using the annotation parser (#288) - Annotations: Apply builder modifiers from class annotations (#303)
- Annotations: Add default value to
@Argument, which will force the parser to infer the argument name from the parameter name - Annotations:
@CommandMethodcan now be used to annotate a class, allowing for a common literal prefix on all annotated command methods in that class. (#301)
Fixed
- Bukkit: Permission checking and syntax string for Bukkit '/help' command
- And/OrPermission factory method
ofdid 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)
[1.5.0]
Added
@Quotedannotation for theStringargument (#239)- Expose
minandmaxvalues on numerous number aruments (#255) CommandArgument.TypedBuilder, a variant ofCommandArgument.Builderdesigned for subclassing, that returns a self typeMappedArgumentParserandArgumentParser#mapfor creating mapped argument parsers- Helper methods for mapping values/failures of
ArgumentParseResults (ArgumentParseResult#mapParsedValue,ArgumentParseResult#flatMapParsedValue, andArgumentParseResult#mapFailure) - JDA: Role argument parser (#219)
- Brigadier:
WrappedBrigadierParserfor wrapping BrigadierArgumentTypes as cloudArgumentParsers - Bukkit: Implement parser for ProtoItemStack (#257)
- Bukkit: Implement parsers for ItemStackPredicate and BlockPredicate (#259)
- Bukkit: Support for Mojang mapped servers (#267)
- Fabric: Fabric implementation added (#223)
- Minecraft-Extras/Bukkit/Paper/Velocity:
AudienceProvider.nativeAudience,MinecraftHelp.createNative,BukkitCommandManager.createNative,PaperCommandManager.createNative,CloudInjectionModule.createNativehelper methods forAudiencesender types (#240)
Changed
Longargument parser is now public (#229)- JDA: Add isolation system to JDA user argument (#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)
Fixed
- Tuple implementations now do not throw an error when using the toArray method (#222)
- Argument parser for
longtypes was not registered (#229)
[1.4.0] - 2021-01-16
Added
- Predicate command filters to the help system (#187)
- Allow flags to contain compound arguments (#192)
- Allow for components in exceptions and meta data (#200)
- Location2DArgument (#201)
- Expose the Command which led to
InvalidCommandSenderExceptions (#204) - Expose the CommandContext which led to
CommandExecutionExceptions (#204) - Helper methods for command flags to MutableCommandBuilder (#205)
- CommandFlag accepting getters to FlagContext (#206)
- More abstract description concept (#207)
- Predicate permissions (#210)
- Injection services (#211)
- Sponge v7 support (#212)
- Logical
ANDandORoperations forCommandPermissions (#213)
Changed
- Allow command argument names to include
_and-(#186) - Make it easier to use translatable components with MinecraftHelp (#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)
- ParameterInjectorRegistry#injectors (#211)
Fixed
- Issue where suggestions were shown multiple times when using Brigadier (#184)
- Issue where the command manager was in the wrong state if no commands had been registered (#196)
- Issues with JDA (#198) (#199) (#214)
- Console suggestions for Bukkit
[1.3.0] - 2020-12-18
Added
@Suggestionsannotated methods@Parserannotated 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
@Flags (cloud-annotations) CommandExecutionExceptionwhich wraps any exception thrown during the execution of command handlers. Should be handled usingCommandManager#registerExceptionHandler, similar toNoSuchCommandException,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
@Completionsannotation 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 -cis 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