Skip to main content

TemplateProvider

Base of a template retrieval system. Templates can be retrieved from Roblox, or from the cloud, and then retrieved by name. Folders are ignored, so assets may be organized however you want.

Templates can repliate to client if desired.

-- shared/Templates.lua

return TemplateProvider.new(182451181, script) -- Load from Roblox cloud
-- Server
local serviceBag = ServiceBag.new()
local templates = serviceBag:GetService(require("Templates"))
serviceBag:Init()
serviceBag:Start()
-- Client
local serviceBag = ServiceBag.new()
local templates = serviceBag:GetService(require("Templates"))
serviceBag:Init()
serviceBag:Start()

templates:PromiseClone("Crate"):Then(function(crate)
	print("Got crate from the cloud!")
end)

Functions

new

TemplateProvider.new(
containerInstance | table | number,--

Value

replicationParentInstance?--

Place to replicate instances to.

) → ()

Constructs a new TemplateProvider.

Init

TemplateProvider:Init() → ()

Initializes the container provider. Should be done via ServiceBag.

PromiseClone

TemplateProvider:PromiseClone(templateNamestring) → Promise<Instance>

Promises to clone the template as soon as it exists.

Clone

TemplateProvider:Clone(templateNamestring) → Instance?

Clones the template.

info

If the template name has a prefix of "Template" then it will remove it on the cloned instance.

Get

TemplateProvider:Get(templateNamestring) → Instance?

Returns the raw template

AddContainer

TemplateProvider:AddContainer(containerInstance | number) → ()

Adds a new container to the provider for provision of assets.

RemoveContainer

TemplateProvider:RemoveContainer(containerInstance | number) → ()

Removes a container from the provisioning set.

IsAvailable

TemplateProvider:IsAvailable(templateNamestring) → boolean

Returns whether or not a template is registered at the time

GetAll

TemplateProvider:GetAll() → {Instance}

Returns all current registered items.

GetContainers

TemplateProvider:GetContainers() → {Instance | number}

Gets all current the containers.

Destroy

TemplateProvider:Destroy() → ()

Cleans up the provider

Show raw api
{
    "functions": [
        {
            "name": "new",
            "desc": "Constructs a new [TemplateProvider].",
            "params": [
                {
                    "name": "container",
                    "desc": "Value",
                    "lua_type": "Instance | table | number"
                },
                {
                    "name": "replicationParent",
                    "desc": "Place to replicate instances to.",
                    "lua_type": "Instance?"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 56,
                "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
            }
        },
        {
            "name": "Init",
            "desc": "Initializes the container provider. Should be done via [ServiceBag].",
            "params": [],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 102,
                "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
            }
        },
        {
            "name": "PromiseClone",
            "desc": "Promises to clone the template as soon as it exists.",
            "params": [
                {
                    "name": "templateName",
                    "desc": "",
                    "lua_type": "string"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<Instance>"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 122,
                "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
            }
        },
        {
            "name": "Clone",
            "desc": "Clones the template.\n\n:::info\nIf the template name has a prefix of \"Template\" then it will remove it on the cloned instance.\n:::",
            "params": [
                {
                    "name": "templateName",
                    "desc": "",
                    "lua_type": "string"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Instance?"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 177,
                "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
            }
        },
        {
            "name": "Get",
            "desc": "Returns the raw template",
            "params": [
                {
                    "name": "templateName",
                    "desc": "",
                    "lua_type": "string"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Instance?"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 199,
                "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
            }
        },
        {
            "name": "AddContainer",
            "desc": "Adds a new container to the provider for provision of assets.",
            "params": [
                {
                    "name": "container",
                    "desc": "",
                    "lua_type": "Instance | number"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 211,
                "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
            }
        },
        {
            "name": "RemoveContainer",
            "desc": "Removes a container from the provisioning set.",
            "params": [
                {
                    "name": "container",
                    "desc": "",
                    "lua_type": "Instance | number"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 232,
                "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
            }
        },
        {
            "name": "IsAvailable",
            "desc": "Returns whether or not a template is registered at the time",
            "params": [
                {
                    "name": "templateName",
                    "desc": "",
                    "lua_type": "string"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 245,
                "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
            }
        },
        {
            "name": "GetAll",
            "desc": "Returns all current registered items.",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Instance }"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 257,
                "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
            }
        },
        {
            "name": "GetContainers",
            "desc": "Gets all current the containers.",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "{ Instance | number }"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 273,
                "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
            }
        },
        {
            "name": "Destroy",
            "desc": "Cleans up the provider",
            "params": [],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 396,
                "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
            }
        }
    ],
    "properties": [],
    "types": [],
    "name": "TemplateProvider",
    "desc": "Base of a template retrieval system. Templates can be retrieved from Roblox, or from the cloud,\nand then retrieved by name. Folders are ignored, so assets may be organized however you want.\n\nTemplates can repliate to client if desired.\n\n```lua\n-- shared/Templates.lua\n\nreturn TemplateProvider.new(182451181, script) -- Load from Roblox cloud\n```\n\n```lua\n-- Server\nlocal serviceBag = ServiceBag.new()\nlocal templates = serviceBag:GetService(require(\"Templates\"))\nserviceBag:Init()\nserviceBag:Start()\n```\n\n```lua\n-- Client\nlocal serviceBag = ServiceBag.new()\nlocal templates = serviceBag:GetService(require(\"Templates\"))\nserviceBag:Init()\nserviceBag:Start()\n\ntemplates:PromiseClone(\"Crate\"):Then(function(crate)\n\tprint(\"Got crate from the cloud!\")\nend)\n```",
    "source": {
        "line": 35,
        "path": "src/templateprovider/src/Shared/TemplateProvider.lua"
    }
}