diff --git a/appinfo.properties b/appinfo.properties index d5c77057..b2135322 100644 --- a/appinfo.properties +++ b/appinfo.properties @@ -1,5 +1,5 @@ -#Sat, 23 Mar 2013 15:17:32 -0400 +#Sat, 23 Mar 2013 17:16:26 -0400 program.VERSION=2.12 -program.BUILDNUM=105 -program.BUILDDATE=03/23/2013 03\:17 PM +program.BUILDNUM=110 +program.BUILDDATE=03/23/2013 05\:16 PM diff --git a/buildnumber.properties b/buildnumber.properties index 6fcab557..06fd5690 100644 --- a/buildnumber.properties +++ b/buildnumber.properties @@ -1,3 +1,3 @@ #Build Number for ANT. Do not edit! -#Sat Mar 23 15:17:32 EDT 2013 -build.number=106 +#Sat Mar 23 17:16:26 EDT 2013 +build.number=111 diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_plugincontrol.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_plugincontrol.java new file mode 100644 index 00000000..6cb48f00 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_plugincontrol.java @@ -0,0 +1,128 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +import org.apache.commons.lang.StringUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginManager; + +@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH) +public class Command_plugincontrol extends TFM_Command +{ + private enum CommandMode + { + ENABLE, DISABLE, LIST, RELOAD + } + + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + CommandMode commandMode = null; + + if (args.length == 1) + { + if (args[0].equalsIgnoreCase("list")) + { + commandMode = CommandMode.LIST; + } + else if (args[0].equalsIgnoreCase("reload")) + { + commandMode = CommandMode.RELOAD; + } + } + else if (args.length >= 2) + { + if (args[0].equalsIgnoreCase("enable")) + { + commandMode = CommandMode.ENABLE; + } + else if (args[0].equalsIgnoreCase("disable")) + { + commandMode = CommandMode.DISABLE; + } + } + + if (commandMode == null) + { + return false; + } + + PluginManager pluginManager = plugin.getServer().getPluginManager(); + + if (commandMode == CommandMode.LIST) + { + playerMsg("Plugins: " + StringUtils.join(pluginManager.getPlugins(), ", ")); + } + else if (commandMode == CommandMode.RELOAD) + { + playerMsg("Disabling all plugins."); + for (Plugin p : pluginManager.getPlugins()) + { + if (!p.getName().toLowerCase().startsWith("totalfreedommod")) + { + pluginManager.disablePlugin(p); + } + } + + playerMsg("Enabling all plugins."); + for (Plugin p : pluginManager.getPlugins()) + { + if (!p.getName().toLowerCase().startsWith("totalfreedommod")) + { + pluginManager.enablePlugin(p); + } + } + } + else + { + final String searchPluginName = args[1].toLowerCase().trim(); + + Plugin targetPlugin = null; + + for (Plugin p : pluginManager.getPlugins()) + { + if (searchPluginName.equalsIgnoreCase(p.getName().toLowerCase().trim())) + { + targetPlugin = p; + break; + } + } + + if (targetPlugin == null) + { + playerMsg("Plugin \"" + searchPluginName + "\" is not installed."); + return true; + } + else + { + if (commandMode == CommandMode.ENABLE) + { + pluginManager.enablePlugin(targetPlugin); + if (targetPlugin.isEnabled()) + { + playerMsg("Plugin \"" + targetPlugin.getName() + "\" enabled."); + } + else + { + playerMsg("Error enabling plugin \"" + targetPlugin.getName() + "\"."); + } + } + else + { + pluginManager.disablePlugin(targetPlugin); + if (!targetPlugin.isEnabled()) + { + playerMsg("Plugin \"" + targetPlugin.getName() + "\" disabled."); + } + else + { + playerMsg("Error disabling plugin \"" + targetPlugin.getName() + "\"."); + } + } + } + } + + return true; + } +} diff --git a/src/plugin.yml b/src/plugin.yml index 5a0aa573..08e207ad 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -163,6 +163,9 @@ commands: permban: description: Manage permanently banned players and IPs usage: / + plugincontrol: + description: Senior Command - Enable / disable plugins. + usage: / < | list > potion: description: Manipulate potion effects. Duration is measured in server ticks (~20 ticks per second). usage: / [target_name]>