mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-02-12 20:29:20 +00:00
![snowleo](/assets/img/avatar_default.png)
see http://leaky.bukkit.org/issues/641 for details Disabled all commands except /plugin list /plugin load, /plugin reload and /plugin enable will call server.reload() function. git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1127 e251c2fe-e539-e718-e476-b85c1f46cddb
169 lines
3.7 KiB
Java
169 lines
3.7 KiB
Java
package com.earth2me.essentials.commands;
|
|
|
|
import java.io.File;
|
|
import org.bukkit.Server;
|
|
import com.earth2me.essentials.Essentials;
|
|
import com.earth2me.essentials.User;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.plugin.Plugin;
|
|
import org.bukkit.plugin.PluginManager;
|
|
|
|
|
|
public class Commandplugin extends EssentialsCommand
|
|
{
|
|
private Server server;
|
|
|
|
public Commandplugin()
|
|
{
|
|
super("plugin");
|
|
}
|
|
|
|
@Override
|
|
public void run(Server server, Essentials parent, CommandSender sender, String commandLabel, String[] args) throws Exception
|
|
{
|
|
this.server = server;
|
|
|
|
PluginCommands sub = null;
|
|
try
|
|
{
|
|
sub = PluginCommands.valueOf(args[0].toUpperCase());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sender.sendMessage("§cUsage: /plugin [load|reload|enable|disable|list] [PluginName]");
|
|
return;
|
|
}
|
|
|
|
switch (sub)
|
|
{
|
|
case LOAD: // All disable functions are broken until
|
|
// http://leaky.bukkit.org/issues/641 is fixed.
|
|
sender.sendMessage("This function is broken. Performing /reload now.");
|
|
server.reload();
|
|
/*if (args.length < 2) return;
|
|
User.charge(sender, this);
|
|
loadPlugin(args[1], sender);*/
|
|
return;
|
|
|
|
case RELOAD:
|
|
sender.sendMessage("This function is broken. Performing /reload now.");
|
|
server.reload();
|
|
/*if (args.length < 2) return;
|
|
User.charge(sender, this);
|
|
reloadPlugin(args[1], sender);*/
|
|
return;
|
|
|
|
case ENABLE:
|
|
sender.sendMessage("This function is broken. Performing /reload now.");
|
|
server.reload();
|
|
/*if (args.length < 2) return;
|
|
User.charge(sender, this);
|
|
enablePlugin(args[1], sender);*/
|
|
return;
|
|
|
|
case DISABLE:
|
|
sender.sendMessage("This function is broken.");
|
|
/*if (args.length < 2) return;
|
|
User.charge(sender, this);
|
|
disablePlugin(args[1], sender);*/
|
|
return;
|
|
|
|
case LIST:
|
|
User.charge(sender, this);
|
|
listPlugins(sender);
|
|
return;
|
|
}
|
|
}
|
|
|
|
private void listPlugins(CommandSender player)
|
|
{
|
|
StringBuilder plugins = new StringBuilder();
|
|
for (Plugin p : server.getPluginManager().getPlugins())
|
|
{
|
|
plugins.append(p.isEnabled() ? " §a" : " §c");
|
|
plugins.append(p.getDescription().getName());
|
|
}
|
|
|
|
plugins.insert(0, "§7Plugins:§f");
|
|
player.sendMessage(plugins.toString());
|
|
}
|
|
|
|
private boolean reloadPlugin(String name, CommandSender player)
|
|
{
|
|
return disablePlugin(name, player) && enablePlugin(name, player);
|
|
}
|
|
|
|
private boolean loadPlugin(String name, CommandSender sender)
|
|
{
|
|
try
|
|
{
|
|
PluginManager pm = server.getPluginManager();
|
|
pm.loadPlugin(new File("plugins", name + ".jar"));
|
|
sender.sendMessage("§7Plugin loaded.");
|
|
return enablePlugin(name, sender);
|
|
}
|
|
catch (Throwable ex)
|
|
{
|
|
sender.sendMessage("§cCould not load plugin. Is the file named properly?");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private boolean enablePlugin(String name, CommandSender sender)
|
|
{
|
|
try
|
|
{
|
|
final PluginManager pm = server.getPluginManager();
|
|
final Plugin plugin = pm.getPlugin(name);
|
|
if (!plugin.isEnabled()) new Thread(new Runnable()
|
|
{
|
|
public void run()
|
|
{
|
|
synchronized (pm)
|
|
{
|
|
pm.enablePlugin(plugin);
|
|
}
|
|
}
|
|
}).start();
|
|
sender.sendMessage("§7Plugin enabled.");
|
|
return true;
|
|
}
|
|
catch (Throwable ex)
|
|
{
|
|
listPlugins(sender);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private boolean disablePlugin(String name, CommandSender sender)
|
|
{
|
|
try
|
|
{
|
|
final PluginManager pm = server.getPluginManager();
|
|
final Plugin plugin = pm.getPlugin(name);
|
|
if (plugin.isEnabled()) new Thread(new Runnable()
|
|
{
|
|
public void run()
|
|
{
|
|
synchronized (pm)
|
|
{
|
|
pm.disablePlugin(plugin);
|
|
}
|
|
}
|
|
}).start();
|
|
sender.sendMessage("§7Plugin disabled.");
|
|
return true;
|
|
}
|
|
catch (Throwable ex)
|
|
{
|
|
listPlugins(sender);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
private enum PluginCommands
|
|
{
|
|
LOAD, RELOAD, LIST, ENABLE, DISABLE
|
|
}
|
|
}
|