local RESOURCES = {}

local InsertService = game:GetService("InsertService")
local ServerStorage = game:GetService("ServerStorage")

RESOURCES.MODELS = {
    TestModel = "rbxassetid://",
};

RESOURCES.MESHES = {
    TestMesh = "rbxassetid://",
};

RESOURCES.IMAGES = {
    TestImage = "rbxassetid://",
};

RESOURCES.UI = {
    TestUI = ServerStorage:WaitForChild("test_UI"),
};

RESOURCES.SCRIPTS = {
    TestScript = "rbxassetid://",
};

function RESOURCES:LoadModel(ASSET, POS, ORIGIN)
    local success, model = pcall(function()
        return InsertService:LoadAsset(ASSET)
    end)

    if success and model then
        if POS then
            if ORIGIN then
                local PRIMARY = model.PrimaryPart

                if PRIMARY then
                    local offset = POS - PRIMARY.Position
                    model:SetPrimaryPartCFrame(CFrame.new(ORIGIN + offset))
                end
            else
                model:SetPrimaryPartCFrame(CFrame.new(POS))
            end
        end return model
    else
        warn("Failed to load model:", ASSET)
        return nil
    end
end

function RESOURCES:LoadMesh(ASSET, NAME, PARENT)
    local mesh = PARENT:FindFirstChildOfClass("SpecialMesh") or Instance.new("SpecialMesh")
    mesh.MeshId = ASSET
    mesh.Name = tostring(NAME)
    mesh.Parent = PARENT

    return mesh
end

function RESOURCES:LoadImage(ASSET, NAME, PARENT, TYPE)
    local element

    if PARENT:FindFirstChildOfClass(TYPE) then
        element = PARENT:FindFirstChildOfClass(TYPE)
    else
        element = Instance.new(TYPE)
        element.Image = ASSET
        element.Name = tostring(NAME)
        element.Parent = PARENT
    end return element
end

function RESOURCES:LoadDecal(ASSET, NAME, PARENT)
    local decal = PARENT:FindFirstChildOfClass("Decal") or Instance.new("Decal")
    decal.Image = ASSET
    decal.Name = tostring(NAME)
    decal.Parent = PARENT

    return decal
end

function RESOURCES:LoadSound(ASSET, NAME, PARENT)
    local sound = PARENT:FindFirstChildOfClass("Sound") or Instance.new("Sound")
    sound.SoundId = ASSET
    sound.Name = tostring(NAME)
    sound.Parent = PARENT

    return sound
end

function RESOURCES:LoadParticleEmitter(ASSET, NAME, PARENT)
    local pe = PARENT:FindFirstChildOfClass("ParticleEmitter") or Instance.new("ParticleEmitter")
    pe.Texture = ASSET
    pe.Name = tostring(NAME)
    pe.Parent = PARENT
    
    return pe
end

function RESOURCES:LoadMaterial(ASSET)
    local material = Instance.new("StandaloneMaterial")
    material.Name = ASSET

    return material
end

function RESOURCES:LoadTerrain(ASSET)
    local terrain = Instance.new("Terrain")
    terrain.Name = ASSET

    return terrain
end

function RESOURCES:GetUI(ASSET)
    local UI = RESOURCES.UI[ASSET]

    if UI then
        return UI:Clone()
    else
        warn("UI not found:", tostring(UI))
        return nil
    end
end

function RESOURCES:LoadScript(ASSET)
    local ID = RESOURCES.SCRIPTS[ASSET]

    if ID then
        local success, loaded = pcall(function()
            return InsertService:LoadAsset(ID)
        end)

        if success and loaded then
            local SCRIPT = loaded:FindFirstChildOfClass("Script")

            if SCRIPT then
                return SCRIPT:Clone()
            else
                warn("Script not found in asset:", ASSET)
                return nil
            end
        else
            warn("Failed to load script:", ASSET)
            return nil
        end
    else
        warn("Script AssetID not found:", ASSET)
        return nil
    end
end

return RESOURCES

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: