diff --git a/src/main/java/net/minestom/server/event/EventNodeImpl.java b/src/main/java/net/minestom/server/event/EventNodeImpl.java index 3b116c573..f9e77546b 100644 --- a/src/main/java/net/minestom/server/event/EventNodeImpl.java +++ b/src/main/java/net/minestom/server/event/EventNodeImpl.java @@ -333,8 +333,7 @@ class EventNodeImpl implements EventNode { // If at least one mapped node listen to this handle type, // loop through them and forward to mapped node if there is a match if (!filters.isEmpty()) { - final var filterList = List.copyOf(filters); - final int size = filterList.size(); + final EventFilter[] filterList = filters.toArray(EventFilter[]::new); final BiConsumer, E> mapper = (filter, event) -> { final Object handler = filter.castHandler(event); final Handle handle = handlers.get(handler); @@ -345,13 +344,13 @@ class EventNodeImpl implements EventNode { } } }; - if (size == 1) { - final var firstFilter = filterList.get(0); + if (filterList.length == 1) { + final var firstFilter = filterList[0]; // Common case where there is only one filter this.listenersCache.add(event -> mapper.accept(firstFilter, event)); - } else if (size == 2) { - final var firstFilter = filterList.get(0); - final var secondFilter = filterList.get(1); + } else if (filterList.length == 2) { + final var firstFilter = filterList[0]; + final var secondFilter = filterList[1]; this.listenersCache.add(event -> { mapper.accept(firstFilter, event); mapper.accept(secondFilter, event);