geforkt von Mirrors/Paper
Fixed errors during plugin enable/disable leaving Bukkit in an undefined state. Previous fix would at least prevent plugins from breaking the server, but it aborted the enable/disable process prematurely.
By: sk89q <the.sk89q@gmail.com>
Dieser Commit ist enthalten in:
Ursprung
c9d98c3313
Commit
8217ff1836
@ -249,7 +249,7 @@ public final class SimplePluginManager implements PluginManager {
|
|||||||
try {
|
try {
|
||||||
plugin.getPluginLoader().enablePlugin(plugin);
|
plugin.getPluginLoader().enablePlugin(plugin);
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
server.getLogger().log(Level.SEVERE, ex.getMessage() + " enabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
|
server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while enabling " + plugin.getDescription().getFullName() + " (Is it up to date?): " + ex.getMessage(), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -264,11 +264,13 @@ public final class SimplePluginManager implements PluginManager {
|
|||||||
if (plugin.isEnabled()) {
|
if (plugin.isEnabled()) {
|
||||||
try {
|
try {
|
||||||
plugin.getPluginLoader().disablePlugin(plugin);
|
plugin.getPluginLoader().disablePlugin(plugin);
|
||||||
server.getScheduler().cancelTasks(plugin);
|
|
||||||
server.getServicesManager().unregisterAll(plugin);
|
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
server.getLogger().log(Level.SEVERE, ex.getMessage() + " disabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
|
server.getLogger().log(Level.SEVERE, "Error occurredd (in the plugin loader) while disabling " + plugin.getDescription().getFullName() + " (Is it up to date?): " + ex.getMessage(), ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Forced disable
|
||||||
|
server.getScheduler().cancelTasks(plugin);
|
||||||
|
server.getServicesManager().unregisterAll(plugin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -673,7 +673,15 @@ public final class JavaPluginLoader implements PluginLoader {
|
|||||||
loaders.put(pluginName, (PluginClassLoader)jPlugin.getClassLoader());
|
loaders.put(pluginName, (PluginClassLoader)jPlugin.getClassLoader());
|
||||||
}
|
}
|
||||||
|
|
||||||
jPlugin.setEnabled(true);
|
try {
|
||||||
|
jPlugin.setEnabled(true);
|
||||||
|
} catch (Throwable ex) {
|
||||||
|
server.getLogger().log(Level.SEVERE, "Error occurred while enabling " + plugin.getDescription().getFullName() + " (Is it up to date?): " + ex.getMessage(), ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perhaps abort here, rather than continue going, but as it stands,
|
||||||
|
// an abort is not possible the way it's currently written
|
||||||
|
|
||||||
server.getPluginManager().callEvent(new PluginEnableEvent(plugin));
|
server.getPluginManager().callEvent(new PluginEnableEvent(plugin));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -687,7 +695,11 @@ public final class JavaPluginLoader implements PluginLoader {
|
|||||||
JavaPlugin jPlugin = (JavaPlugin)plugin;
|
JavaPlugin jPlugin = (JavaPlugin)plugin;
|
||||||
ClassLoader cloader = jPlugin.getClassLoader();
|
ClassLoader cloader = jPlugin.getClassLoader();
|
||||||
|
|
||||||
jPlugin.setEnabled(false);
|
try {
|
||||||
|
jPlugin.setEnabled(false);
|
||||||
|
} catch (Throwable ex) {
|
||||||
|
server.getLogger().log(Level.SEVERE, "Error occurred while disabling " + plugin.getDescription().getFullName() + " (Is it up to date?): " + ex.getMessage(), ex);
|
||||||
|
}
|
||||||
|
|
||||||
server.getPluginManager().callEvent(new PluginDisableEvent(plugin));
|
server.getPluginManager().callEvent(new PluginDisableEvent(plugin));
|
||||||
|
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren