use of org.spongepowered.api.command.CommandResult in project Nucleus by NucleusPowered.
the class TemporaryMessageCommand method executeCommand.
@Override
protected CommandResult executeCommand(CommandSource src, CommandContext args) throws Exception {
// Get the temporary message item.
ServerListGeneralDataModule mod = plugin.getGeneralService().get(ServerListGeneralDataModule.class);
if (args.hasAny("r")) {
if (mod.getMessage().isPresent()) {
// Remove
mod.remove();
// Send message.
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.serverlist.message.removed"));
return CommandResult.success();
}
throw ReturnMessageException.fromKey("command.serverlist.message.noremoved");
}
// Which line?
boolean linetwo = args.<Integer>getOne(line).map(x -> x == 2).orElse(false);
Optional<String> onMessage = args.getOne(this.message);
if (!onMessage.isPresent()) {
boolean isValid = mod.getExpiry().map(x -> x.isAfter(Instant.now())).orElse(false);
if (!isValid) {
throw ReturnMessageException.fromKey("command.serverlist.message.isempty");
}
if (linetwo) {
mod.setLineTwo(null);
} else {
mod.setLineOne(null);
}
Optional<Text> newMessage = mod.getMessage();
if (newMessage.isPresent()) {
// Send message
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.serverlist.message.set"));
src.sendMessage(newMessage.get());
} else {
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.serverlist.message.empty"));
}
return CommandResult.success();
}
String nMessage = onMessage.get();
// If the expiry is null or before now, and there is no timespan, then it's an hour.
Instant endTime = args.<Long>getOne(timespan).map(x -> Instant.now().plus(x, ChronoUnit.SECONDS)).orElseGet(() -> mod.getExpiry().map(x -> x.isBefore(Instant.now()) ? x.plusSeconds(3600) : x).orElseGet(() -> Instant.now().plusSeconds(3600)));
// Set the expiry.
mod.setExpiry(endTime);
if (linetwo) {
mod.setLineTwo(nMessage);
} else {
mod.setLineOne(nMessage);
}
Optional<Text> newMessage = mod.getMessage();
if (newMessage.isPresent()) {
// Send message
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.serverlist.message.set"));
src.sendMessage(newMessage.get());
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.serverlist.message.expiry", Util.getTimeToNow(endTime)));
return CommandResult.success();
}
throw ReturnMessageException.fromKey("command.serverlist.message.notset");
}
use of org.spongepowered.api.command.CommandResult in project Nucleus by NucleusPowered.
the class PowertoolCommand method executeCommand.
@Override
public CommandResult executeCommand(Player src, CommandContext args) throws Exception {
ItemStack itemStack = src.getItemInHand(HandTypes.MAIN_HAND).orElseThrow(() -> ReturnMessageException.fromKey("command.powertool.noitem"));
Optional<String> command = args.getOne(commandKey);
PowertoolUserDataModule inu = Nucleus.getNucleus().getUserDataManager().getUnchecked(src).get(PowertoolUserDataModule.class);
return command.map(s -> setPowertool(src, inu, itemStack.getType(), s)).orElseGet(() -> viewPowertool(src, inu, itemStack));
}
use of org.spongepowered.api.command.CommandResult in project Nucleus by NucleusPowered.
the class GameruleCommand method executeCommand.
@Override
public CommandResult executeCommand(CommandSource src, CommandContext args) throws Exception {
WorldProperties worldProperties = getWorldFromUserOrArgs(src, worldKey, args);
Map<String, String> gameRules = worldProperties.getGameRules();
String message = plugin.getMessageProvider().getMessageWithFormat("command.world.gamerule.key");
List<Text> text = gameRules.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).map(x -> Text.of(TextActions.suggestCommand(String.format("/world gamerule set %s %s ", worldProperties.getWorldName(), x.getKey())), TextSerializers.FORMATTING_CODE.deserialize(MessageFormat.format(message, x.getKey(), x.getValue())))).collect(Collectors.toList());
Util.getPaginationBuilder(src).title(plugin.getMessageProvider().getTextMessageWithFormat("command.world.gamerule.header", worldProperties.getWorldName())).contents(text).sendTo(src);
return CommandResult.success();
}
use of org.spongepowered.api.command.CommandResult in project Nucleus by NucleusPowered.
the class CheckWarningsCommand method executeCommand.
@Override
public CommandResult executeCommand(CommandSource src, CommandContext args) throws Exception {
User user = args.<User>getOne(playerKey).get();
handler.updateWarnings(user);
List<WarnData> warnings;
final List<WarnData> allWarnings = handler.getWarningsInternal(user);
if (args.hasAny("all")) {
warnings = allWarnings;
} else if (args.hasAny("expired")) {
warnings = allWarnings.stream().filter(WarnData::isExpired).collect(Collectors.toList());
} else {
warnings = allWarnings.stream().filter(x -> !x.isExpired()).collect(Collectors.toList());
}
if (warnings.isEmpty()) {
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.checkwarnings.none", user.getName()));
return CommandResult.success();
}
List<Text> messages = warnings.stream().sorted(Comparator.comparing(WarnData::getDate)).map(x -> createMessage(allWarnings, x, user)).collect(Collectors.toList());
messages.add(0, plugin.getMessageProvider().getTextMessageWithFormat("command.checkwarnings.info"));
PaginationService paginationService = Sponge.getGame().getServiceManager().provideUnchecked(PaginationService.class);
paginationService.builder().title(Text.builder().color(TextColors.GOLD).append(Text.of(plugin.getMessageProvider().getMessageWithFormat("command.checkwarnings.header", user.getName()))).build()).padding(Text.builder().color(TextColors.YELLOW).append(Text.of("=")).build()).contents(messages).sendTo(src);
return CommandResult.success();
}
use of org.spongepowered.api.command.CommandResult in project Nucleus by NucleusPowered.
the class WarnCommand method executeCommand.
@Override
public CommandResult executeCommand(CommandSource src, CommandContext args) throws Exception {
final User user = args.<User>getOne(playerKey).get();
Optional<Long> optDuration = args.getOne(durationKey);
String reason = args.<String>getOne(reasonKey).get();
if (permissions.testSuffix(user, "exempt.target", src, false)) {
throw ReturnMessageException.fromKey("command.warn.exempt", user.getName());
}
// Set default duration if no duration given
if (warnConfig.getDefaultLength() != -1 && !optDuration.isPresent()) {
optDuration = Optional.of(warnConfig.getDefaultLength());
}
UUID warner = Util.getUUID(src);
WarnData warnData = optDuration.map(aLong -> new WarnData(Instant.now(), warner, reason, Duration.ofSeconds(aLong))).orElseGet(() -> new WarnData(Instant.now(), warner, reason));
// Check if too long (No duration provided, it is infinite)
if (!optDuration.isPresent() && warnConfig.getMaximumWarnLength() != -1 && !permissions.testSuffix(src, "exempt.length")) {
throw ReturnMessageException.fromKey("command.warn.length.toolong", Util.getTimeStringFromSeconds(warnConfig.getMaximumWarnLength()));
}
// Check if too long
if (optDuration.orElse(Long.MAX_VALUE) > warnConfig.getMaximumWarnLength() && warnConfig.getMaximumWarnLength() != -1 && !permissions.testSuffix(src, "exempt.length")) {
throw ReturnMessageException.fromKey("command.warn.length.toolong", Util.getTimeStringFromSeconds(warnConfig.getMaximumWarnLength()));
}
// Check if too short
if (optDuration.orElse(Long.MAX_VALUE) < warnConfig.getMinimumWarnLength() && warnConfig.getMinimumWarnLength() != -1 && !permissions.testSuffix(src, "exempt.length")) {
throw ReturnMessageException.fromKey("command.warn.length.tooshort", Util.getTimeStringFromSeconds(warnConfig.getMinimumWarnLength()));
}
if (handler.addWarning(user, warnData)) {
MutableMessageChannel messageChannel = new PermissionMessageChannel(permissions.getPermissionWithSuffix("notify")).asMutable();
messageChannel.addMember(src);
if (optDuration.isPresent()) {
String time = Util.getTimeStringFromSeconds(optDuration.get());
messageChannel.send(plugin.getMessageProvider().getTextMessageWithFormat("command.warn.success.time", user.getName(), src.getName(), warnData.getReason(), time));
if (user.isOnline()) {
user.getPlayer().get().sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("warn.playernotify.time", warnData.getReason(), time));
}
} else {
messageChannel.send(plugin.getMessageProvider().getTextMessageWithFormat("command.warn.success.norm", user.getName(), src.getName(), warnData.getReason()));
if (user.isOnline()) {
user.getPlayer().get().sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("warn.playernotify.standard", warnData.getReason()));
}
}
// Check if the subject has action command should be executed
if (warnConfig.getWarningsBeforeAction() != -1) {
if (handler.getWarningsInternal(user, true, false).size() < warnConfig.getWarningsBeforeAction()) {
return CommandResult.success();
}
// Expire all active warnings
// The cause is the plugin, as this isn't directly the warning user.
CauseStackHelper.createFrameWithCausesWithConsumer(c -> handler.clearWarnings(user, false, false, c), src);
// Get and run the action command
String command = warnConfig.getActionCommand().replaceAll("\\{\\{name}}", user.getName());
Sponge.getCommandManager().process(Sponge.getServer().getConsole(), command);
}
return CommandResult.success();
}
throw ReturnMessageException.fromKey("command.warn.fail", user.getName());
}
Aggregations