diff --git a/src/main/java/dev/latvian/mods/kubejs/block/state/BlockStatePredicate.java b/src/main/java/dev/latvian/mods/kubejs/block/state/BlockStatePredicate.java index 78d5f7c8b..919ab17df 100644 --- a/src/main/java/dev/latvian/mods/kubejs/block/state/BlockStatePredicate.java +++ b/src/main/java/dev/latvian/mods/kubejs/block/state/BlockStatePredicate.java @@ -122,7 +122,7 @@ static BlockStatePredicate of(Object o) { return new AndMatch(predicates); } - return ofSingle(o); + return ofSingle(list.get(0)); } static RuleTest ruleTestOf(Object o) { diff --git a/src/main/java/dev/latvian/mods/kubejs/util/UtilsJS.java b/src/main/java/dev/latvian/mods/kubejs/util/UtilsJS.java index 8b197c0e2..d879e35cc 100644 --- a/src/main/java/dev/latvian/mods/kubejs/util/UtilsJS.java +++ b/src/main/java/dev/latvian/mods/kubejs/util/UtilsJS.java @@ -109,7 +109,7 @@ public class UtilsJS { public static RegistryAccess staticRegistryAccess = RegistryAccess.EMPTY; // FIXME public static final ResourceLocation UNKNOWN_ID = new ResourceLocation("unknown", "unknown"); public static final Predicate ALWAYS_TRUE = o -> true; - public static final Pattern TEMPORAL_AMOUNT_PATTERN = Pattern.compile("(\\d+)\\s*(y|M|d|w|h|m|s|ms|ns|t)\\b"); + public static final Pattern TEMPORAL_AMOUNT_PATTERN = Pattern.compile("(\\d+)\\s*(y|M|d|w|h|m|s|ms|ns|t)\\b?"); private static Collection ALL_STATE_CACHE = null; private static final Map ENTITY_SELECTOR_CACHE = new HashMap<>(); @@ -921,18 +921,18 @@ public static TemporalAmount getTemporalAmount(Object o) { ticks = 0L; } - ticks += amount; + ticks += (long) amount; } case "ns" -> nanos += (long) amount; case "ms" -> millis += (long) amount; - case "s" -> millis = (long) (amount * 1000D); - case "m" -> millis = (long) (amount * 60000D); - case "h" -> millis = (long) (amount * 60000D) * 60L; - case "d" -> millis = (long) (amount * 24D * 86400L) * 1000L; - case "w" -> millis = (long) (amount * 24D * 86400L) * 7000L; - case "M" -> millis = (long) (amount * 31556952D / 12D) * 1000L; - case "y" -> millis = (long) (amount * 31556952D) * 1000L; + case "s" -> millis += (long) (amount * 1000D); + case "m" -> millis += (long) (amount * 60000D); + case "h" -> millis += (long) (amount * 60000D) * 60L; + case "d" -> millis += (long) (amount * 86400L) * 1000L; + case "w" -> millis += (long) (amount * 86400L) * 7000L; + case "M" -> millis += (long) (amount * 31556952D / 12D) * 1000L; + case "y" -> millis += (long) (amount * 31556952D) * 1000L; default -> throw new IllegalArgumentException("Invalid temporal unit: " + matcher.group(2)); } }