Use `-1` as default potion effect duration.

NOTE: It might be worth exploring the idea of allowing -1 as a valid
duration value instead. Another option is to actually clean up the whole
potion effect parser portion of the code base and inject a default value
resolved at load-time by checking the Minecraft version.

Minecraft 1.19.4 introduces "true infinite" potion effect durations, and
these are represented in the Bukkit API by the sentinel value -1 [1][2],
which means all we need to do is change the default duration value.

This change makes 1.94.4 _mandatory_, as potion effects with a negative
duration result in an error from the Bukkit API in earlier versions, so
this little change effectively removes backwards compatibility from the
plugin even though the rest of it works fine.

Closes #784

---

[1] https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/browse/src/main/java/org/bukkit/potion/PotionEffect.java#27
[2] https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/browse/src/main/java/org/bukkit/potion/PotionEffect.java#209-211
This commit is contained in:
Andreas Troelsen 2023-12-27 17:52:01 +01:00
parent 7942c33e67
commit a64fc3cb3a
1 changed files with 1 additions and 1 deletions

View File

@ -11,7 +11,7 @@ public class PotionEffectParser
{
private static final int TICKS_PER_SECOND = 20;
private static final int DEFAULT_POTION_AMPLIFIER = 0;
private static final int DEFAULT_POTION_DURATION = Integer.MAX_VALUE;
private static final int DEFAULT_POTION_DURATION = -1;
public static List<PotionEffect> parsePotionEffects(String s) {
if (s == null || s.isEmpty())