diff --git a/src/main/java/org/bukkit/event/server/PluginEvent.java b/src/main/java/org/bukkit/event/server/PluginEvent.java new file mode 100644 index 00000000..60c2c279 --- /dev/null +++ b/src/main/java/org/bukkit/event/server/PluginEvent.java @@ -0,0 +1,26 @@ + +package org.bukkit.event.server; + +import org.bukkit.plugin.Plugin; + +/** + * Used for plugin loaded and unloaded events + */ +public class PluginEvent extends ServerEvent { + private final Plugin plugin; + + public PluginEvent(final Type type, final Plugin plugin) { + super(type); + + this.plugin = plugin; + } + + /** + * Gets the plugin involved in this event + * + * @return Plugin for this event + */ + public Plugin getPlugin() { + return plugin; + } +} diff --git a/src/main/java/org/bukkit/event/server/ServerEvent.java b/src/main/java/org/bukkit/event/server/ServerEvent.java new file mode 100644 index 00000000..3c328137 --- /dev/null +++ b/src/main/java/org/bukkit/event/server/ServerEvent.java @@ -0,0 +1,13 @@ + +package org.bukkit.event.server; + +import org.bukkit.event.Event; + +/** + * Miscellaneous server events + */ +public class ServerEvent extends Event { + public ServerEvent(final Type type) { + super(type); + } +} diff --git a/src/main/java/org/bukkit/event/server/ServerListener.java b/src/main/java/org/bukkit/event/server/ServerListener.java new file mode 100644 index 00000000..efc44cf6 --- /dev/null +++ b/src/main/java/org/bukkit/event/server/ServerListener.java @@ -0,0 +1,25 @@ + +package org.bukkit.event.server; + +import org.bukkit.event.Listener; + +/** + * Handles all miscellaneous server events + */ +public class ServerListener implements Listener { + /** + * Called when a plugin is enabled + * + * @param event Relevant event details + */ + public void onPluginEnabled(PluginEvent event) { + } + + /** + * Called when a plugin is disabled + * + * @param event Relevant event details + */ + public void onPluginDisabled(PluginEvent event) { + } +} diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java index 16fc8056..6152d9d7 100644 --- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java @@ -17,6 +17,8 @@ import org.bukkit.event.Event; import org.bukkit.event.Listener; import org.bukkit.event.block.*; import org.bukkit.event.player.*; +import org.bukkit.event.server.PluginEvent; +import org.bukkit.event.server.ServerListener; import org.bukkit.plugin.*; /** @@ -83,45 +85,57 @@ public final class JavaPluginLoader implements PluginLoader { PlayerListener trueListener = (PlayerListener)listener; switch (event.getType()) { - case PLAYER_JOIN: - trueListener.onPlayerJoin((PlayerEvent)event); - break; - case PLAYER_QUIT: - trueListener.onPlayerQuit((PlayerEvent)event); - break; - case PLAYER_COMMAND: - trueListener.onPlayerCommand((PlayerChatEvent)event); - break; - case PLAYER_CHAT: - trueListener.onPlayerChat((PlayerChatEvent)event); - break; - case PLAYER_MOVE: - trueListener.onPlayerMove((PlayerMoveEvent)event); - break; - case PLAYER_TELEPORT: - trueListener.onPlayerTeleport((PlayerMoveEvent)event); - break; - case PLAYER_LOGIN: - trueListener.onPlayerLogin((PlayerLoginEvent)event); - break; + case PLAYER_JOIN: + trueListener.onPlayerJoin((PlayerEvent)event); + break; + case PLAYER_QUIT: + trueListener.onPlayerQuit((PlayerEvent)event); + break; + case PLAYER_COMMAND: + trueListener.onPlayerCommand((PlayerChatEvent)event); + break; + case PLAYER_CHAT: + trueListener.onPlayerChat((PlayerChatEvent)event); + break; + case PLAYER_MOVE: + trueListener.onPlayerMove((PlayerMoveEvent)event); + break; + case PLAYER_TELEPORT: + trueListener.onPlayerTeleport((PlayerMoveEvent)event); + break; + case PLAYER_LOGIN: + trueListener.onPlayerLogin((PlayerLoginEvent)event); + break; } } else if (listener instanceof BlockListener) { BlockListener trueListener = (BlockListener)listener; switch (event.getType()) { - case BLOCK_PHYSICS: - trueListener.onBlockPhysics((BlockPhysicsEvent)event); - break; - case BLOCK_CANBUILD: - trueListener.onBlockCanBuild((BlockCanBuildEvent)event); - break; - case BLOCK_FLOW: - trueListener.onBlockFlow((BlockFromToEvent)event); - break; + case BLOCK_PHYSICS: + trueListener.onBlockPhysics((BlockPhysicsEvent)event); + break; + case BLOCK_CANBUILD: + trueListener.onBlockCanBuild((BlockCanBuildEvent)event); + break; + case BLOCK_FLOW: + trueListener.onBlockFlow((BlockFromToEvent)event); + break; + } + } else if(listener instanceof ServerListener) { + ServerListener trueListener = (ServerListener)listener; + + switch (event.getType()) { + case PLUGIN_ENABLE: + trueListener.onPluginEnabled((PluginEvent)event); + break; + case PLUGIN_DISABLE: + trueListener.onPluginDisabled((PluginEvent)event); + break; } } else if(listener instanceof CustomEventListener) { - if(event.getType()==Event.Type.CUSTOM_EVENT) + if(event.getType()==Event.Type.CUSTOM_EVENT) { ((CustomEventListener)listener).onCustomEvent(event); + } } } }