Plugins can no longer register events while disabled

By: Dinnerbone <dinnerbone@dinnerbone.com>
This commit is contained in:
Bukkit/Spigot 2011-03-14 15:11:43 +00:00
parent 7e9974d53c
commit 8117c7771d
2 changed files with 29 additions and 1 deletions

View file

@ -0,0 +1,23 @@
package org.bukkit.plugin;
/**
* Thrown when a plugin attempts to interact with the server when it is not enabled
*/
public class IllegalPluginAccessException extends RuntimeException {
/**
* Creates a new instance of <code>IllegalPluginAccessException</code> without detail message.
*/
public IllegalPluginAccessException() {
}
/**
* Constructs an instance of <code>IllegalPluginAccessException</code> with the specified detail message.
* @param msg the detail message.
*/
public IllegalPluginAccessException(String msg) {
super(msg);
}
}

View file

@ -270,8 +270,9 @@ public final class SimplePluginManager implements PluginManager {
*/
public void registerEvent(Event.Type type, Listener listener, Priority priority, Plugin plugin) {
if (!plugin.isEnabled()) {
server.getLogger().warning("Plugin '" + plugin.getDescription().getName() + "' (ver " + plugin.getDescription().getVersion() + ") is registering events before it is enabled. It may be misbehaving and the author needs to fix this.");
throw new IllegalPluginAccessException("Plugin attempted to register " + type + " while not enabled");
}
getEventListeners( type ).add(new RegisteredListener(listener, priority, plugin, type));
}
@ -285,6 +286,10 @@ public final class SimplePluginManager implements PluginManager {
* @param plugin Plugin to register
*/
public void registerEvent(Event.Type type, Listener listener, EventExecutor executor, Priority priority, Plugin plugin) {
if (!plugin.isEnabled()) {
throw new IllegalPluginAccessException("Plugin attempted to register " + type + " while not enabled");
}
getEventListeners( type ).add(new RegisteredListener(listener, executor, priority, plugin));
}