/
TimeChangeScriptEvent.java
78 lines (67 loc) · 2.19 KB
/
TimeChangeScriptEvent.java
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package com.denizenscript.denizen.events.world;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.WorldTag;
import com.denizenscript.denizencore.objects.ArgumentHelper;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import org.bukkit.event.Listener;
public class TimeChangeScriptEvent extends BukkitScriptEvent implements Listener {
// <--[event]
// @Events
// time changes (in <world>)
// time <0-23> in <world>
//
// @Group World
//
// @Regex ^on time [^\s]+( in [^\s]+)$
//
// @Triggers when the current time changes in a world (once per mine-hour).
//
// @Context
// <context.time> returns the current time (the hour, as a number from 0 to 23).
// <context.world> returns the world.
//
// -->
public TimeChangeScriptEvent() {
instance = this;
}
public static TimeChangeScriptEvent instance;
public int hour;
public WorldTag world;
@Override
public boolean couldMatch(ScriptPath path) {
if (!path.eventLower.startsWith("time")) {
return false;
}
String arg1 = path.eventArgLowerAt(1);
if (!arg1.equals("changes") && !ArgumentHelper.matchesInteger(arg1)) {
return false;
}
return true;
}
@Override
public boolean matches(ScriptPath path) {
if (path.eventArgLowerAt(2).equals("in") && !runGenericCheck(path.eventArgLowerAt(3), world.getName())) {
return false;
}
String arg1 = path.eventArgLowerAt(1);
if (!arg1.equals("changes") && !arg1.equals(String.valueOf(hour))) {
return false;
}
return super.matches(path);
}
@Override
public String getName() {
return "TimeChanges";
}
@Override
public ObjectTag getContext(String name) {
if (name.equals("time")) {
return new ElementTag(hour);
}
else if (name.equals("world")) {
return world;
}
return super.getContext(name);
}
}