diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index eaa1b41cf2..253338beef 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -86,16 +86,19 @@ void ScriptEngine::LoadPlugins() while (scanner->Next()) { auto path = std::string(scanner->GetPath()); - try + if (ShouldLoadScript(path)) { - auto plugin = std::make_shared(_context, path); - ScriptExecutionInfo::PluginScope scope(_execInfo, plugin); - plugin->Load(); - _plugins.push_back(std::move(plugin)); - } - catch (const std::exception& e) - { - _console.WriteLineError(e.what()); + try + { + auto plugin = std::make_shared(_context, path); + ScriptExecutionInfo::PluginScope scope(_execInfo, plugin); + plugin->Load(); + _plugins.push_back(std::move(plugin)); + } + catch (const std::exception& e) + { + _console.WriteLineError(e.what()); + } } } @@ -114,6 +117,12 @@ void ScriptEngine::LoadPlugins() } } +bool ScriptEngine::ShouldLoadScript(const std::string& path) +{ + // A lot of JavaScript is often found in a node_modules directory tree and is most likely unwanted, so ignore it + return path.find("/node_modules/") == std::string::npos && path.find("\\node_modules\\") == std::string::npos; +} + void ScriptEngine::AutoReloadPlugins() { if (_changedPluginFiles.size() > 0) diff --git a/src/openrct2/scripting/ScriptEngine.h b/src/openrct2/scripting/ScriptEngine.h index 551ba200bc..90898ea19a 100644 --- a/src/openrct2/scripting/ScriptEngine.h +++ b/src/openrct2/scripting/ScriptEngine.h @@ -127,6 +127,7 @@ namespace OpenRCT2::Scripting void Initialise(); void LoadPlugins(); void StartPlugins(); + bool ShouldLoadScript(const std::string& path); void AutoReloadPlugins(); }; } // namespace OpenRCT2::Scripting