> ## Documentation Index
> Fetch the complete documentation index at: https://ugcore.urging.ch/llms.txt
> Use this file to discover all available pages before exploring further.

# UgCore.Network

> Validated, rate limited net events.

<Badge color="purple">Shared</Badge> Runs in your resource. See the [Net events guide](/developers/net-events).

## Server

### Register

```lua theme={null}
UgCore.Network.Register(name, options, handler)
```

<ResponseField name="name" type="string" required>Letters, digits and underscores. Registered as `<resource>:<name>`.</ResponseField>
<ResponseField name="options" type="UgNetworkOptions" required>Same options as [`Callback.Register`](/api/callback#register): `schema`, `rate`, `requirePlayer`, `requireAlive`, `permission`.</ResponseField>
<ResponseField name="handler" type="fun(source, ...)" required>Gets validated arguments.</ResponseField>

Events before ug-core is `Ready` are dropped. Rejections are flagged in Guard, except `requireAlive`. Invalid payloads flag `InvalidPayload`.

### TriggerClient

```lua theme={null}
UgCore.Network.TriggerClient(source, fullName, ...)
```

<ResponseField name="source" type="integer" required>Player source, or `-1` for every player.</ResponseField>

### TriggerClients

```lua theme={null}
UgCore.Network.TriggerClients(fullName, ...)
```

Sends to every player.

## Client

### Register

```lua theme={null}
UgCore.Network.Register(name, handler)
```

Listens to `<resource>:<name>` from the server. Handler errors are logged.

### TriggerServer

```lua theme={null}
UgCore.Network.TriggerServer(fullName, ...)
```

## Example

<CodeGroup>
  ```lua server.lua theme={null}
  local S = UgCore.Schema

  UgCore.Network.Register('Sit', {
      schema = S.Define({ S.Integer({ min = 1, max = 64 }) }),
      rate = { max = 2, per = 1000 },
      requireAlive = true,
  }, function(source, seat)
      UgCore.Network.TriggerClients('my-chairs:Seated', source, seat)
  end)
  ```

  ```lua client.lua theme={null}
  UgCore.Network.Register('Seated', function(playerId, seat)
      -- play the animation
  end)

  UgCore.Network.TriggerServer('my-chairs:Sit', 3)
  ```
</CodeGroup>

<Warning>Never use `RegisterNetEvent` directly. Unvalidated events bypass every protection layer.</Warning>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.