Search in sources :

Example 1 with CommandExecutor

use of org.spongepowered.api.command.spec.CommandExecutor in project SpongeCommon by SpongePowered.

the class SpongePaginationService method buildPaginationCommand.

private CommandSpec buildPaginationCommand() {
    final ActivePaginationCommandElement paginationElement = new ActivePaginationCommandElement(t("pagination-id"));
    CommandSpec next = CommandSpec.builder().description(t("Go to the next page")).executor((src, args) -> {
        args.<ActivePagination>getOne("pagination-id").get().nextPage();
        return CommandResult.success();
    }).build();
    CommandSpec prev = CommandSpec.builder().description(t("Go to the previous page")).executor((src, args) -> {
        args.<ActivePagination>getOne("pagination-id").get().previousPage();
        return CommandResult.success();
    }).build();
    CommandElement pageArgs = integer(t("page"));
    CommandExecutor pageExecutor = (src, args) -> {
        args.<ActivePagination>getOne("pagination-id").get().specificPage(args.<Integer>getOne("page").get());
        return CommandResult.success();
    };
    CommandSpec page = CommandSpec.builder().description(t("Go to a specific page")).arguments(pageArgs).executor(pageExecutor).build();
    // Fallback to page arguments
    ChildCommandElementExecutor childDispatcher = new ChildCommandElementExecutor(pageExecutor);
    childDispatcher.register(next, "next", "n");
    childDispatcher.register(prev, "prev", "p", "previous");
    childDispatcher.register(page, "page");
    // https://github.com/SpongePowered/SpongeAPI/issues/1272
    return CommandSpec.builder().arguments(paginationElement, firstParsing(childDispatcher, pageArgs)).executor(childDispatcher).description(t("Helper command for paginations occurring")).build();
}
Also used : MessageReceiver(org.spongepowered.api.text.channel.MessageReceiver) SpongeImpl(org.spongepowered.common.SpongeImpl) Iterables(com.google.common.collect.Iterables) GenericArguments.firstParsing(org.spongepowered.api.command.args.GenericArguments.firstParsing) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Cache(com.github.benmanes.caffeine.cache.Cache) ArgumentParseException(org.spongepowered.api.command.args.ArgumentParseException) CommandArgs(org.spongepowered.api.command.args.CommandArgs) ConcurrentMap(java.util.concurrent.ConcurrentMap) PaginationList(org.spongepowered.api.service.pagination.PaginationList) ImmutableList(com.google.common.collect.ImmutableList) CommandContext(org.spongepowered.api.command.args.CommandContext) Text(org.spongepowered.api.text.Text) StartsWithPredicate(org.spongepowered.api.util.StartsWithPredicate) CommandExecutor(org.spongepowered.api.command.spec.CommandExecutor) Map(java.util.Map) Nullable(javax.annotation.Nullable) CommandResult(org.spongepowered.api.command.CommandResult) Caffeine(com.github.benmanes.caffeine.cache.Caffeine) CommandSource(org.spongepowered.api.command.CommandSource) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) UUID(java.util.UUID) PaginationService(org.spongepowered.api.service.pagination.PaginationService) CommandElement(org.spongepowered.api.command.args.CommandElement) CommandSpec(org.spongepowered.api.command.spec.CommandSpec) TimeUnit(java.util.concurrent.TimeUnit) GenericArguments.integer(org.spongepowered.api.command.args.GenericArguments.integer) List(java.util.List) ChildCommandElementExecutor(org.spongepowered.api.command.args.ChildCommandElementExecutor) Optional(java.util.Optional) Player(org.spongepowered.api.entity.living.player.Player) MapMaker(com.google.common.collect.MapMaker) SpongeCommonTranslationHelper.t(org.spongepowered.common.util.SpongeCommonTranslationHelper.t) ChildCommandElementExecutor(org.spongepowered.api.command.args.ChildCommandElementExecutor) CommandSpec(org.spongepowered.api.command.spec.CommandSpec) CommandExecutor(org.spongepowered.api.command.spec.CommandExecutor) CommandElement(org.spongepowered.api.command.args.CommandElement)

Example 2 with CommandExecutor

use of org.spongepowered.api.command.spec.CommandExecutor in project LanternServer by LanternPowered.

the class LanternPaginationService method buildPaginationCommand.

@SuppressWarnings("ConstantConditions")
private CommandSpec buildPaginationCommand() {
    // TODO Completely redo this once command refactor is out and PR changes to Sponge as well
    final ActivePaginationCommandElement paginationElement = new ActivePaginationCommandElement(t("pagination-id"));
    CommandSpec next = CommandSpec.builder().description(t("Go to the next page")).executor((src, args) -> {
        args.<ActivePagination>getOne("pagination-id").get().nextPage();
        return CommandResult.success();
    }).build();
    CommandSpec prev = CommandSpec.builder().description(t("Go to the previous page")).executor((src, args) -> {
        args.<ActivePagination>getOne("pagination-id").get().previousPage();
        return CommandResult.success();
    }).build();
    CommandElement pageArgs = integer(t("page"));
    CommandExecutor pageExecutor = (src, args) -> {
        args.<ActivePagination>getOne("pagination-id").get().specificPage(args.<Integer>getOne("page").get());
        return CommandResult.success();
    };
    CommandSpec page = CommandSpec.builder().description(t("Go to a specific page")).arguments(pageArgs).executor(pageExecutor).build();
    // Fallback to page arguments
    ChildCommandElementExecutor childDispatcher = new ChildCommandElementExecutor(pageExecutor);
    childDispatcher.register(next, "next", "n");
    childDispatcher.register(prev, "prev", "p", "previous");
    childDispatcher.register(page, "page");
    // https://github.com/SpongePowered/SpongeAPI/issues/1272
    return CommandSpec.builder().arguments(paginationElement, firstParsing(childDispatcher, pageArgs)).executor(childDispatcher).description(t("Helper command for paginations occurring")).build();
}
Also used : MessageReceiver(org.spongepowered.api.text.channel.MessageReceiver) Iterables(com.google.common.collect.Iterables) GenericArguments.firstParsing(org.spongepowered.api.command.args.GenericArguments.firstParsing) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) ArgumentParseException(org.spongepowered.api.command.args.ArgumentParseException) CommandArgs(org.spongepowered.api.command.args.CommandArgs) ConcurrentMap(java.util.concurrent.ConcurrentMap) PaginationList(org.spongepowered.api.service.pagination.PaginationList) ImmutableList(com.google.common.collect.ImmutableList) CommandContext(org.spongepowered.api.command.args.CommandContext) Text(org.spongepowered.api.text.Text) StartsWithPredicate(org.spongepowered.api.util.StartsWithPredicate) CommandExecutor(org.spongepowered.api.command.spec.CommandExecutor) Map(java.util.Map) Nullable(javax.annotation.Nullable) CommandResult(org.spongepowered.api.command.CommandResult) TranslationHelper.t(org.lanternpowered.server.text.translation.TranslationHelper.t) CommandSource(org.spongepowered.api.command.CommandSource) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Sponge(org.spongepowered.api.Sponge) Set(java.util.Set) UUID(java.util.UUID) PaginationService(org.spongepowered.api.service.pagination.PaginationService) CommandElement(org.spongepowered.api.command.args.CommandElement) CommandSpec(org.spongepowered.api.command.spec.CommandSpec) GenericArguments.integer(org.spongepowered.api.command.args.GenericArguments.integer) List(java.util.List) ChildCommandElementExecutor(org.spongepowered.api.command.args.ChildCommandElementExecutor) Lantern(org.lanternpowered.server.game.Lantern) Optional(java.util.Optional) MapMaker(com.google.common.collect.MapMaker) ChildCommandElementExecutor(org.spongepowered.api.command.args.ChildCommandElementExecutor) CommandSpec(org.spongepowered.api.command.spec.CommandSpec) CommandExecutor(org.spongepowered.api.command.spec.CommandExecutor) CommandElement(org.spongepowered.api.command.args.CommandElement)

Aggregations

ImmutableList (com.google.common.collect.ImmutableList)2 Iterables (com.google.common.collect.Iterables)2 MapMaker (com.google.common.collect.MapMaker)2 List (java.util.List)2 Map (java.util.Map)2 Optional (java.util.Optional)2 Set (java.util.Set)2 UUID (java.util.UUID)2 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)2 ConcurrentMap (java.util.concurrent.ConcurrentMap)2 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)2 Nullable (javax.annotation.Nullable)2 CommandResult (org.spongepowered.api.command.CommandResult)2 CommandSource (org.spongepowered.api.command.CommandSource)2 ArgumentParseException (org.spongepowered.api.command.args.ArgumentParseException)2 ChildCommandElementExecutor (org.spongepowered.api.command.args.ChildCommandElementExecutor)2 CommandArgs (org.spongepowered.api.command.args.CommandArgs)2 CommandContext (org.spongepowered.api.command.args.CommandContext)2 CommandElement (org.spongepowered.api.command.args.CommandElement)2 GenericArguments.firstParsing (org.spongepowered.api.command.args.GenericArguments.firstParsing)2