# 排列

## 启用

要开启排列，你必须在 config.yml 设置为：

```
scoreboard-teams:
  enabled: true
```

为什么这个是必须的已经在 [名称标签](/tab-wiki/core-features/ming-cheng-biao-qian.md#jie-shao) 页面中介绍过了，这里不再赘述。\
要 **验证** 你启用的排列，请使用指令 `/tab debug`。如果一切正常，它将会显示 `Sorting type:` 除了 `DISABLED` 的其他内容。

你可以在 `scoreboard-teams` 部分下的 `sorting-types` 配置分列模式。 各种的排列模式决定我们如何分类玩家。例如，如果你想设置为 `GROUPS` （组）分类模式，并设置了 `owner`, `admin`, `mod`, 和 `default` 组，那么你的配置文件应该像这样 `GROUPS:owner,admin,mod,default`。

此外，如果你希望排列区分大小写，请启用 `case-sensitive-sorting`。\
如果这个选项被启用，输入到每个排列类型的排列选项的大小写很重要。例如，当排序区分大小写时，`Joe` 将被认为与 `joe` 不同，并且根据排列类型，可能会出现在不同的位置。

### 排列类型

* `GROUPS` - 由玩家的组的优先级排列
* `PERMISSIONS` - 由权限节点排列
* `PLACEHOLDER` - 由指定的变量符排列
* `PLACEHOLDER_A_TO_Z` - 通过变量符的字母顺序从小到大排列，同时所有字符都有其对应的 ID，因此也支持非英文字母的字符。
* `PLACEHOLDER_Z_TO_A` - 通过变量符的字母顺序从大到小排列。不支持除英语字母外的字母。
* `PLACEHOLDER_LOW_TO_HIGH` - 通过变量符的数字顺序从小到大排列。要求变量符的输出值必须是纯数字。
* `PLACEHOLDER_HIGH_TO_LOW` - 通过变量符的数字顺序从大到小排列。要求变量符的输出值必须是纯数字。

## 排列方法

下面是你在 TAB 可以用的排列方法。

### 使用权限组设置优先级排列

这是 TAB 默认使用的方法。TAB 会获取你的玩家所在的权限组的组并根据组的优先级进行排列。

#### 步骤 1 - 配置优先级组

将你的玩家分配到不同的组中，这在 [分组](/tab-wiki/getting-start/fen-zu.md) 页面中已经介绍。 \
**验证** 玩家所在的组，你可以使用指令 `/tab debug <玩家>`. 它将提示 `Primary permission group:` 跟着玩家所在的组。如果没有，那么说明你的配置存在问题。

#### 步骤 2 - 配置排列

将所有你的组将所有组按优先级顺序放入逗号分隔的列表中。例如，如果您有组 `owner`, `admin`, `mod`, 和 `default`，，并且希望按该顺序分配组，您的配置应该像这样: `GROUPS:owner,admin,mod,default`.\
这行应该放置到 `sorting-types` 部分下，而该部分又在 `scoreboard-teams` 下。也就是说应该像这样:

```
scoreboard-teams:
  sorting-types:
    - "GROUPS:owner,admin,mod,default"
```

如果你希望有 2 个或者更多的同一级优先度的组，请使用 `|` 符号分开。例如:

```
scoreboard-teams:
  sorting-types:
    - "GROUPS:owner,admin,vip1|vip2,default"
```

在这里， `vip1` 和 `vip2` 将拥有相同的优先度 (3)。

### 使用权限节点排列

这是不建议的，因为许多低质量的服务器只是给他们的协管 OP 权限而不知道如何取消权限，这使得这个方法并没有按照预期工作。如果你认为你有足够的能力并且根据组来排列不是一个很好的选择，那么你就可以尝试这个方法。\
但是，在尝试对指定玩家进行排列而不将其分配到组时，此方法非常方便。

#### 步骤 1 - 配置权限

根据您希望他们的排序方式给予您的玩家权限。如果您不知道如何给予权限，可以在各自的权限组插件文档中找到。如果您不知道权限组插件是什么，甚至不知道权限是什么，请不要使用此方法。

#### 步骤 2 - 配置分类

将您的所有权限按优先级顺序放入逗号分隔的列表中。\
例如，如果你想把 `my.permission.1`, `my.permission.2`, `my.permission.3`, 和 `my.permission.4`, 权限作为排列玩家的权限，你的配置文件就应该像这样：`PERMISSIONS:my.permission.1,my.permission.2,my.permission.3,my.permission.4`.\
这行应该放置到 `sorting-types` 部分下，而该部分又在 `scoreboard-teams` 下。也就是说应该像这样:

```
scoreboard-teams:
  sorting-types:
    - "PERMISSIONS:my.permission.1,my.permission.2,my.permission.3,my.permission.4"
```

### 使用变量符排列 - 预设值

此方法使用变量符的输出对玩家进行排列，并将其与预设值进行比较。

要配置这种排列方法，请先填写你想要使用的变量符，然后填写 (`:`)，再然后就是预设值了。\
例如，如果你想要通过 `%afk%` 变量符排列玩家，即根据他们是否在挂机，即输出值是 `yes` 还是 `no`，你的配置应该像这样： `PLACEHOLDER:%afk%:yes,no`，这样输出 `yes` 的玩家将会排列在输出 `no` 的玩家的前面，具体配置应该像这样:

```
scoreboard-teams:
  sorting-types:
    - "PLACEHOLDER:%afk%:yes,no"
```

### 使用变量符排列 - 从 A 到 Z

此方法使用变量符的输出对玩家进行排列。

要配置这种排列方法，只需填写你要使用的变量符。就这样。\
例如，你想根据玩家的 `%displayname%` 变量符排列，你的配置应该像这样：`PLACEHOLDER_A_TO_Z:%displayname%`。具体的配置应该像这样:

```
scoreboard-teams:
  sorting-types:
    - "PLACEHOLDER_A_TO_Z:%displayname%"
```

### 使用变量符排列 - 从 Z 到 A

此方法使用变量符的输出对玩家进行排列。\
这与上面的从 A 到 Z 排序相同，只是字母表是向后的，所以 Z 排在第一位，A 排在最后。

要配置这种排列方法，只需填写你要使用的变量符。就这样。\
例如，你想根据玩家的 `%displayname%` 变量符排列，你的配置应该像这样：`PLACEHOLDER_Z_TO_A:%displayname%`。具体的配置应该像这样:

```
scoreboard-teams:
  sorting-types:
    - "PLACEHOLDER_Z_TO_A:%displayname%"
```

### 使用变量符排列 - 从高到低

此方法使用变量符的输出的数字的自然顺序对玩家进行排列。\
**只有纯数字输出的变量符才能使用！**

要配置这种排列方法，只需填写你要使用的变量符。就这样。\
例如，你想根据玩家的 `%health%` 变量符排列，你的配置应该像这样：`PLACEHOLDER_Z_TO_A:%health%`。具体的配置应该像这样:

```
scoreboard-teams:
  sorting-types:
    - "PLACEHOLDER_HIGH_TO_LOW:%health%"
```

### 使用变量符排列 - 从低到高

此方法使用变量符的输出的数字的自然相反的顺序对玩家进行排列。\
**只有纯数字输出的变量符才能使用！**\
要配置这种排列方法，只需填写你要使用的变量符。就这样。\
例如，你想根据玩家的 `%health%` 变量符排列，你的配置应该像这样：`PLACEHOLDER_Z_TO_A:%health%`。具体的配置应该像这样:

```
scoreboard-teams:
  sorting-types:
    - "PLACEHOLDER_LOW_TO_HIGH:%health%"
```

## 额外设置

`case-sensitive-sorting: true`\
当开启后，玩家将会以 A-Z a-z 排列. 禁用后，则是, Aa-Zz.

## 附加信息

### 附加信息 1 - 限制

所有的排列要素和玩家名称必须共同构成一个最长 16 字符的队伍名称。因为如此，减少变量符的输出是必要的。TAB 本身已经尽可能为所有的排列方法使用最短的值 - 值在内部被替换为 1-9（01-99 如果有超过 10 个结果）以帮助你解决这个限制。当你尝试使用一个长字符输出的变量符或者使用多个变量符排列时，第二个变量符会被完全切断。要解决这个问题，请剪切你的变量符，尝试只使用所有变量符的前 4 个字符。如果可能的话，请使用 `PLACEHOLDER` 排列方法，并设置预设值，以解决这个问题。

### 附加信息 2 - 各世界排列

目前不支持配置各世界排列。然而，这可以通过 [条件变量符](/tab-wiki/functions/tiao-jian-bian-liang-fu.md) 实现。只需w检查 %world% ，如果匹配则返回一个变量符，否则返回另一个。这适用于任何事物，而不仅仅是世界（服务器、区域等）。

### 附加信息 3 - 与其他插件兼容

正如我们前面提到的，排列由计分板队伍实现（他们的名称还需要不同），而玩家只能成为一个队伍的成员。话句话说，同时只能有一个插件管理计分板队伍。多个插件同时管理计分板队伍将会导致灾难。

幸运的是，TAB 包含阻止其他插件分配玩家计分板队伍的功能。这可以通过修改配置文件的 `anti-override` （位于 `scoreboard-teams`下）来开关。但我们非常推荐你保持开启该功能。当一个插件尝试覆盖 TAB 的计分板队伍是，这个操作将会被记录到 `anti-override.log` 文件。如果你的文件是空的或者不存在，这意味着你没有冲突的插件并且你可以关闭该功能， 这可以稍稍提高你的服务器性能。如果这个文件存在，大部分时候你可以通过队伍的名称来猜测是哪个插件导致的问题。\
以下是一些常见的队伍和它们的来源：

* `collideRule-xxxx` - 这来自 Paper。 我不打算解释原因，但是避免这问题的办法是在 paper 配置文件中设置 collision 为 true，然后在 TAB 的配置中将该配置设置为 false。
* `CMIxxxx` - CMI，在它的配置文件中禁用队伍。
* `CIT-xxxx` - 某个 Citizens NPC 和一位在线玩家名称相同，请尝试修改NPC 的名称或者使用浮空字代替 NPC 名称。 (/npc name 或者其他)

然而，这种检测不是 100% 的。 因此，即使启用了反覆盖，您仍可能遇到兼容性问题。 要确定此类问题，请检查使用 /tab reload 质量是否修复了您的排列问题。 如果是这样，那是某种兼容性问题。 如果不是，则很可能是配置错误问题。 兼容性问题的最常见原因是与 TAB 挂钩的插件，可能已过时。 最近的兼容性问题与过时的 eGlow 版本有关。


---

# Agent Instructions: 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:

```
GET https://docs.superiormc.cn/tab-wiki/core-features/pai-lie.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
