> 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/en/game/server.md).

# Server, scoreboard, tab list

Client technical info, effects, the player list and the scoreboard.

This page describes three objects: `client()` with technical info such as fps and ping, `tab()` with the player list, and `scoreboard()` with the sidebar on the side of the screen. All of this data is read-only. Outside a world, zeros and empty values are returned.

## ClientInfo

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

The example builds a line for the HUD: fps, ping and every effect with its level.

| Method           | Type       | Description                                                                                                 |
| ---------------- | ---------- | ----------------------------------------------------------------------------------------------------------- |
| `fps()`          | `int`      | frames per second, the same number as in the watermark                                                      |
| `ping()`         | `int`      | latency that Quick measures from response packets; updates faster than in the tab list; `0` in singleplayer |
| `tickrate()`     | `float`    | world tick rate, usually 20; `0` outside a world                                                            |
| `frozen()`       | `boolean`  | the server has frozen ticks                                                                                 |
| `singleplayer()` | `boolean`  | a singleplayer game is running                                                                              |
| `server()`       | `String`   | server address; empty string in singleplayer and outside a world                                            |
| `debugScreen()`  | `boolean`  | the F3 screen is open                                                                                       |
| `screen()`       | `Screen`   | the open screen; the object is reused, so don't keep it longer than one frame                               |
| `effects()`      | `Effect[]` | effects currently active on the player; the array is built on every call                                    |
| `effect(id)`     | `Effect`   | one effect by id or `null`                                                                                  |

Nickname, nickname hiding and your Quick account are described on the [Account](/en/extras/user.md) page.

### Effect

| Method                      | Type      | Description                                                                        |
| --------------------------- | --------- | ---------------------------------------------------------------------------------- |
| `id()`, `key()`             | `String`  | `"minecraft:speed"` and `"speed"`                                                  |
| `is(value)`                 | `boolean` | compare the id                                                                     |
| `name()`                    | `String`  | the name as it is shown in the game                                                |
| `amplifier()`               | `int`     | effect strength; `0` for level I                                                   |
| `level()`                   | `int`     | `amplifier() + 1`                                                                  |
| `duration()`                | `int`     | how many ticks are left                                                            |
| `infinite()`                | `boolean` | the effect is infinite                                                             |
| `category()`                | `int`     | `Effect.BENEFICIAL`, `HARMFUL`, `NEUTRAL`                                          |
| `harmful()`, `beneficial()` | `boolean` | quick checks                                                                       |
| `ambient()`, `visible()`    | `boolean` | effect from a beacon; whether particles are visible                                |
| `color()`                   | `int`     | particle color `0xRRGGBB` without alpha, for rendering use `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 + " is staff, ping " + entry.ping());
    }
}
```

The example goes through every team in the tab list and posts to chat the players who have "Гарант" in their prefix.

| Method                                                          | Type         | Description                                                                                             |
| --------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------- |
| `entries()`                                                     | `TabEntry[]` | all entries; cached until the tab list changes, so the array must not be modified                       |
| `of(name)`                                                      | `TabEntry`   | entry by nickname, case-insensitive; `null` if there is no such player                                  |
| `size()`                                                        | `int`        | how many players are in the tab list                                                                    |
| `header()`, `footer()`                                          | `String`     | tab list header and footer as a plain string                                                            |
| `teams()`                                                       | `String[]`   | team names, cached                                                                                      |
| `members(team)`                                                 | `String[]`   | nicknames in a team; the array is built on every call, so call it once per tick rather than every frame |
| `teamPrefix(team)`, `teamSuffix(team)`, `teamDisplayName(team)` | `String`     | team prefix, suffix and name as a plain string                                                          |
| `teamPrefixText(team)`, `teamSuffixText(team)`                  | `Text`       | the same with colors                                                                                    |

### TabEntry

This is a copy of the entry at the moment it was obtained. Ping and game mode in it do not update on their own, call `tab().of(...)` again for fresh data.

| Method                           | Type      | Description                                                          |
| -------------------------------- | --------- | -------------------------------------------------------------------- |
| `name()`                         | `String`  | nickname                                                             |
| `uuid()`                         | `String`  | uuid with dashes                                                     |
| `displayName()`                  | `String`  | as shown in the tab list: with prefix and suffix, but without colors |
| `skin()`                         | `String`  | skin texture path; also works for players who are far away           |
| `ping()`                         | `int`     | ping as reported by the server                                       |
| `gamemode()`                     | `int`     | 0 survival, 1 creative, 2 adventure, 3 spectator, -1 unknown         |
| `spectator()`                    | `boolean` | in spectator mode                                                    |
| `team()`, `prefix()`, `suffix()` | `String`  | team, its prefix and suffix                                          |
| `listed()`                       | `boolean` | shown as a row in the tab list                                       |
| `is(value)`                      | `boolean` | compare the nickname, case-insensitive                               |

## Scoreboard

The sidebar on the side of the screen. Lines go from top to bottom in the same order the game draws them: hidden lines removed, sorted by score, fifteen lines at most. Quick rebuilds the sidebar once per tick, so you can query it even every frame.

| Method            | Type       | Description                                                                                 |
| ----------------- | ---------- | ------------------------------------------------------------------------------------------- |
| `visible()`       | `boolean`  | whether the sidebar is shown                                                                |
| `title()`         | `String`   | title as a plain string                                                                     |
| `titleText()`     | `Text`     | title with colors, cached                                                                   |
| `size()`          | `int`      | how many lines                                                                              |
| `line(index)`     | `String`   | line by number, `0` is the top one                                                          |
| `lineText(index)` | `Text`     | line with the server's colors                                                               |
| `score(index)`    | `int`      | the line's score, the number on the right                                                   |
| `lines()`         | `String[]` | all lines; the array is shared, do not modify it                                            |
| `contains(part)`  | `boolean`  | whether any line contains that piece of text                                                |
| `find(part)`      | `int`      | number of the first line with that piece or `-1`                                            |
| `after(prefix)`   | `String`   | the text after the piece in the first matching line: `after("Balance: ")` returns `"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/en/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.
