2015-10-19 17:43:46 +00:00
|
|
|
package me.totalfreedom.totalfreedommod.commands;
|
2012-09-17 16:29:43 +00:00
|
|
|
|
2015-10-19 17:43:46 +00:00
|
|
|
import me.totalfreedom.totalfreedommod.permission.PlayerRank;
|
|
|
|
import me.totalfreedom.totalfreedommod.util.DepreciationAggregator;
|
|
|
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
2012-09-17 16:29:43 +00:00
|
|
|
import org.bukkit.OfflinePlayer;
|
|
|
|
import org.bukkit.command.Command;
|
|
|
|
import org.bukkit.command.CommandSender;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
|
2015-10-19 17:43:46 +00:00
|
|
|
@CommandPermissions(level = PlayerRank.OP, source = SourceType.BOTH)
|
2013-04-10 02:05:24 +00:00
|
|
|
@CommandParameters(description = "Manage the whitelist.", usage = "/<command> <on | off | list | count | add <player> | remove <player> | addall | purge>")
|
2015-10-19 17:43:46 +00:00
|
|
|
public class Command_whitelist extends FreedomCommand
|
2012-09-17 16:29:43 +00:00
|
|
|
{
|
2015-10-19 17:43:46 +00:00
|
|
|
|
2012-09-17 23:46:59 +00:00
|
|
|
@Override
|
2012-09-17 16:29:43 +00:00
|
|
|
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
|
|
|
{
|
2012-09-17 23:46:59 +00:00
|
|
|
if (args.length < 1)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// list
|
|
|
|
if (args[0].equalsIgnoreCase("list"))
|
|
|
|
{
|
2015-10-19 17:43:46 +00:00
|
|
|
playerMsg("Whitelisted players: " + FUtil.playerListToNames(server.getWhitelistedPlayers()));
|
2012-09-17 23:46:59 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// count
|
|
|
|
if (args[0].equalsIgnoreCase("count"))
|
|
|
|
{
|
2012-09-17 16:29:43 +00:00
|
|
|
int onlineWPs = 0;
|
|
|
|
int offlineWPs = 0;
|
|
|
|
int totalWPs = 0;
|
|
|
|
|
2013-08-14 14:01:42 +00:00
|
|
|
for (OfflinePlayer player : server.getWhitelistedPlayers())
|
2012-09-17 16:29:43 +00:00
|
|
|
{
|
2013-08-14 14:01:42 +00:00
|
|
|
if (player.isOnline())
|
2012-09-17 16:29:43 +00:00
|
|
|
{
|
|
|
|
onlineWPs++;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
offlineWPs++;
|
|
|
|
}
|
|
|
|
totalWPs++;
|
|
|
|
}
|
|
|
|
|
2013-01-07 14:56:53 +00:00
|
|
|
playerMsg("Online whitelisted players: " + onlineWPs);
|
|
|
|
playerMsg("Offline whitelisted players: " + offlineWPs);
|
|
|
|
playerMsg("Total whitelisted players: " + totalWPs);
|
2012-09-17 16:29:43 +00:00
|
|
|
|
|
|
|
return true;
|
2012-09-17 23:46:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// all commands past this line are superadmin-only
|
2015-10-19 17:43:46 +00:00
|
|
|
if (!(senderIsConsole || plugin.al.isAdmin(sender)))
|
2012-09-17 23:46:59 +00:00
|
|
|
{
|
2015-10-19 17:43:46 +00:00
|
|
|
sender.sendMessage(FreedomCommand.MSG_NO_PERMS);
|
2012-09-17 23:46:59 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// on
|
|
|
|
if (args[0].equalsIgnoreCase("on"))
|
|
|
|
{
|
2015-10-19 17:43:46 +00:00
|
|
|
FUtil.adminAction(sender.getName(), "Turning the whitelist on.", true);
|
2012-09-17 23:46:59 +00:00
|
|
|
server.setWhitelist(true);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// off
|
|
|
|
if (args[0].equalsIgnoreCase("off"))
|
|
|
|
{
|
2015-10-19 17:43:46 +00:00
|
|
|
FUtil.adminAction(sender.getName(), "Turning the whitelist off.", true);
|
2012-09-17 23:46:59 +00:00
|
|
|
server.setWhitelist(false);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// add
|
|
|
|
if (args[0].equalsIgnoreCase("add"))
|
|
|
|
{
|
|
|
|
if (args.length < 2)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2012-09-18 00:32:59 +00:00
|
|
|
String search_name = args[1].trim().toLowerCase();
|
|
|
|
|
2014-04-26 11:55:24 +00:00
|
|
|
OfflinePlayer player = getPlayer(search_name);
|
2014-05-04 21:03:34 +00:00
|
|
|
|
2014-04-26 11:55:24 +00:00
|
|
|
if (player == null)
|
2012-09-17 23:46:59 +00:00
|
|
|
{
|
2015-10-19 17:43:46 +00:00
|
|
|
player = DepreciationAggregator.getOfflinePlayer(server, search_name);
|
2012-09-17 23:46:59 +00:00
|
|
|
}
|
|
|
|
|
2015-10-19 17:43:46 +00:00
|
|
|
FUtil.adminAction(sender.getName(), "Adding " + player.getName() + " to the whitelist.", false);
|
2013-08-14 14:01:42 +00:00
|
|
|
player.setWhitelisted(true);
|
2012-09-17 23:46:59 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// remove
|
2014-05-05 13:31:12 +00:00
|
|
|
if ("remove".equals(args[0]))
|
2012-09-17 23:46:59 +00:00
|
|
|
{
|
|
|
|
if (args.length < 2)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2012-09-18 00:32:59 +00:00
|
|
|
String search_name = args[1].trim().toLowerCase();
|
|
|
|
|
2014-04-26 11:55:24 +00:00
|
|
|
OfflinePlayer player = getPlayer(search_name);
|
2014-05-04 21:03:34 +00:00
|
|
|
|
2014-04-26 11:55:24 +00:00
|
|
|
if (player == null)
|
2012-09-17 23:46:59 +00:00
|
|
|
{
|
2015-10-19 17:43:46 +00:00
|
|
|
player = DepreciationAggregator.getOfflinePlayer(server, search_name);
|
2012-09-17 23:46:59 +00:00
|
|
|
}
|
|
|
|
|
2013-08-14 14:01:42 +00:00
|
|
|
if (player.isWhitelisted())
|
2012-09-17 23:46:59 +00:00
|
|
|
{
|
2015-10-19 17:43:46 +00:00
|
|
|
FUtil.adminAction(sender.getName(), "Removing " + player.getName() + " from the whitelist.", false);
|
2013-08-14 14:01:42 +00:00
|
|
|
player.setWhitelisted(false);
|
2012-09-17 23:46:59 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2013-01-07 14:56:53 +00:00
|
|
|
playerMsg("That player is not whitelisted");
|
2012-09-17 23:46:59 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// addall
|
|
|
|
if (args[0].equalsIgnoreCase("addall"))
|
|
|
|
{
|
2015-10-19 17:43:46 +00:00
|
|
|
FUtil.adminAction(sender.getName(), "Adding all online players to the whitelist.", false);
|
2012-09-17 23:46:59 +00:00
|
|
|
int counter = 0;
|
2013-08-14 14:01:42 +00:00
|
|
|
for (Player player : server.getOnlinePlayers())
|
2012-09-17 23:46:59 +00:00
|
|
|
{
|
2013-08-14 14:01:42 +00:00
|
|
|
if (!player.isWhitelisted())
|
2012-09-17 23:46:59 +00:00
|
|
|
{
|
2013-08-14 14:01:42 +00:00
|
|
|
player.setWhitelisted(true);
|
2012-09-17 23:46:59 +00:00
|
|
|
counter++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-01-07 14:56:53 +00:00
|
|
|
playerMsg("Whitelisted " + counter + " players.");
|
2012-09-17 23:46:59 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// all commands past this line are console/telnet only
|
|
|
|
if (!senderIsConsole)
|
|
|
|
{
|
2015-10-19 17:43:46 +00:00
|
|
|
sender.sendMessage(FreedomCommand.MSG_NO_PERMS);
|
2012-09-17 23:46:59 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
//purge
|
|
|
|
if (args[0].equalsIgnoreCase("purge"))
|
|
|
|
{
|
2015-10-19 17:43:46 +00:00
|
|
|
FUtil.adminAction(sender.getName(), "Removing all players from the whitelist.", false);
|
|
|
|
playerMsg("Removed " + plugin.si.purgeWhitelist() + " players from the whitelist.");
|
2012-09-17 23:46:59 +00:00
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// none of the commands were executed
|
|
|
|
return false;
|
2012-09-17 16:29:43 +00:00
|
|
|
}
|
|
|
|
}
|