From 65dbc6fc005790dd571eb1b1dece6d5d7ce2555c Mon Sep 17 00:00:00 2001 From: Roland Firmont Date: Mon, 21 Mar 2022 15:32:35 +0100 Subject: [PATCH] Fix CreateServerEventString Prevents AmbiguousMatchException Reuses GetComponentString to get the component Fixes wrong Invoke Parameters --- .../Lua/LuaBarotraumaAdditions.cs | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaBarotraumaAdditions.cs b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaBarotraumaAdditions.cs index 84ea950a1..1b625bb7d 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaBarotraumaAdditions.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaBarotraumaAdditions.cs @@ -61,26 +61,26 @@ namespace Barotrauma { public object CreateServerEventString(string component) { - Type type = Type.GetType("Barotrauma.Items.Components." + component); + var comp = GetComponentString(component); - if (type == null) + if (comp == null) return null; - MethodInfo method = typeof(Item).GetMethod(nameof(Item.CreateServerEvent)); - MethodInfo generic = method.MakeGenericMethod(type); - return generic.Invoke(this, null); + MethodInfo method = typeof(Item).GetMethod(nameof(Item.CreateServerEvent), new Type[]{ Type.MakeGenericMethodParameter(0) }); + MethodInfo generic = method.MakeGenericMethod(comp.GetType()); + return generic.Invoke(this, new object[]{ comp }); } public object CreateServerEventString(string component, object[] extraData) { - Type type = Type.GetType("Barotrauma.Items.Components." + component); + var comp = GetComponentString(component); - if (type == null) + if (comp == null) return null; - MethodInfo method = typeof(Item).GetMethod(nameof(Item.CreateServerEvent)); - MethodInfo generic = method.MakeGenericMethod(type); - return generic.Invoke(this, new object[]{ extraData }); + MethodInfo method = typeof(Item).GetMethod(nameof(Item.CreateServerEvent), new Type[]{ Type.MakeGenericMethodParameter(0), typeof(object[]) }); + MethodInfo generic = method.MakeGenericMethod(comp.GetType()); + return generic.Invoke(this, new object[]{comp, extraData }); } } @@ -133,4 +133,4 @@ namespace Barotrauma.Items.Components } -} \ No newline at end of file +}