package org.royaldev.thehumanity.commands.impl; import org.jetbrains.annotations.NotNull; import org.kitteh.irc.client.library.element.User; import org.kitteh.irc.client.library.event.helper.ActorEvent; import org.royaldev.thehumanity.TheHumanity; import org.royaldev.thehumanity.cards.packs.CAHCardPack; import org.royaldev.thehumanity.cards.packs.CardPackParser; import org.royaldev.thehumanity.util.ConversionHelper; import xyz.cardstock.cardstock.commands.BaseCommand; import xyz.cardstock.cardstock.commands.CallInfo; import xyz.cardstock.cardstock.commands.Command; import java.util.List; import java.util.stream.Collectors; @Command( name = "loadcardpack", description = "Loads or reloads card packs into the list of loaded packs.", aliases = {"loadpack", "load"}, usage = "<command> [packs...]" ) public class LoadCardPackCommand extends BaseCommand { private final TheHumanity humanity; public LoadCardPackCommand(final TheHumanity instance) { this.humanity = instance; } @Override public void run(@NotNull ActorEvent<User> event, @NotNull CallInfo callInfo, @NotNull List<String> arguments) { if (arguments.size() < 1) { event.getActor().sendNotice("You must provide card packs."); return; } // Get the names of the requested packs final List<String> names = CardPackParser.getListOfCardPackNames(arguments.toArray(new String[arguments.size()]), this.humanity.getDefaultPacks()); // Get the corresponding card packs, filter out the nulls, then remove them names.stream() .map(this.humanity::getCardPack) .filter(pack -> pack != null) .forEach(this.humanity::removeCardPack); // Download or parse each pack again, filter out the null packs final List<CAHCardPack> packs = names.stream() .map(this.humanity::parseOrDownloadCardPack) .filter(pack -> pack != null) .collect(Collectors.toList()); // Re-add them packs.forEach(this.humanity::addCardPack); ConversionHelper.respond(event, "Loaded " + packs.size() + " pack" + (packs.size() == 1 ? "" : "s") + "."); } }