Saber-Factions/src/main/java/com/massivecraft/factions/cmd/CmdAnnounce.java

57 lines
1.9 KiB
Java

package com.massivecraft.factions.cmd;
import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.util.TL;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.ArgumentBuilder;
import com.mojang.brigadier.builder.RequiredArgumentBuilder;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
public class CmdAnnounce extends FCommand {
public CmdAnnounce() {
super();
this.aliases.add("ann");
this.aliases.add("announce");
this.requiredArgs.add("message");
this.requirements = new CommandRequirements.Builder(Permission.ANNOUNCE)
.playerOnly()
.memberOnly()
.brigadier(AnnounceBrigadier.class)
.noErrorOnManyArgs()
.build();
}
@Override
public void perform(CommandContext context) {
String prefix = ChatColor.GREEN + context.faction.getTag() + ChatColor.YELLOW + " [" + ChatColor.GRAY + context.player.getName() + ChatColor.YELLOW + "] " + ChatColor.RESET;
String message = StringUtils.join(context.args, " ");
for (Player player : context.faction.getOnlinePlayers()) {
player.sendMessage(prefix + message);
}
// Add for offline players.
for (FPlayer fp : context.faction.getFPlayersWhereOnline(false)) {
context.faction.addAnnouncement(fp, prefix + message);
}
}
@Override
public TL getUsageTranslation() {
return TL.COMMAND_ANNOUNCE_DESCRIPTION;
}
protected class AnnounceBrigadier implements BrigadierProvider {
@Override
public ArgumentBuilder<Object, ?> get(ArgumentBuilder<Object, ?> parent) {
return parent.then(RequiredArgumentBuilder.argument("message", StringArgumentType.greedyString()));
}
}
}