From 94aac786c66d6bff6a46f8d1ee6dca74b32ec723 Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Fri, 13 May 2011 14:50:03 +0100 Subject: [PATCH] Guarded against plugins throwing exceptions on enable and disable to prevent potential corruption issues on server start and stop By: stevenh --- .../org/bukkit/plugin/SimplePluginManager.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java index 2ee897fe58..7d0ebd2c47 100644 --- a/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java +++ b/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java @@ -246,7 +246,11 @@ public final class SimplePluginManager implements PluginManager { public void enablePlugin(final Plugin plugin) { if (!plugin.isEnabled()) { - plugin.getPluginLoader().enablePlugin(plugin); + try { + plugin.getPluginLoader().enablePlugin(plugin); + } catch (Throwable ex) { + server.getLogger().log(Level.SEVERE, ex.getMessage() + " enabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex); + } } } @@ -258,9 +262,13 @@ public final class SimplePluginManager implements PluginManager { public void disablePlugin(final Plugin plugin) { if (plugin.isEnabled()) { - plugin.getPluginLoader().disablePlugin(plugin); - server.getScheduler().cancelTasks(plugin); - server.getServicesManager().unregisterAll(plugin); + try { + plugin.getPluginLoader().disablePlugin(plugin); + server.getScheduler().cancelTasks(plugin); + server.getServicesManager().unregisterAll(plugin); + } catch (Throwable ex) { + server.getLogger().log(Level.SEVERE, ex.getMessage() + " disabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex); + } } }