Переглянути джерело

Lazily initialize event invokers

shedaniel 4 роки тому
батько
коміт
5ad8a3fc83

+ 6 - 4
common/src/main/java/me/shedaniel/architectury/event/EventFactory.java

@@ -122,7 +122,6 @@ public final class EventFactory {
             this.clazz = Objects.requireNonNull(clazz);
             this.function = function;
             this.listeners = emptyArray();
-            update();
         }
         
         private T[] emptyArray() {
@@ -135,19 +134,22 @@ public final class EventFactory {
         
         @Override
         public T invoker() {
+            if (invoker == null) {
+                update();
+            }
             return invoker;
         }
         
         @Override
         public void register(T listener) {
             listeners = ArrayUtils.add(listeners, listener);
-            update();
+            invoker = null;
         }
         
         @Override
         public void unregister(T listener) {
             listeners = ArrayUtils.removeElement(listeners, listener);
-            update();
+            invoker = null;
         }
         
         @Override
@@ -158,7 +160,7 @@ public final class EventFactory {
         @Override
         public void clearListeners() {
             listeners = emptyArray();
-            update();
+            invoker = null;
         }
         
         public void update() {