Added Command_plugincontrol.

This commit is contained in:
Steven Lawson
2013-03-24 15:55:34 -04:00
parent b135aa8b58
commit f3b04ee828
4 changed files with 136 additions and 5 deletions

View File

@ -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;
}
}