-
-
Notifications
You must be signed in to change notification settings - Fork 439
Expand file tree
/
Copy pathIndeterminateDelay.java
More file actions
54 lines (41 loc) · 1.44 KB
/
IndeterminateDelay.java
File metadata and controls
54 lines (41 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package ch.njol.skript.effects;
import ch.njol.skript.variables.VariablesMap;
import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
import ch.njol.skript.Skript;
import ch.njol.skript.lang.TriggerItem;
import ch.njol.skript.util.Timespan;
import ch.njol.skript.variables.Variables;
/**
* @author Peter Güttinger
*/
public class IndeterminateDelay extends Delay {
@Override
@Nullable
protected TriggerItem walk(Event event) {
debug(event, true);
long start = Skript.debug() ? System.nanoTime() : 0;
TriggerItem next = getNext();
if (next != null && Skript.getInstance().isEnabled()) { // See https://github.com/SkriptLang/Skript/issues/3702
Timespan duration = this.duration.getSingle(event);
if (duration == null)
return null;
// Back up local variables
VariablesMap localVars = Variables.removeLocals(event);
Bukkit.getScheduler().scheduleSyncDelayedTask(Skript.getInstance(), () -> {
Delay.addDelayedEvent(event);
Skript.debug(getIndentation() + "... continuing after " + (System.nanoTime() - start) / 1_000_000_000. + "s");
// Re-set local variables
if (localVars != null)
Variables.setLocalVariables(event, localVars);
TriggerItem.walk(next, event);
}, duration.getAs(Timespan.TimePeriod.TICK));
}
return null;
}
@Override
public String toString(@Nullable Event event, boolean debug) {
return "wait for operation to finish";
}
}