summaryrefslogtreecommitdiff
path: root/dicore3/core
diff options
context:
space:
mode:
authorDico Karssiens <dico.karssiens@gmail.com>2018-07-27 01:10:46 +0100
committerDico Karssiens <dico.karssiens@gmail.com>2018-07-27 01:10:46 +0100
commit963b65714c1abf5a8edb748fc99e4692db7e5bf5 (patch)
tree5f774f90d6d0f7794ea66b7a989de198346d9131 /dicore3/core
parentea7c27a7fd7c127920eb5e2aa8f2b2b7c921c607 (diff)
Start adding listeners as per RedstonerServer/Parcels
Diffstat (limited to 'dicore3/core')
-rw-r--r--dicore3/core/src/main/java/io/dico/dicore/ListenerMarker.java19
-rw-r--r--dicore3/core/src/main/java/io/dico/dicore/Registrator.java38
-rw-r--r--dicore3/core/src/main/java/io/dico/dicore/RegistratorListener.java10
3 files changed, 38 insertions, 29 deletions
diff --git a/dicore3/core/src/main/java/io/dico/dicore/ListenerMarker.java b/dicore3/core/src/main/java/io/dico/dicore/ListenerMarker.java
new file mode 100644
index 0000000..e3c0e90
--- /dev/null
+++ b/dicore3/core/src/main/java/io/dico/dicore/ListenerMarker.java
@@ -0,0 +1,19 @@
+package io.dico.dicore;
+
+import org.bukkit.event.EventPriority;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface ListenerMarker {
+
+ String[] events() default {};
+
+ EventPriority priority() default EventPriority.HIGHEST;
+
+ boolean ignoreCancelled() default true;
+}
diff --git a/dicore3/core/src/main/java/io/dico/dicore/Registrator.java b/dicore3/core/src/main/java/io/dico/dicore/Registrator.java
index 9977418..588fba8 100644
--- a/dicore3/core/src/main/java/io/dico/dicore/Registrator.java
+++ b/dicore3/core/src/main/java/io/dico/dicore/Registrator.java
@@ -11,10 +11,6 @@ import org.bukkit.plugin.EventExecutor;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.RegisteredListener;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
import java.lang.reflect.*;
import java.util.*;
import java.util.function.Consumer;
@@ -434,22 +430,6 @@ public final class Registrator {
// # Public types
// ############################################
- public interface IEventListener<T extends Event> extends Consumer<T> {
- @Override
- void accept(T event);
- }
-
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.FIELD)
- public @interface ListenerInfo {
-
- String[] events() default {};
-
- EventPriority priority() default EventPriority.HIGHEST;
-
- boolean ignoreCancelled() default true;
- }
-
public static class Registration extends RegisteredListener {
private final EventExecutor executor;
@@ -658,17 +638,17 @@ public final class Registrator {
fieldLoop:
for (Field f : fields) {
if (isStatic != Modifier.isStatic(f.getModifiers())
- || !f.isAnnotationPresent(ListenerInfo.class)) {
+ || !f.isAnnotationPresent(ListenerMarker.class)) {
continue;
}
- if (!IEventListener.class.isAssignableFrom(f.getType())) {
- handleListenerFieldError(new ListenerFieldError(f, "Field type cannot be assigned to IEventListener: " + f.getGenericType().getTypeName()));
+ if (!RegistratorListener.class.isAssignableFrom(f.getType())) {
+ handleListenerFieldError(new ListenerFieldError(f, "Field type cannot be assigned to RegistratorListener: " + f.getGenericType().getTypeName()));
continue;
}
Type eventType = null;
- if (f.getType() == IEventListener.class) {
+ if (f.getType() == RegistratorListener.class) {
Type[] typeArgs;
if (!(f.getGenericType() instanceof ParameterizedType)
@@ -681,7 +661,7 @@ public final class Registrator {
eventType = typeArgs[0];
} else {
- // field type is subtype of IEventListener.
+ // field type is subtype of RegistratorListener.
// TODO: link type arguments from field declaration (f.getGenericType()) to matching TypeVariables
Type[] interfaces = f.getType().getGenericInterfaces();
for (Type itf : interfaces) {
@@ -702,7 +682,7 @@ public final class Registrator {
continue;
}
- if (itfClass == IEventListener.class) {
+ if (itfClass == RegistratorListener.class) {
if (arguments == null || arguments.length != 1) {
// Log a warning or throw an exception
handleListenerFieldError(new ListenerFieldError(f, ""));
@@ -749,7 +729,7 @@ public final class Registrator {
Class<? extends Event> baseEventClass = (Class<? extends Event>) eventType;
- ListenerInfo anno = f.getAnnotation(ListenerInfo.class);
+ ListenerMarker anno = f.getAnnotation(ListenerMarker.class);
String[] eventClassNames = anno.events();
if (eventClassNames.length > 0) {
@@ -844,9 +824,9 @@ public final class Registrator {
private static final class ListenerFieldInfo {
final Class<? extends Event> eventClass;
final Consumer<? super Event> lambda;
- final ListenerInfo anno;
+ final ListenerMarker anno;
- ListenerFieldInfo(Class<? extends Event> eventClass, Consumer<? super Event> lambda, ListenerInfo anno) {
+ ListenerFieldInfo(Class<? extends Event> eventClass, Consumer<? super Event> lambda, ListenerMarker anno) {
this.eventClass = eventClass;
this.lambda = lambda;
this.anno = anno;
diff --git a/dicore3/core/src/main/java/io/dico/dicore/RegistratorListener.java b/dicore3/core/src/main/java/io/dico/dicore/RegistratorListener.java
new file mode 100644
index 0000000..99fe072
--- /dev/null
+++ b/dicore3/core/src/main/java/io/dico/dicore/RegistratorListener.java
@@ -0,0 +1,10 @@
+package io.dico.dicore;
+
+import org.bukkit.event.Event;
+
+import java.util.function.Consumer;
+
+public interface RegistratorListener<T extends Event> extends Consumer<T> {
+ @Override
+ void accept(T event);
+}