functional event API

This commit is contained in:
dfsek 2021-07-21 19:58:42 -07:00
parent af1520eb83
commit 67c45b7be3
3 changed files with 31 additions and 0 deletions

View File

@ -0,0 +1,7 @@
package com.dfsek.terra.api.event;
import com.dfsek.terra.api.event.events.Event;
public interface EventHandler {
void handle(Event event);
}

View File

@ -2,6 +2,8 @@ package com.dfsek.terra.api.event;
import com.dfsek.terra.api.addon.TerraAddon;
import com.dfsek.terra.api.event.events.Event;
import com.dfsek.terra.api.event.functional.EventContext;
import com.dfsek.terra.api.util.reflection.TypeKey;
/**
* Manages event registration and triggering.
@ -22,4 +24,10 @@ public interface EventManager {
* @param listener Listener to register.
*/
void registerListener(TerraAddon addon, EventListener listener);
<T extends Event> EventContext<T> register(Class<T> clazz);
<T extends Event> EventContext<T> register(TypeKey<T> clazz);
void registerHandler(EventHandler handler);
}

View File

@ -0,0 +1,16 @@
package com.dfsek.terra.api.event.functional;
import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.event.events.Event;
import java.util.function.Consumer;
public interface EventContext<T extends Event> {
EventContext<T> then(Consumer<T> action);
EventContext<T> priority(int priority);
EventContext<T> failThrough();
EventContext<T> global();
}