From eb28b3a7f1bccbf53040ebd4f743a0e1f6df87f1 Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Wed, 8 Sep 2021 11:41:20 -0300 Subject: [PATCH] fixed: barotrauma for some reason ignores content packages that only contain lua scripts --- .../ServerSource/Lua/LuaClasses.cs | 24 +++++++++++++++++++ .../BarotraumaShared/Lua/MoonsharpSetup.lua | 6 ++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs index 6a91d9724..e901c9742 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs @@ -9,6 +9,7 @@ using Barotrauma.Items.Components; using System.IO; using System.Net; using System.Linq; +using System.Xml.Linq; namespace Barotrauma { @@ -369,6 +370,29 @@ namespace Barotrauma return GameMain.Config.AllEnabledPackages.ToArray(); } + public static List GetEnabledPackagesDirectlyFromFile() + { + List enabledPackages = new List(); + + XDocument doc = XMLExtensions.LoadXml("config_player.xml"); + var contentPackagesElement = doc.Root.Element("contentpackages"); + + string coreName = contentPackagesElement.Element("core")?.GetAttributeString("name", ""); + enabledPackages.Add(coreName); + + XElement regularElement = contentPackagesElement.Element("regular"); + List subElements = regularElement?.Elements()?.ToList(); + + foreach (var subElement in subElements) + { + if (!bool.TryParse(subElement.GetAttributeString("enabled", "false"), out bool enabled) || !enabled) { continue; } + + string name = subElement.GetAttributeString("name", null); + enabledPackages.Add(name); + } + + return enabledPackages; + } } diff --git a/Barotrauma/BarotraumaShared/Lua/MoonsharpSetup.lua b/Barotrauma/BarotraumaShared/Lua/MoonsharpSetup.lua index f9fe1298b..1e1ee0470 100644 --- a/Barotrauma/BarotraumaShared/Lua/MoonsharpSetup.lua +++ b/Barotrauma/BarotraumaShared/Lua/MoonsharpSetup.lua @@ -12,7 +12,7 @@ else print("LUA LOADER: Only enabled mods will be executed. Lua/MoonsharpSetup.lua") end -local enabledPackages = Game.GetEnabledContentPackages() +local enabledPackages = Game.GetEnabledPackagesDirectlyFromFile() local function endsWith(str, suffix) return str:sub(-string.len(suffix)) == suffix @@ -34,8 +34,8 @@ local modulePaths = {} if not runDisabledMods then - for _, package in pairs(enabledPackages) do - d = package.Name:gsub("\\", "/") + for _, packageName in pairs(enabledPackages) do + d = packageName:gsub("\\", "/") d = "Mods/" .. d table.insert(modulePaths, (d .. "/Lua/?.lua"))