summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWesley Wolfe <weswolf@aol.com>2012-08-02 23:21:02 -0500
committerWesley Wolfe <weswolf@aol.com>2012-08-02 23:21:02 -0500
commitbd309e212cdfce7108da9c8f6236e3cab5d9ed56 (patch)
tree1df717992eec1c22d4840dc14b57293ff0abfdda /src
parent7789f67744792aca875229d00ddb38dc952bee52 (diff)
downloadbukkit-bd309e212cdfce7108da9c8f6236e3cab5d9ed56.tar
bukkit-bd309e212cdfce7108da9c8f6236e3cab5d9ed56.tar.gz
bukkit-bd309e212cdfce7108da9c8f6236e3cab5d9ed56.tar.lz
bukkit-bd309e212cdfce7108da9c8f6236e3cab5d9ed56.tar.xz
bukkit-bd309e212cdfce7108da9c8f6236e3cab5d9ed56.zip
Warn server owners of plugins using deprecated events. Fixes BUKKIT-2027
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
index 38ca9422..bebfcc28 100644
--- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
+++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
@@ -8,6 +8,7 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
@@ -30,6 +31,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.event.server.PluginEnableEvent;
+import org.bukkit.plugin.AuthorNagException;
import org.bukkit.plugin.EventExecutor;
import org.bukkit.plugin.InvalidDescriptionException;
import org.bukkit.plugin.InvalidPluginException;
@@ -293,6 +295,24 @@ public class JavaPluginLoader implements PluginLoader {
eventSet = new HashSet<RegisteredListener>();
ret.put(eventClass, eventSet);
}
+
+ for (Class<?> clazz = eventClass; Event.class.isAssignableFrom(clazz); clazz = clazz.getSuperclass()) {
+ // This loop checks for extending deprecated events
+ if (clazz.getAnnotation(Deprecated.class) != null) {
+ plugin.getLogger().log(
+ Level.WARNING,
+ String.format(
+ "\"%s\" has registered a listener for %s on method \"%s\", but the event is Deprecated." +
+ " Server performance will be affected; please notify the authors %s.",
+ plugin.getDescription().getFullName(),
+ clazz.getName(),
+ method.toGenericString(),
+ Arrays.toString(plugin.getDescription().getAuthors().toArray())),
+ new AuthorNagException(null));
+ break;
+ }
+ }
+
EventExecutor executor = new EventExecutor() {
public void execute(Listener listener, Event event) throws EventException {
try {