package de.fanta.challengesjoinentities.utils;
import de.fanta.challengesjoinentities.ChatUtil;
import de.iani.cubesideutils.StringUtil;
import de.iani.cubesideutils.commands.ArgsParser;
import org.bukkit.command.CommandSender;
import java.util.Collections;
import java.util.Set;
import java.util.TreeSet;
public class DurationCommandUtil {
private DurationCommandUtil() {
// prevent instances
}
public static final Set<String> PERM_STRINGS;
static {
Set<String> permStrings = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
permStrings.add("-1");
permStrings.add("perm");
permStrings.add("permanent");
permStrings.add("inf");
permStrings.add("infinite");
permStrings.add("infinity");
permStrings.add("forever");
PERM_STRINGS = Collections.unmodifiableSet(permStrings);
}
public static long parseDuration(CommandSender sender, ArgsParser args, boolean allowPermanent) {
if (!args.hasNext()) {
ChatUtil.sendWarningMessage(sender, "Bitte gib die Dauer im Format \"7d12h15m30s\" (eine Einheit genügt)", allowPermanent ? " oder als \"perm\"" : "", " an.");
return 0;
}
String durationString = args.getNext();
if (PERM_STRINGS.contains(durationString)) {
return -1;
}
long duration;
try {
duration = StringUtil.parseTimespan(durationString);
if (duration <= 0) {
throw new NumberFormatException();
}
} catch (IllegalArgumentException e) {
ChatUtil.sendWarningMessage(sender, "Bitte gib die Dauer im Format \"7d12h15m30s\" (eine Einheit genügt)", allowPermanent ? " oder als \"perm\"" : "", " an.");
return 0;
}
return duration;
}
}