> For the complete documentation index, see [llms.txt](https://docs.nursultan.fun/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nursultan.fun/scripting-api-ru/igrovye-dannye/server-tablo-tablist.md).

# Сервер, табло, таблист

## Куда я подключён

```kotlin
game.connected()             // есть подключение
game.inGame()                // мир загружен и игрок есть

val server = game.server()

server.name()
server.address()             // "mc.example.com:25565"
server.type()                // SINGLEPLAYER, LAN, REALM, MULTIPLAYER
server.protocolVersion()
server.pingMs()
server.tps()                 // сколько тиков в секунду тянет сервер
```

`tps()` считается по тому, как часто приходят тики — полезно, чтобы не молотить действиями, когда сервер лагает.

Отключиться можно из кода:

```kotlin
if (player.health() < 4f) {
    game.disconnect()
}
```

## Табло сбоку

```kotlin
val board = game.server().scoreboard()

board.visible()
board.title()                // заголовок
board.lines()                // строки сверху вниз
```

Часто нужно просто понять, на каком ты режиме:

```kotlin
if (board.contains("BedWars", "Бедвары")) {
    // мы на бедварах
}
```

`contains` проверяет заголовок и строки на любое из переданных слов и не мучает регистром.

## Таблист

```kotlin
val tab = game.server().tabList()

tab.header()
tab.footer()
tab.players()                // все игроки в таблисте

tab.headerContains("anarchy")
tab.footerContains("сезон")
```

`players()` даёт полноценные [сущности игроков](/scripting-api-ru/igrovye-dannye/sushnosti-i-filtry.md) — с пингом и режимом игры.

## Экраны

```kotlin
game.screenOpen()            // открыт ли какой-нибудь экран
game.screenKind()            // NONE, INVENTORY, CREATIVE, CONTAINER, CHAT, OTHER
game.closeScreen()
```

Пригодится, чтобы не действовать, пока игрок копается в сундуке:

```kotlin
if (game.screenKind() == ScreenKind.CONTAINER) return@on
```

Есть и событие закрытия экрана — `ScreenCloseEvent`.

## Определить сервер один раз

Проверять табло каждый тик незачем. Достаточно один раз при заходе в мир:

```kotlin
var bedwars = false

on<WorldLoadEvent> {
    afterTicks(40) {
        bedwars = game.server().scoreboard().contains("BedWars")
    }
}
```

Задержка нужна потому, что табло приходит не сразу после загрузки мира.
