Merge branch 'master' into AlbeMiglio_master

# Conflicts:
#	docs/acf-brigadier/allclasses-index.html
#	docs/acf-brigadier/allpackages-index.html
#	docs/acf-brigadier/co/aikar/commands/ACFBrigadierManager.html
#	docs/acf-brigadier/co/aikar/commands/class-use/ACFBrigadierManager.html
#	docs/acf-brigadier/co/aikar/commands/package-summary.html
#	docs/acf-brigadier/co/aikar/commands/package-tree.html
#	docs/acf-brigadier/co/aikar/commands/package-use.html
#	docs/acf-brigadier/deprecated-list.html
#	docs/acf-brigadier/index-all.html
#	docs/acf-brigadier/index.html
#	docs/acf-brigadier/overview-tree.html
#	docs/acf-bukkit/allclasses-index.html
#	docs/acf-bukkit/allpackages-index.html
#	docs/acf-bukkit/co/aikar/commands/ACFBukkitHelpTopic.html
#	docs/acf-bukkit/co/aikar/commands/ACFBukkitUtil.html
#	docs/acf-bukkit/co/aikar/commands/BukkitCommandCompletionContext.html
#	docs/acf-bukkit/co/aikar/commands/BukkitCommandCompletions.html
#	docs/acf-bukkit/co/aikar/commands/BukkitCommandContexts.html
#	docs/acf-bukkit/co/aikar/commands/BukkitCommandExecutionContext.html
#	docs/acf-bukkit/co/aikar/commands/BukkitCommandIssuer.html
#	docs/acf-bukkit/co/aikar/commands/BukkitCommandManager.html
#	docs/acf-bukkit/co/aikar/commands/BukkitConditionContext.html
#	docs/acf-bukkit/co/aikar/commands/BukkitLocales.html
#	docs/acf-bukkit/co/aikar/commands/BukkitMessageFormatter.html
#	docs/acf-bukkit/co/aikar/commands/BukkitRegisteredCommand.html
#	docs/acf-bukkit/co/aikar/commands/BukkitRootCommand.html
#	docs/acf-bukkit/co/aikar/commands/MinecraftMessageKeys.html
#	docs/acf-bukkit/co/aikar/commands/bukkit/contexts/OnlinePlayer.html
#	docs/acf-bukkit/co/aikar/commands/bukkit/contexts/class-use/OnlinePlayer.html
#	docs/acf-bukkit/co/aikar/commands/bukkit/contexts/package-summary.html
#	docs/acf-bukkit/co/aikar/commands/bukkit/contexts/package-tree.html
#	docs/acf-bukkit/co/aikar/commands/bukkit/contexts/package-use.html
#	docs/acf-bukkit/co/aikar/commands/class-use/ACFBukkitHelpTopic.html
#	docs/acf-bukkit/co/aikar/commands/class-use/ACFBukkitUtil.html
#	docs/acf-bukkit/co/aikar/commands/class-use/BukkitCommandCompletionContext.html
#	docs/acf-bukkit/co/aikar/commands/class-use/BukkitCommandCompletions.html
#	docs/acf-bukkit/co/aikar/commands/class-use/BukkitCommandContexts.html
#	docs/acf-bukkit/co/aikar/commands/class-use/BukkitCommandExecutionContext.html
#	docs/acf-bukkit/co/aikar/commands/class-use/BukkitCommandIssuer.html
#	docs/acf-bukkit/co/aikar/commands/class-use/BukkitCommandManager.html
#	docs/acf-bukkit/co/aikar/commands/class-use/BukkitConditionContext.html
#	docs/acf-bukkit/co/aikar/commands/class-use/BukkitLocales.html
#	docs/acf-bukkit/co/aikar/commands/class-use/BukkitMessageFormatter.html
#	docs/acf-bukkit/co/aikar/commands/class-use/BukkitRegisteredCommand.html
#	docs/acf-bukkit/co/aikar/commands/class-use/BukkitRootCommand.html
#	docs/acf-bukkit/co/aikar/commands/class-use/MinecraftMessageKeys.html
#	docs/acf-bukkit/co/aikar/commands/contexts/OnlinePlayer.html
#	docs/acf-bukkit/co/aikar/commands/contexts/class-use/OnlinePlayer.html
#	docs/acf-bukkit/co/aikar/commands/contexts/package-summary.html
#	docs/acf-bukkit/co/aikar/commands/contexts/package-tree.html
#	docs/acf-bukkit/co/aikar/commands/contexts/package-use.html
#	docs/acf-bukkit/co/aikar/commands/package-summary.html
#	docs/acf-bukkit/co/aikar/commands/package-tree.html
#	docs/acf-bukkit/co/aikar/commands/package-use.html
#	docs/acf-bukkit/deprecated-list.html
#	docs/acf-bukkit/index-all.html
#	docs/acf-bukkit/index.html
#	docs/acf-bukkit/overview-summary.html
#	docs/acf-bukkit/overview-tree.html
#	docs/acf-bungee/allclasses-index.html
#	docs/acf-bungee/allpackages-index.html
#	docs/acf-bungee/co/aikar/commands/ACFBungeeListener.html
#	docs/acf-bungee/co/aikar/commands/ACFBungeeUtil.html
#	docs/acf-bungee/co/aikar/commands/BungeeCommandCompletionContext.html
#	docs/acf-bungee/co/aikar/commands/BungeeCommandCompletions.html
#	docs/acf-bungee/co/aikar/commands/BungeeCommandContexts.html
#	docs/acf-bungee/co/aikar/commands/BungeeCommandExecutionContext.html
#	docs/acf-bungee/co/aikar/commands/BungeeCommandIssuer.html
#	docs/acf-bungee/co/aikar/commands/BungeeCommandManager.html
#	docs/acf-bungee/co/aikar/commands/BungeeConditionContext.html
#	docs/acf-bungee/co/aikar/commands/BungeeLocales.html
#	docs/acf-bungee/co/aikar/commands/BungeeMessageFormatter.html
#	docs/acf-bungee/co/aikar/commands/BungeeRegisteredCommand.html
#	docs/acf-bungee/co/aikar/commands/BungeeRootCommand.html
#	docs/acf-bungee/co/aikar/commands/MinecraftMessageKeys.html
#	docs/acf-bungee/co/aikar/commands/bungee/contexts/OnlinePlayer.html
#	docs/acf-bungee/co/aikar/commands/bungee/contexts/class-use/OnlinePlayer.html
#	docs/acf-bungee/co/aikar/commands/bungee/contexts/package-summary.html
#	docs/acf-bungee/co/aikar/commands/bungee/contexts/package-tree.html
#	docs/acf-bungee/co/aikar/commands/bungee/contexts/package-use.html
#	docs/acf-bungee/co/aikar/commands/class-use/ACFBungeeListener.html
#	docs/acf-bungee/co/aikar/commands/class-use/ACFBungeeUtil.html
#	docs/acf-bungee/co/aikar/commands/class-use/BungeeCommandCompletionContext.html
#	docs/acf-bungee/co/aikar/commands/class-use/BungeeCommandCompletions.html
#	docs/acf-bungee/co/aikar/commands/class-use/BungeeCommandContexts.html
#	docs/acf-bungee/co/aikar/commands/class-use/BungeeCommandExecutionContext.html
#	docs/acf-bungee/co/aikar/commands/class-use/BungeeCommandIssuer.html
#	docs/acf-bungee/co/aikar/commands/class-use/BungeeCommandManager.html
#	docs/acf-bungee/co/aikar/commands/class-use/BungeeConditionContext.html
#	docs/acf-bungee/co/aikar/commands/class-use/BungeeLocales.html
#	docs/acf-bungee/co/aikar/commands/class-use/BungeeMessageFormatter.html
#	docs/acf-bungee/co/aikar/commands/class-use/BungeeRegisteredCommand.html
#	docs/acf-bungee/co/aikar/commands/class-use/BungeeRootCommand.html
#	docs/acf-bungee/co/aikar/commands/class-use/MinecraftMessageKeys.html
#	docs/acf-bungee/co/aikar/commands/contexts/OnlineProxiedPlayer.html
#	docs/acf-bungee/co/aikar/commands/contexts/class-use/OnlineProxiedPlayer.html
#	docs/acf-bungee/co/aikar/commands/contexts/package-summary.html
#	docs/acf-bungee/co/aikar/commands/contexts/package-tree.html
#	docs/acf-bungee/co/aikar/commands/contexts/package-use.html
#	docs/acf-bungee/co/aikar/commands/package-summary.html
#	docs/acf-bungee/co/aikar/commands/package-tree.html
#	docs/acf-bungee/co/aikar/commands/package-use.html
#	docs/acf-bungee/constant-values.html
#	docs/acf-bungee/deprecated-list.html
#	docs/acf-bungee/index-all.html
#	docs/acf-bungee/index.html
#	docs/acf-bungee/overview-summary.html
#	docs/acf-bungee/overview-tree.html
#	docs/acf-core/allclasses-index.html
#	docs/acf-core/allpackages-index.html
#	docs/acf-core/co/aikar/commands/ACFUtil.html
#	docs/acf-core/co/aikar/commands/AnnotationProcessor.html
#	docs/acf-core/co/aikar/commands/BaseCommand.html
#	docs/acf-core/co/aikar/commands/CommandCompletionContext.html
#	docs/acf-core/co/aikar/commands/CommandCompletions.AsyncCommandCompletionHandler.html
#	docs/acf-core/co/aikar/commands/CommandCompletions.CommandCompletionHandler.html
#	docs/acf-core/co/aikar/commands/CommandCompletions.SyncCompletionRequired.html
#	docs/acf-core/co/aikar/commands/CommandCompletions.html
#	docs/acf-core/co/aikar/commands/CommandConditions.Condition.html
#	docs/acf-core/co/aikar/commands/CommandConditions.ParameterCondition.html
#	docs/acf-core/co/aikar/commands/CommandConditions.html
#	docs/acf-core/co/aikar/commands/CommandContexts.html
#	docs/acf-core/co/aikar/commands/CommandExecutionContext.html
#	docs/acf-core/co/aikar/commands/CommandHelp.html
#	docs/acf-core/co/aikar/commands/CommandHelpFormatter.html
#	docs/acf-core/co/aikar/commands/CommandIssuer.html
#	docs/acf-core/co/aikar/commands/CommandManager.html
#	docs/acf-core/co/aikar/commands/CommandOperationContext.html
#	docs/acf-core/co/aikar/commands/CommandParameter.html
#	docs/acf-core/co/aikar/commands/CommandReplacements.html
#	docs/acf-core/co/aikar/commands/ConditionContext.html
#	docs/acf-core/co/aikar/commands/ConditionFailedException.html
#	docs/acf-core/co/aikar/commands/ExceptionHandler.html
#	docs/acf-core/co/aikar/commands/ForwardingCommand.html
#	docs/acf-core/co/aikar/commands/HelpEntry.html
#	docs/acf-core/co/aikar/commands/InvalidCommandArgument.html
#	docs/acf-core/co/aikar/commands/InvalidCommandContextException.html
#	docs/acf-core/co/aikar/commands/IssuerLocaleChangedCallback.html
#	docs/acf-core/co/aikar/commands/Locales.html
#	docs/acf-core/co/aikar/commands/MessageFormatter.html
#	docs/acf-core/co/aikar/commands/MessageKeys.html
#	docs/acf-core/co/aikar/commands/MessageType.html
#	docs/acf-core/co/aikar/commands/RegisteredCommand.html
#	docs/acf-core/co/aikar/commands/RootCommand.html
#	docs/acf-core/co/aikar/commands/ShowCommandHelp.html
#	docs/acf-core/co/aikar/commands/UnresolvedDependencyException.html
#	docs/acf-core/co/aikar/commands/UnstableAPI.html
#	docs/acf-core/co/aikar/commands/annotation/CatchAll.html
#	docs/acf-core/co/aikar/commands/annotation/CatchUnknown.html
#	docs/acf-core/co/aikar/commands/annotation/CommandAlias.html
#	docs/acf-core/co/aikar/commands/annotation/CommandCompletion.html
#	docs/acf-core/co/aikar/commands/annotation/CommandPermission.html
#	docs/acf-core/co/aikar/commands/annotation/Conditions.html
#	docs/acf-core/co/aikar/commands/annotation/Default.html
#	docs/acf-core/co/aikar/commands/annotation/Dependency.html
#	docs/acf-core/co/aikar/commands/annotation/Description.html
#	docs/acf-core/co/aikar/commands/annotation/Flags.html
#	docs/acf-core/co/aikar/commands/annotation/HelpCommand.html
#	docs/acf-core/co/aikar/commands/annotation/HelpSearchTags.html
#	docs/acf-core/co/aikar/commands/annotation/Name.html
#	docs/acf-core/co/aikar/commands/annotation/Optional.html
#	docs/acf-core/co/aikar/commands/annotation/PreCommand.html
#	docs/acf-core/co/aikar/commands/annotation/Private.html
#	docs/acf-core/co/aikar/commands/annotation/Single.html
#	docs/acf-core/co/aikar/commands/annotation/Split.html
#	docs/acf-core/co/aikar/commands/annotation/Subcommand.html
#	docs/acf-core/co/aikar/commands/annotation/Syntax.html
#	docs/acf-core/co/aikar/commands/annotation/UnknownHandler.html
#	docs/acf-core/co/aikar/commands/annotation/Values.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/CatchAll.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/CatchUnknown.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/CommandAlias.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/CommandCompletion.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/CommandPermission.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Conditions.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Default.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Dependency.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Description.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Flags.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/HelpCommand.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/HelpSearchTags.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Name.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Optional.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/PreCommand.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Private.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Single.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Split.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Subcommand.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Syntax.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/UnknownHandler.html
#	docs/acf-core/co/aikar/commands/annotation/class-use/Values.html
#	docs/acf-core/co/aikar/commands/annotation/package-summary.html
#	docs/acf-core/co/aikar/commands/annotation/package-tree.html
#	docs/acf-core/co/aikar/commands/annotation/package-use.html
#	docs/acf-core/co/aikar/commands/apachecommonslang/ApacheCommonsExceptionUtil.Nestable.html
#	docs/acf-core/co/aikar/commands/apachecommonslang/ApacheCommonsExceptionUtil.html
#	docs/acf-core/co/aikar/commands/apachecommonslang/ApacheCommonsLangUtil.html
#	docs/acf-core/co/aikar/commands/apachecommonslang/class-use/ApacheCommonsExceptionUtil.Nestable.html
#	docs/acf-core/co/aikar/commands/apachecommonslang/class-use/ApacheCommonsExceptionUtil.html
#	docs/acf-core/co/aikar/commands/apachecommonslang/class-use/ApacheCommonsLangUtil.html
#	docs/acf-core/co/aikar/commands/apachecommonslang/package-summary.html
#	docs/acf-core/co/aikar/commands/apachecommonslang/package-tree.html
#	docs/acf-core/co/aikar/commands/apachecommonslang/package-use.html
#	docs/acf-core/co/aikar/commands/class-use/ACFUtil.html
#	docs/acf-core/co/aikar/commands/class-use/AnnotationProcessor.html
#	docs/acf-core/co/aikar/commands/class-use/BaseCommand.html
#	docs/acf-core/co/aikar/commands/class-use/CommandCompletionContext.html
#	docs/acf-core/co/aikar/commands/class-use/CommandCompletions.AsyncCommandCompletionHandler.html
#	docs/acf-core/co/aikar/commands/class-use/CommandCompletions.CommandCompletionHandler.html
#	docs/acf-core/co/aikar/commands/class-use/CommandCompletions.SyncCompletionRequired.html
#	docs/acf-core/co/aikar/commands/class-use/CommandCompletions.html
#	docs/acf-core/co/aikar/commands/class-use/CommandConditions.Condition.html
#	docs/acf-core/co/aikar/commands/class-use/CommandConditions.ParameterCondition.html
#	docs/acf-core/co/aikar/commands/class-use/CommandConditions.html
#	docs/acf-core/co/aikar/commands/class-use/CommandContexts.html
#	docs/acf-core/co/aikar/commands/class-use/CommandExecutionContext.html
#	docs/acf-core/co/aikar/commands/class-use/CommandHelp.html
#	docs/acf-core/co/aikar/commands/class-use/CommandHelpFormatter.html
#	docs/acf-core/co/aikar/commands/class-use/CommandIssuer.html
#	docs/acf-core/co/aikar/commands/class-use/CommandManager.html
#	docs/acf-core/co/aikar/commands/class-use/CommandOperationContext.html
#	docs/acf-core/co/aikar/commands/class-use/CommandParameter.html
#	docs/acf-core/co/aikar/commands/class-use/CommandReplacements.html
#	docs/acf-core/co/aikar/commands/class-use/ConditionContext.html
#	docs/acf-core/co/aikar/commands/class-use/ConditionFailedException.html
#	docs/acf-core/co/aikar/commands/class-use/ExceptionHandler.html
#	docs/acf-core/co/aikar/commands/class-use/ForwardingCommand.html
#	docs/acf-core/co/aikar/commands/class-use/HelpEntry.html
#	docs/acf-core/co/aikar/commands/class-use/InvalidCommandArgument.html
#	docs/acf-core/co/aikar/commands/class-use/InvalidCommandContextException.html
#	docs/acf-core/co/aikar/commands/class-use/IssuerLocaleChangedCallback.html
#	docs/acf-core/co/aikar/commands/class-use/Locales.html
#	docs/acf-core/co/aikar/commands/class-use/MessageFormatter.html
#	docs/acf-core/co/aikar/commands/class-use/MessageKeys.html
#	docs/acf-core/co/aikar/commands/class-use/MessageType.html
#	docs/acf-core/co/aikar/commands/class-use/RegisteredCommand.html
#	docs/acf-core/co/aikar/commands/class-use/RootCommand.html
#	docs/acf-core/co/aikar/commands/class-use/ShowCommandHelp.html
#	docs/acf-core/co/aikar/commands/class-use/UnresolvedDependencyException.html
#	docs/acf-core/co/aikar/commands/class-use/UnstableAPI.html
#	docs/acf-core/co/aikar/commands/contexts/ContextResolver.html
#	docs/acf-core/co/aikar/commands/contexts/IssuerAwareContextResolver.html
#	docs/acf-core/co/aikar/commands/contexts/IssuerOnlyContextResolver.html
#	docs/acf-core/co/aikar/commands/contexts/OptionalContextResolver.html
#	docs/acf-core/co/aikar/commands/contexts/SenderAwareContextResolver.html
#	docs/acf-core/co/aikar/commands/contexts/class-use/ContextResolver.html
#	docs/acf-core/co/aikar/commands/contexts/class-use/IssuerAwareContextResolver.html
#	docs/acf-core/co/aikar/commands/contexts/class-use/IssuerOnlyContextResolver.html
#	docs/acf-core/co/aikar/commands/contexts/class-use/OptionalContextResolver.html
#	docs/acf-core/co/aikar/commands/contexts/class-use/SenderAwareContextResolver.html
#	docs/acf-core/co/aikar/commands/contexts/package-summary.html
#	docs/acf-core/co/aikar/commands/contexts/package-tree.html
#	docs/acf-core/co/aikar/commands/contexts/package-use.html
#	docs/acf-core/co/aikar/commands/package-summary.html
#	docs/acf-core/co/aikar/commands/package-tree.html
#	docs/acf-core/co/aikar/commands/package-use.html
#	docs/acf-core/co/aikar/commands/processors/ConditionsProcessor.html
#	docs/acf-core/co/aikar/commands/processors/class-use/ConditionsProcessor.html
#	docs/acf-core/co/aikar/commands/processors/package-summary.html
#	docs/acf-core/co/aikar/commands/processors/package-tree.html
#	docs/acf-core/co/aikar/commands/processors/package-use.html
#	docs/acf-core/constant-values.html
#	docs/acf-core/deprecated-list.html
#	docs/acf-core/index-all.html
#	docs/acf-core/index.html
#	docs/acf-core/overview-summary.html
#	docs/acf-core/overview-tree.html
#	docs/acf-core/serialized-form.html
#	docs/acf-jda/allclasses-index.html
#	docs/acf-jda/allpackages-index.html
#	docs/acf-jda/co/aikar/commands/CommandConfig.html
#	docs/acf-jda/co/aikar/commands/CommandConfigProvider.html
#	docs/acf-jda/co/aikar/commands/CommandPermissionResolver.html
#	docs/acf-jda/co/aikar/commands/JDACommandCompletions.html
#	docs/acf-jda/co/aikar/commands/JDACommandConfig.html
#	docs/acf-jda/co/aikar/commands/JDACommandContexts.html
#	docs/acf-jda/co/aikar/commands/JDACommandEvent.html
#	docs/acf-jda/co/aikar/commands/JDACommandExecutionContext.html
#	docs/acf-jda/co/aikar/commands/JDACommandManager.html
#	docs/acf-jda/co/aikar/commands/JDACommandPermissionResolver.html
#	docs/acf-jda/co/aikar/commands/JDAConditionContext.html
#	docs/acf-jda/co/aikar/commands/JDAListener.html
#	docs/acf-jda/co/aikar/commands/JDALocales.html
#	docs/acf-jda/co/aikar/commands/JDAMessageFormatter.html
#	docs/acf-jda/co/aikar/commands/JDAOptions.html
#	docs/acf-jda/co/aikar/commands/JDARootCommand.html
#	docs/acf-jda/co/aikar/commands/annotation/Author.html
#	docs/acf-jda/co/aikar/commands/annotation/CrossGuild.html
#	docs/acf-jda/co/aikar/commands/annotation/SelfUser.html
#	docs/acf-jda/co/aikar/commands/annotation/class-use/Author.html
#	docs/acf-jda/co/aikar/commands/annotation/class-use/CrossGuild.html
#	docs/acf-jda/co/aikar/commands/annotation/class-use/SelfUser.html
#	docs/acf-jda/co/aikar/commands/annotation/package-summary.html
#	docs/acf-jda/co/aikar/commands/annotation/package-tree.html
#	docs/acf-jda/co/aikar/commands/annotation/package-use.html
#	docs/acf-jda/co/aikar/commands/class-use/CommandConfig.html
#	docs/acf-jda/co/aikar/commands/class-use/CommandConfigProvider.html
#	docs/acf-jda/co/aikar/commands/class-use/CommandPermissionResolver.html
#	docs/acf-jda/co/aikar/commands/class-use/JDACommandCompletions.html
#	docs/acf-jda/co/aikar/commands/class-use/JDACommandConfig.html
#	docs/acf-jda/co/aikar/commands/class-use/JDACommandContexts.html
#	docs/acf-jda/co/aikar/commands/class-use/JDACommandEvent.html
#	docs/acf-jda/co/aikar/commands/class-use/JDACommandExecutionContext.html
#	docs/acf-jda/co/aikar/commands/class-use/JDACommandManager.html
#	docs/acf-jda/co/aikar/commands/class-use/JDACommandPermissionResolver.html
#	docs/acf-jda/co/aikar/commands/class-use/JDAConditionContext.html
#	docs/acf-jda/co/aikar/commands/class-use/JDAListener.html
#	docs/acf-jda/co/aikar/commands/class-use/JDALocales.html
#	docs/acf-jda/co/aikar/commands/class-use/JDAMessageFormatter.html
#	docs/acf-jda/co/aikar/commands/class-use/JDAOptions.html
#	docs/acf-jda/co/aikar/commands/class-use/JDARootCommand.html
#	docs/acf-jda/co/aikar/commands/package-summary.html
#	docs/acf-jda/co/aikar/commands/package-tree.html
#	docs/acf-jda/co/aikar/commands/package-use.html
#	docs/acf-jda/index-all.html
#	docs/acf-jda/index.html
#	docs/acf-jda/overview-summary.html
#	docs/acf-jda/overview-tree.html
#	docs/acf-paper/allclasses-index.html
#	docs/acf-paper/allpackages-index.html
#	docs/acf-paper/co/aikar/commands/PaperBrigadierManager.html
#	docs/acf-paper/co/aikar/commands/PaperCommandCompletions.html
#	docs/acf-paper/co/aikar/commands/PaperCommandContexts.html
#	docs/acf-paper/co/aikar/commands/PaperCommandManager.html
#	docs/acf-paper/co/aikar/commands/class-use/PaperBrigadierManager.html
#	docs/acf-paper/co/aikar/commands/class-use/PaperCommandCompletions.html
#	docs/acf-paper/co/aikar/commands/class-use/PaperCommandContexts.html
#	docs/acf-paper/co/aikar/commands/class-use/PaperCommandManager.html
#	docs/acf-paper/co/aikar/commands/package-summary.html
#	docs/acf-paper/co/aikar/commands/package-tree.html
#	docs/acf-paper/co/aikar/commands/package-use.html
#	docs/acf-paper/deprecated-list.html
#	docs/acf-paper/index-all.html
#	docs/acf-paper/index.html
#	docs/acf-paper/overview-tree.html
#	docs/acf-sponge/allclasses-index.html
#	docs/acf-sponge/allpackages-index.html
#	docs/acf-sponge/co/aikar/commands/ACFSpongeListener.html
#	docs/acf-sponge/co/aikar/commands/ACFSpongeUtil.html
#	docs/acf-sponge/co/aikar/commands/MinecraftMessageKeys.html
#	docs/acf-sponge/co/aikar/commands/SpongeCommandCompletionContext.html
#	docs/acf-sponge/co/aikar/commands/SpongeCommandCompletions.html
#	docs/acf-sponge/co/aikar/commands/SpongeCommandContexts.html
#	docs/acf-sponge/co/aikar/commands/SpongeCommandExecutionContext.html
#	docs/acf-sponge/co/aikar/commands/SpongeCommandIssuer.html
#	docs/acf-sponge/co/aikar/commands/SpongeCommandManager.html
#	docs/acf-sponge/co/aikar/commands/SpongeCommandOperationContext.html
#	docs/acf-sponge/co/aikar/commands/SpongeConditionContext.html
#	docs/acf-sponge/co/aikar/commands/SpongeLocales.html
#	docs/acf-sponge/co/aikar/commands/SpongeMessageFormatter.html
#	docs/acf-sponge/co/aikar/commands/SpongeRegisteredCommand.html
#	docs/acf-sponge/co/aikar/commands/SpongeRootCommand.html
#	docs/acf-sponge/co/aikar/commands/class-use/ACFSpongeListener.html
#	docs/acf-sponge/co/aikar/commands/class-use/ACFSpongeUtil.html
#	docs/acf-sponge/co/aikar/commands/class-use/MinecraftMessageKeys.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeCommandCompletionContext.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeCommandCompletions.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeCommandContexts.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeCommandExecutionContext.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeCommandIssuer.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeCommandManager.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeCommandOperationContext.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeConditionContext.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeLocales.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeMessageFormatter.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeRegisteredCommand.html
#	docs/acf-sponge/co/aikar/commands/class-use/SpongeRootCommand.html
#	docs/acf-sponge/co/aikar/commands/contexts/CommandResultSupplier.html
#	docs/acf-sponge/co/aikar/commands/contexts/OnlinePlayer.html
#	docs/acf-sponge/co/aikar/commands/contexts/class-use/CommandResultSupplier.html
#	docs/acf-sponge/co/aikar/commands/contexts/class-use/OnlinePlayer.html
#	docs/acf-sponge/co/aikar/commands/contexts/package-summary.html
#	docs/acf-sponge/co/aikar/commands/contexts/package-tree.html
#	docs/acf-sponge/co/aikar/commands/contexts/package-use.html
#	docs/acf-sponge/co/aikar/commands/package-summary.html
#	docs/acf-sponge/co/aikar/commands/package-tree.html
#	docs/acf-sponge/co/aikar/commands/package-use.html
#	docs/acf-sponge/co/aikar/commands/sponge/contexts/OnlinePlayer.html
#	docs/acf-sponge/co/aikar/commands/sponge/contexts/class-use/OnlinePlayer.html
#	docs/acf-sponge/co/aikar/commands/sponge/contexts/package-summary.html
#	docs/acf-sponge/co/aikar/commands/sponge/contexts/package-tree.html
#	docs/acf-sponge/co/aikar/commands/sponge/contexts/package-use.html
#	docs/acf-sponge/deprecated-list.html
#	docs/acf-sponge/index-all.html
#	docs/acf-sponge/index.html
#	docs/acf-sponge/overview-summary.html
#	docs/acf-sponge/overview-tree.html
#	docs/acf-velocity/allclasses-index.html
#	docs/acf-velocity/allpackages-index.html
#	docs/acf-velocity/co/aikar/commands/ACFVelocityListener.html
#	docs/acf-velocity/co/aikar/commands/ACFVelocityUtil.html
#	docs/acf-velocity/co/aikar/commands/MinecraftMessageKeys.html
#	docs/acf-velocity/co/aikar/commands/VelocityCommandCompletionContext.html
#	docs/acf-velocity/co/aikar/commands/VelocityCommandCompletions.html
#	docs/acf-velocity/co/aikar/commands/VelocityCommandContexts.html
#	docs/acf-velocity/co/aikar/commands/VelocityCommandExecutionContext.html
#	docs/acf-velocity/co/aikar/commands/VelocityCommandIssuer.html
#	docs/acf-velocity/co/aikar/commands/VelocityCommandManager.html
#	docs/acf-velocity/co/aikar/commands/VelocityConditionContext.html
#	docs/acf-velocity/co/aikar/commands/VelocityLocales.html
#	docs/acf-velocity/co/aikar/commands/VelocityMessageFormatter.html
#	docs/acf-velocity/co/aikar/commands/VelocityRootCommand.html
#	docs/acf-velocity/co/aikar/commands/class-use/ACFVelocityListener.html
#	docs/acf-velocity/co/aikar/commands/class-use/ACFVelocityUtil.html
#	docs/acf-velocity/co/aikar/commands/class-use/MinecraftMessageKeys.html
#	docs/acf-velocity/co/aikar/commands/class-use/VelocityCommandCompletionContext.html
#	docs/acf-velocity/co/aikar/commands/class-use/VelocityCommandCompletions.html
#	docs/acf-velocity/co/aikar/commands/class-use/VelocityCommandContexts.html
#	docs/acf-velocity/co/aikar/commands/class-use/VelocityCommandExecutionContext.html
#	docs/acf-velocity/co/aikar/commands/class-use/VelocityCommandIssuer.html
#	docs/acf-velocity/co/aikar/commands/class-use/VelocityCommandManager.html
#	docs/acf-velocity/co/aikar/commands/class-use/VelocityConditionContext.html
#	docs/acf-velocity/co/aikar/commands/class-use/VelocityLocales.html
#	docs/acf-velocity/co/aikar/commands/class-use/VelocityMessageFormatter.html
#	docs/acf-velocity/co/aikar/commands/class-use/VelocityRootCommand.html
#	docs/acf-velocity/co/aikar/commands/contexts/OnlinePlayer.html
#	docs/acf-velocity/co/aikar/commands/contexts/class-use/OnlinePlayer.html
#	docs/acf-velocity/co/aikar/commands/contexts/package-summary.html
#	docs/acf-velocity/co/aikar/commands/contexts/package-tree.html
#	docs/acf-velocity/co/aikar/commands/contexts/package-use.html
#	docs/acf-velocity/co/aikar/commands/package-summary.html
#	docs/acf-velocity/co/aikar/commands/package-tree.html
#	docs/acf-velocity/co/aikar/commands/package-use.html
#	docs/acf-velocity/co/aikar/commands/velocity/contexts/OnlinePlayer.html
#	docs/acf-velocity/co/aikar/commands/velocity/contexts/class-use/OnlinePlayer.html
#	docs/acf-velocity/co/aikar/commands/velocity/contexts/package-summary.html
#	docs/acf-velocity/co/aikar/commands/velocity/contexts/package-tree.html
#	docs/acf-velocity/co/aikar/commands/velocity/contexts/package-use.html
#	docs/acf-velocity/deprecated-list.html
#	docs/acf-velocity/index-all.html
#	docs/acf-velocity/index.html
#	docs/acf-velocity/overview-summary.html
#	docs/acf-velocity/overview-tree.html
#	velocity/pom.xml
#	velocity/src/main/java/co/aikar/commands/ACFVelocityUtil.java
#	velocity/src/main/java/co/aikar/commands/VelocityCommandCompletions.java
#	velocity/src/main/java/co/aikar/commands/VelocityCommandContexts.java
#	velocity/src/main/java/co/aikar/commands/VelocityCommandManager.java
#	velocity/src/main/java/co/aikar/commands/VelocityMessageFormatter.java
#	velocity/src/main/java/co/aikar/commands/VelocityRootCommand.java
This commit is contained in:
chickeneer
2021-12-21 11:39:17 -06:00
823 changed files with 65329 additions and 116294 deletions
@@ -10,15 +10,14 @@ import java.util.stream.Collectors;
import com.velocitypowered.api.command.CommandSource;
import com.velocitypowered.api.proxy.Player;
import com.velocitypowered.api.proxy.ProxyServer;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
public class ACFVelocityUtil {
@SuppressWarnings("deprecation")
public static TextComponent color(String message) {
return Component.text(message.replace("&", LegacyComponentSerializer.SECTION_CHAR+""));
return LegacyComponentSerializer.legacySection().deserialize(message);
}
public static Player findPlayerSmart(ProxyServer server, CommandIssuer issuer, String search) {
@@ -25,7 +25,6 @@ package co.aikar.commands;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -36,27 +35,27 @@ import com.velocitypowered.api.proxy.ProxyServer;
import co.aikar.commands.apachecommonslang.ApacheCommonsLangUtil;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextColor;
import net.kyori.adventure.text.format.TextDecoration;
import net.kyori.adventure.text.format.TextFormat;
public class VelocityCommandCompletions extends CommandCompletions<VelocityCommandCompletionContext> {
public VelocityCommandCompletions(ProxyServer server, CommandManager manager) {
super(manager);
registerAsyncCompletion("chatcolors", c -> {
Stream<String> colors = NamedTextColor.NAMES.keys().stream().map((String::toUpperCase));
Stream<TextFormat> colors = NamedTextColor.NAMES.values().stream().map(namedTextColor -> namedTextColor);
if (!c.hasConfig("colorsonly")) {
colors = Stream.concat(colors, Arrays.stream(TextDecoration.values())
.map((dec -> dec.name().toUpperCase())));
colors = Stream.concat(colors, Stream.of(TextDecoration.values()));
}
String filter = c.getConfig("filter");
if (filter != null) {
Set<String> filters = Arrays.stream(ACFPatterns.COLON.split(filter)).map(ACFUtil::simplifyString)
.collect(Collectors.toSet());
colors = colors.filter(color -> filters.contains(ACFUtil.simplifyString(color)));
colors = colors.filter(color -> filters.contains(ACFUtil.simplifyString(color.toString())));
}
return colors.map(color -> ACFUtil.simplifyString(color)).collect(Collectors.toList());
return colors.map(color -> ACFUtil.simplifyString(color.toString())).collect(Collectors.toList());
});
registerCompletion("players", c -> {
CommandSource sender = c.getSender();
@@ -54,6 +54,29 @@ public class VelocityCommandContexts extends CommandContexts<VelocityCommandExec
}
return proxiedPlayer;
});
registerContext(TextFormat.class, c -> {
String first = c.popFirstArg();
Stream<TextFormat> colors = NamedTextColor.NAMES.values().stream().map(namedTextColor -> namedTextColor);
if (!c.hasFlag("colorsonly")) {
colors = Stream.concat(colors, Stream.of(TextDecoration.values()));
}
String filter = c.getFlagValue("filter", (String) null);
if (filter != null) {
filter = ACFUtil.simplifyString(filter);
String finalFilter = filter;
colors = colors.filter(color -> finalFilter.equals(ACFUtil.simplifyString(color.toString())));
}
TextColor match = NamedTextColor.NAMES.value(ACFUtil.simplifyString(first));
if (match == null) {
String valid = colors.map(color -> "<c2>" + ACFUtil.simplifyString(color.toString()) + "</c2>")
.collect(Collectors.joining("<c1>,</c1> "));
throw new InvalidCommandArgument(MessageKeys.PLEASE_SPECIFY_ONE_OF, "{valid}", valid);
}
return match;
});
}
@Nullable
@@ -43,9 +43,10 @@ import com.velocitypowered.api.proxy.Player;
import com.velocitypowered.api.proxy.ProxyServer;
import co.aikar.commands.apachecommonslang.ApacheCommonsExceptionUtil;
import net.kyori.adventure.text.format.NamedTextColor;
public class VelocityCommandManager extends
CommandManager<CommandSource, VelocityCommandIssuer, TextColor, VelocityMessageFormatter, VelocityCommandExecutionContext, VelocityConditionContext> {
CommandManager<CommandSource, VelocityCommandIssuer, NamedTextColor, VelocityMessageFormatter, VelocityCommandExecutionContext, VelocityConditionContext> {
protected final ProxyServer proxy;
protected final PluginContainer plugin;
@@ -57,14 +58,10 @@ public class VelocityCommandManager extends
public VelocityCommandManager(ProxyServer proxy, Object plugin) {
this.proxy = proxy;
this.plugin = proxy.getPluginManager().getPlugin(plugin.getClass().getAnnotation(Plugin.class).id()).get();
this.formatters.put(MessageType.ERROR, defaultFormatter = new VelocityMessageFormatter(TextColor.fromHexString("#FF5555"),
TextColor.fromHexString("#FFFF55"), TextColor.fromHexString("#FF5555")));
this.formatters.put(MessageType.SYNTAX, new VelocityMessageFormatter(TextColor.fromHexString("#FFFF55"),
TextColor.fromHexString("#55FF55"), TextColor.fromHexString("#FFFFFF")));
this.formatters.put(MessageType.INFO, new VelocityMessageFormatter(TextColor.fromHexString("#5555FF"),
TextColor.fromHexString("#00AA00"), TextColor.fromHexString("#55FF55")));
this.formatters.put(MessageType.HELP, new VelocityMessageFormatter(TextColor.fromHexString("#55FFFF"),
TextColor.fromHexString("#55FF55"), TextColor.fromHexString("#FFFF55")));
this.formatters.put(MessageType.ERROR, defaultFormatter = new VelocityMessageFormatter(NamedTextColor.RED, NamedTextColor.YELLOW, NamedTextColor.RED));
this.formatters.put(MessageType.SYNTAX, new VelocityMessageFormatter(NamedTextColor.YELLOW, NamedTextColor.GREEN, NamedTextColor.WHITE));
this.formatters.put(MessageType.INFO, new VelocityMessageFormatter(NamedTextColor.BLUE, NamedTextColor.DARK_GREEN, NamedTextColor.GREEN));
this.formatters.put(MessageType.HELP, new VelocityMessageFormatter(NamedTextColor.AQUA, NamedTextColor.GREEN, NamedTextColor.YELLOW));
getLocales();
@@ -1,45 +1,16 @@
package co.aikar.commands;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.TextColor;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class VelocityMessageFormatter extends MessageFormatter<NamedTextColor> {
public class VelocityMessageFormatter extends MessageFormatter<TextColor> {
private static char COLOR_CHAR = '§';
public VelocityMessageFormatter(TextColor... colors) {
public VelocityMessageFormatter(NamedTextColor... colors) {
super(colors);
}
@Override
String format(TextColor color, String message) {
return hex(message, "#", "");
}
/**
* Colors a String with Hex colors (1.16+ only)
* Usage: pre + hex code + post
*
* @author Elementeral
* @param string The string to color
* @return The colored string
*/
public static String hex(String string, String pre, String post) {
final Pattern hexPattern = Pattern.compile(pre+"([A-Fa-f0-9]{6})"+post);
Matcher matcher = hexPattern.matcher(string);
StringBuffer buffer = new StringBuffer(string.length() + 4 * 8);
while (matcher.find()) {
String group = matcher.group(1);
matcher.appendReplacement(buffer, COLOR_CHAR + "x"
+ COLOR_CHAR + group.charAt(0) + COLOR_CHAR + group.charAt(1)
+ COLOR_CHAR + group.charAt(2) + COLOR_CHAR + group.charAt(3)
+ COLOR_CHAR + group.charAt(4) + COLOR_CHAR + group.charAt(5)
);
}
return matcher.appendTail(buffer).toString();
String format(NamedTextColor color, String message) {
return LegacyComponentSerializer.legacySection().serialize(LegacyComponentSerializer.legacySection().deserialize(message).color(color));
}
}
@@ -25,6 +25,7 @@ package co.aikar.commands;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.SetMultimap;
@@ -32,7 +33,7 @@ import com.velocitypowered.api.command.Command;
import com.velocitypowered.api.command.CommandSource;
import com.velocitypowered.api.command.SimpleCommand;
public class VelocityRootCommand implements Command, RootCommand, SimpleCommand {
public class VelocityRootCommand implements SimpleCommand, RootCommand {
private final VelocityCommandManager manager;
private final String name;
@@ -75,14 +76,6 @@ public class VelocityRootCommand implements Command, RootCommand, SimpleCommand
return children;
}
public void execute(CommandSource source, String[] args) {
execute(manager.getCommandIssuer(source), getCommandName(), args);
}
public List<String> suggest(CommandSource source, String[] args) {
return getTabCompletions(manager.getCommandIssuer(source), getCommandName(), args);
}
@Override
public BaseCommand getDefCommand() {
return defCommand;
@@ -90,6 +83,18 @@ public class VelocityRootCommand implements Command, RootCommand, SimpleCommand
@Override
public void execute(Invocation invocation) {
execute(invocation.source(), invocation.arguments());
execute(manager.getCommandIssuer(invocation.source()), getCommandName(), invocation.arguments());
}
@Override
public List<String> suggest(Invocation invocation) {
return getTabCompletions(manager.getCommandIssuer(invocation.source()), getCommandName(), invocation.arguments());
}
@Override
public CompletableFuture<List<String>> suggestAsync(Invocation invocation) {
return CompletableFuture.completedFuture(getTabCompletions(manager.getCommandIssuer(invocation.source()), getCommandName(), invocation.arguments()));
}
}