use of org.spongepowered.api.command.spec.CommandSpec in project SkinsRestorerX by DoNotSpamPls.
the class SkinsRestorer method onInitialize.
@Listener
public void onInitialize(GameInitializationEvent e) {
instance = this;
directory = Sponge.getGame().getConfigManager().getPluginConfig(this).getDirectory().toString();
try {
reloadConfigs();
} catch (Exception ex) {
ex.printStackTrace();
}
if (!Sponge.getServer().getOnlineMode())
Sponge.getEventManager().registerListener(this, ClientConnectionEvent.Login.class, new LoginListener());
CommandSpec skinCommand = CommandSpec.builder().description(Text.of("Set your skin")).arguments(GenericArguments.onlyOne(GenericArguments.string(Text.of("skin")))).executor(new SkinCommand()).build();
Sponge.getCommandManager().register(this, skinCommand, "skin");
}
use of org.spongepowered.api.command.spec.CommandSpec in project AdamantineShield by Karanum.
the class AdamantineShield method registerCommands.
private void registerCommands(CommandManager man) {
CommandSpec filterCommand = CommandSpec.builder().permission(Permissions.FILTER.get()).arguments(GenericArguments.allOf(GenericArguments.string(Text.of("filter")))).executor(new CommandFilter(this)).build();
CommandSpec helpCommand = CommandSpec.builder().executor(new CommandMain()).build();
CommandSpec inspectCommand = CommandSpec.builder().permission(Permissions.LOOKUP.get()).executor(new CommandInspect(this)).build();
CommandSpec lookupCommand = CommandSpec.builder().permission(Permissions.LOOKUP.get()).arguments(GenericArguments.allOf(GenericArguments.string(Text.of("filter")))).executor(new CommandLookup(this)).build();
CommandSpec nextPageCommand = CommandSpec.builder().permission(Permissions.LOOKUP.get()).executor(new CommandNextPage()).build();
CommandSpec pageCommand = CommandSpec.builder().permission(Permissions.LOOKUP.get()).arguments(GenericArguments.onlyOne(GenericArguments.integer(Text.of("page")))).executor(new CommandPage()).build();
CommandSpec prevPageCommand = CommandSpec.builder().permission(Permissions.LOOKUP.get()).executor(new CommandPrevPage()).build();
CommandSpec purgeCommand = CommandSpec.builder().permission(Permissions.PURGE.get()).arguments(GenericArguments.onlyOne(new TimeStringArgument(Text.of("time")))).executor(new CommandPurge(this)).build();
// CommandSpec reloadCommand = CommandSpec.builder()
// .permission(Permissions.RELOAD.get())
// .executor(new CommandReload())
// .build();
// CommandSpec rollbackCommand = CommandSpec.builder()
// .permission(Permissions.ROLLBACK.get())
// .arguments(GenericArguments.allOf(GenericArguments.string(Text.of("filter"))))
// .executor(new CommandRollback(this))
// .build();
//
// CommandSpec undoCommand = CommandSpec.builder()
// .permission(Permissions.UNDO.get())
// .arguments(GenericArguments.allOf(GenericArguments.string(Text.of("filter"))))
// .executor(new CommandUndo(this))
// .build();
CommandSpec parentCommand = CommandSpec.builder().description(Text.of("Main command for AdamantineShield")).child(inspectCommand, "inspect", "i").child(lookupCommand, "lookup", "l").child(filterCommand, "filter", "f").child(pageCommand, "page", "p").child(nextPageCommand, "nextpage", "next").child(prevPageCommand, "prevpage", "prev").child(purgeCommand, "purge").child(helpCommand, "help", "?").executor(new CommandMain()).build();
man.register(this, parentCommand, "ashield", "as");
}
use of org.spongepowered.api.command.spec.CommandSpec 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();
}
use of org.spongepowered.api.command.spec.CommandSpec in project LanternServer by LanternPowered.
the class CommandHelp method completeSpec.
@Override
public void completeSpec(PluginContainer pluginContainer, CommandSpec.Builder specBuilder) {
final Comparator<CommandMapping> comparator = Comparator.comparing(CommandMapping::getPrimaryAlias);
specBuilder.arguments(GenericArguments.optional(new CommandElement(Text.of("command")) {
@Nullable
@Override
protected Object parseValue(CommandSource source, CommandArgs args) throws ArgumentParseException {
return args.next();
}
@Override
public List<String> complete(CommandSource src, CommandArgs args, CommandContext context) {
final String nextArg = args.nextIfPresent().orElse("");
return Lantern.getGame().getCommandManager().getAliases().stream().filter(new StartsWithPredicate(nextArg)).collect(Collectors.toList());
}
})).description(Text.of("View a list of all commands")).extendedDescription(Text.of("View a list of all commands. Hover over\n" + " a command to view its description. Click\n" + " a command to insert it into your chat bar.")).executor((src, args) -> {
Optional<String> command = args.getOne("command");
if (command.isPresent()) {
Optional<? extends CommandMapping> mapping = Sponge.getCommandManager().get(command.get());
if (mapping.isPresent()) {
CommandCallable callable = mapping.get().getCallable();
Optional<? extends Text> desc;
// command name in the usage message
if (callable instanceof CommandSpec) {
Text.Builder builder = Text.builder();
callable.getShortDescription(src).ifPresent(des -> builder.append(des, Text.NEW_LINE));
builder.append(t("commands.generic.usage", t("/%s %s", command.get(), callable.getUsage(src))));
Text extendedDescription;
try {
// TODO: Why is there no method :(
extendedDescription = (Text) extendedDescriptionField.get(callable);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
if (extendedDescription != null) {
builder.append(Text.NEW_LINE, extendedDescription);
}
src.sendMessage(builder.build());
} else if ((desc = callable.getHelp(src)).isPresent()) {
src.sendMessage(desc.get());
} else {
src.sendMessage(t("commands.generic.usage", t("/%s %s", command.get(), callable.getUsage(src))));
}
return CommandResult.success();
}
throw new CommandException(Text.of("No such command: ", command.get()));
}
Lantern.getGame().getScheduler().submitAsyncTask(() -> {
TreeSet<CommandMapping> commands = new TreeSet<>(comparator);
commands.addAll(Collections2.filter(Sponge.getCommandManager().getAll().values(), input -> input.getCallable().testPermission(src)));
final Text title = Text.builder("Available commands:").color(TextColors.DARK_GREEN).build();
final List<Text> lines = commands.stream().map(c -> getDescription(src, c)).collect(Collectors.toList());
// Console sources cannot see/use the pagination
if (!(src instanceof ConsoleSource)) {
Sponge.getGame().getServiceManager().provide(PaginationService.class).get().builder().title(title).padding(Text.of(TextColors.DARK_GREEN, "=")).contents(lines).sendTo(src);
} else {
src.sendMessage(title);
src.sendMessages(lines);
}
return null;
});
return CommandResult.success();
});
}
use of org.spongepowered.api.command.spec.CommandSpec in project SpongeAPI by SpongePowered.
the class ChildCommandElementExecutor method execute.
@Override
public CommandResult execute(CommandSource src, CommandContext args) throws CommandException {
CommandMapping mapping = args.<CommandMapping>getOne(getUntranslatedKey()).orElse(null);
if (mapping == null) {
if (this.fallbackExecutor == null) {
throw new CommandException(t("Invalid subcommand state -- no more than one mapping may be provided for child arg %s", getKey()));
}
return this.fallbackExecutor.execute(src, args);
}
if (mapping.getCallable() instanceof CommandSpec) {
CommandSpec spec = ((CommandSpec) mapping.getCallable());
spec.checkPermission(src);
return spec.getExecutor().execute(src, args);
}
final String arguments = args.<String>getOne(getUntranslatedKey() + "_args").orElse("");
return mapping.getCallable().process(src, arguments);
}
Aggregations