use of org.spongepowered.api.text.channel.MutableMessageChannel in project Skree by Skelril.
the class SkyWarsInstance method awardPowerup.
public void awardPowerup(Player player, ItemStack held) {
ItemStack powerup;
Optional<String> optSuffix = SkyFeather.getSuffix(held);
if (optSuffix.isPresent() && optSuffix.get().equals("Doom")) {
return;
}
int uses = 5;
double radius = 3;
double flight = 2;
double pushBack = 4;
if (Probability.getChance(2)) {
radius = 5;
pushBack = 6;
} else {
flight = 6;
}
if (Probability.getChance(50)) {
uses = -1;
radius = 7;
flight = 6;
pushBack = 6;
MutableMessageChannel targets = getPlayerMessageChannel(PlayerClassifier.SPECTATOR).asMutable();
targets.removeMember(player);
targets.send(Text.of(TextColors.RED, player.getName(), " has been given a Doom feather!"));
player.getInventory().clear();
}
powerup = newItemStack(CustomItemTypes.SKY_FEATHER);
SkyFeather.setFeatherProperties(powerup, uses, radius, flight, pushBack);
player.getInventory().offer(powerup);
tf(player).inventoryContainer.detectAndSendChanges();
// Display name doesn't need checked as all power ups have one assigned
player.sendMessage(Text.of(TextColors.YELLOW, "You obtain a power-up!"));
}
use of org.spongepowered.api.text.channel.MutableMessageChannel in project UltimateChat by FabioZumbi12.
the class UCMessages method sendFancyMessage.
static MutableMessageChannel sendFancyMessage(String[] format, Text msg, UCChannel channel, CommandSource sender, CommandSource tellReceiver) {
// Execute listener:
HashMap<String, String> tags = new HashMap<>();
for (String str : UChat.get().getConfig().root().general.custom_tags) {
tags.put(str, str);
}
SendChannelMessageEvent event = new SendChannelMessageEvent(tags, format, sender, channel, msg, true);
Sponge.getEventManager().post(event);
if (event.isCancelled()) {
return null;
}
registeredReplacers = event.getResgisteredTags();
defFormat = event.getDefFormat();
String evmsg = event.getMessage().toPlain();
// send to event
MutableMessageChannel msgCh = MessageChannel.TO_CONSOLE.asMutable();
evmsg = UCChatProtection.filterChatMessage(sender, evmsg, event.getChannel());
if (evmsg == null) {
return null;
}
HashMap<CommandSource, Text> msgPlayers = new HashMap<>();
evmsg = composeColor(sender, evmsg);
Text srcText = Text.builder(event.getMessage(), evmsg).build();
if (event.getChannel() != null) {
UCChannel ch = event.getChannel();
if (sender instanceof Player && !ch.availableWorlds().isEmpty() && !ch.availableInWorld(((Player) sender).getWorld())) {
UChat.get().getLang().sendMessage(sender, UChat.get().getLang().get("channel.notavailable").replace("{channel}", ch.getName()));
return null;
}
if (!UChat.get().getPerms().channelWritePerm(sender, ch)) {
UChat.get().getLang().sendMessage(sender, UChat.get().getLang().get("channel.nopermission").replace("{channel}", ch.getName()));
return null;
}
if (!UChat.get().getPerms().hasPerm(sender, "bypass.cost") && UChat.get().getEco() != null && sender instanceof Player && ch.getCost() > 0) {
UniqueAccount acc = UChat.get().getEco().getOrCreateAccount(((Player) sender).getUniqueId()).get();
if (acc.getBalance(UChat.get().getEco().getDefaultCurrency()).doubleValue() < ch.getCost()) {
sender.sendMessage(UCUtil.toText(UChat.get().getLang().get("channel.cost").replace("{value}", "" + ch.getCost())));
return null;
} else {
acc.withdraw(UChat.get().getEco().getDefaultCurrency(), BigDecimal.valueOf(ch.getCost()), UChat.get().getVHelper().getCause(UChat.get().instance()));
}
}
int noWorldReceived = 0;
int vanish = 0;
List<Player> receivers = new ArrayList<>();
// put sender
msgPlayers.put(sender, sendMessage(sender, sender, srcText, ch, false));
msgCh.addMember(sender);
if (ch.getDistance() > 0 && sender instanceof Player) {
for (Player play : ((Player) sender).getNearbyEntities(ch.getDistance()).stream().filter(ent -> ent instanceof Player).map(p -> (Player) p).collect(Collectors.toList())) {
if (UChat.get().getPerms().channelReadPerm(play, ch)) {
if (sender.equals(play)) {
continue;
}
if (!ch.availableWorlds().isEmpty() && !ch.availableInWorld(play.getWorld())) {
continue;
}
if (ch.isIgnoring(play.getName())) {
continue;
}
if (isIgnoringPlayers(play.getName(), sender.getName())) {
noWorldReceived++;
continue;
}
if (!((Player) sender).canSee(play)) {
vanish++;
}
if (!ch.neeFocus() || ch.isMember(play)) {
msgPlayers.put(play, sendMessage(sender, play, srcText, ch, false));
receivers.add(play);
msgCh.addMember(play);
}
}
}
} else {
for (Player receiver : Sponge.getServer().getOnlinePlayers()) {
if (receiver.equals(sender) || !UChat.get().getPerms().channelReadPerm(receiver, ch) || (!ch.crossWorlds() && (sender instanceof Player && !receiver.getWorld().equals(((Player) sender).getWorld())))) {
continue;
}
if (!ch.availableWorlds().isEmpty() && !ch.availableInWorld(receiver.getWorld())) {
continue;
}
if (ch.isIgnoring(receiver.getName())) {
continue;
}
if (isIgnoringPlayers(receiver.getName(), sender.getName())) {
noWorldReceived++;
continue;
}
if (sender instanceof Player && !((Player) sender).canSee(receiver)) {
vanish++;
} else {
noWorldReceived++;
}
if (!ch.neeFocus() || ch.isMember(receiver)) {
msgPlayers.put(receiver, sendMessage(sender, receiver, srcText, ch, false));
receivers.add(receiver);
msgCh.addMember(receiver);
}
}
}
// chat spy
if (!sender.hasPermission("uchat.chat-spy.bypass")) {
for (Player receiver : Sponge.getServer().getOnlinePlayers()) {
if (!receiver.equals(sender) && !receivers.contains(receiver) && !receivers.contains(sender) && UChat.get().isSpy.contains(receiver.getName()) && UChat.get().getPerms().hasSpyPerm(receiver, ch.getName())) {
String spyformat = UChat.get().getConfig().root().general.spy_format;
spyformat = spyformat.replace("{output}", UCUtil.stripColor(sendMessage(sender, receiver, srcText, ch, true).toPlain()));
receiver.sendMessage(UCUtil.toText(spyformat));
}
}
}
if (ch.getDistance() == 0 && noWorldReceived <= 0) {
if (ch.getReceiversMsg()) {
UChat.get().getLang().sendMessage(sender, "channel.noplayer.world");
}
}
if ((receivers.size() - vanish) <= 0) {
if (ch.getReceiversMsg()) {
UChat.get().getLang().sendMessage(sender, "channel.noplayer.near");
}
}
} else {
if (UChat.get().msgTogglePlayers.contains(tellReceiver.getName()) && !sender.hasPermission("uchat.msgtoggle.exempt")) {
UChat.get().getLang().sendMessage(sender, "cmd.msgtoggle.msgdisabled");
return null;
}
channel = new UCChannel("tell");
// send spy
if (!sender.hasPermission("uchat.chat-spy.bypass")) {
for (Player receiver : Sponge.getServer().getOnlinePlayers()) {
if (!receiver.equals(tellReceiver) && !receiver.equals(sender) && UChat.get().isSpy.contains(receiver.getName()) && UChat.get().getPerms().hasSpyPerm(receiver, "private")) {
String spyformat = UChat.get().getConfig().root().general.spy_format;
if (isIgnoringPlayers(tellReceiver.getName(), sender.getName())) {
spyformat = UChat.get().getLang().get("chat.ignored") + spyformat;
}
spyformat = spyformat.replace("{output}", UCUtil.stripColor(sendMessage(sender, tellReceiver, srcText, channel, true).toPlain()));
receiver.sendMessage(UCUtil.toText(spyformat));
}
}
}
Text to = sendMessage(sender, tellReceiver, srcText, channel, false);
msgPlayers.put(tellReceiver, to);
msgPlayers.put(sender, to);
if (isIgnoringPlayers(tellReceiver.getName(), sender.getName())) {
to = Text.of(UCUtil.toText(UChat.get().getLang().get("chat.ignored")), to);
}
msgPlayers.put(Sponge.getServer().getConsole(), to);
}
if (!msgPlayers.keySet().contains(Sponge.getServer().getConsole())) {
msgPlayers.put(Sponge.getServer().getConsole(), msgPlayers.values().stream().findAny().get());
}
PostFormatChatMessageEvent postEvent = new PostFormatChatMessageEvent(sender, msgPlayers, channel);
Sponge.getEventManager().post(postEvent);
if (postEvent.isCancelled()) {
return null;
}
msgPlayers.forEach((send, text) -> {
UChat.get().getLogger().timings(timingType.END, "UCMessages#send()|before send");
send.sendMessage(text);
UChat.get().getLogger().timings(timingType.END, "UCMessages#send()|after send");
});
// send to jedis
if (channel != null && !channel.isTell() && UChat.get().getJedis() != null) {
UChat.get().getJedis().sendMessage(channel.getName().toLowerCase(), msgPlayers.get(sender));
}
// send to jda
if (channel != null && UChat.get().getUCJDA() != null) {
if (channel.isTell()) {
UChat.get().getUCJDA().sendTellToDiscord(msgPlayers.get(sender).toPlain());
} else {
UChat.get().getUCJDA().sendToDiscord(sender, evmsg, channel);
}
}
return msgCh;
}
use of org.spongepowered.api.text.channel.MutableMessageChannel in project Nucleus by NucleusPowered.
the class BanCommand method executeBan.
private CommandResult executeBan(CommandSource src, GameProfile u, String r) {
BanService service = Sponge.getServiceManager().provideUnchecked(BanService.class);
UserStorageService uss = Sponge.getServiceManager().provideUnchecked(UserStorageService.class);
User user = uss.get(u).get();
if (!user.isOnline() && !permissions.testSuffix(src, "offline")) {
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.ban.offline.noperms"));
return CommandResult.empty();
}
if (service.isBanned(u)) {
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.ban.alreadyset", u.getName().orElse(plugin.getMessageProvider().getMessageWithFormat("standard.unknown"))));
return CommandResult.empty();
}
// Create the ban.
Ban bp = Ban.builder().type(BanTypes.PROFILE).profile(u).source(src).reason(TextSerializers.FORMATTING_CODE.deserialize(r)).build();
service.addBan(bp);
// Get the permission, "quickstart.ban.notify"
MutableMessageChannel send = new PermissionMessageChannel(notifyPermission).asMutable();
send.addMember(src);
send.send(plugin.getMessageProvider().getTextMessageWithFormat("command.ban.applied", u.getName().orElse(plugin.getMessageProvider().getMessageWithFormat("standard.unknown")), src.getName()));
send.send(plugin.getMessageProvider().getTextMessageWithFormat("standard.reasoncoloured", r));
if (Sponge.getServer().getPlayer(u.getUniqueId()).isPresent()) {
Sponge.getServer().getPlayer(u.getUniqueId()).get().kick(TextSerializers.FORMATTING_CODE.deserialize(r));
}
return CommandResult.success();
}
use of org.spongepowered.api.text.channel.MutableMessageChannel in project Nucleus by NucleusPowered.
the class JailCommand method onJail.
private CommandResult onJail(CommandSource src, CommandContext args, User user) throws ReturnMessageException {
Optional<LocationData> owl = args.getOne(jailKey);
if (!owl.isPresent()) {
throw ReturnMessageException.fromKey("command.jail.jail.nojail");
}
// This might not be there.
Optional<Long> duration = args.getOne(durationKey);
String reason = args.<String>getOne(reasonKey).orElse(plugin.getMessageProvider().getMessageWithFormat("command.jail.reason"));
JailData jd;
Text message;
Text messageTo;
if (duration.isPresent()) {
if (user.isOnline()) {
jd = new JailData(Util.getUUID(src), owl.get().getName(), reason, user.getPlayer().get().getLocation(), Instant.now().plusSeconds(duration.get()));
} else {
jd = new JailData(Util.getUUID(src), owl.get().getName(), reason, null, Duration.of(duration.get(), ChronoUnit.SECONDS));
}
message = plugin.getMessageProvider().getTextMessageWithFormat("command.checkjail.jailedfor", user.getName(), jd.getJailName(), src.getName(), Util.getTimeStringFromSeconds(duration.get()));
messageTo = plugin.getMessageProvider().getTextMessageWithFormat("command.jail.jailedfor", owl.get().getName(), src.getName(), Util.getTimeStringFromSeconds(duration.get()));
} else {
jd = new JailData(Util.getUUID(src), owl.get().getName(), reason, user.getPlayer().map(Locatable::getLocation).orElse(null));
message = plugin.getMessageProvider().getTextMessageWithFormat("command.checkjail.jailedperm", user.getName(), owl.get().getName(), src.getName());
messageTo = plugin.getMessageProvider().getTextMessageWithFormat("command.jail.jailedperm", owl.get().getName(), src.getName());
}
if (handler.jailPlayer(user, jd)) {
MutableMessageChannel mc = new PermissionMessageChannel(permissions.getPermissionWithSuffix("notify")).asMutable();
mc.addMember(src);
mc.send(message);
mc.send(plugin.getMessageProvider().getTextMessageWithFormat("standard.reasoncoloured", reason));
user.getPlayer().ifPresent(x -> {
x.sendMessage(messageTo);
x.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("standard.reasoncoloured", reason));
});
return CommandResult.success();
}
throw ReturnMessageException.fromKey("command.jail.error");
}
use of org.spongepowered.api.text.channel.MutableMessageChannel 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