Creating an Event
A program entry-point, which scripts can "listen" to from multiple triggers.
Events are an entry-point for a program: they always start a new process.
The event object is available from anywhere within the process it starts via the
event
expression. Events will usually register special literal properties (event-values) for scripts to read from.The event syntax handler should extend the
EventHolder
class.public class MyEventSyntax extends EventHolder {
public MyEventSyntax() {
super(myLibrary, "on my event");
}
@Override
public Class<? extends Event> eventClass() {
return MyEvent.class; // this is the actual event class
}
}
Event syntax should always start with
on
for the sake of clarity.Most of the behaviour is handled within the event object. This is a separate class from the event syntax handler, and an instance is given to Skript in order to trigger the event.
public class MyEvent extends Event {
public MyEvent() {
}
@EventValue("name") // event-name
public String getName() {
return script.getSimpleName();
}
@EventValue("number") // event-number
public Number getNumber() {
return 10.5;
}
}
The event can be triggered from the Skript instance.
skript.runEvent(new MyEvent());
It may also be run only for an individual script.
skript.runEvent(new MyEvent(), script);
Event triggers will always start a new process (or recycle a finished one where possible) but multiple event triggers called at the same time will receive the same event object, so be careful with concurrency-sensitive data.
The script process can be retrieved from within an event-value method, since it is guaranteed to be run on a Skript thread.
Last modified 1yr ago