> For the complete documentation index, see [llms.txt](https://docs.quickclient.cc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.quickclient.cc/game/server.md).

# Сервер, скорборд, таб

Техническая информация клиента, эффекты, список игроков и табло.

На этой странице описаны три объекта: `client()` с технической информацией вроде fps и пинга, `tab()` со списком игроков и `scoreboard()` с табло сбоку экрана. Все данные доступны только для чтения. Вне мира возвращаются нули и пустые значения.

## ClientInfo

```java
ClientInfo info = client();
String line = info.fps() + " fps " + info.ping() + " ms";
for (Effect effect : info.effects()) line += " " + effect.key() + " " + effect.level();
```

Пример собирает строку для HUD: fps, пинг и все эффекты с уровнями.

| Метод            | Тип        | Описание                                                                                                    |
| ---------------- | ---------- | ----------------------------------------------------------------------------------------------------------- |
| `fps()`          | `int`      | кадров в секунду, то же число, что в вотермарке                                                             |
| `ping()`         | `int`      | задержка, которую Quick измеряет по ответным пакетам; обновляется быстрее, чем в табе; в одиночной игре `0` |
| `tickrate()`     | `float`    | скорость тиков мира, обычно 20; вне мира `0`                                                                |
| `frozen()`       | `boolean`  | сервер заморозил тики                                                                                       |
| `singleplayer()` | `boolean`  | идёт одиночная игра                                                                                         |
| `server()`       | `String`   | адрес сервера; в одиночной игре и вне мира пустая строка                                                    |
| `debugScreen()`  | `boolean`  | открыт экран F3                                                                                             |
| `screen()`       | `Screen`   | открытый экран; объект переиспользуется, поэтому не храните его дольше одного кадра                         |
| `effects()`      | `Effect[]` | эффекты, которые сейчас действуют на игрока; массив собирается при каждом вызове                            |
| `effect(id)`     | `Effect`   | один эффект по id или `null`                                                                                |

Ник, скрытие ника и аккаунт в Quick описаны на странице [Аккаунт](/extras/user.md).

### Effect

| Метод                       | Тип       | Описание                                                                      |
| --------------------------- | --------- | ----------------------------------------------------------------------------- |
| `id()`, `key()`             | `String`  | `"minecraft:speed"` и `"speed"`                                               |
| `is(value)`                 | `boolean` | сравнить id                                                                   |
| `name()`                    | `String`  | название, как оно отображается в игре                                         |
| `amplifier()`               | `int`     | сила эффекта; для уровня I это `0`                                            |
| `level()`                   | `int`     | `amplifier() + 1`                                                             |
| `duration()`                | `int`     | сколько тиков осталось                                                        |
| `infinite()`                | `boolean` | эффект бесконечный                                                            |
| `category()`                | `int`     | `Effect.BENEFICIAL`, `HARMFUL`, `NEUTRAL`                                     |
| `harmful()`, `beneficial()` | `boolean` | быстрые проверки                                                              |
| `ambient()`, `visible()`    | `boolean` | эффект от маяка; видны ли частицы                                             |
| `color()`                   | `int`     | цвет частиц `0xRRGGBB` без альфы, для отрисовки нужно `0xFF000000 \| color()` |

## Tab

```java
for (String team : tab().teams()) {
    for (String nick : tab().members(team)) {
        TabEntry entry = tab().of(nick);
        if (entry != null && entry.prefix().contains("Гарант")) chat(nick + " из стаффа, пинг " + entry.ping());
    }
}
```

Пример проходит по всем командам в табе и пишет в чат игроков, у которых в префиксе есть «Гарант».

| Метод                                                           | Тип          | Описание                                                                                                 |
| --------------------------------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------- |
| `entries()`                                                     | `TabEntry[]` | все записи; кешируются, пока таб не изменится, поэтому массив менять нельзя                              |
| `of(name)`                                                      | `TabEntry`   | запись по нику без учёта регистра; `null`, если такого игрока нет                                        |
| `size()`                                                        | `int`        | сколько игроков в табе                                                                                   |
| `header()`, `footer()`                                          | `String`     | шапка и подвал таба обычной строкой                                                                      |
| `teams()`                                                       | `String[]`   | имена команд, кешируются                                                                                 |
| `members(team)`                                                 | `String[]`   | ники в команде; массив собирается при каждом вызове, поэтому вызывайте метод раз в тик, а не каждый кадр |
| `teamPrefix(team)`, `teamSuffix(team)`, `teamDisplayName(team)` | `String`     | префикс, суффикс и имя команды обычной строкой                                                           |
| `teamPrefixText(team)`, `teamSuffixText(team)`                  | `Text`       | то же с цветами                                                                                          |

### TabEntry

Это копия записи на момент получения. Пинг и режим игры в ней сами не обновляются, за свежими данными нужно снова вызвать `tab().of(...)`.

| Метод                            | Тип       | Описание                                                                |
| -------------------------------- | --------- | ----------------------------------------------------------------------- |
| `name()`                         | `String`  | ник                                                                     |
| `uuid()`                         | `String`  | uuid с дефисами                                                         |
| `displayName()`                  | `String`  | как видно в табе: с префиксом и суффиксом, но без цветов                |
| `skin()`                         | `String`  | путь к текстуре скина; работает и для игроков, которые находятся далеко |
| `ping()`                         | `int`     | пинг, который сообщает сервер                                           |
| `gamemode()`                     | `int`     | 0 выживание, 1 креатив, 2 приключение, 3 наблюдатель, -1 неизвестно     |
| `spectator()`                    | `boolean` | в режиме наблюдателя                                                    |
| `team()`, `prefix()`, `suffix()` | `String`  | команда, её префикс и суффикс                                           |
| `listed()`                       | `boolean` | отображается строкой в табе                                             |
| `is(value)`                      | `boolean` | сравнить ник без учёта регистра                                         |

## Scoreboard

Табло сбоку экрана. Строки идут сверху вниз в том же порядке, в каком их рисует игра: скрытые строки убраны, сортировка по очкам, не больше пятнадцати строк. Quick пересобирает табло раз в тик, поэтому обращаться к нему можно даже каждый кадр.

| Метод             | Тип        | Описание                                                                               |
| ----------------- | ---------- | -------------------------------------------------------------------------------------- |
| `visible()`       | `boolean`  | показано ли табло                                                                      |
| `title()`         | `String`   | заголовок обычной строкой                                                              |
| `titleText()`     | `Text`     | заголовок с цветами, кешируется                                                        |
| `size()`          | `int`      | сколько строк                                                                          |
| `line(index)`     | `String`   | строка по номеру, `0` самая верхняя                                                    |
| `lineText(index)` | `Text`     | строка с цветами сервера                                                               |
| `score(index)`    | `int`      | очки строки, число справа                                                              |
| `lines()`         | `String[]` | все строки; массив общий, менять его нельзя                                            |
| `contains(part)`  | `boolean`  | есть ли строка с таким фрагментом текста                                               |
| `find(part)`      | `int`      | номер первой строки с таким фрагментом или `-1`                                        |
| `after(prefix)`   | `String`   | текст после фрагмента в первой подходящей строке: `after("Баланс: ")` вернёт `"1200$"` |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.quickclient.cc/game/server.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
