function isEmpty(string) {
return (!string || 0 === string.length());
}
function toNumberOrZero(string) {
return isEmpty(string) ? 0 : parseInt(string);
}
with(new JavaImporter(java.lang, java.time, java.time.temporal, java.util, java.util.regex, java.text)) {
var duration = args[0];
var now = Instant.now();
var durationRegex = Pattern.compile("(?:(\\d+)d)?(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s)?(?:(\\d+)ms)?");
var matcher = durationRegex.matcher(duration);
if (!matcher.find()) {
throw new IllegalArgumentException("'" + duration + "' isn't a valid duration! Use something like '3d2h12m30s800ms'")
}
var days = toNumberOrZero(matcher.group(1));
var hours = toNumberOrZero(matcher.group(2));
var minutes = toNumberOrZero(matcher.group(3));
var seconds = toNumberOrZero(matcher.group(4));
var milliseconds = toNumberOrZero(matcher.group(5));
var time = now
.plus(days, ChronoUnit.DAYS)
.plus(hours, ChronoUnit.HOURS)
.plus(minutes, ChronoUnit.MINUTES)
.plus(seconds, ChronoUnit.SECONDS)
.plus(milliseconds, ChronoUnit.MILLIS);
var format = new SimpleDateFormat("HH:mm:ss.SSS-dd.MM.yyyy");
out = format.format(java.util.Date.from(time));
}
(翻译者不会写js,找翻译者莫得用处!) 所以现在占位符 %javascript_timestamp% 使用了一个duration语句然后返回一个 <时间戳> ,这个 <时间戳> 可以被 after 和 before 调用。
这是我们的最终命令:
/cu execute whenOnline %user_name% *cu execute if "*cu is before %javascript_timestamp_3d%" "*give %user_name% minecraft:cookie 5""