From 439e00d81c1c981dce7d8e21c79877464a7581d3 Mon Sep 17 00:00:00 2001 From: sovdee <10354869+sovdeeth@users.noreply.github.com> Date: Tue, 16 Jul 2024 08:58:13 -0700 Subject: [PATCH 1/3] Remove rounding from getAs (it should truncate anyway) to avoid limiting as int max value. Fix bug where millis was multiplied instead of divided. --- .../java/ch/njol/skript/util/Timespan.java | 25 +++++++++---------- .../regressions/6908-timespan too big.sk | 6 +++++ 2 files changed, 18 insertions(+), 13 deletions(-) create mode 100644 src/test/skript/tests/regressions/6908-timespan too big.sk diff --git a/src/main/java/ch/njol/skript/util/Timespan.java b/src/main/java/ch/njol/skript/util/Timespan.java index ff70f8b365f..69ca13d0e9d 100644 --- a/src/main/java/ch/njol/skript/util/Timespan.java +++ b/src/main/java/ch/njol/skript/util/Timespan.java @@ -18,18 +18,6 @@ */ package ch.njol.skript.util; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.Locale; - -import org.eclipse.jdt.annotation.Nullable; -import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.ApiStatus.ScheduledForRemoval; - import ch.njol.skript.Skript; import ch.njol.skript.localization.GeneralWords; import ch.njol.skript.localization.Language; @@ -38,6 +26,17 @@ import ch.njol.util.NonNullPair; import ch.njol.util.coll.CollectionUtils; import ch.njol.yggdrasil.YggdrasilSerializable; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.ApiStatus.ScheduledForRemoval; +import org.jetbrains.annotations.Nullable; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class Timespan implements YggdrasilSerializable, Comparable { // REMIND unit @@ -257,7 +256,7 @@ public long getTicks() { * @return the amount of TimePeriod this timespan represents. */ public long getAs(TimePeriod timePeriod) { - return Math.round(millis * timePeriod.getTime()); + return millis / timePeriod.getTime(); } /** diff --git a/src/test/skript/tests/regressions/6908-timespan too big.sk b/src/test/skript/tests/regressions/6908-timespan too big.sk new file mode 100644 index 00000000000..3c026600a4e --- /dev/null +++ b/src/test/skript/tests/regressions/6908-timespan too big.sk @@ -0,0 +1,6 @@ +test "large timespans truncated to ints": + set {_now} to now + set {_a} to unix timestamp of {_now} * 1 seconds + set {_b} to unix timestamp of 10 minutes from {_now} * 1 second + assert {_a} - {_b} is 10 minutes with "large timespan was truncated" + From fed4cafb30c2b0bb312a820027748e76f85fef3e Mon Sep 17 00:00:00 2001 From: sovdee <10354869+sovdeeth@users.noreply.github.com> Date: Tue, 16 Jul 2024 09:16:46 -0700 Subject: [PATCH 2/3] the ol' switcheroo --- src/test/skript/tests/regressions/6908-timespan too big.sk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/skript/tests/regressions/6908-timespan too big.sk b/src/test/skript/tests/regressions/6908-timespan too big.sk index 3c026600a4e..82277775d68 100644 --- a/src/test/skript/tests/regressions/6908-timespan too big.sk +++ b/src/test/skript/tests/regressions/6908-timespan too big.sk @@ -2,5 +2,5 @@ test "large timespans truncated to ints": set {_now} to now set {_a} to unix timestamp of {_now} * 1 seconds set {_b} to unix timestamp of 10 minutes from {_now} * 1 second - assert {_a} - {_b} is 10 minutes with "large timespan was truncated" + assert {_b} - {_a} is 10 minutes with "large timespan was truncated" From 55b72427273a48b2b1349317b83546cb4c8536af Mon Sep 17 00:00:00 2001 From: sovdee <10354869+sovdeeth@users.noreply.github.com> Date: Tue, 16 Jul 2024 17:50:57 -0700 Subject: [PATCH 3/3] Update javadocs for Eclipse users --- src/main/java/ch/njol/skript/util/Timespan.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/util/Timespan.java b/src/main/java/ch/njol/skript/util/Timespan.java index 69ca13d0e9d..3b192a34dff 100644 --- a/src/main/java/ch/njol/skript/util/Timespan.java +++ b/src/main/java/ch/njol/skript/util/Timespan.java @@ -210,7 +210,7 @@ public Timespan(TimePeriod timePeriod, long time) { /** * Builds a Timespan from the given long parameter. * - * @deprecated Use {@link Timespan#Timespan(TimePeriod, long)} + * @deprecated Use {@link #Timespan(TimePeriod, long)} * * @param ticks The amount of Minecraft ticks to convert to a timespan. * @return Timespan based on the provided long.