summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDinnerbone <dinnerbone@dinnerbone.com>2011-01-03 02:20:11 +0000
committerDinnerbone <dinnerbone@dinnerbone.com>2011-01-03 02:20:11 +0000
commit51eb1846bfb0c461c887eaf26c11aecf937f377e (patch)
tree73ef911e2d00b98b4be1c40578bb8cbe967c65a4 /src
parentabda42fdc41a18e506422d1608992a7a764b7662 (diff)
downloadbukkit-51eb1846bfb0c461c887eaf26c11aecf937f377e.tar
bukkit-51eb1846bfb0c461c887eaf26c11aecf937f377e.tar.gz
bukkit-51eb1846bfb0c461c887eaf26c11aecf937f377e.tar.lz
bukkit-51eb1846bfb0c461c887eaf26c11aecf937f377e.tar.xz
bukkit-51eb1846bfb0c461c887eaf26c11aecf937f377e.zip
Added enablePlugin and disablePlugin, triggers events
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/plugin/PluginLoader.java18
-rw-r--r--src/main/java/org/bukkit/plugin/PluginManager.java18
-rw-r--r--src/main/java/org/bukkit/plugin/SimplePluginManager.java12
-rw-r--r--src/main/java/org/bukkit/plugin/java/JavaPlugin.java17
-rw-r--r--src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java28
5 files changed, 93 insertions, 0 deletions
diff --git a/src/main/java/org/bukkit/plugin/PluginLoader.java b/src/main/java/org/bukkit/plugin/PluginLoader.java
index 7d75f577..a652b4ba 100644
--- a/src/main/java/org/bukkit/plugin/PluginLoader.java
+++ b/src/main/java/org/bukkit/plugin/PluginLoader.java
@@ -34,4 +34,22 @@ public interface PluginLoader {
* @param event Event details
*/
public void callEvent(RegisteredListener registration, Event event);
+
+ /**
+ * Enables the specified plugin
+ *
+ * Attempting to enable a plugin that is already enabled will have no effect
+ *
+ * @param plugin Plugin to enable
+ */
+ public void enablePlugin(Plugin plugin);
+
+ /**
+ * Disables the specified plugin
+ *
+ * Attempting to disable a plugin that is not enabled will have no effect
+ *
+ * @param plugin Plugin to disable
+ */
+ public void disablePlugin(Plugin plugin);
}
diff --git a/src/main/java/org/bukkit/plugin/PluginManager.java b/src/main/java/org/bukkit/plugin/PluginManager.java
index fcef6b89..0b6d7a30 100644
--- a/src/main/java/org/bukkit/plugin/PluginManager.java
+++ b/src/main/java/org/bukkit/plugin/PluginManager.java
@@ -84,4 +84,22 @@ public interface PluginManager {
* @param plugin Plugin to register
*/
public void registerEvent(Event.Type type, Listener listener, Priority priority, Plugin plugin);
+
+ /**
+ * Enables the specified plugin
+ *
+ * Attempting to enable a plugin that is already enabled will have no effect
+ *
+ * @param plugin Plugin to enable
+ */
+ public void enablePlugin(Plugin plugin);
+
+ /**
+ * Disables the specified plugin
+ *
+ * Attempting to disable a plugin that is not enabled will have no effect
+ *
+ * @param plugin Plugin to disable
+ */
+ public void disablePlugin(Plugin plugin);
}
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
index c761f1da..44cc0eb9 100644
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
@@ -161,6 +161,18 @@ public final class SimplePluginManager implements PluginManager {
}
}
+ public void enablePlugin(final Plugin plugin) {
+ if (!plugin.isEnabled()) {
+ plugin.getPluginLoader().enablePlugin(plugin);
+ }
+ }
+
+ public void disablePlugin(final Plugin plugin) {
+ if (plugin.isEnabled()) {
+ plugin.getPluginLoader().disablePlugin(plugin);
+ }
+ }
+
/**
* Calls a player related event with the given details
*
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPlugin.java b/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
index 7692e3d5..ab5eb5bf 100644
--- a/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
+++ b/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
@@ -88,4 +88,21 @@ public abstract class JavaPlugin implements Plugin {
protected ClassLoader getClassLoader() {
return classLoader;
}
+
+ /**
+ * Sets the enabled state of this plugin
+ *
+ * @param enabled true if enabled, otherwise false
+ */
+ protected void setEnabled(final boolean enabled) {
+ if (isEnabled != enabled) {
+ isEnabled = enabled;
+
+ if (isEnabled) {
+ onEnable();
+ } else {
+ onDisable();
+ }
+ }
+ }
}
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
index 6152d9d7..d90d6a59 100644
--- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
+++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
@@ -138,4 +138,32 @@ public final class JavaPluginLoader implements PluginLoader {
}
}
}
+
+ public void enablePlugin(final Plugin plugin) {
+ if (!(plugin instanceof JavaPlugin)) {
+ throw new IllegalArgumentException("Plugin is not associated with this PluginLoader");
+ }
+
+ if (plugin.isEnabled()) {
+ JavaPlugin jPlugin = (JavaPlugin)plugin;
+
+ server.getPluginManager().callEvent(new PluginEvent(Event.Type.PLUGIN_ENABLE, plugin));
+
+ jPlugin.setEnabled(true);
+ }
+ }
+
+ public void disablePlugin(Plugin plugin) {
+ if (!(plugin instanceof JavaPlugin)) {
+ throw new IllegalArgumentException("Plugin is not associated with this PluginLoader");
+ }
+
+ if (!plugin.isEnabled()) {
+ JavaPlugin jPlugin = (JavaPlugin)plugin;
+
+ server.getPluginManager().callEvent(new PluginEvent(Event.Type.PLUGIN_DISABLE, plugin));
+
+ jPlugin.setEnabled(false);
+ }
+ }
}