package com.massivecraft.factions.cmd; import java.util.ArrayList; import java.util.Collection; import java.util.List; import com.massivecraft.factions.RelationParticipator; import com.massivecraft.factions.TerritoryAccess; import com.massivecraft.factions.entity.BoardColl; import com.massivecraft.factions.entity.Faction; import com.massivecraft.massivecore.cmd.req.ReqIsPlayer; import com.massivecraft.massivecore.ps.PS; import com.massivecraft.massivecore.ps.PSFormatHumanSpace; import com.massivecraft.massivecore.util.Txt; public abstract class CmdFactionsAccessAbstract extends FactionsCommand { // -------------------------------------------- // // FIELDS // -------------------------------------------- // public PS chunk; public TerritoryAccess ta; public Faction hostFaction; // -------------------------------------------- // // CONSTRUCT // -------------------------------------------- // public CmdFactionsAccessAbstract() { // Requirements this.addRequirements(ReqIsPlayer.get()); } // -------------------------------------------- // // OVERRIDE // -------------------------------------------- // @Override public void perform() { chunk = PS.valueOf(me).getChunk(true); ta = BoardColl.get().getTerritoryAccessAt(chunk); hostFaction = ta.getHostFaction(); this.innerPerform(); } public abstract void innerPerform(); public void sendAccessInfo() { sendMessage(Txt.titleize("Access at " + chunk.toString(PSFormatHumanSpace.get()))); msg("Host Faction: %s", hostFaction.describeTo(msender, true)); msg("Host Faction Allowed: %s", ta.isHostFactionAllowed() ? Txt.parse("TRUE") : Txt.parse("FALSE")); msg("Granted Players: %s", describeRelationParticipators(ta.getGrantedMPlayers(), msender)); msg("Granted Factions: %s", describeRelationParticipators(ta.getGrantedFactions(), msender)); } public static String describeRelationParticipators(Collection relationParticipators, RelationParticipator observer) { if (relationParticipators.size() == 0) return Txt.parse("none"); List descriptions = new ArrayList(); for (RelationParticipator relationParticipator : relationParticipators) { descriptions.add(relationParticipator.describeTo(observer)); } return Txt.implodeCommaAnd(descriptions, Txt.parse(", "), Txt.parse(" and ")); } }