Merge pull request 'Add relative punishment times' (#439) from RelativePunishments into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #439 Reviewed-by: Lixfel <lixfel@steamwar.de>
Dieser Commit ist enthalten in:
Commit
83839a292a
@ -30,7 +30,10 @@ import java.sql.Timestamp;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.Date;
|
||||
import java.util.regex.MatchResult;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class PunishmentCommand {
|
||||
|
||||
@ -96,10 +99,39 @@ public class PunishmentCommand {
|
||||
return target;
|
||||
}
|
||||
|
||||
private static Pattern RELATIVE_PATTERN = Pattern.compile("([1-9]\\d*[hdwmy])+");
|
||||
|
||||
public static Timestamp parseTime(CommandSender sender, String arg) {
|
||||
if (arg.equalsIgnoreCase("perma")) {
|
||||
return Punishment.PERMA_TIME;
|
||||
} else {
|
||||
MatchResult matchResult = RELATIVE_PATTERN.matcher(arg).toMatchResult();
|
||||
if (matchResult.groupCount() > 0) {
|
||||
Instant instant = Instant.now();
|
||||
for (int i = 1; i < matchResult.groupCount(); i++) {
|
||||
String group = matchResult.group(i);
|
||||
int amount = Integer.parseInt(group.substring(0, group.length() - 1));
|
||||
char unit = Character.toLowerCase(group.charAt(group.length() - 1));
|
||||
switch (unit) {
|
||||
case 'h':
|
||||
instant = instant.plus(amount, ChronoUnit.HOURS);
|
||||
break;
|
||||
case 'd':
|
||||
instant = instant.plus(amount, ChronoUnit.DAYS);
|
||||
break;
|
||||
case 'w':
|
||||
instant = instant.plus(amount, ChronoUnit.WEEKS);
|
||||
break;
|
||||
case 'm':
|
||||
instant = instant.plus(amount, ChronoUnit.MONTHS);
|
||||
break;
|
||||
case 'y':
|
||||
instant = instant.plus(amount, ChronoUnit.YEARS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return Timestamp.from(instant);
|
||||
}
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy_HH:mm");
|
||||
try {
|
||||
Date parsedDate = dateFormat.parse(arg);
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren