Force the use of EventListener

This commit is contained in:
TheMode 2021-06-02 20:56:47 +02:00
parent ee99c94509
commit c95c8430b6
3 changed files with 10 additions and 11 deletions

View File

@ -20,10 +20,14 @@ public class EventListener<T extends Event> {
this.executor = executor;
}
public static <T extends Event> EventListener.Builder<T> of(@NotNull Class<T> eventType) {
public static <T extends Event> EventListener.Builder<T> builder(@NotNull Class<T> eventType) {
return new EventListener.Builder<>(eventType);
}
public static <T extends Event> EventListener<T> of(@NotNull Class<T> eventType, @NotNull Consumer<@NotNull T> listener) {
return EventListener.builder(eventType).handler(listener).build();
}
public static class Builder<T extends Event> {
private final Class<T> eventType;

View File

@ -4,7 +4,6 @@ import net.minestom.server.event.handler.EventHandler;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Predicate;
public interface EventNode<T extends Event> {
@ -36,10 +35,6 @@ public interface EventNode<T extends Event> {
void removeListener(@NotNull EventListener<? extends T> listener);
default <E extends T> void addListener(@NotNull Class<E> eventClass, @NotNull Consumer<@NotNull E> listener) {
addListener(EventListener.of(eventClass).handler(listener).build());
}
@NotNull String getName();
@NotNull List<@NotNull EventNode<T>> getChildren();

View File

@ -138,19 +138,19 @@ public class PlayerInit {
// EVENT REGISTERING
var node = EventNode.type(EventFilter.PLAYER);
node.addListener(EventListener.of(PlayerTickEvent.class)
node.addListener(EventListener.builder(PlayerTickEvent.class)
.handler(playerTickEvent -> System.out.println("Player tick!"))
.expirationCount(2)
.build());
var empty = EventNode.all();
empty.addListener(PlayerMoveEvent.class, (event) -> {
});
empty.addListener(EventListener.of(PlayerMoveEvent.class, (event) -> {
}));
var list = EventNode.list(EventFilter.PLAYER);
list.addListener(PlayerMoveEvent.class, playerMoveEvent -> {
list.addListener(EventListener.of(PlayerMoveEvent.class, playerMoveEvent -> {
System.out.println("move");
});
}));
GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler();
globalEventHandler.addEventCallback(EntityAttackEvent.class, event -> {