package tv.mineinthebox.essentials.commands;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import tv.mineinthebox.essentials.xEssentials;
import tv.mineinthebox.essentials.enums.PermissionKey;
import tv.mineinthebox.essentials.interfaces.CommandTemplate;
import tv.mineinthebox.essentials.interfaces.XOfflinePlayer;
import tv.mineinthebox.essentials.interfaces.XPlayer;
public class CmdInvsee extends CommandTemplate {
private final xEssentials pl;
public CmdInvsee(xEssentials pl, Command cmd, CommandSender sender) {
super(pl, cmd, sender);
this.pl = pl;
}
private List<String> getPlayerByName(String p) {
List<String> s = new ArrayList<String>();
for(XOfflinePlayer name : pl.getManagers().getPlayerManager().getOfflinePlayers()) {
if(name.getName().toUpperCase().startsWith(p.toUpperCase())) {
s.add(name.getName());
} else if("help".toUpperCase().startsWith(p.toUpperCase())) {
s.add("help");
}
}
return s;
}
public List<String> onTabComplete(CommandSender sender, Command cmd, String[] args) {
if(cmd.getName().equalsIgnoreCase("invsee")) {
if(args.length == 1) {
if(sender.hasPermission(PermissionKey.CMD_INVSEE.getPermission())) {
List<String> list = getPlayerByName(args[0]);
return list;
}
}
}
return null;
}
public boolean execute(CommandSender sender, Command cmd, String[] args) {
if(cmd.getName().equalsIgnoreCase("invsee")) {
if(args.length == 0) {
if(sender.hasPermission(PermissionKey.CMD_INVSEE.getPermission())) {
showHelp();
} else {
getWarning(WarningType.NO_PERMISSION);
}
} else if(args.length == 1) {
if(args[0].equalsIgnoreCase("help")) {
if(sender.hasPermission(PermissionKey.CMD_INVSEE.getPermission())) {
showHelp();
} else {
getWarning(WarningType.NO_PERMISSION);
}
} else {
if(sender instanceof Player) {
if(sender.hasPermission(PermissionKey.CMD_INVSEE.getPermission())) {
Player p = (Player) sender;
Player a = pl.getManagers().getPlayerManager().getOfflinePlayer(args[0]).getBukkitPlayer();
if(a instanceof Player) {
if(pl.getManagers().getPlayerManager().isOnline(args[0])) {
XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(args[0]);
p.openInventory(xp.getInventory());
sendMessage("opening live inventory of player " + xp.getName());
} else {
sendMessage("this player does not exist in the global HashMap please reload xEssentials");
}
} else {
try {
XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(args[0]);
if(off.hasOfflineInventory()) {
p.openInventory(off.getInventory());
sendMessage("opening offline inventory of player " + off.getName());
} else {
sendMessage("this player does not have a saved inventory");
}
} catch(NullPointerException e) {
getWarning(WarningType.NEVER_PLAYED_BEFORE);
}
}
} else {
getWarning(WarningType.NO_PERMISSION);
}
} else {
getWarning(WarningType.PLAYER_ONLY);
}
}
}
}
return false;
}
@Override
public void showHelp() {
sender.sendMessage(ChatColor.GOLD + ".oO___[invsee help]___Oo.");
sender.sendMessage(ChatColor.GRAY + "when the configuration option save-playerInventory in player.yml is enabled you can also look into a offline inventory!");
sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/invsee " + ChatColor.WHITE + ": shows help");
sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/invsee help " + ChatColor.WHITE + ": shows help");
sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/invsee <player> " + ChatColor.WHITE + ": open the inventory of a player");
}
}