From 3dd9cfa741d07485d64febc4aaf9fcf0e445dc8b Mon Sep 17 00:00:00 2001 From: MapleWheels Date: Sat, 21 Mar 2026 04:27:02 -0400 Subject: [PATCH] Implemented plugin assembly lookup api. --- .../_Services/PluginManagementService.cs | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginManagementService.cs index 2cbb1a657..36d7e8353 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginManagementService.cs @@ -833,6 +833,36 @@ public class PluginManagementService : IAssemblyManagementService public Result GetLoadedAssembly(OneOf assemblyName, in Guid[] excludedContexts) { - throw new NotImplementedException(); + using var _ = _operationsLock.AcquireReaderLock().ConfigureAwait(false).GetAwaiter().GetResult(); + IService.CheckDisposed(this); + + var guids = excludedContexts; + return assemblyName.Match((AssemblyName asm) => + { + foreach (var ass in _assemblyLoaders.Values + .Where(al => guids.Length == 0 || !guids.Contains(al.Id)) + .SelectMany(al => al.Assemblies) + .ToImmutableArray()) + { + if (ass.GetName() == asm) + { + return ass; + } + } + + return null; + }, + (string asmName) => + { + foreach (var ass in _assemblyLoaders.Values.SelectMany(al => al.Assemblies)) + { + if (ass.GetName().Name?.Equals(asmName) ?? ass.GetName().FullName.Equals(asmName)) + { + return ass; + } + } + + return null; + }); } }