排列

启用

要开启排列,你必须在 config.yml 设置为:

scoreboard-teams:
  enabled: true

为什么这个是必须的已经在 名称标签 页面中介绍过了,这里不再赘述。 要 验证 你启用的排列,请使用指令 /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 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"

在这里, vip1vip2 将拥有相同的优先度 (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 - 各世界排列

目前不支持配置各世界排列。然而,这可以通过 条件变量符 实现。只需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 版本有关。

最后更新于