diff --git a/src/com/massivecraft/mcore/cmd/req/ReqAnd.java b/src/com/massivecraft/mcore/cmd/req/ReqAnd.java new file mode 100644 index 00000000..033a2a1a --- /dev/null +++ b/src/com/massivecraft/mcore/cmd/req/ReqAnd.java @@ -0,0 +1,64 @@ +package com.massivecraft.mcore.cmd.req; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import org.bukkit.command.CommandSender; + +import com.massivecraft.mcore.cmd.MCommand; + +public class ReqAnd extends ReqAbstract +{ + private static final long serialVersionUID = 1L; + + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + public static ReqAnd get(Req... reqs) { return new ReqAnd(reqs); } + public ReqAnd(Req... reqs) + { + this(Arrays.asList(reqs)); + } + + public static ReqAnd get(Collection reqs) { return new ReqAnd(reqs); } + public ReqAnd(Collection reqs) + { + this.reqs = Collections.unmodifiableList(new ArrayList(reqs)); + } + + // -------------------------------------------- // + // FIELDS + // -------------------------------------------- // + + private final List reqs; + public List getReqs() { return this.reqs; } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public boolean apply(CommandSender sender, MCommand command) + { + return this.getFirstFailedSubreq(sender, command) == null; + } + + @Override + public String createErrorMessage(CommandSender sender, MCommand command) + { + return this.getFirstFailedSubreq(sender, command).createErrorMessage(sender, command); + } + + public Req getFirstFailedSubreq(CommandSender sender, MCommand command) + { + for (Req req : this.getReqs()) + { + if (!req.apply(sender, command)) return req; + } + return null; + } +} diff --git a/src/com/massivecraft/mcore/cmd/req/ReqIsntCertainSender.java b/src/com/massivecraft/mcore/cmd/req/ReqIsntCertainSender.java new file mode 100644 index 00000000..5010fcc0 --- /dev/null +++ b/src/com/massivecraft/mcore/cmd/req/ReqIsntCertainSender.java @@ -0,0 +1,46 @@ +package com.massivecraft.mcore.cmd.req; + +import org.bukkit.command.CommandSender; + +import com.massivecraft.mcore.cmd.MCommand; +import com.massivecraft.mcore.mixin.Mixin; +import com.massivecraft.mcore.util.SenderUtil; +import com.massivecraft.mcore.util.Txt; + +public class ReqIsntCertainSender extends ReqAbstract +{ + private static final long serialVersionUID = 1L; + + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + public static ReqIsntCertainSender get(CommandSender sender) { return new ReqIsntCertainSender(sender); } + public ReqIsntCertainSender(CommandSender sender) { this.senderId = SenderUtil.getSenderId(sender); } + + public static ReqIsntCertainSender get(String senderId) { return new ReqIsntCertainSender(senderId); } + public ReqIsntCertainSender(String senderId) { this.senderId = senderId; } + + // -------------------------------------------- // + // FIELDS + // -------------------------------------------- // + + private final String senderId; + public String getSenderId() { return this.senderId; } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public boolean apply(CommandSender sender, MCommand command) + { + return !this.getSenderId().equalsIgnoreCase(SenderUtil.getSenderId(sender)); + } + + @Override + public String createErrorMessage(CommandSender sender, MCommand command) + { + return Txt.parse("Player can't be %s.", Mixin.getDisplayName(this.getSenderId())); + } +}