implement FunctionalEventHandler

This commit is contained in:
dfsek
2021-07-21 22:04:40 -07:00
parent 6f1938ef82
commit 953318d9c0
21 changed files with 234 additions and 120 deletions

View File

@@ -1,6 +1,5 @@
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;
@@ -13,21 +12,10 @@ public interface EventManager {
* Call an event, and return the execution status.
*
* @param event Event to pass to all registered EventListeners.
* @return False if the event is cancellable and has been cancelled, otherwise true.
*/
boolean callEvent(Event event);
void callEvent(Event event);
/**
* Register an {@link EventListener} under an {@link TerraAddon}.
*
* @param addon Addon to register listener for.
* @param listener Listener to register.
*/
void registerListener(TerraAddon addon, EventListener listener);
<T extends EventHandler> void registerHandler(Class<T> clazz, T handler);
<T extends Event> EventContext<T> register(Class<T> clazz);
<T extends Event> EventContext<T> register(TypeKey<T> clazz);
void registerHandler(EventHandler handler);
<T extends EventHandler> T getHandler(Class<T> clazz);
}

View File

@@ -0,0 +1,12 @@
package com.dfsek.terra.api.event.functional;
import com.dfsek.terra.api.addon.TerraAddon;
import com.dfsek.terra.api.event.EventHandler;
import com.dfsek.terra.api.event.events.Event;
import com.dfsek.terra.api.util.reflection.TypeKey;
public interface FunctionalEventHandler extends EventHandler {
<T extends Event> EventContext<T> register(TerraAddon addon, Class<T> clazz);
<T extends Event> EventContext<T> register(TerraAddon addon, TypeKey<T> clazz);
}