package com.lifeknight.relaymchub.commands.menu; import com.lifeknight.relaymchub.Main; import com.lifeknight.relaymchub.player.HubPlayer; import com.lifeknight.relaymcutils.player.Kit; import com.lifeknight.relaymcutils.player.Kits; import com.lifeknight.relayutils.basic.Miscellaneous; import com.lifeknight.relayutils.basic.Text; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.List; public class KitCommand implements CommandExecutor, TabExecutor { public static final List KITS = Miscellaneous.getList(Kits.DUELS_LOBBY_NINJA, Kits.DUELS_LOBBY_AXE, Kits.DUELS_LOBBY_SWORD, Kits.DUELS_LOBBY_ARCHER, Kits.DUELS_LOBBY_RETIARIUS); @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (!(sender instanceof Player) || !command.getName().equalsIgnoreCase("kit")) { return true; } HubPlayer hubPlayer = HubPlayer.getHubPlayer((Player) sender); if (Main.isDuelsLobby() && hubPlayer.inArena()) { if (args.length > 0) { Kit kit = Miscellaneous.match(KITS, kit1 -> kit1.name.equalsIgnoreCase(args[0])); if (kit == null) { hubPlayer.sendErrorMessage("No kit with the name of %s%s%s.", ChatColor.YELLOW, args[0], ChatColor.RED); } else { if (hubPlayer.inCombat()) { hubPlayer.sendErrorMessage("You cannot change your kit while in combat!"); hubPlayer.playErrorSound(); } else { hubPlayer.selectLobbyKit(kit); } } } else { if (hubPlayer.inCombat()) { hubPlayer.sendErrorMessage("You cannot change your kit while in combat!"); hubPlayer.playErrorSound(); } else { hubPlayer.showLobbyKitSelect(); } } } else { hubPlayer.sendErrorMessage("You must be in the Duels arena to use this command."); } return true; } @Override public List onTabComplete(CommandSender commandSender, Command command, String s, String[] args) { if (args.length > 1) { return new ArrayList<>(); } return Text.returnStartingEntries(Miscellaneous.processList(KITS, kit -> kit.name.toLowerCase()), args.length > 0 ? args[0] : null, true); } }