package tv.mineinthebox.essentials.commands;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
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.instances.Kit;
import tv.mineinthebox.essentials.interfaces.CommandTemplate;
import tv.mineinthebox.essentials.interfaces.XPlayer;
public class CmdKit extends CommandTemplate {
private final xEssentials pl;
public CmdKit(xEssentials pl, Command cmd, CommandSender sender) {
super(pl, cmd, sender);
this.pl = pl;
}
public List<String> onTabComplete(CommandSender sender, Command cmd, String[] args) {
if(cmd.getName().equalsIgnoreCase("kit")) {
if(args.length == 1) {
if(sender.hasPermission(PermissionKey.CMD_KIT.getPermission())) {
List<Kit> kits = new ArrayList<Kit>(pl.getConfiguration().getKitConfig().getConfigKits().values());
List<String> names = new ArrayList<String>();
for(Kit kit : kits) {
if(kit.getKitName().toUpperCase().startsWith(args[0].toUpperCase())) {
names.add(kit.getKitName());
}
}
return names;
}
}
}
return null;
}
public boolean execute(CommandSender sender, Command cmd, String[] args) {
if(cmd.getName().equalsIgnoreCase("kit")) {
if(sender instanceof Player) {
if(sender.hasPermission(PermissionKey.CMD_KIT.getPermission())) {
if(args.length == 0) {
showHelp();
} else if(args.length == 1) {
HashMap<String, Kit> kits = new HashMap<String, Kit>(pl.getConfiguration().getKitConfig().getConfigKits());
if(kits.containsKey(args[0])) {
if(sender.hasPermission(PermissionKey.CMD_KIT.getPermission()+"."+args[0])) {
XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(sender.getName());
if(pl.getConfiguration().getKitConfig().isCooldownEnabled()) {
if(xp.hasKitCooldown()) {
long cooldown = xp.getKitCooldown() / 1000L + (long)pl.getConfiguration().getKitConfig().getCoolDown() - System.currentTimeMillis() / 1000L;
if(cooldown > 0L) {
DecimalFormat df = new DecimalFormat("#.##");
sendMessage("you cannot use kits at this time please wait " + df.format((double)cooldown/60.0D) + " seconds!");
return false;
} else {
xp.removeKitCoolDown();
Kit kit = kits.get(args[0]);
xp.getBukkitPlayer().getInventory().addItem(kit.getKitItems());
sendMessage("enjoy your " + kit.getKitName() + "!");
xp.setKitCooldown(System.currentTimeMillis());
}
} else {
Kit kit = kits.get(args[0]);
xp.getBukkitPlayer().getInventory().addItem(kit.getKitItems());
sendMessage("enjoy your " + kit.getKitName() + "!");
xp.setKitCooldown(System.currentTimeMillis());
}
} else {
Kit kit = kits.get(args[0]);
xp.getBukkitPlayer().getInventory().addItem(kit.getKitItems());
sendMessage("enjoy your " + kit.getKitName() + "!");
}
} else {
getWarning(WarningType.NO_PERMISSION);
}
} else {
sendMessage("this kit does not exist!");
}
}
} else {
getWarning(WarningType.NO_PERMISSION);
}
} else {
getWarning(WarningType.PLAYER_ONLY);
}
}
return false;
}
@Override
public void showHelp() {
sender.sendMessage(ChatColor.GOLD + ".oO___[kit help]___Oo.");
sender.sendMessage(ChatColor.DARK_GRAY + "Default: " + ChatColor.GRAY + "/kit <kit name> " + ChatColor.WHITE + ": get the kit by name in your inventory!");
sender.sendMessage(ChatColor.DARK_GRAY + "Default: " + ChatColor.GRAY + "/kits" + ChatColor.WHITE + ": shows you all the kits!");
}
}