77import ch .njol .skript .lang .Expression ;
88import ch .njol .skript .lang .SkriptParser .ParseResult ;
99import ch .njol .util .Kleenean ;
10+ import ch .njol .util .Math2 ;
1011import ch .njol .util .coll .CollectionUtils ;
1112import org .bukkit .block .Block ;
1213import org .bukkit .block .data .BlockData ;
@@ -79,7 +80,7 @@ public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelaye
7980 @ Override
8081 public void change (Event event , Object @ Nullable [] delta , ChangeMode mode ) {
8182 if (isMax ) return ;
82- int value = ( delta != null && delta . length > 0 ) ? (Integer ) delta [0 ] : 0 ;
83+ int value = delta == null ? 0 : (Integer ) delta [0 ];
8384
8485 for (Object obj : getExpr ().getArray (event )) {
8586 Brushable brushable = getBrushable (obj );
@@ -88,10 +89,10 @@ public void change(Event event, Object @Nullable [] delta, ChangeMode mode) {
8889
8990 int currentValue = brushable .getDusted ();
9091 int maxValue = brushable .getMaximumDusted ();
91- int newValue = switch (mode ) {
92+ long newValue = switch (mode ) {
9293 case SET , RESET -> value ;
93- case ADD -> currentValue + value ;
94- case REMOVE -> currentValue - value ;
94+ case ADD -> Math2 . addClamped ( currentValue , value ) ;
95+ case REMOVE -> Math2 . addClamped ( currentValue , - value ) ;
9596 default -> throw new IllegalArgumentException ("Change mode " + mode + " is not valid for ExprDustedStage!" );
9697 };
9798 brushable .setDusted ( Math .clamp (newValue , 0 , maxValue ));
0 commit comments