package tv.mineinthebox.essentials.commands;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import tv.mineinthebox.essentials.xEssentials;
import tv.mineinthebox.essentials.enums.GreyListCause;
import tv.mineinthebox.essentials.enums.PermissionKey;
import tv.mineinthebox.essentials.events.customevents.OfflinePlayerGreyListedEvent;
import tv.mineinthebox.essentials.events.customevents.PlayerGreyListedEvent;
import tv.mineinthebox.essentials.hook.Hooks;
import tv.mineinthebox.essentials.interfaces.CommandTemplate;
import tv.mineinthebox.essentials.interfaces.XOfflinePlayer;
import tv.mineinthebox.essentials.interfaces.XPlayer;
public class CmdGreylist extends CommandTemplate {
private final xEssentials pl;
public CmdGreylist(xEssentials pl, Command cmd, CommandSender sender) {
super(pl, cmd, sender);
this.pl = pl;
}
public boolean execute(CommandSender sender, Command cmd, String[] args) {
if(cmd.getName().equalsIgnoreCase("greylist")) {
if(sender.hasPermission(PermissionKey.CMD_GREYLIST.getPermission())) {
if(args.length == 0) {
showHelp();
} else if(args.length == 1) {
if(args[0].equalsIgnoreCase("help")) {
showHelp();
}
} else if(args.length == 2) {
if(args[0].equalsIgnoreCase("add")) {
if(pl.getManagers().getPlayerManager().isEssentialsPlayer(args[1])) {
if(pl.getManagers().getPlayerManager().isOnline(args[1])) {
XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(args[1]);
xp.setGreyListed(true);
if(Hooks.isVaultPermissionsEnabled()) {
String oldGroup = pl.getManagers().getVaultManager().getGroup(xp.getBukkitPlayer());
String newGroup = pl.getConfiguration().getGreyListConfig().getGroup();
pl.getManagers().getVaultManager().setGroup(Bukkit.getWorlds().get(0), xp.getName(), newGroup);
Bukkit.getPluginManager().callEvent(new PlayerGreyListedEvent(xp.getBukkitPlayer(), newGroup, oldGroup, GreyListCause.COMMAND, pl));
} else {
sendMessage("no vault installed!");
return false;
}
sendMessage("you successfully greylisted " + xp.getName());
} else {
XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(args[1]);
off.setGreyListed(true);
if(Hooks.isVaultPermissionsEnabled()) {
String oldGroup = pl.getManagers().getVaultManager().getGroup(Bukkit.getWorlds().get(0), off.getName());
String newGroup = pl.getConfiguration().getGreyListConfig().getGroup();
pl.getManagers().getVaultManager().setGroup(Bukkit.getWorlds().get(0), off.getName(), newGroup);
Bukkit.getPluginManager().callEvent(new OfflinePlayerGreyListedEvent(off.getName(), newGroup, oldGroup, GreyListCause.COMMAND, pl));
} else {
sendMessage("no vault installed!");
return false;
}
sendMessage("you successfully greylisted offline player " + off.getName());
}
} else {
sendMessage("this player has never played before!");
}
} else if(args[0].equalsIgnoreCase("remove")) {
if(pl.getManagers().getPlayerManager().isEssentialsPlayer(args[1])) {
if(pl.getManagers().getPlayerManager().isOnline(args[1])) {
XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(args[1]);
xp.setGreyListed(false);
if(Hooks.isVaultPermissionsEnabled()) {
String DefaultGroup = pl.getManagers().getVaultManager().getDefaultGroup();
pl.getManagers().getVaultManager().setGroup(Bukkit.getWorlds().get(0), xp.getName(), DefaultGroup);
} else {
sendMessage("no vault intalled!");
return false;
}
sendMessage("you have successfully removed " + xp.getName() + " from the greylist!");
} else {
XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(args[1]);
off.setGreyListed(false);
if(Hooks.isVaultPermissionsEnabled()) {
String DefaultGroup = pl.getManagers().getVaultManager().getDefaultGroup();
pl.getManagers().getVaultManager().setGroup(Bukkit.getWorlds().get(0), off.getName(), DefaultGroup);
} else {
sendMessage("no vault intalled!");
return false;
}
sendMessage("you have successfully removed " + off.getName() + " from the greylist!");
}
} else {
sendMessage("this player has never played before!");
}
}
}
} else {
getWarning(WarningType.NO_PERMISSION);
}
}
return false;
}
@Override
public void showHelp() {
sender.sendMessage(ChatColor.GOLD + ".oO___[greylist help]___Oo.");
sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/greylist help " + ChatColor.WHITE + ": shows help");
sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/greylist add <player> " + ChatColor.WHITE + ": excempt the player to the greylist");
sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/greylist remove <player> " + ChatColor.WHITE + ": remove the player from the greylist");
}
}