Enums and Events


Lifetime

The Lifetime enum is used to tell Mixson how to handle the event after it has been registered. The enum is defined as follows:

public enum Lifetime {
PERSISTENT,
ONCE,
DEFERRED
}

If an event is registered with a Lifetime of PERSISTENT, then Mixson will not unregister the event automatically.

If an event is registered with a Lifetime of ONCE, then Mixson will unregister the event automatically after the event has been fired once.

If an event is registered with a Lifetime of DEFERRED, then Mixson will not add the event to the event poll on its own. The developer will need to pull the event into the event queue manually via the EventContext#pullIntoRuntime method. Event pulling will be explained in more detail in the next section. The DEFERRED lifetime is treated as a ONCE lifetime once pulled.


ErrorPolicy

An ErrorPolicy must be stated for each event that is registered. The error policy tells Mixson what to due in case the given event throws an exception. The EventPolicy enum is defined as follows:

public enum ErrorPolicy {
IGNORE,
LOG,
THROW
}

If an event is registered with an ErrorPolicy of IGNORE, then Mixson will not log or throw the exception. It will be as if it never happened.

If an event is registered with an ErrorPolicy of LOG, then Mixson will log the exception, but continue execution.

If an event is registered with an ErrorPolicy of THROW, then Mixson will throw the exception with extra details as to what file in particular it failed to operate on.


Event

All events in Mixson leverage the Event interface. The interface is defined as follows:

public interface Event<T> {
void runEvent(EventContext<T> context);
}

The interface is a FunctionalInterface, meaning it can be represented with a lambda expression. The EventContext is explored in the following. The generic type T is the deserialized resource type that the event will operate on. Example types include JsonElement, BufferedImage, and NbtTag.