Add a couple of Reqs I found useful.

This commit is contained in:
Olof Larsson 2013-06-11 17:15:14 +02:00
parent 7de7d30e28
commit b4095ed4ab
2 changed files with 110 additions and 0 deletions

View File

@ -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<Req> reqs) { return new ReqAnd(reqs); }
public ReqAnd(Collection<Req> reqs)
{
this.reqs = Collections.unmodifiableList(new ArrayList<Req>(reqs));
}
// -------------------------------------------- //
// FIELDS
// -------------------------------------------- //
private final List<Req> reqs;
public List<Req> 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;
}
}

View File

@ -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("<b>Player can't be <h>%s<b>.", Mixin.getDisplayName(this.getSenderId()));
}
}