Skip to content

Commit 24bed03

Browse files
committed
Fix effect sync handling
1 parent 17f34a1 commit 24bed03

3 files changed

Lines changed: 25 additions & 3 deletions

File tree

src/main/java/org/skriptlang/reflect/syntax/custom/effect/CustomEffect.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,27 @@ public boolean init(Expression<?>[] expressions, int matchedPattern, Kleenean is
4040

4141
@Override
4242
protected void execute(Event event) {
43+
}
44+
45+
@Override
46+
protected @Nullable TriggerItem walk(Event event) {
47+
EffectTriggerEvent effectEvent = invokeEffect(event);
48+
49+
if (effectEvent.isSync())
50+
return getNext();
51+
52+
Object locals = Variables.copyLocalVariables(effectEvent.getDirectEvent());
53+
new Thread(() -> {
54+
try {
55+
Thread.sleep(1);
56+
if (!effectEvent.isMarkedContinue())
57+
Variables.setLocalVariables(effectEvent.getDirectEvent(), locals);
58+
} catch (InterruptedException ignored) {}
59+
}).start();
60+
return null;
61+
}
62+
63+
private EffectTriggerEvent invokeEffect(Event event) {
4364
assert info.executeTrigger() != null;
4465

4566
EffectTriggerEvent triggerEvent = new EffectTriggerEvent(
@@ -53,10 +74,11 @@ protected void execute(Event event) {
5374

5475
if (core.parseEvent() == null) {
5576
TriggerItem.walk(info.executeTrigger(), triggerEvent);
56-
return;
77+
return triggerEvent;
5778
}
5879
Variables.withLocalVariables(core.parseEvent(), triggerEvent,
5980
() -> TriggerItem.walk(info.executeTrigger(), triggerEvent));
81+
return triggerEvent;
6082
}
6183

6284
@Override

src/main/java/org/skriptlang/reflect/syntax/custom/effect/EffectTriggerEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
public class EffectTriggerEvent extends CustomSyntaxEvent implements Continuable {
1313

1414
public final TriggerItem next;
15-
private boolean sync, continued;
15+
private boolean sync = true, continued;
1616

1717
public EffectTriggerEvent(
1818
Event event,

src/main/java/org/skriptlang/reflect/syntax/custom/effect/elements/EffDelayEffect.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public boolean init(Expression<?>[] expressions, int matchedPattern, Kleenean is
3535
protected void execute(Event event) {
3636
if (!(event instanceof EffectTriggerEvent triggerEvent))
3737
return;
38-
triggerEvent.setSync(true);
38+
triggerEvent.setSync(false);
3939
}
4040

4141
@Override

0 commit comments

Comments
 (0)