mirror of
https://github.com/Minestom/Minestom.git
synced 2025-03-02 11:21:15 +01:00
Introduce EventGroup
This commit is contained in:
parent
920a36399f
commit
36942708bb
@ -1,6 +1,7 @@
|
|||||||
package net.minestom.server.event;
|
package net.minestom.server.event;
|
||||||
|
|
||||||
import net.minestom.server.event.handler.EventHandler;
|
import net.minestom.server.event.handler.EventHandler;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Object which can be listened to by an {@link EventHandler}.
|
* Object which can be listened to by an {@link EventHandler}.
|
||||||
@ -8,6 +9,10 @@ import net.minestom.server.event.handler.EventHandler;
|
|||||||
* Called using {@link EventHandler#callEvent(Class, Event)}.
|
* Called using {@link EventHandler#callEvent(Class, Event)}.
|
||||||
*/
|
*/
|
||||||
public class Event {
|
public class Event {
|
||||||
|
public static EventGroup group(@NotNull EventListener<?>... listeners) {
|
||||||
|
return new EventGroup(listeners);
|
||||||
|
}
|
||||||
|
|
||||||
public static <T extends EntityEvent> EventListener.Builder<T> entity(Class<T> eventType) {
|
public static <T extends EntityEvent> EventListener.Builder<T> entity(Class<T> eventType) {
|
||||||
return new EventListener.Builder<>(eventType);
|
return new EventListener.Builder<>(eventType);
|
||||||
}
|
}
|
||||||
|
27
src/main/java/net/minestom/server/event/EventGroup.java
Normal file
27
src/main/java/net/minestom/server/event/EventGroup.java
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package net.minestom.server.event;
|
||||||
|
|
||||||
|
import net.minestom.server.event.handler.EventHandler;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class EventGroup implements ListenerAttach {
|
||||||
|
|
||||||
|
private final EventListener<?>[] listeners;
|
||||||
|
|
||||||
|
protected EventGroup(@NotNull EventListener<?>... listeners) {
|
||||||
|
this.listeners = listeners;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void attachTo(@NotNull EventHandler handler) {
|
||||||
|
for (EventListener<?> listener : listeners) {
|
||||||
|
listener.attachTo(handler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void detachFrom(@NotNull EventHandler handler) {
|
||||||
|
for (EventListener<?> listener : listeners) {
|
||||||
|
listener.detachFrom(handler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -10,7 +10,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class EventListener<T extends Event> {
|
public class EventListener<T extends Event> implements ListenerAttach {
|
||||||
|
|
||||||
private final Class<T> eventType;
|
private final Class<T> eventType;
|
||||||
private final Set<EventHandler> attach = new CopyOnWriteArraySet<>();
|
private final Set<EventHandler> attach = new CopyOnWriteArraySet<>();
|
||||||
@ -21,6 +21,7 @@ public class EventListener<T extends Event> {
|
|||||||
this.combined = combined;
|
this.combined = combined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void attachTo(@NotNull EventHandler handler) {
|
public void attachTo(@NotNull EventHandler handler) {
|
||||||
final boolean success = this.attach.add(handler);
|
final boolean success = this.attach.add(handler);
|
||||||
if (success) {
|
if (success) {
|
||||||
@ -28,6 +29,7 @@ public class EventListener<T extends Event> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void detachFrom(@NotNull EventHandler handler) {
|
public void detachFrom(@NotNull EventHandler handler) {
|
||||||
final boolean success = this.attach.remove(handler);
|
final boolean success = this.attach.remove(handler);
|
||||||
if (success) {
|
if (success) {
|
||||||
|
10
src/main/java/net/minestom/server/event/ListenerAttach.java
Normal file
10
src/main/java/net/minestom/server/event/ListenerAttach.java
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package net.minestom.server.event;
|
||||||
|
|
||||||
|
import net.minestom.server.event.handler.EventHandler;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public interface ListenerAttach {
|
||||||
|
void attachTo(@NotNull EventHandler handler);
|
||||||
|
|
||||||
|
void detachFrom(@NotNull EventHandler handler);
|
||||||
|
}
|
@ -143,7 +143,10 @@ public class PlayerInit {
|
|||||||
.filter(playerChatEvent -> player.isCreative())
|
.filter(playerChatEvent -> player.isCreative())
|
||||||
.handler(playerChatEvent -> Audiences.players().sendMessage(Component.text("Listener is working!")))
|
.handler(playerChatEvent -> Audiences.players().sendMessage(Component.text("Listener is working!")))
|
||||||
.build();
|
.build();
|
||||||
listener.attachTo(player);
|
//listener.attachTo(player);
|
||||||
|
|
||||||
|
var group = Event.group(listener);
|
||||||
|
group.attachTo(player);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user