package com.massivecraft.factions.cmd; import java.util.List; import java.util.Map.Entry; import java.util.Set; import org.bukkit.Bukkit; import com.massivecraft.factions.Factions; import com.massivecraft.factions.Perm; import com.massivecraft.factions.Rel; import com.massivecraft.factions.cmd.type.TypeFaction; import com.massivecraft.factions.cmd.type.TypeRelation; import com.massivecraft.factions.entity.Faction; import com.massivecraft.factions.entity.FactionColl; import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.collections.MassiveList; import com.massivecraft.massivecore.collections.MassiveSet; import com.massivecraft.massivecore.command.Parameter; import com.massivecraft.massivecore.command.requirement.RequirementHasPerm; import com.massivecraft.massivecore.command.type.container.TypeSet; import com.massivecraft.massivecore.pager.Pager; import com.massivecraft.massivecore.pager.Stringifier; import com.massivecraft.massivecore.util.Txt; public class CmdFactionsRelationList extends FactionsCommand { // -------------------------------------------- // // COSTANTS // -------------------------------------------- // public static final Set RELEVANT_RELATIONS = new MassiveSet(Rel.ENEMY, Rel.TRUCE, Rel.ALLY); public static final String SEPERATOR = Txt.parse(": "); // -------------------------------------------- // // CONSTRUCT // -------------------------------------------- // public CmdFactionsRelationList() { // Aliases this.addAliases("list"); // Parameter this.addParameter(Parameter.getPage()); this.addParameter(TypeFaction.get(), "faction", "you"); this.addParameter(TypeSet.get(TypeRelation.get()), "relations", "all"); // Requirements this.addRequirements(RequirementHasPerm.get(Perm.RELATION_LIST)); } // -------------------------------------------- // // OVERRIDE // -------------------------------------------- // @Override public void perform() throws MassiveException { // Args int page = this.readArg(); final Faction faction = this.readArg(msenderFaction); final Set relations = this.readArg(RELEVANT_RELATIONS); // Pager Create final Pager pager = new Pager(this, "", page, new Stringifier() { @Override public String toString(String item, int index) { return item; } }); Bukkit.getScheduler().runTaskAsynchronously(Factions.get(), new Runnable() { @Override public void run() { // Prepare Items List relNames = new MassiveList<>(); for (Entry> entry : FactionColl.get().getRelationNames(faction, relations).entrySet()) { Rel relation = entry.getKey(); String coloredName = relation.getColor().toString() + relation.getName(); for (String name : entry.getValue()) { relNames.add(coloredName + SEPERATOR + name); } } // Pager Title pager.setTitle(Txt.parse("%s's Relations (%d)", faction.getName(), relNames.size())); // Pager Items pager.setItems(relNames); // Pager Message pager.message(); } }); } }