clearPlugins() and clearCommands() for PluginManager and CommandMap respectively
This commit is contained in:
parent
fb5ab3b5d6
commit
99549ef8cc
@ -26,4 +26,8 @@ public interface CommandMap {
|
|||||||
*/
|
*/
|
||||||
public boolean dispatch(Player sender, String cmdLine);
|
public boolean dispatch(Player sender, String cmdLine);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears all registered commands.
|
||||||
|
*/
|
||||||
|
public void clearCommands();
|
||||||
}
|
}
|
||||||
|
@ -86,6 +86,12 @@ public final class SimpleCommandMap implements CommandMap {
|
|||||||
return isRegisteredCommand;
|
return isRegisteredCommand;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearCommands() {
|
||||||
|
synchronized (this) {
|
||||||
|
knownCommands.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static class VersionCommand extends Command {
|
private static class VersionCommand extends Command {
|
||||||
private final Server server;
|
private final Server server;
|
||||||
|
|
||||||
|
@ -80,6 +80,11 @@ public interface PluginManager {
|
|||||||
*/
|
*/
|
||||||
public void disablePlugins();
|
public void disablePlugins();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disables and removes all plugins
|
||||||
|
*/
|
||||||
|
public void clearPlugins();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calls a player related event with the given details
|
* Calls a player related event with the given details
|
||||||
*
|
*
|
||||||
|
@ -188,6 +188,15 @@ public final class SimplePluginManager implements PluginManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearPlugins() {
|
||||||
|
synchronized (this) {
|
||||||
|
disablePlugins();
|
||||||
|
plugins.clear();
|
||||||
|
lookupNames.clear();
|
||||||
|
listeners.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calls a player related event with the given details
|
* Calls a player related event with the given details
|
||||||
*
|
*
|
||||||
|
@ -8,6 +8,7 @@ import java.lang.reflect.Constructor;
|
|||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.jar.JarEntry;
|
import java.util.jar.JarEntry;
|
||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@ -301,10 +302,20 @@ public final class JavaPluginLoader implements PluginLoader {
|
|||||||
|
|
||||||
if (plugin.isEnabled()) {
|
if (plugin.isEnabled()) {
|
||||||
JavaPlugin jPlugin = (JavaPlugin)plugin;
|
JavaPlugin jPlugin = (JavaPlugin)plugin;
|
||||||
|
ClassLoader cloader = jPlugin.getClassLoader();
|
||||||
|
|
||||||
server.getPluginManager().callEvent(new PluginEvent(Event.Type.PLUGIN_DISABLE, plugin));
|
server.getPluginManager().callEvent(new PluginEvent(Event.Type.PLUGIN_DISABLE, plugin));
|
||||||
|
|
||||||
jPlugin.setEnabled(false);
|
jPlugin.setEnabled(false);
|
||||||
|
|
||||||
|
if (cloader instanceof PluginClassLoader) {
|
||||||
|
PluginClassLoader loader = (PluginClassLoader)cloader;
|
||||||
|
Set<String> names = loader.getClasses();
|
||||||
|
|
||||||
|
for (String name : names) {
|
||||||
|
classes.remove(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import java.net.URL;
|
|||||||
import java.net.URLClassLoader;
|
import java.net.URLClassLoader;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A ClassLoader for plugins, to allow shared classes across multiple plugins
|
* A ClassLoader for plugins, to allow shared classes across multiple plugins
|
||||||
@ -38,4 +39,8 @@ public class PluginClassLoader extends URLClassLoader {
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Set<String> getClasses() {
|
||||||
|
return classes.keySet();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user