Add a method to jail someone forever, resolves #49.

Include -i in the command and the player will be jailed forever.
This commit is contained in:
graywolf336 2015-02-13 01:29:18 -06:00
parent 64f6ce8a64
commit 9ecfb92252
3 changed files with 34 additions and 5 deletions

View File

@ -11,6 +11,9 @@ public interface Jailing {
@Option(longName={"time", "length"}, shortName="t", description = "the amount of time") @Option(longName={"time", "length"}, shortName="t", description = "the amount of time")
public String getTime(); public String getTime();
@Option(longName={"forever", "eternity", "infinite"}, shortName="i", description = "jail the player for eternity")
public boolean getInfinite();
@Option(longName={"jail", "prison"}, shortName="j", description = "the jail") @Option(longName={"jail", "prison"}, shortName="j", description = "the jail")
public String getJail(); public String getJail();
@ -27,6 +30,7 @@ public interface Jailing {
@Option(longName={"reason"}, shortName="r", description = "the reason this player is being jailed") @Option(longName={"reason"}, shortName="r", description = "the reason this player is being jailed")
public List<String> getReason(); public List<String> getReason();
public boolean isInfinite();
public boolean isTime(); public boolean isTime();
public boolean isJail(); public boolean isJail();
public boolean isCell(); public boolean isCell();

View File

@ -83,17 +83,21 @@ public class JailCommand implements Command {
//from the config and if that isn't there then we default to thirty minutes. //from the config and if that isn't there then we default to thirty minutes.
Long time = 10L; Long time = 10L;
try { try {
if(!params.isTime()) { if(params.isTime()) {
time = Util.getTime(jm.getPlugin().getConfig().getString(Settings.DEFAULTTIME.getPath(), "30m"));
}else if(params.getTime() == String.valueOf(-1)) {
time = -1L;
}else {
time = Util.getTime(params.getTime()); time = Util.getTime(params.getTime());
}else {
time = Util.getTime(jm.getPlugin().getConfig().getString(Settings.DEFAULTTIME.getPath(), "30m"));
} }
}catch(Exception e) { }catch(Exception e) {
sender.sendMessage(Lang.NUMBERFORMATINCORRECT.get()); sender.sendMessage(Lang.NUMBERFORMATINCORRECT.get());
return true; return true;
} }
//Check if they provided the infinite argument
//if so, then set the time jailed forever
if(params.isInfinite()) {
time = -1L;
}
//Check the jail params. If it is empty, let's get the default jail //Check the jail params. If it is empty, let's get the default jail
//from the config. If that is nearest, let's make a call to getting the nearest jail to //from the config. If that is nearest, let's make a call to getting the nearest jail to

View File

@ -161,6 +161,27 @@ public class TestJailCommandInfo {
assertEquals("This is a reason", sb.toString()); assertEquals("This is a reason", sb.toString());
} }
@Test
public void testForInfiniteJailTime() {
String[] args = { "-p", "graywolf336", "-j", "hardcore", "-iamr", "This", "should", "be", "a", "reason." };
Jailing j = CliFactory.parseArguments(Jailing.class, args);
assertEquals("The player parsed doesn't match.", "graywolf336", j.getPlayer());
assertTrue("No jail was parsed.", j.isJail());
assertEquals("The jail parsed doesn't match.", "hardcore", j.getJail());
assertTrue("The time isn't infinite.", j.isInfinite());
assertTrue("The any cell wasn't parsed.", j.isAnyCell());
assertTrue("The player wouldn't be muted.", j.isMuted());
assertTrue("The reason wasn't provided?", j.isReason());
StringBuilder sb = new StringBuilder();
for(String s : j.getReason()) {
sb.append(s).append(' ');
}
sb.deleteCharAt(sb.length() - 1);
assertEquals("The reason doesn't match.", "This should be a reason.", sb.toString());
}
@Test @Test
public void testTransferForJailAndCell() { public void testTransferForJailAndCell() {