diff options
author | Wesley Wolfe <weswolf@aol.com> | 2012-08-02 23:21:02 -0500 |
---|---|---|
committer | Wesley Wolfe <weswolf@aol.com> | 2012-08-02 23:21:02 -0500 |
commit | bd309e212cdfce7108da9c8f6236e3cab5d9ed56 (patch) | |
tree | 1df717992eec1c22d4840dc14b57293ff0abfdda /src/main/java | |
parent | 7789f67744792aca875229d00ddb38dc952bee52 (diff) | |
download | bukkit-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/main/java')
-rw-r--r-- | src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java | 20 |
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 { |