if CSActive then return end local function IsAllowed(typeName) if string.startsWith(typeName, "Barotrauma.Lua") or string.startsWith(typeName, "Barotrauma.Cs") or string.startsWith(typeName, "Barotrauma.LuaCs") then return false end if string.startsWith(typeName, "System.Collections") then return true end if string.startsWith(typeName, "Microsoft.Xna") then return true end if string.startsWith(typeName, "Barotrauma.IO") then return false end if string.startsWith(typeName, "Barotrauma.ToolBox") then return false end if string.startsWith(typeName, "Barotrauma.SaveUtil") then return false end if string.startsWith(typeName, "Barotrauma.") then return true end return false end local originalRegisterType = LuaUserData.RegisterType LuaUserData.RegisterType = function (typeName) if not LuaUserData.IsRegistered(typeName) and not IsAllowed(typeName) then error("Couldn't register type " .. typeName .. ".", 2) end local success, result = pcall(originalRegisterType, typeName) if not success then error(result, 2) end return result end local originalCreateStatic = LuaUserData.CreateStatic LuaUserData.CreateStatic = function (typeName, addCallMethod) if not LuaUserData.IsRegistered(typeName) and not IsAllowed(typeName) then error("Couldn't create static type " .. typeName .. ".", 2) end local success, result = pcall(originalCreateStatic, typeName, addCallMethod) if not success then error(result, 2) end return result end