Are you looking for a list of constructible instances and their members? Maybe… something like this:
If that’s the case, you’re in the right spot! I have that lua file here for you.
Download for your own usage here
This API dump is truncated to only include constructable instances with their non-deprecated members. Non-constructable instances, such as services, will not be reflected here.
If you ever want to dump this API yourself using Roblox’s reflection metadata, check out the source code used to compile this module:
Compiler Source Code
local ServerScriptService = game:GetService("ServerScriptService")
local ApiMain = require(ServerScriptService.API)
local Reflection = ApiMain.ReflectionMetadata
local Module = Instance.new("ModuleScript", ServerScriptService)
Module.Name = "==DUMP"
type RawClass = {Members : {[number] : string}, IsUsable : boolean}
local Start = os.clock()
local Classes = {}
local ConstructableInstances = {}
local function Crop(... : string) : string
return ((...) :: string):gsub("[%[%]=+]", "") :: string
end
local function TransformBoolean(... : string) : boolean
return #({...}) > 0 and (if (Crop(...) :: string) == "true" then true else false) or false
end
local function Cooldown()
if os.clock() - Start > 0.05 then
Start = os.clock()
task.wait()
end
end
local function IsUsableClass(ClassName : string)
return pcall(function()
Instance.new(ClassName, nil)
end)
end
local function IsA(SubClass : string, ParentClass : string)
local Success, Value = pcall(function()
local PointerInstance : Instance = Instance.new(SubClass, nil)
return PointerInstance:IsA(ParentClass)
end)
return if Success then Value else false
end
local function IncludeMembers(InclusiveMembers, ClassMembers)
for _, Member in ClassMembers do
InclusiveMembers[#InclusiveMembers + 1] = Member
end
end
local function SourceConcat(SourceTable : {[any] : any})
local Content = "{%s}"
for Index, Value in SourceTable do
local ConvertedValue : string = nil
if typeof(Value) == "table" then
local ConcatValue : string = SourceConcat(Value)
local NewValue = ConcatValue:sub(2, ConcatValue:len() - 1)
ConvertedValue = ("\t['%s'] = %s"):format(Index, NewValue)
else
if typeof(Index) == "number" then
ConvertedValue = ("\t'%s'"):format(Value)
elseif typeof(Index) == "string" then
ConvertedValue = ("\t['%s'] = '%s'"):format(Index, Value)
end
end
Content = Content:sub(1, Content:len() - 1):format(ConvertedValue:sub(2, ConvertedValue:len()) .. ";\n%s") .. Content:sub(Content:len(), Content:len())
end
return "\t" .. Content:gsub("%%s", "") .. "\n"
end
for _, Class in Reflection.Classes do
if TransformBoolean(Class.Deprecated) == true then
continue
else
local Name = Crop(Class.Name)
local Members = {}
local IsUsable = IsUsableClass(Name)
for _, Member in Class.Members do
if TransformBoolean(Member.Deprecated) then
continue
else
Members[#Members + 1] = Crop(Member.Name)
end
end
Classes[Name] = {
Members = Members,
IsUsable = IsUsable
}
Cooldown()
end
end
for ClassName, ClassData : RawClass in pairs(Classes) do
if ClassData.IsUsable then
local InclusiveMembers = {}
for ParentClassName, ParentClassData : RawClass in pairs(Classes) do
if IsA(ClassName, ParentClassName) then
IncludeMembers(InclusiveMembers, ParentClassData.Members)
end
end
ConstructableInstances[ClassName] = InclusiveMembers
Cooldown()
end
end
Module.Source = SourceConcat(ConstructableInstances):gsub("};", "};\n")
That’s all! Have a great day folks