Skip to content

Commit b62ccaa

Browse files
Maple-YZPikachu920
andauthored
Fix change being called without calling acceptChange in some cases (#123)
* Try to fix change problems of #122 * Try new approach for handling exceptional changes --------- Co-authored-by: Pikachu920 <[email protected]>
1 parent 226fdb7 commit b62ccaa

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

src/main/java/com/btk5h/skriptmirror/skript/custom/ExprRawExpression.java

+11-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import ch.njol.skript.lang.util.SimpleExpression;
99
import ch.njol.util.Kleenean;
1010
import com.btk5h.skriptmirror.WrappedEvent;
11+
import com.btk5h.skriptmirror.skript.reflect.ExprJavaCall;
1112
import com.btk5h.skriptmirror.util.SkriptUtil;
1213
import org.bukkit.event.Event;
1314

@@ -56,13 +57,19 @@ public void change(Event event, Object[] delta, Changer.ChangeMode changeMode) {
5657
return;
5758
Expression<?> source = expr.getSource();
5859

59-
event = ((WrappedEvent) event).getDirectEvent();
60-
source.change(event, delta, changeMode);
60+
Event unwrappedEvent = ((WrappedEvent) event).getDirectEvent();
61+
// Ensure acceptChange has been called before change
62+
try {
63+
source.acceptChange(changeMode);
64+
source.change(unwrappedEvent, delta, changeMode);
65+
} catch (Throwable throwable) {
66+
ExprJavaCall.lastError = throwable;
67+
}
6168
}
6269

6370
@Override
64-
public String toString(Event e, boolean debug) {
65-
return "raw " + expr.toString(e, debug);
71+
public String toString(Event event, boolean debug) {
72+
return "raw " + expr.toString(event, debug);
6673
}
6774

6875
@Override

src/main/java/com/btk5h/skriptmirror/skript/reflect/ExprJavaCall.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public String toString() {
8787
}
8888
}
8989

90-
static Throwable lastError;
90+
public static Throwable lastError;
9191

9292
private final LRUCache<Descriptor, Collection<MethodHandle>> callSiteCache = new LRUCache<>(8);
9393

0 commit comments

Comments
 (0)