Deleted old plugin manager code
This commit is contained in:
parent
52b74cb772
commit
76afccf285
@ -1,185 +0,0 @@
|
|||||||
package hu.ditservices.handlers;
|
|
||||||
/*
|
|
||||||
import hu.ditservices.DITSystem;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.PluginCommand;
|
|
||||||
import org.bukkit.command.SimpleCommandMap;
|
|
||||||
import org.bukkit.event.Event;
|
|
||||||
import org.bukkit.plugin.*;
|
|
||||||
import java.io.File;
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
|
|
||||||
public class DitPluginManager {
|
|
||||||
private static DITSystem plugin;
|
|
||||||
public DitPluginManager(DITSystem instance){
|
|
||||||
plugin = instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int load(final String pluginName) {
|
|
||||||
PluginManager pm = Bukkit.getServer().getPluginManager();
|
|
||||||
boolean there = false;
|
|
||||||
for (Plugin pl : pm.getPlugins()){
|
|
||||||
if (pl.getName().toLowerCase().startsWith(pluginName)){
|
|
||||||
there = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (there)
|
|
||||||
{ return 1;} //plugin already exists
|
|
||||||
else {
|
|
||||||
String name = "";
|
|
||||||
String path = plugin.getDataFolder().getParent();
|
|
||||||
File folder = new File(path);
|
|
||||||
ArrayList<File> files = new ArrayList<File>();
|
|
||||||
File[] listOfFiles = folder.listFiles();
|
|
||||||
for (File compare : listOfFiles) {
|
|
||||||
if (compare.isFile()) {
|
|
||||||
try {
|
|
||||||
name = plugin.getPluginLoader().getPluginDescription(compare).getName();
|
|
||||||
} catch (InvalidDescriptionException e) {
|
|
||||||
plugin.getLogger().warning("[Loading Plugin] " + compare.getName() + " didn't match");
|
|
||||||
}
|
|
||||||
if (name.toLowerCase().startsWith(pluginName.toLowerCase())) {
|
|
||||||
files.add(compare);
|
|
||||||
try {
|
|
||||||
Bukkit.getServer().getPluginManager().loadPlugin(compare);
|
|
||||||
} catch (UnknownDependencyException e) {
|
|
||||||
return 2; //missing dependent plugin
|
|
||||||
} catch (InvalidPluginException e) {
|
|
||||||
return -1; //not a plugin
|
|
||||||
} catch (InvalidDescriptionException e) {
|
|
||||||
return 3; //invalid description
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Plugin[] plugins = pm.getPlugins();
|
|
||||||
for (Plugin pl : plugins) {
|
|
||||||
for (File compare : files) {
|
|
||||||
try {
|
|
||||||
if (pl.getName().equalsIgnoreCase(plugin.getPluginLoader().getPluginDescription(compare).getName()))
|
|
||||||
if (!pl.isEnabled()){
|
|
||||||
pm.enablePlugin(pl);
|
|
||||||
}else { return 5; }
|
|
||||||
} catch (InvalidDescriptionException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0; //success
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public static int unload(String pluginName) {
|
|
||||||
pluginName = pluginName.toLowerCase().trim();
|
|
||||||
PluginManager manager = Bukkit.getServer().getPluginManager();
|
|
||||||
SimplePluginManager spm = (SimplePluginManager) manager;
|
|
||||||
SimpleCommandMap commandMap = null;
|
|
||||||
List<Plugin> plugins = null;
|
|
||||||
Map<String, Plugin> lookupNames = null;
|
|
||||||
Map<String, Command> knownCommands = null;
|
|
||||||
Map<Event, SortedSet<RegisteredListener>> listeners = null;
|
|
||||||
boolean reloadlisteners = true;
|
|
||||||
try {
|
|
||||||
if (spm != null) {
|
|
||||||
Field pluginsField = spm.getClass().getDeclaredField("plugins");
|
|
||||||
pluginsField.setAccessible(true);
|
|
||||||
plugins = (List<Plugin>) pluginsField.get(spm);
|
|
||||||
|
|
||||||
Field lookupNamesField = spm.getClass().getDeclaredField("lookupNames");
|
|
||||||
lookupNamesField.setAccessible(true);
|
|
||||||
lookupNames = (Map<String, Plugin>) lookupNamesField.get(spm);
|
|
||||||
|
|
||||||
try {
|
|
||||||
Field listenersField = spm.getClass().getDeclaredField("listeners");
|
|
||||||
listenersField.setAccessible(true);
|
|
||||||
listeners = (Map<Event, SortedSet<RegisteredListener>>) listenersField.get(spm);
|
|
||||||
} catch (Exception e) {
|
|
||||||
reloadlisteners = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Field commandMapField = spm.getClass().getDeclaredField("commandMap");
|
|
||||||
commandMapField.setAccessible(true);
|
|
||||||
commandMap = (SimpleCommandMap) commandMapField.get(spm);
|
|
||||||
|
|
||||||
Field knownCommandsField = commandMap.getClass().getDeclaredField("knownCommands");
|
|
||||||
knownCommandsField.setAccessible(true);
|
|
||||||
knownCommands = (Map<String, Command>) knownCommandsField.get(commandMap);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
boolean in = false;
|
|
||||||
|
|
||||||
for (Plugin pl : Bukkit.getServer().getPluginManager().getPlugins()) {
|
|
||||||
if (in)
|
|
||||||
break;
|
|
||||||
if (pl.getName().toLowerCase().startsWith(pluginName.toLowerCase())) {
|
|
||||||
if (pl.isEnabled()) {
|
|
||||||
manager.disablePlugin(pl);
|
|
||||||
if (plugins != null && plugins.contains(pl))
|
|
||||||
plugins.remove(pl);
|
|
||||||
|
|
||||||
if (lookupNames != null && lookupNames.containsKey(pl.getName())) {
|
|
||||||
lookupNames.remove(pl.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (listeners != null && reloadlisteners) {
|
|
||||||
for (SortedSet<RegisteredListener> set : listeners.values()) {
|
|
||||||
for (Iterator<RegisteredListener> it = set.iterator(); it.hasNext(); ) {
|
|
||||||
RegisteredListener value = it.next();
|
|
||||||
|
|
||||||
if (value.getPlugin() == pl) {
|
|
||||||
it.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (commandMap != null) {
|
|
||||||
|
|
||||||
for (Iterator<Map.Entry<String, Command>> it = knownCommands.entrySet().iterator(); it.hasNext(); ) {
|
|
||||||
Map.Entry<String, Command> entry = it.next();
|
|
||||||
if (entry.getValue() instanceof PluginCommand) {
|
|
||||||
PluginCommand c = (PluginCommand) entry.getValue();
|
|
||||||
if (c.getPlugin() == pl) {
|
|
||||||
c.unregister(commandMap);
|
|
||||||
it.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (Plugin plu : Bukkit.getServer().getPluginManager().getPlugins()) {
|
|
||||||
if (plu.getDescription().getDepend() != null) {
|
|
||||||
for (String depend : plu.getDescription().getDepend()) {
|
|
||||||
if (depend.equalsIgnoreCase(pl.getName())) {
|
|
||||||
plugin.getLogger().info("[Unloading Plugin] " + plu.getName() + " must be disabled!");
|
|
||||||
unload(plu.getName());
|
|
||||||
return 1; //dependencies also disabled
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in = true;
|
|
||||||
} else { return 5; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!in) {
|
|
||||||
plugin.getLogger().info("Not an existing plugin");
|
|
||||||
return -1; //non-existent
|
|
||||||
}
|
|
||||||
System.gc();
|
|
||||||
return 0; //success
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
Loading…
x
Reference in New Issue
Block a user