11package ch .njol .skript .expressions ;
22
3- import org .bukkit .Location ;
4- import org .bukkit .event .Event ;
5- import org .jetbrains .annotations .Nullable ;
6-
7- import ch .njol .skript .classes .Changer .ChangeMode ;
8- import ch .njol .skript .classes .Changer .ChangerUtils ;
3+ import ch .njol .skript .classes .Changer ;
94import ch .njol .skript .doc .Description ;
105import ch .njol .skript .doc .Examples ;
116import ch .njol .skript .doc .Name ;
127import ch .njol .skript .doc .Since ;
138import ch .njol .skript .expressions .base .SimplePropertyExpression ;
149import ch .njol .skript .lang .Expression ;
10+ import ch .njol .skript .lang .Literal ;
1511import ch .njol .skript .lang .SkriptParser .ParseResult ;
1612import ch .njol .util .Kleenean ;
13+ import org .bukkit .Location ;
14+ import org .bukkit .event .Event ;
15+ import org .jetbrains .annotations .Nullable ;
16+ import org .skriptlang .skript .lang .simplification .SimplifiedLiteral ;
1717
1818/**
1919 * @author Peter Güttinger
@@ -44,27 +44,17 @@ public boolean init(final Expression<?>[] exprs, final int matchedPattern, final
4444 public Number convert (final Location l ) {
4545 return axis == 0 ? l .getX () : axis == 1 ? l .getY () : l .getZ ();
4646 }
47-
48- @ Override
49- protected String getPropertyName () {
50- return "the " + axes [axis ] + "-coordinate" ;
51- }
52-
53- @ Override
54- public Class <? extends Number > getReturnType () {
55- return Number .class ;
56- }
57-
47+
5848 @ Override
5949 @ Nullable
60- public Class <?>[] acceptChange (final ChangeMode mode ) {
61- if ((mode == ChangeMode .SET || mode == ChangeMode .ADD || mode == ChangeMode .REMOVE ) && getExpr ().isSingle () && ChangerUtils .acceptsChange (getExpr (), ChangeMode .SET , Location .class ))
50+ public Class <?>[] acceptChange (final Changer . ChangeMode mode ) {
51+ if ((mode == Changer . ChangeMode .SET || mode == Changer . ChangeMode .ADD || mode == Changer . ChangeMode .REMOVE ) && getExpr ().isSingle () && Changer . ChangerUtils .acceptsChange (getExpr (), Changer . ChangeMode .SET , Location .class ))
6252 return new Class [] {Number .class };
6353 return null ;
6454 }
65-
55+
6656 @ Override
67- public void change (final Event e , final @ Nullable Object [] delta , final ChangeMode mode ) throws UnsupportedOperationException {
57+ public void change (final Event e , final @ Nullable Object [] delta , final Changer . ChangeMode mode ) throws UnsupportedOperationException {
6858 assert delta != null ;
6959 final Location l = getExpr ().getSingle (e );
7060 if (l == null )
@@ -82,7 +72,7 @@ public void change(final Event e, final @Nullable Object[] delta, final ChangeMo
8272 } else {
8373 l .setZ (l .getZ () + n );
8474 }
85- getExpr ().change (e , new Location [] {l }, ChangeMode .SET );
75+ getExpr ().change (e , new Location [] {l }, Changer . ChangeMode .SET );
8676 break ;
8777 case SET :
8878 if (axis == 0 ) {
@@ -92,13 +82,32 @@ public void change(final Event e, final @Nullable Object[] delta, final ChangeMo
9282 } else {
9383 l .setZ (n );
9484 }
95- getExpr ().change (e , new Location [] {l }, ChangeMode .SET );
85+ getExpr ().change (e , new Location [] {l }, Changer . ChangeMode .SET );
9686 break ;
9787 case DELETE :
9888 case REMOVE_ALL :
9989 case RESET :
10090 assert false ;
10191 }
10292 }
93+
94+ @ Override
95+ public Class <? extends Number > getReturnType () {
96+ return Number .class ;
97+ }
98+
99+ @ Override
100+ public Expression <? extends Number > simplify () {
101+ // implemented for future use with pure functions
102+ if (getExpr () instanceof Literal <? extends Location >)
103+ return SimplifiedLiteral .fromExpression (this );
104+ return this ;
105+ }
106+
107+ @ Override
108+ protected String getPropertyName () {
109+ return "the " + axes [axis ] + "-coordinate" ;
110+ }
111+
103112
104113}
0 commit comments