use of io.github.nucleuspowered.nucleus.util.PermissionMessageChannel in project Nucleus by NucleusPowered.
the class KickCommand method executeCommand.
@Override
public CommandResult executeCommand(CommandSource src, CommandContext args) throws Exception {
Player pl = args.<Player>getOne(player).get();
String r = args.<String>getOne(reason).orElse(plugin.getMessageProvider().getMessageWithFormat("command.kick.defaultreason"));
if (permissions.testSuffix(pl, "exempt.target", src, false)) {
throw new ReturnMessageException(plugin.getMessageProvider().getTextMessageWithFormat("command.kick.exempt", pl.getName()));
}
pl.kick(TextSerializers.FORMATTING_CODE.deserialize(r));
MessageChannel mc = new PermissionMessageChannel(permissions.getPermissionWithSuffix("notify"));
mc.send(plugin.getMessageProvider().getTextMessageWithFormat("command.kick.message", pl.getName(), src.getName()));
mc.send(plugin.getMessageProvider().getTextMessageWithFormat("command.reason", r));
return CommandResult.success();
}
use of io.github.nucleuspowered.nucleus.util.PermissionMessageChannel 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