# Registry

The player registry handles the creation, tracking, and lifecycle of all active player objects in BDSC.

It provides functions to:

* Create and register new players
* Access and remove player objects
* Save player state
* Retrieve client-side replicated data

This system is core to how BDSC manages players internally. \
Use these functions to safely access and interact with player objects.

***

## Server

***

Creates and registers a player object from a source ID.

#### Parameters

* `source`: `number`

#### Returns

* `boolean`

```lua
bdsc.create_player(source)
```

***

### add\_player

Adds a player object to the internal registry.\
Realistically this should never need to be called externally, this is handled internally on object creation.

#### Parameters

* `player`: `table`&#x20;

#### Returns

* `boolean`

```lua
bdsc.add_player(player)
```

***

### remove\_player

Removes a player from the internal registry.

#### Parameters

* `source`: `number`

#### Returns

* `boolean`

```lua
bdsc.remove_player(source)
```

***

### get\_players

Retrieves all currently registered players.

#### Returns

* `table`

```lua
local all_players = bdsc.get_players()
```

***

### get\_player

Retrieves a specific player object from the registry.

#### Parameters

* `source`: `number`

#### Returns

* `table|nil`

```lua
local player = bdsc.get_player(source)
```

***

### save\_players

Calls `:save()`

```lua
bdsc.save_players()
```

***

## Client

***

### get\_player\_data

Retrieves replicated client-side player data.

#### Returns

* `table`

```lua
local data = bdsc.get_player_data()
```
