Search in sources :

Example 1 with ValueParameter

use of org.spongepowered.api.command.parameter.managed.ValueParameter in project SpongeCommon by SpongePowered.

the class CommandTest method onRegisterSpongeCommand.

@Listener
public void onRegisterSpongeCommand(final RegisterCommandEvent<Command.Parameterized> event) {
    final Parameter.Value<ServerPlayer> playerKey = Parameter.player().key("player").usage(key -> "[any player]").build();
    event.register(this.plugin, Command.builder().addParameter(playerKey).executor(context -> {
        final ServerPlayer player = context.one(playerKey).orElse(context.cause().root() instanceof ServerPlayer ? ((ServerPlayer) context.cause().root()) : null);
        this.logger.info(player.name());
        return CommandResult.success();
    }).build(), "getplayer");
    final Parameter.Value<String> playerParameterKey = Parameter.string().key("name").optional().build();
    event.register(this.plugin, Command.builder().addParameter(playerParameterKey).executor(context -> {
        final Optional<String> result = context.one(playerParameterKey);
        final Collection<GameProfile> collection;
        if (result.isPresent()) {
            // check to see if the string matches
            collection = Sponge.game().server().userManager().streamOfMatches(result.get().toLowerCase(Locale.ROOT)).collect(Collectors.toList());
        } else {
            collection = Sponge.game().server().userManager().streamAll().collect(Collectors.toList());
        }
        collection.forEach(x -> this.logger.info("GameProfile - UUID: {}, Name - {}", x.uniqueId().toString(), x.name().orElse("---")));
        return CommandResult.success();
    }).build(), "checkuser");
    final Parameter.Value<String> choicesKey = Parameter.choices("bacon", "eggs", "spam", "spam spam spam").key("choices").build();
    event.register(this.plugin, Command.builder().addParameter(choicesKey).executor(context -> {
        context.sendMessage(Identity.nil(), Component.text(context.requireOne(choicesKey)));
        return CommandResult.success();
    }).build(), "testchoices");
    final Parameter.Key<String> testKey = Parameter.key("testKey", String.class);
    final Parameter.Key<Component> requiredKey = Parameter.key("requiredKey", Component.class);
    event.register(this.plugin, Command.builder().addFlag(Flag.builder().alias("f").alias("flag").build()).addFlag(Flag.builder().alias("t").alias("text").setParameter(Parameter.string().key(testKey).build()).build()).addParameter(Parameter.formattingCodeText().key(requiredKey).build()).executor(context -> {
        context.sendMessage(Identity.nil(), Component.text(context.flagInvocationCount("flag")));
        context.sendMessage(Identity.nil(), Component.text(context.flagInvocationCount("t")));
        context.all(testKey).forEach(x -> context.sendMessage(Identity.nil(), Component.text(x)));
        context.sendMessage(Identity.nil(), context.requireOne(requiredKey));
        return CommandResult.success();
    }).build(), "flagtest");
    event.register(this.plugin, Command.builder().addFlag(Flag.builder().alias("t").alias("text").setParameter(Parameter.string().key(testKey).build()).build()).addParameter(Parameter.formattingCodeText().key(requiredKey).build()).executor(context -> {
        context.sendMessage(Identity.nil(), Component.text("optional_test"));
        context.sendMessage(Identity.nil(), Component.text(context.flagInvocationCount("t")));
        context.all(testKey).forEach(x -> context.sendMessage(Identity.nil(), Component.text(x)));
        context.sendMessage(Identity.nil(), context.requireOne(requiredKey));
        return CommandResult.success();
    }).build(), "optionalflagtest");
    event.register(this.plugin, Command.builder().executor(x -> {
        x.sendMessage(Identity.nil(), Component.text().content("Click Me").clickEvent(SpongeComponents.executeCallback(ctx -> ctx.sendMessage(Identity.nil(), Component.text("Hello")))).build());
        return CommandResult.success();
    }).build(), "testCallback");
    event.register(this.plugin, Command.builder().executor(x -> {
        final Collection<Entity> collection = Selector.builder().applySelectorType(SelectorTypes.ALL_ENTITIES.get()).addEntityType(EntityTypes.PLAYER.get(), false).addGameMode(GameModes.CREATIVE.get()).limit(1).includeSelf().build().select(x.cause());
        for (final Entity entity : collection) {
            x.sendMessage(Identity.nil(), Component.text(entity.toString()));
        }
        return CommandResult.success();
    }).build(), "testselector");
    final Parameter.Key<ServerLocation> serverLocationKey = Parameter.key("serverLocation", ServerLocation.class);
    final Parameter.Value<ServerLocation> serverLocationParameter = Parameter.location().key(serverLocationKey).build();
    event.register(this.plugin, Command.builder().addParameter(serverLocationParameter).executor(x -> {
        x.sendMessage(Identity.nil(), Component.text(x.requireOne(serverLocationKey).toString()));
        return CommandResult.success();
    }).build(), "testlocation");
    final Parameter.Key<ValueParameter<?>> commandParameterKey = Parameter.key("valueParameter", new TypeToken<ValueParameter<?>>() {
    });
    final TypeToken<ValueParameter<?>> typeToken = new TypeToken<ValueParameter<?>>() {
    };
    event.register(this.plugin, Command.builder().addParameter(serverLocationParameter).addParameter(Parameter.registryElement(typeToken, commandContext -> Sponge.game(), RegistryTypes.REGISTRY_KEYED_VALUE_PARAMETER, "sponge").key(commandParameterKey).build()).executor(x -> {
        x.sendMessage(Identity.nil(), Component.text(x.requireOne(serverLocationKey).toString()));
        x.sendMessage(Identity.nil(), Component.text(x.requireOne(commandParameterKey).toString()));
        return CommandResult.success();
    }).build(), "testcatalogcompletion");
    final Parameter.Key<TestEnum> enumParameterKey = Parameter.key("enum", TestEnum.class);
    final Parameter.Key<String> stringKey = Parameter.key("stringKey", String.class);
    event.register(this.plugin, Command.builder().addParameter(Parameter.enumValue(TestEnum.class).key(enumParameterKey).build()).addParameter(Parameter.string().key(stringKey).completer((context, currentInput) -> Arrays.asList("bacon", "eggs", "spam").stream().map(CommandCompletion::of).collect(Collectors.toList())).build()).executor(x -> {
        x.sendMessage(Identity.nil(), Component.text(x.one(enumParameterKey).orElse(TestEnum.ONE).name()));
        return CommandResult.success();
    }).build(), "testenum");
    final Parameter.Key<ResourceKey> resourceKeyKey = Parameter.key("rk", ResourceKey.class);
    event.register(this.plugin, Command.builder().addParameter(Parameter.resourceKey().key(resourceKeyKey).build()).executor(x -> {
        x.sendMessage(Identity.nil(), Component.text(x.requireOne(resourceKeyKey).formatted()));
        return CommandResult.success();
    }).build(), "testrk");
    final Parameter.Key<UUID> userKey = Parameter.key("user", UUID.class);
    event.register(this.plugin, Command.builder().addParameter(Parameter.user().key(userKey).build()).executor(context -> {
        Sponge.server().userManager().load(context.requireOne(userKey)).thenAcceptAsync(x -> context.sendMessage(Identity.nil(), Component.text(x.map(User::name).orElse("unknown"))), Sponge.server().scheduler().executor(this.plugin));
        return CommandResult.success();
    }).build(), "getuser");
    final Parameter.Key<String> stringLiteralKey = Parameter.key("literal", String.class);
    event.register(this.plugin, Command.builder().executor(context -> {
        context.sendMessage(Identity.nil(), Component.text("Collected literals: " + String.join(", ", context.all(stringLiteralKey))));
        return CommandResult.success();
    }).terminal(true).addParameter(Parameter.firstOfBuilder(Parameter.literal(String.class, "1", "1").key(stringLiteralKey).build()).or(Parameter.literal(String.class, "2", "2").key(stringLiteralKey).build()).terminal().build()).addParameter(Parameter.seqBuilder(Parameter.literal(String.class, "3", "3").key(stringLiteralKey).build()).then(Parameter.literal(String.class, "4", "4").key(stringLiteralKey).build()).terminal().build()).addParameter(Parameter.literal(String.class, "5", "5").optional().key(stringLiteralKey).build()).addParameter(Parameter.literal(String.class, "6", "6").key(stringLiteralKey).build()).build(), "testnesting");
    final Parameter.Value<SystemSubject> systemSubjectValue = Parameter.builder(SystemSubject.class).key("systemsubject").addParser(VariableValueParameters.literalBuilder(SystemSubject.class).literal(Collections.singleton("-")).returnValue(Sponge::systemSubject).build()).build();
    event.register(this.plugin, Command.builder().addParameter(Parameter.firstOf(systemSubjectValue, CommonParameters.PLAYER)).addParameter(Parameter.remainingJoinedStrings().key(stringKey).build()).executor(context -> {
        final Audience audience;
        final String name;
        if (context.hasAny(systemSubjectValue)) {
            audience = context.requireOne(systemSubjectValue);
            name = "Console";
        } else {
            final ServerPlayer player = context.requireOne(CommonParameters.PLAYER);
            name = player.name();
            audience = player;
        }
        final String message = context.requireOne(stringKey);
        context.sendMessage(Identity.nil(), Component.text("To " + name + "> " + message));
        final Object root = context.cause().root();
        final Identity identity = root instanceof ServerPlayer ? ((ServerPlayer) root).identity() : Identity.nil();
        audience.sendMessage(identity, Component.text("From " + name + "> " + message));
        return CommandResult.success();
    }).build(), "testmessage");
    event.register(this.plugin, Command.builder().addParameter(CommonParameters.BOOLEAN).executor(ctx -> {
        if (ctx.requireOne(CommonParameters.BOOLEAN)) {
            // custom error
            return CommandResult.error(Component.text("custom error"));
        }
        return CommandResult.builder().error(null).build();
    }).build(), "errormessage");
    final Command.Builder builder = Command.builder();
    final ValueCompleter stringValueCompleter = (c, s) -> s.isEmpty() ? Collections.singletonList(CommandCompletion.of("x")) : Arrays.asList(s, s + "bar", "foo_" + s).stream().map(CommandCompletion::of).collect(Collectors.toList());
    // final ValueCompleter stringValueCompleter = null;
    final Parameter.Value<String> r_opt = Parameter.remainingJoinedStrings().key("r_def").optional().build();
    final Parameter.Value<String> r_req = Parameter.remainingJoinedStrings().key("r_req").completer(stringValueCompleter).build();
    final Parameter.Value<String> opt1 = Parameter.string().optional().key("opt1").build();
    final Parameter.Value<String> opt2 = Parameter.string().optional().key("opt2").build();
    final Parameter.Value<String> topt = Parameter.string().optional().key("topt").terminal().build();
    final Parameter.Value<String> req1 = Parameter.string().key("req1").completer(stringValueCompleter).build();
    final Parameter.Value<String> req2 = Parameter.string().key("req2").build();
    final Parameter.Value<Boolean> lit1 = Parameter.literal(Boolean.class, true, "lit1").key("lit1").build();
    final Parameter.Value<Boolean> lit2 = Parameter.literal(Boolean.class, true, "lit2").key("lit2").build();
    final Parameter optSeq_lit_req1 = Parameter.seqBuilder(lit1).then(req1).optional().build();
    final Parameter optSeq_lit_req2 = Parameter.seqBuilder(lit2).then(req2).optional().build();
    final Parameter seq_req_2 = Parameter.seqBuilder(req1).then(req2).build();
    final Parameter seq_opt_2 = Parameter.seqBuilder(opt1).then(opt2).build();
    final Parameter seq_opt_2_req = Parameter.seqBuilder(opt1).then(opt2).then(req1).build();
    // <req1>
    builder.addChild(Command.builder().executor(context -> CommandTest.printParameters(context, req1)).addParameter(req1).build(), "required");
    // subcommand|<r_def>
    builder.addChild(Command.builder().executor(context -> CommandTest.printParameters(context, r_opt)).addParameter(r_opt).addChild(Command.builder().executor(c -> CommandTest.printParameters(c, r_opt)).build(), "subcommand").build(), "optional_or_subcmd");
    // https://bugs.mojang.com/browse/MC-165562 usage does not show up after a space if there are no completions
    // [def1] <r_req>
    // TODO missing executed command when only providing a single value
    builder.addChild(Command.builder().executor(context -> CommandTest.printParameters(context, opt1, r_req)).addParameters(opt1, r_req).build(), "optional_r_required");
    // [opt1] [opt2] <r_req>
    // TODO missing executed command when only providing a single value
    builder.addChild(Command.builder().executor(context -> CommandTest.printParameters(context, opt1, opt2, r_req)).addParameters(opt1, opt2, r_req).build(), "optional_optional_required");
    // [opt1] [opt2]
    // TODO some redundancy in generated nodes because opt1 node can terminate early
    builder.addChild(Command.builder().executor(context -> CommandTest.printParameters(context, opt1, opt2)).addParameters(opt1, opt2).build(), "optional_optional");
    // [opt1] [literal <req1>]
    // TODO completion does not include req1 when opt1/literal is ambigous
    builder.addChild(Command.builder().executor(c -> CommandTest.printParameters(c, opt1, lit1, req1)).addParameters(opt1, optSeq_lit_req1).build(), "optional_optsequence_literal_required");
    // [literal <req1>] [literal2 <req2>]
    // TODO sequences are not optional
    builder.addChild(Command.builder().executor(c -> CommandTest.printParameters(c, lit1, req1, lit2, req2)).addParameters(optSeq_lit_req1, optSeq_lit_req2).build(), "opt_sequence_2_literal_required");
    // <<req1> <req2>>
    builder.addChild(Command.builder().executor(c -> CommandTest.printParameters(c, req1, req2)).addParameters(seq_req_2).build(), "seq_required_required");
    // <[opt1] [opt2]>
    // TODO some redundancy in generated nodes because opt1 node can terminate early
    builder.addChild(Command.builder().executor(c -> CommandTest.printParameters(c, opt1, opt2)).addParameters(seq_opt_2).build(), "seq_optional_optional");
    // <[opt1] [opt2] <req>>
    builder.addChild(Command.builder().executor(c -> CommandTest.printParameters(c, opt1, opt2, req1)).addParameters(seq_opt_2_req).build(), "seq_optional_optional_required");
    // [opt1] <req> [opt2]
    // TODO some redundancy in generated nodes because req1 node can terminate early
    builder.addChild(Command.builder().executor(c -> CommandTest.printParameters(c, opt1, req1, opt2)).addParameters(opt1, req1, opt2).build(), "optional_required_optional");
    // [opt1] [topt] !terminal
    // or
    // [opt1] [topt] <req1>
    builder.addChild(Command.builder().executor(c -> CommandTest.printParameters(c, opt1, topt, req1)).addParameters(opt1, topt, req1).build(), "optional_toptional_optional");
    event.register(this.plugin, builder.build(), "testcommand", "testcmd");
    // Adapted from https://github.com/SpongePowered/Sponge/issues/3238#issuecomment-750456173
    final Command.Parameterized firstSub = Command.builder().addParameter(CommonParameters.BOOLEAN).executor(c -> {
        c.sendMessage(Identity.nil(), Component.text("first"));
        return CommandResult.success();
    }).build();
    final Command.Parameterized secondSub = Command.builder().addParameter(CommonParameters.BOOLEAN).executor(c -> {
        c.sendMessage(Identity.nil(), Component.text("second"));
        return CommandResult.success();
    }).build();
    final Command.Parameterized parent = Command.builder().executor(c -> {
        c.sendMessage(Identity.nil(), Component.text("parent"));
        return CommandResult.success();
    }).addParameters(CommonParameters.WORLD).addParameters(Parameter.firstOf(Parameter.subcommand(firstSub, "first"), Parameter.subcommand(secondSub, "second"))).terminal(true).build();
    event.register(this.plugin, parent, "testterminal");
    // exceptions
    event.register(this.plugin, Command.builder().shortDescription(Component.text("test throwing execptions")).addChild(Command.builder().executor(ctx -> {
        throw new CommandException(Component.text("Exit via exception"));
    }).build(), "exception").addChild(Command.builder().executor(ctx -> {
        return CommandResult.error(Component.text("Exit via failed result"));
    }).build(), "failedresult").build(), "testfailure");
    event.register(this.plugin, Command.builder().addParameter(Parameter.enumValue(TestEnum.class).modifier(new ValueParameterModifier<TestEnum>() {

        @Override
        @NotNull
        public Optional<? extends TestEnum> modifyResult(final Parameter.@NotNull Key<? super TestEnum> parameterKey, final ArgumentReader.@NotNull Immutable reader, final CommandContext.@NotNull Builder context, @Nullable final TestEnum value) throws ArgumentParseException {
            if (value == TestEnum.THREE) {
                throw reader.createException(Component.text("Can't select three!"));
            }
            return Optional.ofNullable(value);
        }

        @Override
        public List<CommandCompletion> modifyCompletion(@NotNull final CommandContext context, @NotNull final String currentInput, final List<CommandCompletion> completions) {
            return completions.stream().filter(x -> !x.completion().equalsIgnoreCase(TestEnum.THREE.name())).collect(Collectors.toList());
        }

        @Override
        @Nullable
        public Component modifyExceptionMessage(@Nullable final Component exceptionMessage) {
            if (exceptionMessage == null) {
                return null;
            }
            return exceptionMessage.replaceText(builder -> {
                builder.match(", three").replacement("").once();
            });
        }
    }).key(enumParameterKey).build()).executor(x -> {
        x.sendMessage(Identity.nil(), Component.text(x.one(enumParameterKey).orElse(TestEnum.ONE).name()));
        return CommandResult.success();
    }).build(), "testenummodified");
    final Parameter.Value<String> testString = Parameter.string().key("string").build();
    final Parameter.Value<Component> jsonTextParameter = Parameter.jsonText().key("text").build();
    event.register(this.plugin, Command.builder().addParameter(jsonTextParameter).addParameter(testString).executor(ctx -> {
        ctx.sendMessage(Identity.nil(), ctx.requireOne(jsonTextParameter));
        ctx.sendMessage(Identity.nil(), Component.text(ctx.requireOne(testString)));
        return CommandResult.success();
    }).build(), "testcomponentjson");
    final Parameter.Value<Integer> firstIntParameter = Parameter.integerNumber().key("int1").build();
    final Parameter.Value<Integer> secondIntParameter = Parameter.integerNumber().key("int2").build();
    final Parameter.Value<Operator> operatorParameter = Parameter.operator().key("operator").build();
    event.register(this.plugin, Command.builder().addParameter(firstIntParameter).addParameter(operatorParameter).addParameter(secondIntParameter).executor(ctx -> {
        final int first = ctx.requireOne(firstIntParameter);
        final int second = ctx.requireOne(secondIntParameter);
        final Operator operator = ctx.requireOne(operatorParameter);
        ctx.sendMessage(Identity.nil(), Component.text(first));
        ctx.sendMessage(Identity.nil(), RegistryTypes.OPERATOR.get().findValueKey(operator).map(key -> Component.text(key.asString())).orElse(Component.text("Not set")));
        ctx.sendMessage(Identity.nil(), Component.text(second));
        if (operator instanceof Operator.Simple) {
            ctx.sendMessage(Identity.nil(), Component.text(((Operator.Simple) operator).apply(first, second)));
        }
        return CommandResult.success();
    }).build(), "testoperator");
    final Parameter.Value<Color> colorParameter = Parameter.color().key("color").build();
    event.register(this.plugin, Command.builder().addParameter(colorParameter).executor(ctx -> {
        final Color color = ctx.requireOne(colorParameter);
        final TextColor textColor = TextColor.color(color);
        final String colorString = color.toString();
        ctx.sendMessage(Identity.nil(), Component.text().color(textColor).content(colorString).build());
        return CommandResult.success();
    }).build(), "textcolor");
    final Parameter.Value<Integer> rangedInt1 = Parameter.rangedInteger(1, Integer.MAX_VALUE).key("quantity").build();
    event.register(this.plugin, Command.builder().addParameter(Parameter.firstOf(playerKey, Parameter.user().key(userKey).build())).addParameter(choicesKey).addParameter(rangedInt1).executor(ctx -> {
        if (ctx.hasAny(playerKey)) {
            ctx.sendMessage(Identity.nil(), Component.text(ctx.requireOne(playerKey).name()));
        } else {
            ctx.sendMessage(Identity.nil(), Component.text(ctx.requireOne(userKey).toString()));
        }
        ctx.sendMessage(Identity.nil(), Component.text(ctx.requireOne(choicesKey)));
        ctx.sendMessage(Identity.nil(), Component.text(ctx.requireOne(rangedInt1)));
        return CommandResult.success();
    }).build(), "firstoftest");
}
Also used : Operator(org.spongepowered.api.command.parameter.managed.operator.Operator) Arrays(java.util.Arrays) Command(org.spongepowered.api.command.Command) Inject(com.google.inject.Inject) ValueCompleter(org.spongepowered.api.command.parameter.managed.ValueCompleter) Locale(java.util.Locale) GameProfile(org.spongepowered.api.profile.GameProfile) Selector(org.spongepowered.api.command.selector.Selector) Plugin(org.spongepowered.plugin.builtin.jvm.Plugin) CommandCompletion(org.spongepowered.api.command.CommandCompletion) User(org.spongepowered.api.entity.living.player.User) TextColor(net.kyori.adventure.text.format.TextColor) Collection(java.util.Collection) Sponge(org.spongepowered.api.Sponge) ArgumentReader(org.spongepowered.api.command.parameter.ArgumentReader) UUID(java.util.UUID) TypeToken(io.leangen.geantyref.TypeToken) Collectors(java.util.stream.Collectors) NamedTextColor(net.kyori.adventure.text.format.NamedTextColor) List(java.util.List) Logger(org.apache.logging.log4j.Logger) ArgumentParseException(org.spongepowered.api.command.exception.ArgumentParseException) Optional(java.util.Optional) NotNull(org.jetbrains.annotations.NotNull) ValueParameter(org.spongepowered.api.command.parameter.managed.ValueParameter) ServerLocation(org.spongepowered.api.world.server.ServerLocation) Flag(org.spongepowered.api.command.parameter.managed.Flag) GameModes(org.spongepowered.api.entity.living.player.gamemode.GameModes) EntityTypes(org.spongepowered.api.entity.EntityTypes) Parameter(org.spongepowered.api.command.parameter.Parameter) Component(net.kyori.adventure.text.Component) ResourceKey(org.spongepowered.api.ResourceKey) Nullable(org.checkerframework.checker.nullness.qual.Nullable) CommonParameters(org.spongepowered.api.command.parameter.CommonParameters) RegisterCommandEvent(org.spongepowered.api.event.lifecycle.RegisterCommandEvent) CommandResult(org.spongepowered.api.command.CommandResult) Identity(net.kyori.adventure.identity.Identity) Entity(org.spongepowered.api.entity.Entity) RegistryTypes(org.spongepowered.api.registry.RegistryTypes) ValueParameterModifier(org.spongepowered.api.command.parameter.managed.ValueParameterModifier) VariableValueParameters(org.spongepowered.api.command.parameter.managed.standard.VariableValueParameters) SelectorTypes(org.spongepowered.api.command.selector.SelectorTypes) PluginContainer(org.spongepowered.plugin.PluginContainer) Audience(net.kyori.adventure.audience.Audience) CommandContext(org.spongepowered.api.command.parameter.CommandContext) SystemSubject(org.spongepowered.api.SystemSubject) Color(org.spongepowered.api.util.Color) SpongeComponents(org.spongepowered.api.adventure.SpongeComponents) Listener(org.spongepowered.api.event.Listener) Collections(java.util.Collections) CommandException(org.spongepowered.api.command.exception.CommandException) ServerPlayer(org.spongepowered.api.entity.living.player.server.ServerPlayer) Entity(org.spongepowered.api.entity.Entity) CommandContext(org.spongepowered.api.command.parameter.CommandContext) ServerLocation(org.spongepowered.api.world.server.ServerLocation) CommandCompletion(org.spongepowered.api.command.CommandCompletion) List(java.util.List) TextColor(net.kyori.adventure.text.format.TextColor) NamedTextColor(net.kyori.adventure.text.format.NamedTextColor) UUID(java.util.UUID) Identity(net.kyori.adventure.identity.Identity) Optional(java.util.Optional) Audience(net.kyori.adventure.audience.Audience) TextColor(net.kyori.adventure.text.format.TextColor) NamedTextColor(net.kyori.adventure.text.format.NamedTextColor) Color(org.spongepowered.api.util.Color) ArgumentReader(org.spongepowered.api.command.parameter.ArgumentReader) ResourceKey(org.spongepowered.api.ResourceKey) GameProfile(org.spongepowered.api.profile.GameProfile) ServerPlayer(org.spongepowered.api.entity.living.player.server.ServerPlayer) Nullable(org.checkerframework.checker.nullness.qual.Nullable) Operator(org.spongepowered.api.command.parameter.managed.operator.Operator) User(org.spongepowered.api.entity.living.player.User) ArgumentParseException(org.spongepowered.api.command.exception.ArgumentParseException) NotNull(org.jetbrains.annotations.NotNull) ValueParameter(org.spongepowered.api.command.parameter.managed.ValueParameter) Component(net.kyori.adventure.text.Component) ValueCompleter(org.spongepowered.api.command.parameter.managed.ValueCompleter) SystemSubject(org.spongepowered.api.SystemSubject) CommandException(org.spongepowered.api.command.exception.CommandException) Command(org.spongepowered.api.command.Command) TypeToken(io.leangen.geantyref.TypeToken) ValueParameter(org.spongepowered.api.command.parameter.managed.ValueParameter) Parameter(org.spongepowered.api.command.parameter.Parameter) Listener(org.spongepowered.api.event.Listener)

Example 2 with ValueParameter

use of org.spongepowered.api.command.parameter.managed.ValueParameter in project SpongeCommon by SpongePowered.

the class SpongeRegistryLoaders method valueParameter.

@SuppressWarnings("ConstantConditions")
public static RegistryLoader<ValueParameter<?>> valueParameter() {
    return RegistryLoader.of(l -> {
        l.add(ResourceKeyedValueParameters.BIG_DECIMAL, SpongeBigDecimalValueParameter::new);
        l.add(ResourceKeyedValueParameters.BIG_INTEGER, SpongeBigIntegerValueParameter::new);
        l.add(ResourceKeyedValueParameters.BLOCK_STATE, k -> ClientNativeArgumentParser.createConverter(k, BlockStateArgument.block(), (reader, cause, state) -> (BlockState) state.getState()));
        l.add(ResourceKeyedValueParameters.BOOLEAN, k -> ClientNativeArgumentParser.createIdentity(k, BoolArgumentType.bool()));
        l.add(ResourceKeyedValueParameters.COLOR, SpongeColorValueParameter::new);
        l.add(ResourceKeyedValueParameters.DATA_CONTAINER, SpongeDataContainerValueParameter::new);
        l.add(ResourceKeyedValueParameters.DATE_TIME, SpongeDateTimeValueParameter::new);
        l.add(ResourceKeyedValueParameters.DOUBLE, k -> ClientNativeArgumentParser.createIdentity(k, DoubleArgumentType.doubleArg()));
        l.add(ResourceKeyedValueParameters.DURATION, SpongeDurationValueParameter::new);
        l.add(ResourceKeyedValueParameters.ENTITY, k -> ClientNativeArgumentParser.createConverter(k, EntityArgument.entity(), (reader, cause, selector) -> (Entity) selector.findSingleEntity((CommandSourceStack) cause)));
        l.add(ResourceKeyedValueParameters.GAME_PROFILE, SpongeGameProfileValueParameter::new);
        l.add(ResourceKeyedValueParameters.INTEGER, k -> ClientNativeArgumentParser.createIdentity(k, IntegerArgumentType.integer()));
        l.add(ResourceKeyedValueParameters.IP, SpongeIPAddressValueParameter::new);
        l.add(ResourceKeyedValueParameters.ITEM_STACK_SNAPSHOT, k -> ClientNativeArgumentParser.createConverter(k, ItemArgument.item(), (reader, cause, converter) -> new SpongeItemStackSnapshot((ItemStack) (Object) converter.createItemStack(1, true))));
        l.add(ResourceKeyedValueParameters.LOCATION, SpongeServerLocationValueParameter::new);
        l.add(ResourceKeyedValueParameters.LONG, k -> ClientNativeArgumentParser.createIdentity(k, LongArgumentType.longArg()));
        l.add(ResourceKeyedValueParameters.MANY_ENTITIES, k -> ClientNativeArgumentParser.createConverter(k, EntityArgument.entities(), (reader, cause, selector) -> selector.findEntities((CommandSourceStack) cause).stream().map(x -> (Entity) x).collect(Collectors.toList())));
        l.add(ResourceKeyedValueParameters.MANY_GAME_PROFILES, k -> ClientNativeArgumentParser.createConverter(k, GameProfileArgument.gameProfile(), (reader, cause, converter) -> converter.getNames((CommandSourceStack) cause)));
        l.add(ResourceKeyedValueParameters.MANY_PLAYERS, k -> ClientNativeArgumentParser.createConverter(k, EntityArgument.players(), (reader, cause, selector) -> selector.findPlayers((CommandSourceStack) cause)));
        l.add(ResourceKeyedValueParameters.NONE, SpongeNoneValueParameter::new);
        l.add(ResourceKeyedValueParameters.OPERATOR, SpongeOperatorValueParameter::new);
        l.add(ResourceKeyedValueParameters.PLAYER, k -> ClientNativeArgumentParser.createConverter(k, EntityArgument.player(), (reader, cause, selector) -> (Player) selector.findSinglePlayer((CommandSourceStack) cause)));
        l.add(ResourceKeyedValueParameters.PLUGIN, SpongePluginContainerValueParameter::new);
        l.add(ResourceKeyedValueParameters.REMAINING_JOINED_STRINGS, k -> ClientNativeArgumentParser.createIdentity(k, StringArgumentType.greedyString()));
        l.add(ResourceKeyedValueParameters.RESOURCE_KEY, k -> ClientNativeArgumentParser.createConverter(k, ResourceLocationArgument.id(), (reader, cause, resourceLocation) -> (ResourceKey) (Object) resourceLocation));
        l.add(ResourceKeyedValueParameters.ROTATION, k -> ClientNativeArgumentParser.createConverter(k, RotationArgument.rotation(), (reader, cause, coords) -> {
            final Vec2 rotation = coords.getRotation((CommandSourceStack) cause);
            return new Vector3d(rotation.x, rotation.y, 0);
        }));
        l.add(ResourceKeyedValueParameters.STRING, k -> ClientNativeArgumentParser.createIdentity(k, StringArgumentType.string()));
        l.add(ResourceKeyedValueParameters.TARGET_BLOCK, SpongeTargetBlockValueParameter::new);
        l.add(ResourceKeyedValueParameters.TARGET_ENTITY, k -> new SpongeTargetEntityValueParameter(k, false));
        l.add(ResourceKeyedValueParameters.TARGET_PLAYER, k -> new SpongeTargetEntityValueParameter(k, true));
        l.add(ResourceKeyedValueParameters.TEXT_FORMATTING_CODE, k -> ClientNativeArgumentParser.createConverter(k, StringArgumentType.string(), (reader, cause, result) -> LegacyComponentSerializer.legacyAmpersand().deserialize(result)));
        l.add(ResourceKeyedValueParameters.TEXT_FORMATTING_CODE_ALL, k -> ClientNativeArgumentParser.createConverter(k, StringArgumentType.greedyString(), (reader, cause, result) -> LegacyComponentSerializer.legacyAmpersand().deserialize(result)));
        l.add(ResourceKeyedValueParameters.TEXT_JSON, k -> ClientNativeArgumentParser.createConverter(k, ComponentArgument.textComponent(), (reader, cause, result) -> SpongeAdventure.asAdventure(result)));
        l.add(ResourceKeyedValueParameters.TEXT_JSON_ALL, k -> ClientNativeArgumentParser.createConverter(k, StringArgumentType.greedyString(), (reader, cause, result) -> GsonComponentSerializer.gson().deserialize(result)));
        l.add(ResourceKeyedValueParameters.URL, k -> ClientNativeArgumentParser.createConverter(k, StringArgumentType.string(), (reader, cause, input) -> {
            try {
                return new URL(input);
            } catch (final MalformedURLException ex) {
                throw new SimpleCommandExceptionType(new TextComponent("Could not parse " + input + " as a URL")).createWithContext(reader);
            }
        }));
        l.add(ResourceKeyedValueParameters.USER, SpongeUserValueParameter::new);
        l.add(ResourceKeyedValueParameters.UUID, k -> ClientNativeArgumentParser.createIdentity(k, UuidArgument.uuid()));
        l.add(ResourceKeyedValueParameters.VECTOR2D, k -> ClientNativeArgumentParser.createConverter(k, Vec2Argument.vec2(), (reader, cause, result) -> {
            final net.minecraft.world.phys.Vec3 r = result.getPosition((CommandSourceStack) cause);
            return new Vector2d(r.x, r.z);
        }));
        l.add(ResourceKeyedValueParameters.VECTOR3D, k -> ClientNativeArgumentParser.createConverter(k, Vec3Argument.vec3(false), (reader, cause, result) -> VecHelper.toVector3d(result.getPosition((CommandSourceStack) cause))));
        l.add(ResourceKeyedValueParameters.WORLD, k -> ClientNativeArgumentParser.createConverter(k, DimensionArgument.dimension(), (reader, cause, result) -> Sponge.server().worldManager().world((ResourceKey) (Object) result).orElseThrow(() -> DimensionArgumentAccessor.accessor$ERROR_INVALID_VALUE().createWithContext(reader, result))));
    });
}
Also used : BlockOperation(org.spongepowered.common.block.transaction.BlockOperation) LensQuery(org.spongepowered.common.inventory.query.type.LensQuery) ChunkRegenerateFlag(org.spongepowered.api.world.ChunkRegenerateFlag) DataFormat(org.spongepowered.api.data.persistence.DataFormat) SpongeAdventure(org.spongepowered.common.adventure.SpongeAdventure) ResourceLocationArgument(net.minecraft.commands.arguments.ResourceLocationArgument) ItemStack(org.spongepowered.api.item.inventory.ItemStack) SpongeMapColorType(org.spongepowered.common.map.color.SpongeMapColorType) HorseColors(org.spongepowered.api.data.type.HorseColors) Map(java.util.Map) PaletteType(org.spongepowered.api.world.schematic.PaletteType) Vector2d(org.spongepowered.math.vector.Vector2d) EntitySelectorParser(net.minecraft.commands.arguments.selector.EntitySelectorParser) SpongeDurationValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeDurationValueParameter) SpongeGoalExecutorType(org.spongepowered.common.entity.ai.SpongeGoalExecutorType) SpongeDamageType(org.spongepowered.common.event.cause.entity.damage.SpongeDamageType) HorseStyles(org.spongepowered.api.data.type.HorseStyles) DamageType(org.spongepowered.api.event.cause.entity.damage.DamageType) SpongeDismountType(org.spongepowered.common.event.cause.entity.SpongeDismountType) SpongeHorseColor(org.spongepowered.common.data.type.SpongeHorseColor) CommandTreeNodeType(org.spongepowered.api.command.registrar.tree.CommandTreeNodeType) AccountDeletionResultType(org.spongepowered.api.service.economy.account.AccountDeletionResultType) ItemTypeQuery(org.spongepowered.common.inventory.query.type.ItemTypeQuery) PortalTypes(org.spongepowered.api.world.portal.PortalTypes) MapDecoration(net.minecraft.world.level.saveddata.maps.MapDecoration) DisplaySlot(org.spongepowered.api.scoreboard.displayslot.DisplaySlot) SpongeEntityCommandTreeNodeType(org.spongepowered.common.command.registrar.tree.key.SpongeEntityCommandTreeNodeType) BlockState(org.spongepowered.api.block.BlockState) MapShades(org.spongepowered.api.map.color.MapShades) DoubleArgumentType(com.mojang.brigadier.arguments.DoubleArgumentType) SpongeMaxOperator(org.spongepowered.common.command.parameter.managed.operator.SpongeMaxOperator) WeatherTypes(org.spongepowered.api.world.weather.WeatherTypes) ReverseQuery(org.spongepowered.common.inventory.query.type.ReverseQuery) Player(org.spongepowered.api.entity.living.player.Player) ItemStackIgnoreQuantityQuery(org.spongepowered.common.inventory.query.type.ItemStackIgnoreQuantityQuery) SelectorSortAlgorithms(org.spongepowered.api.command.selector.SelectorSortAlgorithms) GoalExecutorTypes(org.spongepowered.api.entity.ai.goal.GoalExecutorTypes) DimensionArgumentAccessor(org.spongepowered.common.accessor.commands.arguments.DimensionArgumentAccessor) WeatherType(org.spongepowered.api.world.weather.WeatherType) SpongeTagType(org.spongepowered.common.tag.SpongeTagType) PotionEffectType(org.spongepowered.api.effect.potion.PotionEffectType) CommandSourceStack(net.minecraft.commands.CommandSourceStack) Ban(org.spongepowered.api.service.ban.Ban) ClientNativeArgumentParser(org.spongepowered.common.command.brigadier.argument.ClientNativeArgumentParser) DimensionArgument(net.minecraft.commands.arguments.DimensionArgument) Operations(org.spongepowered.api.block.transaction.Operations) LinkedHashMap(java.util.LinkedHashMap) BoolArgumentType(com.mojang.brigadier.arguments.BoolArgumentType) EntityArgument(net.minecraft.commands.arguments.EntityArgument) ParticleOption(org.spongepowered.api.effect.particle.ParticleOption) MapDecorationOrientation(org.spongepowered.api.map.decoration.orientation.MapDecorationOrientation) EnumProperty(net.minecraft.world.level.block.state.properties.EnumProperty) BooleanStateProperty(org.spongepowered.api.state.BooleanStateProperty) ResourceKey(org.spongepowered.api.ResourceKey) TransactionType(org.spongepowered.common.event.tracking.context.transaction.type.TransactionType) SpongeDateTimeValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeDateTimeValueParameter) LongArgumentType(com.mojang.brigadier.arguments.LongArgumentType) Orientations(org.spongepowered.api.util.orientation.Orientations) EnumStateProperty(org.spongepowered.api.state.EnumStateProperty) LightType(org.spongepowered.api.world.LightType) CommandRegistrarType(org.spongepowered.api.command.registrar.CommandRegistrarType) IntegerArgumentSerializer(net.minecraft.commands.synchronization.brigadier.IntegerArgumentSerializer) RegistryTypes(org.spongepowered.api.registry.RegistryTypes) CatType(org.spongepowered.api.data.type.CatType) DamageModifierType(org.spongepowered.api.event.cause.entity.damage.DamageModifierType) TeleportHelperFilter(org.spongepowered.api.world.teleport.TeleportHelperFilter) SpongeIPAddressValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeIPAddressValueParameter) BodyPart(org.spongepowered.api.data.type.BodyPart) SuggestionProviders(net.minecraft.commands.synchronization.SuggestionProviders) SelectorTypes(org.spongepowered.api.command.selector.SelectorTypes) RabbitType(org.spongepowered.api.data.type.RabbitType) TeleportHelperFilters(org.spongepowered.api.world.teleport.TeleportHelperFilters) SelectorSortAlgorithm(org.spongepowered.api.command.selector.SelectorSortAlgorithm) HorseStyle(org.spongepowered.api.data.type.HorseStyle) Operation(org.spongepowered.api.block.transaction.Operation) SpongeBigDecimalValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeBigDecimalValueParameter) SpongeOrientation(org.spongepowered.common.util.SpongeOrientation) MapColorType(org.spongepowered.api.map.color.MapColorType) ParrotTypes(org.spongepowered.api.data.type.ParrotTypes) Items(net.minecraft.world.item.Items) CatTypes(org.spongepowered.api.data.type.CatTypes) MusicDisc(org.spongepowered.api.effect.sound.music.MusicDisc) FluidType(org.spongepowered.api.fluid.FluidType) SpongeDisplaySlotFactory(org.spongepowered.common.scoreboard.SpongeDisplaySlotFactory) GoalType(org.spongepowered.api.entity.ai.goal.GoalType) Vec2Argument(net.minecraft.commands.arguments.coordinates.Vec2Argument) QueryType(org.spongepowered.api.item.inventory.query.QueryType) PaletteTypes(org.spongepowered.api.world.schematic.PaletteTypes) RabbitTypes(org.spongepowered.api.data.type.RabbitTypes) FindNearestAttackableTargetGoal(org.spongepowered.api.entity.ai.goal.builtin.creature.target.FindNearestAttackableTargetGoal) SpongeRabbitType(org.spongepowered.common.data.type.SpongeRabbitType) LookRandomlyGoal(org.spongepowered.api.entity.ai.goal.builtin.LookRandomlyGoal) Locatable(org.spongepowered.api.world.Locatable) SpongeStringCommandTreeNodeType(org.spongepowered.common.command.registrar.tree.key.SpongeStringCommandTreeNodeType) SpongeBasicCommandTreeNodeType(org.spongepowered.common.command.registrar.tree.key.SpongeBasicCommandTreeNodeType) Locale(java.util.Locale) RecordItem(net.minecraft.world.item.RecordItem) SpongeOperator(org.spongepowered.common.command.parameter.managed.operator.SpongeOperator) NotePitch(org.spongepowered.api.data.type.NotePitch) SpongeTargetEntityValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeTargetEntityValueParameter) MovementType(org.spongepowered.api.event.cause.entity.MovementType) SpongeNoneValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeNoneValueParameter) SpongeClickType(org.spongepowered.common.inventory.menu.handler.SpongeClickType) SpongeRangeCommandTreeNodeType(org.spongepowered.common.command.registrar.tree.key.SpongeRangeCommandTreeNodeType) Sponge(org.spongepowered.api.Sponge) ArgumentType(com.mojang.brigadier.arguments.ArgumentType) QueryTypes(org.spongepowered.api.item.inventory.query.QueryTypes) ChunkRegenerateFlags(org.spongepowered.api.world.ChunkRegenerateFlags) Collectors(java.util.stream.Collectors) SpongeParameterizedCommandRegistrar(org.spongepowered.common.command.registrar.SpongeParameterizedCommandRegistrar) ClickTypes(org.spongepowered.api.item.inventory.menu.ClickTypes) UnknownPortalType(org.spongepowered.common.world.portal.UnknownPortalType) MatterType(org.spongepowered.api.data.type.MatterType) SpongePlaceholderParserBuilder(org.spongepowered.common.placeholder.SpongePlaceholderParserBuilder) GridQuery(org.spongepowered.common.inventory.query.type.GridQuery) AttackLivingGoal(org.spongepowered.api.entity.ai.goal.builtin.creature.AttackLivingGoal) SpongeLightType(org.spongepowered.common.world.SpongeLightType) SpongeUserValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeUserValueParameter) BlockType(org.spongepowered.api.block.BlockType) SpongeCommandRegistrarTypes(org.spongepowered.common.command.registrar.SpongeCommandRegistrarTypes) SpongeDamageModifierType(org.spongepowered.common.event.cause.entity.damage.SpongeDamageModifierType) ValidationType(org.spongepowered.common.data.nbt.validation.ValidationType) MapDecorationType(org.spongepowered.api.map.decoration.MapDecorationType) SpongeDisplaySlot(org.spongepowered.common.scoreboard.SpongeDisplaySlot) SpongeTransactionType(org.spongepowered.common.economy.SpongeTransactionType) Orientation(org.spongepowered.api.util.orientation.Orientation) DamageModifierTypes(org.spongepowered.api.event.cause.entity.damage.DamageModifierTypes) SpongeServerLocationValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeServerLocationValueParameter) AvoidLivingGoal(org.spongepowered.api.entity.ai.goal.builtin.creature.AvoidLivingGoal) Function(java.util.function.Function) StringArgumentType(com.mojang.brigadier.arguments.StringArgumentType) PlaceholderParser(org.spongepowered.api.placeholder.PlaceholderParser) SpongeSelectorType(org.spongepowered.common.command.selector.SpongeSelectorType) SkinPart(org.spongepowered.api.data.type.SkinPart) BlockStateArgument(net.minecraft.commands.arguments.blocks.BlockStateArgument) GsonComponentSerializer(net.kyori.adventure.text.serializer.gson.GsonComponentSerializer) ConfigTeleportHelperFilter(org.spongepowered.common.world.teleport.ConfigTeleportHelperFilter) BanTypes(org.spongepowered.api.service.ban.BanTypes) CompoundTagArgument(net.minecraft.commands.arguments.CompoundTagArgument) CommandTreeNodeTypes(org.spongepowered.api.command.registrar.tree.CommandTreeNodeTypes) LlamaType(org.spongepowered.api.data.type.LlamaType) MovementTypes(org.spongepowered.api.event.cause.entity.MovementTypes) Vec2(net.minecraft.world.phys.Vec2) DyeColors(org.spongepowered.api.data.type.DyeColors) SpongeMultiplicationOperator(org.spongepowered.common.command.parameter.managed.operator.SpongeMultiplicationOperator) EntityType(org.spongepowered.api.entity.EntityType) SpawnTypes(org.spongepowered.api.event.cause.entity.SpawnTypes) Comparator(java.util.Comparator) ScoreHolderArgument(net.minecraft.commands.arguments.ScoreHolderArgument) SpongeMusicDisc(org.spongepowered.common.effect.record.SpongeMusicDisc) ItemArgument(net.minecraft.commands.arguments.item.ItemArgument) SpongeSpawnType(org.spongepowered.common.event.cause.entity.SpongeSpawnType) IntegerStateProperty(org.spongepowered.api.state.IntegerStateProperty) SpongeOneParamQueryType(org.spongepowered.common.inventory.query.SpongeOneParamQueryType) ClientCompletionType(org.spongepowered.api.command.parameter.managed.clientcompletion.ClientCompletionType) EndPortalType(org.spongepowered.common.world.portal.EndPortalType) BodyParts(org.spongepowered.api.data.type.BodyParts) SpawnType(org.spongepowered.api.event.cause.entity.SpawnType) HoconDataFormat(org.spongepowered.common.data.persistence.HoconDataFormat) TransactionTypes(org.spongepowered.common.event.tracking.context.transaction.type.TransactionTypes) LlamaTypes(org.spongepowered.api.data.type.LlamaTypes) SpongeMapDecorationOrientation(org.spongepowered.common.map.decoration.orientation.SpongeMapDecorationOrientation) MatterTypes(org.spongepowered.api.data.type.MatterTypes) BooleanProperty(net.minecraft.world.level.block.state.properties.BooleanProperty) TagType(org.spongepowered.api.tag.TagType) SpongeDivisionOperator(org.spongepowered.common.command.parameter.managed.operator.SpongeDivisionOperator) DisplaySlots(org.spongepowered.api.scoreboard.displayslot.DisplaySlots) SpongeParticleOption(org.spongepowered.common.effect.particle.SpongeParticleOption) SpongeQueryTypes(org.spongepowered.common.inventory.query.SpongeQueryTypes) SpongeMatterType(org.spongepowered.common.data.type.SpongeMatterType) NoOpTransactionType(org.spongepowered.common.event.tracking.context.transaction.type.NoOpTransactionType) SpongeGameProfileValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeGameProfileValueParameter) RunAroundLikeCrazyGoal(org.spongepowered.api.entity.ai.goal.builtin.creature.horse.RunAroundLikeCrazyGoal) NoPortalTeleportHelperFilter(org.spongepowered.common.world.teleport.NoPortalTeleportHelperFilter) GoalTypes(org.spongepowered.api.entity.ai.goal.GoalTypes) UuidArgument(net.minecraft.commands.arguments.UuidArgument) MusicDiscs(org.spongepowered.api.effect.sound.music.MusicDiscs) SpongeModulusOperator(org.spongepowered.common.command.parameter.managed.operator.SpongeModulusOperator) Direction(org.spongepowered.api.util.Direction) TextComponent(net.minecraft.network.chat.TextComponent) ResolveOperation(org.spongepowered.api.adventure.ResolveOperation) SpongePluginContainerValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongePluginContainerValueParameter) PlayerPrimaryHotbarFirstQuery(org.spongepowered.common.inventory.query.type.PlayerPrimaryHotbarFirstQuery) TicketType(org.spongepowered.api.world.server.TicketType) SpongeMinOperator(org.spongepowered.common.command.parameter.managed.operator.SpongeMinOperator) TagTypes(org.spongepowered.api.tag.TagTypes) BlockTransactionType(org.spongepowered.common.event.tracking.context.transaction.type.BlockTransactionType) IntegerArgumentType(com.mojang.brigadier.arguments.IntegerArgumentType) FloatArgumentSerializer(net.minecraft.commands.synchronization.brigadier.FloatArgumentSerializer) LongArgumentSerializer(net.minecraft.commands.synchronization.brigadier.LongArgumentSerializer) ClickType(org.spongepowered.api.item.inventory.menu.ClickType) SpongeTargetBlockValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeTargetBlockValueParameter) ArgumentTypesAccessor(org.spongepowered.common.accessor.commands.synchronization.ArgumentTypesAccessor) SpongeBodyPart(org.spongepowered.common.data.type.SpongeBodyPart) SpongeAccountDeletionResultType(org.spongepowered.common.economy.SpongeAccountDeletionResultType) BrigadierCommandRegistrar(org.spongepowered.common.command.registrar.BrigadierCommandRegistrar) SpongeSkinPart(org.spongepowered.common.data.type.SpongeSkinPart) LookAtGoal(org.spongepowered.api.entity.ai.goal.builtin.LookAtGoal) ComponentArgument(net.minecraft.commands.arguments.ComponentArgument) SpongeChunkRegenerateFlag(org.spongepowered.common.world.SpongeChunkRegenerateFlag) ItemStackExactQuery(org.spongepowered.common.inventory.query.type.ItemStackExactQuery) SurfaceOnlyTeleportHelperFilter(org.spongepowered.common.world.teleport.SurfaceOnlyTeleportHelperFilter) MapDecorationOrientations(org.spongepowered.api.map.decoration.orientation.MapDecorationOrientations) BlockStateSerializerDeserializer(org.spongepowered.common.block.BlockStateSerializerDeserializer) SpongeGoalType(org.spongepowered.common.entity.ai.goal.SpongeGoalType) SkinParts(org.spongepowered.api.data.type.SkinParts) SpongeNotePitch(org.spongepowered.common.data.type.SpongeNotePitch) ValidationTypes(org.spongepowered.common.data.nbt.validation.ValidationTypes) SwimGoal(org.spongepowered.api.entity.ai.goal.builtin.SwimGoal) SpongeBanType(org.spongepowered.common.ban.SpongeBanType) SpongeResolveOperation(org.spongepowered.common.adventure.SpongeResolveOperation) SpongeWeatherType(org.spongepowered.common.world.weather.SpongeWeatherType) RegistryType(org.spongepowered.api.registry.RegistryType) SpongeDataContainerValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeDataContainerValueParameter) LightTypes(org.spongepowered.api.world.LightTypes) Entity(org.spongepowered.api.entity.Entity) SpongeParrotType(org.spongepowered.common.data.type.SpongeParrotType) ItemStackCustomQuery(org.spongepowered.common.inventory.query.type.ItemStackCustomQuery) SpongeMapDecorationBannerType(org.spongepowered.common.map.decoration.SpongeMapDecorationBannerType) SpongeOperatorValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeOperatorValueParameter) VecHelper(org.spongepowered.common.util.VecHelper) KeyValueMatcherQuery(org.spongepowered.common.inventory.query.type.KeyValueMatcherQuery) SpongeCatType(org.spongepowered.common.data.type.SpongeCatType) Operator(org.spongepowered.api.command.parameter.managed.operator.Operator) PortalType(org.spongepowered.api.world.portal.PortalType) ParticleOptions(org.spongepowered.api.effect.particle.ParticleOptions) NetherPortalType(org.spongepowered.common.world.portal.NetherPortalType) SpongeMapDecorationType(org.spongepowered.common.map.decoration.SpongeMapDecorationType) URL(java.net.URL) GameProfileArgument(net.minecraft.commands.arguments.GameProfileArgument) ItemStackSnapshot(org.spongepowered.api.item.inventory.ItemStackSnapshot) BanType(org.spongepowered.api.service.ban.BanType) RotationArgument(net.minecraft.commands.arguments.coordinates.RotationArgument) MaterialColor(net.minecraft.world.level.material.MaterialColor) SpongeSubtractionOperator(org.spongepowered.common.command.parameter.managed.operator.SpongeSubtractionOperator) Registry(net.minecraft.core.Registry) PlaceholderParsers(org.spongepowered.api.placeholder.PlaceholderParsers) JsonDataFormat(org.spongepowered.common.data.persistence.JsonDataFormat) CommandCompletionProvider(org.spongepowered.api.command.registrar.tree.CommandCompletionProvider) ParrotType(org.spongepowered.api.data.type.ParrotType) SpongeAmountCommandTreeNodeType(org.spongepowered.common.command.registrar.tree.key.SpongeAmountCommandTreeNodeType) MapDecorationTypes(org.spongepowered.api.map.decoration.MapDecorationTypes) SpongeClientCompletionType(org.spongepowered.common.command.parameter.managed.clientcompletion.SpongeClientCompletionType) UnionQuery(org.spongepowered.common.inventory.query.type.UnionQuery) Operators(org.spongepowered.api.command.parameter.managed.operator.Operators) Nameable(org.spongepowered.api.util.Nameable) SlotLensQuery(org.spongepowered.common.inventory.query.type.SlotLensQuery) HorseColor(org.spongepowered.api.data.type.HorseColor) SpongeTwoParamQueryType(org.spongepowered.common.inventory.query.SpongeTwoParamQueryType) SpongePaletteType(org.spongepowered.common.world.schematic.SpongePaletteType) DismountTypes(org.spongepowered.api.event.cause.entity.DismountTypes) DamageTypes(org.spongepowered.api.event.cause.entity.damage.DamageTypes) SpongeLlamaType(org.spongepowered.common.data.type.SpongeLlamaType) DismountType(org.spongepowered.api.event.cause.entity.DismountType) DoubleArgumentSerializer(net.minecraft.commands.synchronization.brigadier.DoubleArgumentSerializer) SpongeBigIntegerValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeBigIntegerValueParameter) KeyValueMatcher(org.spongepowered.api.data.KeyValueMatcher) GoalExecutorType(org.spongepowered.api.entity.ai.goal.GoalExecutorType) SpongeItemStackSnapshot(org.spongepowered.common.item.SpongeItemStackSnapshot) AccountDeletionResultTypes(org.spongepowered.api.service.economy.account.AccountDeletionResultTypes) SelectorType(org.spongepowered.api.command.selector.SelectorType) Pattern(java.util.regex.Pattern) ValueParameter(org.spongepowered.api.command.parameter.managed.ValueParameter) NonNull(org.checkerframework.checker.nullness.qual.NonNull) Vec3Argument(net.minecraft.commands.arguments.coordinates.Vec3Argument) HashMap(java.util.HashMap) FlyingTeleportHelperFilter(org.spongepowered.common.world.teleport.FlyingTeleportHelperFilter) SimpleCommandExceptionType(com.mojang.brigadier.exceptions.SimpleCommandExceptionType) NotePitches(org.spongepowered.api.data.type.NotePitches) SpongeHorseStyle(org.spongepowered.common.data.type.SpongeHorseStyle) DataFormats(org.spongepowered.api.data.persistence.DataFormats) SpongeSelectorSortAlgorithm(org.spongepowered.common.command.selector.SpongeSelectorSortAlgorithm) Component(net.kyori.adventure.text.Component) SpongeSpawnTypes(org.spongepowered.common.event.cause.entity.SpongeSpawnTypes) MapShade(org.spongepowered.api.map.color.MapShade) LegacyComponentSerializer(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer) MapColorTypes(org.spongepowered.api.map.color.MapColorTypes) NBTDataFormat(org.spongepowered.common.data.persistence.NBTDataFormat) RandomWalkingGoal(org.spongepowered.api.entity.ai.goal.builtin.creature.RandomWalkingGoal) RangedAttackAgainstAgentGoal(org.spongepowered.api.entity.ai.goal.builtin.creature.RangedAttackAgainstAgentGoal) TicketTypes(org.spongepowered.api.world.server.TicketTypes) RegistryKey(org.spongepowered.api.registry.RegistryKey) InventoryTypeQuery(org.spongepowered.common.inventory.query.type.InventoryTypeQuery) EmptyArgumentSerializerAccessor(org.spongepowered.common.accessor.commands.synchronization.EmptyArgumentSerializerAccessor) MalformedURLException(java.net.MalformedURLException) SpongeMovementType(org.spongepowered.common.event.cause.entity.SpongeMovementType) ResourceKeyedValueParameters(org.spongepowered.api.command.parameter.managed.standard.ResourceKeyedValueParameters) SpongeAdditionOperator(org.spongepowered.common.command.parameter.managed.operator.SpongeAdditionOperator) SpongeRawCommandRegistrar(org.spongepowered.common.command.registrar.SpongeRawCommandRegistrar) TypeQuery(org.spongepowered.common.inventory.query.type.TypeQuery) IntegerProperty(net.minecraft.world.level.block.state.properties.IntegerProperty) SpongeTicketType(org.spongepowered.common.world.server.SpongeTicketType) Vector3d(org.spongepowered.math.vector.Vector3d) ClientCompletionTypes(org.spongepowered.api.command.parameter.managed.clientcompletion.ClientCompletionTypes) ResolveOperations(org.spongepowered.api.adventure.ResolveOperations) SpongeValidationType(org.spongepowered.common.data.nbt.validation.SpongeValidationType) Color(org.spongepowered.api.util.Color) SpongeMapShade(org.spongepowered.common.map.color.SpongeMapShade) ItemType(org.spongepowered.api.item.ItemType) SpongeColorValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeColorValueParameter) CommandCompletionProviders(org.spongepowered.api.command.registrar.tree.CommandCompletionProviders) DefaultTeleportHelperFilter(org.spongepowered.common.world.teleport.DefaultTeleportHelperFilter) Vector3i(org.spongepowered.math.vector.Vector3i) Entity(org.spongepowered.api.entity.Entity) MalformedURLException(java.net.MalformedURLException) SpongeOperatorValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeOperatorValueParameter) SpongePluginContainerValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongePluginContainerValueParameter) SpongeDurationValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeDurationValueParameter) SpongeNoneValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeNoneValueParameter) SpongeTargetEntityValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeTargetEntityValueParameter) CommandSourceStack(net.minecraft.commands.CommandSourceStack) URL(java.net.URL) SpongeBigIntegerValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeBigIntegerValueParameter) SpongeColorValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeColorValueParameter) Vector2d(org.spongepowered.math.vector.Vector2d) SpongeServerLocationValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeServerLocationValueParameter) Vec2(net.minecraft.world.phys.Vec2) SimpleCommandExceptionType(com.mojang.brigadier.exceptions.SimpleCommandExceptionType) TextComponent(net.minecraft.network.chat.TextComponent) Player(org.spongepowered.api.entity.living.player.Player) SpongeTargetBlockValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeTargetBlockValueParameter) SpongeDataContainerValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeDataContainerValueParameter) ResourceKey(org.spongepowered.api.ResourceKey) SpongeItemStackSnapshot(org.spongepowered.common.item.SpongeItemStackSnapshot) BlockState(org.spongepowered.api.block.BlockState) SpongeUserValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeUserValueParameter) SpongeGameProfileValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeGameProfileValueParameter) Vector3d(org.spongepowered.math.vector.Vector3d) SpongeBigDecimalValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeBigDecimalValueParameter) SpongeIPAddressValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeIPAddressValueParameter) SpongeDateTimeValueParameter(org.spongepowered.common.command.parameter.managed.standard.SpongeDateTimeValueParameter)

Aggregations

Locale (java.util.Locale)2 Collectors (java.util.stream.Collectors)2 Component (net.kyori.adventure.text.Component)2 Inject (com.google.inject.Inject)1 ArgumentType (com.mojang.brigadier.arguments.ArgumentType)1 BoolArgumentType (com.mojang.brigadier.arguments.BoolArgumentType)1 DoubleArgumentType (com.mojang.brigadier.arguments.DoubleArgumentType)1 IntegerArgumentType (com.mojang.brigadier.arguments.IntegerArgumentType)1 LongArgumentType (com.mojang.brigadier.arguments.LongArgumentType)1 StringArgumentType (com.mojang.brigadier.arguments.StringArgumentType)1 SimpleCommandExceptionType (com.mojang.brigadier.exceptions.SimpleCommandExceptionType)1 TypeToken (io.leangen.geantyref.TypeToken)1 MalformedURLException (java.net.MalformedURLException)1 URL (java.net.URL)1 Arrays (java.util.Arrays)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 Comparator (java.util.Comparator)1 HashMap (java.util.HashMap)1 LinkedHashMap (java.util.LinkedHashMap)1