diff --git a/docs/scarpet/api/Entities.md b/docs/scarpet/api/Entities.md index 1294ccd8..ae128a3c 100644 --- a/docs/scarpet/api/Entities.md +++ b/docs/scarpet/api/Entities.md @@ -761,7 +761,7 @@ players, since they are controlled client side. ### `modify(e, 'effect', name?, duration?, amplifier?, show_particles?, show_icon?, ambient?)` Applies status effect to the living entity. Takes several optional parameters, which default to `0`, `true`, -`true` and `false`. If no duration is specified, or if it's null or 0, the effect is removed. If duration is -1, it will represent infinity. If name is not specified, +`true` and `false`. If no duration is specified, or if it's null or 0, the effect is removed. If duration is less than 0, or it is infinity, it will represent infinity. If name is not specified, it clears all effects. ### `modify(e, 'health', float)` diff --git a/src/main/java/carpet/script/value/EntityValue.java b/src/main/java/carpet/script/value/EntityValue.java index 4c514a1f..b7653f90 100644 --- a/src/main/java/carpet/script/value/EntityValue.java +++ b/src/main/java/carpet/script/value/EntityValue.java @@ -1483,11 +1483,14 @@ public class EntityValue extends Value return; } int duration = (int) NumericValue.asNumber(list.get(1)).getLong(); - if (duration <= 0 && duration != -1) + if (duration == 0) { le.removeEffect(effect); return; } + if (duration < 0 || Float.isInfinite(NumericValue.asNumber(list.get(1)).getFloat())){ + duration = -1; + } int amplifier = 0; if (list.size() > 2) {