From b9a04bcf57fd8e39793bbaff38ac2ef7a23fb16e Mon Sep 17 00:00:00 2001 From: tastybento Date: Tue, 29 Oct 2019 17:52:24 -0700 Subject: [PATCH] Added protection around addon onDisable(). https://github.com/BentoBoxWorld/BentoBox/issues/1018 --- .../bentobox/bentobox/managers/AddonsManager.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/world/bentobox/bentobox/managers/AddonsManager.java b/src/main/java/world/bentobox/bentobox/managers/AddonsManager.java index 8554f783c..7b8fc9ef3 100644 --- a/src/main/java/world/bentobox/bentobox/managers/AddonsManager.java +++ b/src/main/java/world/bentobox/bentobox/managers/AddonsManager.java @@ -416,9 +416,16 @@ public class AddonsManager { plugin.getFlagsManager().unregister(addon); // Disable if (addon.isEnabled()) { - addon.onDisable(); - Bukkit.getPluginManager().callEvent(new AddonEvent().builder().addon(addon).reason(AddonEvent.Reason.DISABLE).build()); plugin.log("Disabling " + addon.getDescription().getName() + "..."); + try { + addon.onDisable(); + } catch (Exception e) { + plugin.logError("Error occured when disabling addon " + addon.getDescription().getName()); + plugin.logError("Report this to the addon's author(s)"); + addon.getDescription().getAuthors().forEach(plugin::logError); + plugin.logStacktrace(e); + } + Bukkit.getPluginManager().callEvent(new AddonEvent().builder().addon(addon).reason(AddonEvent.Reason.DISABLE).build()); } // Clear loaders if (loaders.containsKey(addon)) {