11package gg .projects .mundoskasync ;
22
33import ch .njol .skript .Skript ;
4+ import ch .njol .skript .effects .Delay ;
45import ch .njol .skript .lang .Effect ;
56import ch .njol .skript .lang .Expression ;
6- import ch .njol .skript .lang .SkriptParser ;
7+ import ch .njol .skript .lang .SkriptParser . ParseResult ;
78import ch .njol .skript .lang .TriggerItem ;
9+ import ch .njol .skript .variables .Variables ;
810import ch .njol .util .Kleenean ;
911import org .bukkit .event .Event ;
1012
@@ -17,8 +19,10 @@ public class EffSynchronicity extends Effect {
1719 private boolean isSync ;
1820
1921 @ Override
20- public boolean init (Expression <?>[] exprs , int matchedPattern , Kleenean isDelayed , SkriptParser . ParseResult parseResult ) {
22+ public boolean init (Expression <?>[] exprs , int matchedPattern , Kleenean isDelayed , ParseResult parseResult ) {
2123 isSync = matchedPattern == 1 ;
24+
25+ getParser ().setHasDelayBefore (Kleenean .TRUE );
2226 return true ;
2327 }
2428
@@ -27,23 +31,33 @@ protected void execute(Event e) { }
2731
2832 @ Override
2933 public TriggerItem walk (Event e ) {
30- Runnable task = () -> {
34+ debug (e , true );
35+
36+ Object localVars = Variables .removeLocals (e );
37+ Delay .addDelayedEvent (e );
38+
39+ Runnable runnable = () -> {
40+ if (localVars != null )
41+ Variables .setLocalVariables (e , localVars );
42+
3143 TriggerItem next = getNext ();
32- if (next != null ) {
33- walk (next , e );
34- }
44+ if (next != null )
45+ walk (getNext (), e );
46+
47+ Variables .removeLocals (e );
3548 };
3649
37- if (isSync ) {
38- Scheduling .sync (task );
39- } else {
40- Scheduling .async (task );
41- }
50+ if (isSync )
51+ Scheduling .sync (runnable );
52+ else
53+ Scheduling .async (runnable );
54+
4255 return null ;
4356 }
4457
4558 @ Override
4659 public String toString (Event e , boolean debug ) {
4760 return isSync ? "sync" : "async" ;
4861 }
49- }
62+
63+ }
0 commit comments