Skip to content

Conversation

@sovdeeth
Copy link
Member

Problem

Potions have had truly infinite durations for a while now, but using them in Skript has been a bit hit or miss. EffPotionEffect has a separate flag for them, exclusive with the duration timespan option. ExprPotionEffect doesn't even allow it. A simple and elegant solution would be to allow an infinite duration as a timespan, or a similar syntax for infinite duration.
The upcoming potions rework would also benefit from this concept.

Solution

This PR adds the ability for a timespan to be infinite by using Long.MAX_VALUE milliseconds to represent an eternity:
[an] eternity, forever, [an] (indefinite|infinite) (duration|timespan).
Math operations on eternities act like Double.POSITIVE_INFINITY, though operations that would result in NaN instead return a 0 length timespan.
Since the backing value for an eternity is MAX_VALUE, it means that any syntax given an infinite timespan that doesn't have explicit infinity support can instead treat it as normal and still get the largest possible value for use.

CondIsInfinite has been updated to accept timespans.
ExprPotionEffect has had an [a] added to the start of its patterns for grammatical reasons.

Breaking changes:

  • Timespan math that would have been clamped at MAX_VALUE now becomes an eternity, mimicking the behavior of numbers.

Testing Completed

LitEternity.sk

Supporting Information

The Temporal interfaces that Timespan and TimePeriod implement don't support infinite values, so it may be wise to deprecate those methods and eventually un-implement the temporals.


Completes: #7458
Related: none

@sovdeeth sovdeeth requested a review from a team as a code owner June 16, 2025 20:13
@sovdeeth sovdeeth requested review from Burbulinis and UnderscoreTud and removed request for a team June 16, 2025 20:13
@sovdeeth sovdeeth added enhancement Feature request, an issue about something that could be improved, or a PR improving something. feature Pull request adding a new feature. breaking changes Pull or feature requests that contain breaking changes (API, syntax, etc.) labels Jun 16, 2025
@skriptlang-automation skriptlang-automation bot added the needs reviews A PR that needs additional reviews label Jun 16, 2025
@sovdeeth sovdeeth moved this to In Review in 2.12 Releases Jun 16, 2025
@sovdeeth sovdeeth linked an issue Jun 16, 2025 that may be closed by this pull request
1 task
@skriptlang-automation skriptlang-automation bot added the feature-ready A PR/issue that has been approved, tested and can be merged/closed in the next feature version. label Jun 17, 2025
@github-project-automation github-project-automation bot moved this from In Review to Awaiting Merge in 2.12 Releases Jun 17, 2025
@skriptlang-automation skriptlang-automation bot removed the needs reviews A PR that needs additional reviews label Jun 17, 2025
@skriptlang-automation skriptlang-automation bot removed the feature-ready A PR/issue that has been approved, tested and can be merged/closed in the next feature version. label Jun 17, 2025
@github-project-automation github-project-automation bot moved this from Awaiting Merge to In Review in 2.12 Releases Jun 17, 2025
@sovdeeth sovdeeth requested a review from Efnilite June 19, 2025 20:16
@github-project-automation github-project-automation bot moved this from In Review to Awaiting Merge in 2.12 Releases Jun 21, 2025
@skriptlang-automation skriptlang-automation bot added the feature-ready A PR/issue that has been approved, tested and can be merged/closed in the next feature version. label Jun 21, 2025
@github-project-automation github-project-automation bot moved this from Awaiting Merge to In Review in 2.12 Releases Jun 23, 2025
@skriptlang-automation skriptlang-automation bot removed the feature-ready A PR/issue that has been approved, tested and can be merged/closed in the next feature version. label Jun 29, 2025
@sovdeeth sovdeeth requested a review from APickledWalrus June 29, 2025 22:54
@github-project-automation github-project-automation bot moved this from In Review to Awaiting Merge in 2.12 Releases Jun 29, 2025
@skriptlang-automation skriptlang-automation bot added the feature-ready A PR/issue that has been approved, tested and can be merged/closed in the next feature version. label Jun 29, 2025
@APickledWalrus APickledWalrus merged commit 5edd3bb into SkriptLang:dev/feature Jul 1, 2025
5 checks passed
@github-project-automation github-project-automation bot moved this from Awaiting Merge to Done in 2.12 Releases Jul 1, 2025
@skriptlang-automation skriptlang-automation bot added completed The issue has been fully resolved and the change will be in the next Skript update. and removed feature-ready A PR/issue that has been approved, tested and can be merged/closed in the next feature version. labels Jul 1, 2025
Burbulinis pushed a commit to Burbulinis/Skript that referenced this pull request Jul 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking changes Pull or feature requests that contain breaking changes (API, syntax, etc.) completed The issue has been fully resolved and the change will be in the next Skript update. enhancement Feature request, an issue about something that could be improved, or a PR improving something. feature Pull request adding a new feature.

Projects

Status: Done - Released

Development

Successfully merging this pull request may close these issues.

Timepsan Infinity

4 participants