v2.0.2 - Improve reloading and cleaning up of BungeeCord plugins.
- Cleanup PluginClassLoader properly - Cancel plugin tasks properly - Fixed automatic updater on bungee
This commit is contained in:
parent
f728c3e6bb
commit
584ce8be4d
5 changed files with 53 additions and 16 deletions
|
|
@ -123,6 +123,7 @@ public class BungeePluginManager extends AbstractPluginManager<Plugin> {
|
|||
public CloseableResult reloadPlugin(Plugin plugin) {
|
||||
CloseableResult result = unloadPlugin(plugin);
|
||||
if (result.getResult() != Result.SUCCESS) return result;
|
||||
result.tryClose();
|
||||
|
||||
File file = getPluginFile(plugin.getDescription().getName());
|
||||
if (file == null) return result.set(Result.FILE_DELETED);
|
||||
|
|
@ -145,13 +146,16 @@ public class BungeePluginManager extends AbstractPluginManager<Plugin> {
|
|||
plugin.onDisable();
|
||||
proxy.getPluginManager().unregisterCommands(plugin);
|
||||
proxy.getPluginManager().unregisterListeners(plugin);
|
||||
proxy.getScheduler().cancel(plugin);
|
||||
Closeable closeable;
|
||||
try {
|
||||
RPluginManager.clearPlugin(proxy.getPluginManager(), plugin);
|
||||
closeable = (Closeable) RPluginClassLoader.getPluginClassLoader(plugin);
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
return new CloseableResult(Result.ERROR);
|
||||
}
|
||||
return new CloseableResult(getCloseable(plugin));
|
||||
return new CloseableResult(closeable);
|
||||
}
|
||||
|
||||
public static File getPluginFileExact(String fileName) {
|
||||
|
|
@ -216,17 +220,6 @@ public class BungeePluginManager extends AbstractPluginManager<Plugin> {
|
|||
return entry;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the closable classloader of the plugin, if possible.
|
||||
* @param plugin The plugin.
|
||||
* @return The closable instance.
|
||||
*/
|
||||
public static Closeable getCloseable(Plugin plugin) {
|
||||
ClassLoader loader = plugin.getClass().getClassLoader();
|
||||
if (loader instanceof Closeable) return (Closeable) loader;
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getPluginsFolder() {
|
||||
return plugin.getProxy().getPluginsFolder();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue