mirror of
https://github.com/TotalFreedomMC/TotalFreedomMod.git
synced 2024-06-24 23:10:36 +00:00
055973aa37
Refractoring Reworked /saconfig Reworked part of the command system Removed unused config sections Refractored part of the config Fixed bugs with admin list Actually allow CONSOLE to have senior perms
107 lines
3.4 KiB
Java
107 lines
3.4 KiB
Java
package me.totalfreedom.totalfreedommod.command;
|
|
|
|
import me.totalfreedom.totalfreedommod.rank.PlayerRank;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.entity.Player;
|
|
|
|
@CommandPermissions(level = PlayerRank.NON_OP, source = SourceType.BOTH)
|
|
@CommandParameters(description = "Lists the real names of all online players.", usage = "/<command> [-a | -i]", aliases = "who")
|
|
public class Command_list extends FreedomCommand
|
|
{
|
|
|
|
private static enum ListFilter
|
|
{
|
|
|
|
ALL,
|
|
ADMINS,
|
|
IMPOSTORS;
|
|
}
|
|
|
|
@Override
|
|
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
|
{
|
|
if (args.length > 1)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (FUtil.isFromHostConsole(sender.getName()))
|
|
{
|
|
final List<String> names = new ArrayList<>();
|
|
for (Player player : server.getOnlinePlayers())
|
|
{
|
|
names.add(player.getName());
|
|
}
|
|
msg("There are " + names.size() + "/" + server.getMaxPlayers() + " players online:\n" + StringUtils.join(names, ", "), ChatColor.WHITE);
|
|
return true;
|
|
}
|
|
|
|
final ListFilter listFilter;
|
|
if (args.length == 1)
|
|
{
|
|
if ("-a".equals(args[0]))
|
|
{
|
|
listFilter = ListFilter.ADMINS;
|
|
}
|
|
else if ("-i".equals(args[0]))
|
|
{
|
|
listFilter = ListFilter.IMPOSTORS;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
listFilter = ListFilter.ALL;
|
|
}
|
|
|
|
final StringBuilder onlineStats = new StringBuilder();
|
|
final StringBuilder onlineUsers = new StringBuilder();
|
|
|
|
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().size());
|
|
onlineStats.append(ChatColor.BLUE).append(" out of a maximum ").append(ChatColor.RED).append(server.getMaxPlayers());
|
|
onlineStats.append(ChatColor.BLUE).append(" players online.");
|
|
|
|
final List<String> names = new ArrayList<>();
|
|
for (Player player : server.getOnlinePlayers())
|
|
{
|
|
if (listFilter == ListFilter.ADMINS && !plugin.al.isAdmin(player))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if (listFilter == ListFilter.IMPOSTORS && !plugin.al.isAdminImpostor(player))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
names.add(plugin.rm.getRank(player).getColoredTag() + player.getName());
|
|
}
|
|
|
|
onlineUsers.append("Connected ");
|
|
onlineUsers.append(listFilter == Command_list.ListFilter.ADMINS ? "admins: " : "players: ");
|
|
onlineUsers.append(StringUtils.join(names, ChatColor.WHITE + ", "));
|
|
|
|
if (senderIsConsole)
|
|
{
|
|
sender.sendMessage(ChatColor.stripColor(onlineStats.toString()));
|
|
sender.sendMessage(ChatColor.stripColor(onlineUsers.toString()));
|
|
}
|
|
else
|
|
{
|
|
sender.sendMessage(onlineStats.toString());
|
|
sender.sendMessage(onlineUsers.toString());
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|