Skip to main content

ServerPlayerDataManager

The Server side class for the PlayerDataManager package

Properties

DEFAULT_MANAGER_NAME

ServerPlayerDataManager.DEFAULT_MANAGER_NAME: string

The default internal manager name.

PlayerDataReady

ServerPlayerDataManager.PlayerDataReady: Signal<Player>

A signal that fires when a Player's data is ready to be used.

Functions

new

ConstructorSingletonStatic
ServerPlayerDataManager.new(ppmPlayerProfileManager?) → ServerPlayerDataManager

Constructs a new ServerPlayerDataManager instance.

local PPM = PlayerProfileManager.new()
local PlayerDataManager = PlayerDataManager.Server.new(PPM)
PlayerProfileManager

The ServerPlayerDataManager requires a PlayerProfileManager instance in order to properly function. You must provide a PlayerProfileManager instance before you call the :Start method. Optimally you should provide it during the constructor phase.

OnReady

ServerPlayerDataManager:OnReady(playerPlayer) → Promise

Promise that resolves when the player's data is ready to be used.

IsReady

ServerPlayerDataManager:IsReady(playerPlayer) → boolean

Checks whether or not a given player's data is ready

IsManagerRegistered

ServerPlayerDataManager:IsManagerRegistered(managerNamestring?) → boolean

Checks whether or not a given manager is registered. If one is not specified then it will assume the default one.

GetManager

ServerPlayerDataManager:GetManager(
playerPlayer,
managerNamestring?
) → TableManager?

Fetches one of the given Player's DataManagers. If one is not specified then it will assume the default one.

PromiseManager

ServerPlayerDataManager:PromiseManager(
playerPlayer,
managerNamestring?
) → Promise

Promises a TableManager for a given player. If a managerName is not specified then it will assume the default one.

ServerPlayerDataManager:PromiseManager(Players.Raildex, "Settings"):andThen(function(manager)
    manager:Set("Volume", 0.5)
end)

ForEachPlayer

ServerPlayerDataManager:ForEachPlayer(fn(
playerPlayer,
dataany
) → ()) → Connection

Runs a function for all existing loaded player data and all future player data.

ServerPlayerDataManager:ForEachPlayer(function(player)
    local defaultManager = ServerPlayerDataManager:GetManager(player)
    defaultManager:Set("Volume", 0.5)
end)

GetReplicator

ServerPlayerDataManager:GetReplicator(
playerPlayer,
replicatorNamestring?
) → TableReplicator?

Returns the TableReplicator for a given player. If a replicatorName is not specified then it will assume the default one.

local replicator = ServerPlayerDataManager:GetReplicator(Players.Raildex, "Settings")

RegisterManager

ServerPlayerDataManager:RegisterManager(config{
Namestring,
GetData(
playerPlayer,
profileProfile
) → table,
ReplicationTargets("All" | "Self" | Player | {Player})?,
Tagstable?,
Parenttable?,
Clienttable?,
} | string) → ()

Registers a config table for new managers to use for construction.

ServerPlayerDataManager:RegisterManager({
    Name = "Settings",
    GetData = function(player, profile)
        return profile.Data.Settings
    end,
    ReplicationTargets = "Self",
    Tags = {UserId = player.UserId},
})
Modifying the given table

DO NOT MODIFY THE TABLE AFTER PASSING IT. Treat it as frozen. Doing so can cause potential desyncs between players.

Start

ServerPlayerDataManager:Start(ppmPlayerProfileManager?) → ()

Starts the service and sets up all the Player's data managers.

local PlayerDataManager = PlayerDataManager.Server.new()

local PPM = PlayerProfileManager.new()
PlayerDataManager:Start(PPM)
Show raw api
{
    "functions": [
        {
            "name": "OnReady",
            "desc": "Promise that resolves when the player's data is ready to be used.",
            "params": [
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise\r\n"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 83,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        },
        {
            "name": "IsReady",
            "desc": "Checks whether or not a given player's data is ready",
            "params": [
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean\r\n"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 97,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        },
        {
            "name": "IsManagerRegistered",
            "desc": "Checks whether or not a given manager is registered. If one is not specified then it will assume the default one.",
            "params": [
                {
                    "name": "managerName",
                    "desc": "",
                    "lua_type": "string?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean\r\n"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 104,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        },
        {
            "name": "GetManager",
            "desc": "Fetches one of the given Player's DataManagers. If one is not specified then it will assume the default one. ",
            "params": [
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "managerName",
                    "desc": "",
                    "lua_type": "string?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "TableManager?\r\n"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 112,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        },
        {
            "name": "PromiseManager",
            "desc": "Promises a TableManager for a given player. If a managerName is not specified then it will assume the default one.\n```lua\nServerPlayerDataManager:PromiseManager(Players.Raildex, \"Settings\"):andThen(function(manager)\n    manager:Set(\"Volume\", 0.5)\nend)\n```",
            "params": [
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "managerName",
                    "desc": "",
                    "lua_type": "string?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise\r\n"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 135,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        },
        {
            "name": "ForEachPlayer",
            "desc": "Runs a function for all existing loaded player data and all future player data.\n```lua\nServerPlayerDataManager:ForEachPlayer(function(player)\n    local defaultManager = ServerPlayerDataManager:GetManager(player)\n    defaultManager:Set(\"Volume\", 0.5)\nend)\n```",
            "params": [
                {
                    "name": "fn",
                    "desc": "",
                    "lua_type": "(player: Player, data: any) -> ()"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Connection\r\n"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 154,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        },
        {
            "name": "GetReplicator",
            "desc": "Returns the TableReplicator for a given player. If a replicatorName is not specified then it will assume the default one.\n```lua\nlocal replicator = ServerPlayerDataManager:GetReplicator(Players.Raildex, \"Settings\")\n```",
            "params": [
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "replicatorName",
                    "desc": "",
                    "lua_type": "string?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "TableReplicator?\r\n"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 170,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        },
        {
            "name": "RegisterManager",
            "desc": "Registers a config table for new managers to use for construction.\n\n```lua\nServerPlayerDataManager:RegisterManager({\n    Name = \"Settings\",\n    GetData = function(player, profile)\n        return profile.Data.Settings\n    end,\n    ReplicationTargets = \"Self\",\n    Tags = {UserId = player.UserId},\n})\n```\n\n:::caution Modifying the given table\nDO NOT MODIFY THE TABLE AFTER PASSING IT. Treat it as frozen. Doing so can cause potential\ndesyncs between players.\n:::",
            "params": [
                {
                    "name": "config",
                    "desc": "",
                    "lua_type": "{\r\n    Name: string,\r\n    GetData: (player: Player, profile: Profile) -> table,\r\n    ReplicationTargets: (\"All\" | \"Self\" | Player | {Player})?,\r\n    Tags: table?,\r\n    Parent: table?,\r\n    Client: table?,\r\n} | string"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 199,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        },
        {
            "name": "Start",
            "desc": "Starts the service and sets up all the Player's data managers.\n```lua\nlocal PlayerDataManager = PlayerDataManager.Server.new()\n\nlocal PPM = PlayerProfileManager.new()\nPlayerDataManager:Start(PPM)\n```",
            "params": [
                {
                    "name": "ppm",
                    "desc": "",
                    "lua_type": "PlayerProfileManager?"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 298,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        },
        {
            "name": "new",
            "desc": "Constructs a new ServerPlayerDataManager instance.\n```lua\nlocal PPM = PlayerProfileManager.new()\nlocal PlayerDataManager = PlayerDataManager.Server.new(PPM)\n```\n:::warning PlayerProfileManager\nThe ServerPlayerDataManager requires a PlayerProfileManager instance in order to properly function.\nYou must provide a PlayerProfileManager instance before you call the `:Start` method. Optimally you\nshould provide it during the constructor phase.\n:::",
            "params": [
                {
                    "name": "ppm",
                    "desc": "",
                    "lua_type": "PlayerProfileManager?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "ServerPlayerDataManager"
                }
            ],
            "function_type": "static",
            "tags": [
                "Constructor",
                "Singleton",
                "Static"
            ],
            "source": {
                "line": 368,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        }
    ],
    "properties": [
        {
            "name": "DEFAULT_MANAGER_NAME",
            "desc": "The default internal manager name.",
            "lua_type": "string",
            "source": {
                "line": 68,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        },
        {
            "name": "PlayerDataReady",
            "desc": "A signal that fires when a Player's data is ready to be used.",
            "lua_type": "Signal<Player>",
            "source": {
                "line": 75,
                "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
            }
        }
    ],
    "types": [],
    "name": "ServerPlayerDataManager",
    "desc": "The Server side class for the PlayerDataManager package",
    "source": {
        "line": 8,
        "path": "lib/playerdatamanager/src/ServerPlayerDataManager.luau"
    }
}