From 3cb7cdaea83d932556c31af73bf1e37800d75ea4 Mon Sep 17 00:00:00 2001 From: TheMode Date: Tue, 11 May 2021 04:52:57 +0200 Subject: [PATCH] Create EventListener class --- .../java/net/minestom/server/event/Event.java | 84 +------------------ .../minestom/server/event/EventListener.java | 76 +++++++++++++++++ 2 files changed, 80 insertions(+), 80 deletions(-) create mode 100644 src/main/java/net/minestom/server/event/EventListener.java diff --git a/src/main/java/net/minestom/server/event/Event.java b/src/main/java/net/minestom/server/event/Event.java index 2aebbac11..e3322b671 100644 --- a/src/main/java/net/minestom/server/event/Event.java +++ b/src/main/java/net/minestom/server/event/Event.java @@ -1,14 +1,6 @@ package net.minestom.server.event; import net.minestom.server.event.handler.EventHandler; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArraySet; -import java.util.function.Consumer; -import java.util.function.Predicate; /** * Object which can be listened to by an {@link EventHandler}. @@ -16,79 +8,11 @@ import java.util.function.Predicate; * Called using {@link EventHandler#callEvent(Class, Event)}. */ public class Event { - - public static Listener.Builder entity(Class eventType) { - return new Listener.Builder<>(eventType); + public static EventListener.Builder entity(Class eventType) { + return new EventListener.Builder<>(eventType); } - public static Listener.Builder player(Class eventType) { - return new Listener.Builder<>(eventType); + public static EventListener.Builder player(Class eventType) { + return new EventListener.Builder<>(eventType); } - - - public static class Listener { - - private final Class eventType; - private final Set attach = new CopyOnWriteArraySet<>(); - private final Consumer combined; - - private Listener(Class eventType, @NotNull Consumer combined) { - this.eventType = eventType; - this.combined = combined; - } - - public void attachTo(@NotNull EventHandler handler) { - final boolean success = this.attach.add(handler); - if (success) { - handler.addEventCallback(eventType, combined::accept); - } - } - - public void detachFrom(@NotNull EventHandler handler) { - final boolean success = this.attach.remove(handler); - if (success) { - handler.removeEventCallback(eventType, combined::accept); - } - } - - public static class Builder { - - private final Class eventType; - - private List> filters = new ArrayList<>(); - private Consumer handler; - - private Builder(Class eventType) { - this.eventType = eventType; - } - - public Builder filter(Predicate filter) { - this.filters.add(filter); - return this; - } - - public Builder handler(Consumer handler) { - this.handler = handler; - return this; - } - - public Listener build() { - return new Listener<>(eventType, event -> { - // Filtering - if (!filters.isEmpty()) { - if (filters.stream().anyMatch(filter -> !filter.test(event))) { - // Cancelled - return; - } - } - - // Handler - if (handler != null) { - handler.accept(event); - } - }); - } - } - } - } diff --git a/src/main/java/net/minestom/server/event/EventListener.java b/src/main/java/net/minestom/server/event/EventListener.java new file mode 100644 index 000000000..6fbbf334a --- /dev/null +++ b/src/main/java/net/minestom/server/event/EventListener.java @@ -0,0 +1,76 @@ +package net.minestom.server.event; + +import net.minestom.server.event.handler.EventHandler; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.concurrent.CopyOnWriteArraySet; +import java.util.function.Consumer; +import java.util.function.Predicate; + +public class EventListener { + + private final Class eventType; + private final Set attach = new CopyOnWriteArraySet<>(); + private final Consumer combined; + + private EventListener(Class eventType, @NotNull Consumer combined) { + this.eventType = eventType; + this.combined = combined; + } + + public void attachTo(@NotNull EventHandler handler) { + final boolean success = this.attach.add(handler); + if (success) { + handler.addEventCallback(eventType, combined::accept); + } + } + + public void detachFrom(@NotNull EventHandler handler) { + final boolean success = this.attach.remove(handler); + if (success) { + handler.removeEventCallback(eventType, combined::accept); + } + } + + public static class Builder { + + private final Class eventType; + + private List> filters = new ArrayList<>(); + private Consumer handler; + + protected Builder(Class eventType) { + this.eventType = eventType; + } + + public EventListener.Builder filter(Predicate filter) { + this.filters.add(filter); + return this; + } + + public EventListener.Builder handler(Consumer handler) { + this.handler = handler; + return this; + } + + public EventListener build() { + return new EventListener<>(eventType, event -> { + // Filtering + if (!filters.isEmpty()) { + if (filters.stream().anyMatch(filter -> !filter.test(event))) { + // Cancelled + return; + } + } + + // Handler + if (handler != null) { + handler.accept(event); + } + }); + } + } +}