package io.lumine.cosmetics.commands; import io.lumine.cosmetics.MCCosmeticsPlugin; import io.lumine.cosmetics.api.cosmetics.ColorableCosmetic; import io.lumine.cosmetics.api.cosmetics.EquippedCosmetic; import io.lumine.cosmetics.constants.CosmeticType; import io.lumine.cosmetics.constants.Permissions; import io.lumine.mythic.bukkit.utils.commands.Command; import io.lumine.mythic.bukkit.utils.serialize.Chroma; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.util.StringUtil; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; public class UnequipCommand extends Command<MCCosmeticsPlugin> { public UnequipCommand(Command command) { super(command); } @Override public boolean onCommand(CommandSender sender, String[] args) { final var player = (Player) sender; final var profile = getPlugin().getProfiles().getProfile(player); var type = args[0]; var maybeManager = getPlugin().getCosmetics().getManager(type); if(maybeManager.isEmpty()) { CommandHelper.sendError(sender, "Invalid cosmetic type"); return true; } var manager = maybeManager.get(); profile.unequip(manager.getCosmeticClass()); CommandHelper.sendSuccess(sender, "Unequipped your " + CosmeticType.get(manager.getCosmeticClass()).type().toLowerCase()); return true; } @Override public List<String> onTabComplete(CommandSender sender, String[] args) { if(args.length == 1) { return StringUtil.copyPartialMatches(args[0], getPlugin().getCosmetics().getRegisteredTypes(), new ArrayList<>()); } return Collections.emptyList(); } @Override public String getPermissionNode() { return Permissions.COMMAND_BASE; } @Override public boolean isConsoleFriendly() { return false; } @Override public String getName() { return "unequip"; } }