diff options
author | Will Nations <willnationsdev@gmail.com> | 2019-02-16 17:53:14 -0600 |
---|---|---|
committer | Will Nations <willnationsdev@gmail.com> | 2019-02-17 22:57:45 -0600 |
commit | 2d0fcd5c4a1ccc4edcb56fa04ef690aa829cea4c (patch) | |
tree | 369ad5ffc07ded1ef4a462b7e9f79a0294ff0a49 | |
parent | be98a6ebbca95225b59570ed67fce962edfd23ec (diff) |
Auto-cleanup missing addons
-rw-r--r-- | editor/editor_node.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index d7e8869428..a6fba21bc2 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2579,6 +2579,20 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled, Ref<ConfigFile> cf; cf.instance(); String addon_path = "res://addons/" + p_addon + "/plugin.cfg"; + if (!DirAccess::exists(addon_path.get_base_dir())) { + ProjectSettings *ps = ProjectSettings::get_singleton(); + PoolStringArray enabled_plugins = ps->get("editor_plugins/enabled"); + for (int i = 0; i < enabled_plugins.size(); ++i) { + if (enabled_plugins.get(i) == p_addon) { + enabled_plugins.remove(i); + break; + } + } + ps->set("editor_plugins/enabled", enabled_plugins); + ps->save(); + WARN_PRINTS("Addon '" + p_addon + "' failed to load. No directory found. Removing from enabled plugins."); + return; + } Error err = cf->load(addon_path); if (err != OK) { show_warning(vformat(TTR("Unable to enable addon plugin at: '%s' parsing of config failed."), addon_path)); |