pXiaoD
本帖最后由 pXiaoD 于 2022-8-2 15:04 编辑

TAB 3.x
非官方中文 Wiki

TAB 是一个经典老牌的集计分板、TAB、Boss、名称标签条等的服务器信息显示大型插件,它稳定性强、自定义度高、功能丰富,几乎是国内外许多服主的必备插件之一。插件于2020年11月发布了 v3 版本并转为免费+捐赠模式的插件,并进行了大规模修改,此 Wiki 针对 3.x 版本进行翻译。

站内 Wiki 版本为初稿,请尽量使用下面链接阅读。
中文 Wiki
英文 Wiki
离线版本: TAB Wiki 离线版.zip (2.29 MB, 下载次数: 169)

目录:
- 首页
- 开始使用
- 核心功能
- 功能
- 其他指南
- 高级
本 Wiki 同步原文 Wiki 翻译,最后更新于:2022.8.2

来自群组: Complex Studio

pXiaoD
首页

Wiki 阐述的是本插件 3.0.1 之后版本的功能。如果你的配置文件看起来和本 Wiki 介绍的不同或者缺失一些功能,那么你肯定使用的是本插件的旧版本。查看 这里 以获取其最新版本。

如果你在 BungeeCord 上安装了 Tab,那么请使用 /btab 指令而不是 /tab。本 Wiki 在其他位置只介绍 /tab 指令。



pXiaoD
为什么选择 TAB?

易于安装

支持几乎所有的 Minecraft 版本的同时包含插件介绍的几乎所有特性,除版本限制外,几乎不会存在某个重大功能只能在指定版本使用的情况。支持多个服务端平台(Bukkit/Spigot/Paper, BungeeCord, Velocity 和 Krypton),所有这些平台的内容都包含在了同一个 jar 文件中,所以你可以直接下载插件不需要浏览版本历史、询问你的服务器应该安装插件的哪个版本、浏览那些奇怪的网站来获得下载地址或者其他类似的情况。同样的 jar 文件支持所有的服务端版本 & 服务端平台,并且最新版本的插件会一直为你服务,不会轻易舍去某个版本或者平台的支持。

稳定性高

本插件不会在您的服务器控制台无限的刷报错、不会和您的服务端的其他插件轻易冲突并且不会随意的无故停止工作。它稳定性高,因为Bug修复是我们最高优先级的工作,甚至优先于为本插件添加新的功能。

功能丰富

几乎所有用户需求的功能都可以通过这一个插件实现。不需要安装其他大量的插件、禁用某个功能以防止相互冲突或者需要保证所有你额外安装的插件都支持你的服务端版本。所有的功能支持所有的版本,并且都包含在了单个插件中。

超越限制

Mojang 对游戏客户端的改动导致 TAB 提供的几乎所有功能都拥有不同形式的限制。其他开发者或许在遇到这种情况时,只会跟你说“Mojang限制的,我们也没办法。再见。”而在这里则不是这种情况。每当我们发现了一处因客户端而导致的功能限制的时候,我们会尝试寻找解除限制的办法,并且大部分的功能限制的解决方案我们都尝试成功了。关于这些,你可以查看 限制页面,它们中大部分都已阐述了我们是通过何种方法解除哪些限制的,因此你可以将你的服务器配置成你真正需要的样子。那些解除限制的工作需要消耗我们大量的精力,并且说“不可能”明显比实际去尝试容易的多。

高质量服务

你可以加入我们的Discord 并且可以快速获得帮助,甚至你的问题刚发出去,立刻就有人进行解答,这取决于你在加入时有哪些人在线。官方的服务支持 只会提供给购买插件的用户。如果你使用免费版本,那么你不会获得服务支持。我们使用一个工单系统来提供支持,这使得我们可以保持追踪那些没有被解决的问题,并且我们保证您的问题不会被我们的服务团队忽略。

积极开发

本插件一直没有被抛弃。它保持不断的更新以修复反馈出的BUG、添加新的被用户需求的功能和获得新的优化,以让它更好的提供服务同时让你的服务器更加流畅。

高性能

不像其他所谓“高性能”插件那样仍然占用你的 CPU 大量性能,TABCPU 占用相对较低。并且有一个 提供整个插件的 CPU 使用情况的 指令。你可以在这里查看到底 TAB 的哪些部分占用了的 CPU 性能最多,并且这里有 许多优化 Tab 的方法 来尽可能充分的使用您的 CPU 资源,最常见的方法是在单个占位符效率低下时提高刷新频率。这是在每个占位符的基础上完成的,而不是可能会破坏动画的减慢整个功能的刷新频率。我们积极检测 TAB 在大型服务器上的性能表现,结果表明 TAB 的性能甚佳,因此我们肯定在小型服务器上,Tab 绝对是您的不二选择。



pXiaoD
本帖最后由 pXiaoD 于 2022-3-31 17:20 编辑

安装

Bukkit/Spigot/Paper

Bukkit/Spigot/Paper 服务器上安装 TAB 绝对是它能够给你带来的最简单的操作。只需将插件放置到您的服务端的 plugins 文件夹然后重启你的服务器。你也可以在服务端安装 Plugman 的情况下使用指令 /plugman load tab 来在服务器开启的情况下加载插件。

Krypton

Krypton 服务器上安装 Tab 和在 Bukkit 上安装没有差别。只需要将插件放置到plugins文件夹然后重启你的服务器即可。

如果你不知道这里的 "Krypton" 是什么意思,请点击这里 查看。

BungeeCord

BungeeCord 上,你有 2 种选择: 要么 在你的代理服务端(BungeeCord)上安装Tab ,要么 在你的所有子服上安装。在子服上安装的步骤在上面已经阐明,下面介绍在代理服务端上安装 Tab

代理服务端安装

将插件放置到代理服务端的 plugins 文件夹,然后重启你的代理服务端。、
特别推荐: 安装 TAB-BukkitBridge 到你的所有子服上以获得占位符支持和其他额外的功能。


与安装到所有子服相比,在代理服务端上安装 TAB 的优势:

  • 可以使用 共用玩家列表 功能
  • 可以在子服版本低于 1.16 的情况下仍使用 RGB 颜色
  • 可以限制哪些服务器能够看到 TAB

与安装到所有子服相比,在代理服务端上安装 TAB 的劣势:

  • 无法提供 各世界玩家列表 功能(可以通过在安装 Tab 到代理服务端同时安装到所有子服,并且在子服上禁用除各世界玩家列表以外所有功能以解决)
  • 无法提供解除名称标签限制功能 (详见 #143)
  • 无法提供宠物名称修复功能
  • 无专为 PlaceholderAPI 提供的 TAB 拓展 (如 %world% 直接代表世界名称等,计划在后续版本添加)




pXiaoD
指令 & 权限

这里展示的所有 TAB 可以提供的指令。它们中的部分需要玩家拥有其配套的权限。如果你在 BungeeCord 上安装了 TAB,那么请使用 /btab 指令而不是 /tab。需要额外注意的是,BungeeCord 上的权限是和子服完全独立的。

列表

/tab reload

  • 权限: tab.reload
  • 介绍: 卸载本插件,然后读取被修改后的配置文件并重新加载插件。

/tab <player/group/playeruuid> <名称> <属性> [值]

  • 权限: tab.change.<property>
  • 介绍: 为一个组或者玩家更改其对应属性的值。如果没有提供值,那么代表为该组或者玩家删除对应的属性。

属性

  • 对于 Tab 列表: tabprefix, customtabname, 和 tabsuffix.
  • 对于名称标签: tagprefixtagsuffix.
  • 无限制名称标签模式 被启用后,还可额外提供的属性: abovename, belowname, 和 customtagname.

注意

  • playeruuid 参数需要一位 在线玩家 名称来应用更改的属性。
  • 如果你在输入指令时没有输入 ,那么对应的 属性 就会被移除。

/tab <玩家/组/玩家uuid> <名称> remove

  • 权限: tab.remove
  • 介绍: 移除该组或者玩家的所有数据。

注意

  • playeruuid 参数需要一位 在线玩家 名称来移除数据。

/tab debug [玩家]

  • 权限: tab.debug
  • 介绍: 展示服务端的版本、插件版本、权限组选择逻辑和排序类型。 如果还填写了 <玩家> 参数,则额外展示有关该玩家的以下信息:
    • 排序值 & 描述,如果玩家没有被正确排序,那么它会带来很有用的信息以帮助查看哪里出现了错误。
    • 使用 分组 功能后玩家所在的首要组。
    • 所有该玩家的配置属性列表,它们的值和来源。

/tab cpu

  • 权限: tab.cpu
  • 介绍: 显示 10 秒后插件的大致 CPU 使用率。有些部分是无法测量的,因此显示的值略低于实际值。它还包括占位符的使用,可以通过增加刷新间隔来优化,点击这里 以了解详情。

/tab announce bar <名称> <时长>

  • 权限: tab.announce.bar
  • 介绍: 给所有在服务器上的玩家展示配置文件中指定 名称 的 ** BOSS**条信息,可指定 时长,以秒作单位。

/tab send bar <玩家> <名称> <时长>

  • 权限: tab.send.bar
  • 介绍: 向指定 玩家 展示指定 名称 的 ** BOSS** 信息,可指定 时长,以秒作单位。

/tab announce scoreboard <名称> <时长>

  • 权限: tab.announce.scoreboard
  • 描述: 向所有玩家展示指定 名称计分板,可指定 时长,以秒作单位。

/tab scoreboard show <名称> [玩家]

  • 权限: tab.scoreboard.show 作用于个人调整, tab.scoreboard.show.other 作用于对其他玩家调整
  • 描述: 展示指定 名称计分板,当 玩家 值为空时作用于个人,否则作用于指定的 玩家

/tab ntpreview

  • 权限: tab.ntpreview
  • 描述: 在开启无限制名称标签模式后,玩家头顶栏将通过盔甲架显示而不是原版的名称标签(nametag),你的客户端将只能看到你的玩家名称而看不到名称标签上方和名称标签下方的内容。你可以通过该指令查看你头顶栏现在的盔甲架(PS:即可以看到显示的内容),这样你就可以知晓你的头顶栏是否按照你的预期工作。

注意

  • 盔甲架的移动有一些延迟。这取决于延迟和移动动画。这个延迟在其他玩家不会出现,只有自己才会发现。
  • 这个指令是一个开关。

/tab parse <文本>

  • 权限: tab.parse
  • 描述: 替换所有的变量符 (包括内部和外部变量符) 为所给的 文本。可以测试一个变量符能否正常工作。

/tab setcollision <玩家> <true|false>

  • 权限: tab.setcollision
  • 描述: 设置 玩家 是否会和其他实体碰撞,可以修改为 true 或者 false

额外提供的权限

  • tab.admin - 允许玩家使用所有 TAB 的指令。
  • tab.bypass - 如果 per-world-playerlist 启用,拥有该权限的玩家照样可以看到全局玩家列表。per-server-playerlist 同理。
  • tab.staff - 允许该玩家计入 %staffonline% (和 %canseestaffonline%) 统计的 staff(协管) 在线数量。
  • tab.spectatorbypass - 如果 allow-spectator-bypass-permission 启用,那么该权限就对你有用。
  • tab.scoreboard.toggle - 允许玩家切换计分板开关。
  • tab.scoreboard.toggle.other - 允许玩家为其他玩家切换计分板开关。
  • tab.bossbar.toggle - 允许玩家切换Boss条。
  • tab.tabcomplete - 允许玩家在使用 /tab 或者 /btab 指令时拥有 Tab 补全功能。
  • tab.seevanished - 允许玩家在共用玩家列表中查看其他隐身的玩家。

pXiaoD
本帖最后由 pXiaoD 于 2022-4-2 13:08 编辑

常见问题

我该如何使得名称标签下方不影响 NPC 而只影响真实的玩家?

禁用 原版名称标签 功能,启用 无限制名称标签模式 并使用指令 /tab group _DEFAULT_ belowname &c%health% Health

为什么 abovename/belowname (名称上方/名称下方)属性没有正常工作?

这些属性需要您开启 无限制名称标签模式。此外在默认情况下,您不会看到您的名称标签,您只能看到其他玩家的名称标签。如果要显示您自己的名称标签,请使用指令 /tab ntpreview。具体的信息请见 无限制名称标签模式 页面。

为什么玩家分组没有正常工作?

最常见的原因是您根本没有开启分组功能,LuckPerms 的各个权限组的weight(权重值)根本没有配置完毕或者配置无误和启用了通过权限节点分组方法而没有给将权限节点正确的给予 OP 和其他玩家。具体的信息请见 分组 页面。

如何添加玩家到 %staffonline% 变量符的显示中?

只需给予他们 tab.staff 权限。

我如何关闭 TAB 列表的延迟显示?

  1. yellow-number-in-tablist:
  2.   enabled: false
复制代码

然而,我启用了无限制名称标签模式,但是它似乎没有正常工作。为什么?

这个模式显示的名称标签和原版的有很大不同。这就导致,尝试让你看到自己的名称标签的盗版客户端可能不会和此模式兼容。要查看你的名称标签,你需要以其他玩家身份再看你自己。你也可以使用 /tab ntpreview 来临时地查看自己的名称标签。

如何在 TAB 列表中显示玩家皮肤?

首先在 server.properties 中,online-mode=true 是必须的,即您必须打开正版验证。没有给盗版玩家显示皮肤的方法。如果您的服务器是离线服务器而想给正版玩家尝试在线连接以显示它们的皮肤,请尝试像 FastLogin 或者 JPremium 的登录插件。

如何在 TAB 列表中添加更多的列?

TAB 列表的列是由客户端处理的,而不是服务器。唯一有效的办法就是让你的服务器保持更多的玩家,这样它们就会被自动的分列。当你的玩家分别超过 21, 41 和 61 名玩家时,你的 TAB 列表就会产生一个新的列 (因为每列最多只能有 20 名玩家)。还有一个可以尝试的方法是在 TAB 列表中添加大量的空白虚拟玩家。
有关这个功能的实现,你可以查看 这里。但没有对虚拟玩家本身提供更多的支持的计划。


我可以的延迟条那里添加一些文本/我可以修改那里的颜色吗?

不可能。但是你可以尝试 TAB 后缀对齐 功能。一样的显示效果但无视原版的限制!

在使用 prefix/suffix 指令时如何使用空格?

请使用 "", 例如 /tab group owner tabprefix "&2&l服主&r "


pXiaoD
兼容性

要求

插件唯一的要求就是您必须使用 Java 8 或更高版本 来运行它。TAB 不需要你安装其他插件作为前置,但可以通过其他插件来增强它的功能。具体的信息可以在下方查看。

可选的前置

下面所列的插件可以增强 TAB 的功能:

  • PlaceholderAPI - 添加来自其他插件的变量符。仅限 Bukkit。(还有使用了 Bukkit Bridge 的 BungeeCord 群组服务端)
  • LuckPerms - 添加权限和组的管理。
  • Vault - 添加权限和组的管理。仅限 Bukkit。
  • UltraPermissions - 添加权限和组的管理。仅限 BungeeCord 和 Bukkit。
  • Essentials - 添加检测玩家是否挂机。仅限 Bukkit。
  • Lib's Disguises - 添加对伪装玩家是否开启碰撞和名称标签的支持。仅限 Bukkit。
  • ViaVersion - 添加检测玩家版本号的支持,有些 TAB 的功能只能在部分新版本上使用。
  • ProtocolSupport - 和 ViaVersion 一样。仅限 Bukkit。
  • RedisBungee - 提供多 BungeeCord 群组服支持。仅限 Bukkit。

支持的服务端版本

本插件支持从 1.5.x1.18.2 的所有版本。

支持的服务端平台

纯净服务端


Mod 服务端


纯净 & Mod 混合服务端


其他服务端


代理服务端


支持的 Java 版本

TAB 使用 Java 8 编译,因此它应当支持所有高于它的Java版本。经过实测,它在 Java17 上工作也很正常。

重启插件

TAB 支持几乎所有重启插件的方法,包括:

  • /tab reload ✔
  • /plugman reload tab ✔ (在你的服务器开启同时更新你的插件,仅限 Bukkit)
  • /reload ✔ (不推荐这么做,因为我们无法保证其他插件也支持该指令,仅限 Bukkit)

与 TAB 有冲突的插件

  • 所有名称标签颜色插件 会无法正常工作,查看 如何和名称标签颜色插件兼容? 一节以了解更多。
  • Tablisknu (skript addon) 重复 Tab 的工作 (排序 & 名称标签)。
  • SkBee (skript addon) 发生空计分板数据包,导致 Tab 有时无法正确展示相关内容。
  • ViaVersion (安装在 BungeeCord 平台) - 如果 TAB 安装到你的 BungeeCord 的子服上,它将无法和 BC 上的 ViaVersion 挂钩,也就无法检测玩家客户端版本号。如果 TAB 安装在你的 BungeeCord 上,由于 ViaVersion 会修改玩家版本号以使得其玩家可以正确进入对应的服务器,使得 TAB 无法准确识别玩家客户端的真实版本,并且带来新的问题:


    • 在 1.13+ 客户端上,玩家的前缀、后缀仍会被限制在 16 个字符。
    • 在 1.13 以上版本下,计分板每行限制在 26 个字符。
    • 在 1.13 以下版本下,计分板每行限制在 14 个字符。
    • 计分板的行数显示可能有些问题。
    • 在 1.16+ 客户端上,RGB 颜色仍将会以旧版本颜色代码显示

    客户端版本号和服务端版本号相差越大,你遇到的问题就会越多。
    最好的解决方案就是把 TAB 装在所有子服上而不是在 BC 上。

你发现了上面没提到的插件冲突情况? 加入我们的 Discord 并向我们提交工单以让我们了解它!



pXiaoD
限制

我们不喜欢这一部分,但我们必须接受它。了解它们可以帮助我们免除配置时的烦恼。

名称标签

  • <1.13 的版本中,前缀/后缀 的长度必须小于 16 字符 (包含颜色代码)。
  • 玩家名称无法真正更改,插件也不提供该功能。
  • 1.13 开始,名称只能有一种代码。要么是颜色代码,要么是格式化代码(例如 &4 或 &l),但不能两者都有。
  • 玩家名称不支持 RGB 颜色代码。
  • 发光颜色和名称颜色都是由团队颜色决定的,它们必须保持一致。

解除这些限制(不在 BungeeCord 平台提供: 启用 无限制名称标签模式。

名称标签下方

  • 格式必须是 白色数字 + 空格 + 文本。
  • 所有玩家的文本内容全部一致,因此无法个性化(例如显示某个玩家的公会)。但数字可以每个玩家不一致。
  • 数字的颜色是无法改变的。
  • 它将会显示在所有玩家的实体上。因此 NPC 也会包括。
  • 在 1.13 及以下版本,文本长度限制在 16 个字符。

绕过方法 (在 bungeecord 上可能不起作用): 启用 无限制名称标签模式 并使用属性指令 (使用 /tab group _OTHER_ belowname &c%health% Health 以应用到所有组)。

1.9 以下版本的 Boss 条

  • 如果 TAB 安装在 BungeeCord 上,则 Boss 条不会发送给玩家。
  • 不提供选择颜色和风格功能。
  • 如果进度条在 50% 及以下则会在显示方面有问题。(客户端bug)
  • 同一时间只能显示一行。
  • 如果你不在客户端关闭粒子效果显示,则会有雾效果。(仿佛在打BOSS)
  • 在看着方块的时候可能不会显示。

黄色数字

只支持两种模式:一个黄色的数字和爱心。没用其他可供选择。颜色也无法修改。
绕过: 启用 allign-tabsuffix-on-the-right(TAB 后缀自动对齐)。TAB 后缀会在前面显示并模拟在后面显示的效果。


计分板

  • 在 1.13 以下版本,计分板的标题限制在 32 个字符以内(包括颜色代码)。
  • 在 1.13 以下版本,计分板每行限制在 26 个字符以内(包括颜色代码)。
  • 最多只能显示 15 行。
  • 计分板右侧的红色数字在插件层面无法删除,你需要额外安装 Mod。(PS: 资源包也可以)

TAB 后缀自动对齐

  • 该功能不会并且将来也不会支持自定义字符和资源包。同时在客户端也必须关闭 "强制使用 unicode 字符" 选项。


pXiaoD
分组

关于

TAB 使用组来管理属性 (例如 TAB 前缀) 和排列玩家 (如果你启用了这个功能). 在 TAB 中有 2 种方法设置组到的优先级、

第一个方法是与你的权限组插件挂钩并且获取其中的组。同时你的权限组插件必须是受 TAB 支持的插件。
支持的权限组插件: LuckPermsUltraPermissions 可直接挂钩,但是其他权限组插件也可以提供 Vault 间接挂钩。
如果你的权限组插件不受支持,你也可以尝试方法 2。


方法1: 使用权限组设置优先级

这是 TAB 默认使用的方法。TAB 会获取你的玩家所在的权限组的组。

将玩家加入到你的权限组的组(不要忘记配置它们的 weight - 如果你是使用 LuckPerms 可以使用指令 /lp group <组> setweight <数字>).
验证玩家在 TAB 中的组可以使用指令 /tab debug <玩家>。它会提示 Primary permission group: <你的组>。这样你就可以检查 TAB 是否与你的权限组插件挂钩了。


方法2: 权限节点

如果上面这个方法不管用,或者你就喜欢权限节点,那么你可以试试这个方法。

  • 打开 config.yml 并设置 assign-groups-by-permissions: true.
  • 给予你的玩家或者权限组 tab.group.<组名称> 权限。
  • 将所有服务器存在的权限组添加到 primary-group-finding-list 选项。这是必须的,因为:  #1 - 没有检查玩家拥有所有的权限的办法,我们只能通过检查玩家是否有我们所要的权限。  #2 - 如果一个玩家拥有超过一个组的权限,那么插件只会优先读取最靠前的权限组,而不是根据我们的排序来读取最优先的权限组。

不要忘记 OP = 所有权限! 这是 OP 存在的意义 —— 获取所有的权限。这样的话,你需要给予你  -tab.group.不想要的低级组名称 或者将该权限的值设置为 false 来获得自己实际需要的组。


pXiaoD
TAB 后缀对齐

关于

自动在玩家名称和后缀之间添加空格以实现所有玩家 TAB 后缀对齐。


启用

要启用这个功能,打开 config.yml 并设置

  1. tablist-name-formatting:
  2.   enabled: true
  3.   align-tabsuffix-on-the-right: true
复制代码

配置

现在,玩家的 TAB 后缀应该会很好的对齐了,就像 黄色数字,但是这个功能几乎没有任何限制。所以我很推荐你将黄色颜色关闭使用这个功能代替 (yellow-number-in-tablist: enabled: false) (除非你真的两个都需要,尽管所有的内容都可以在这个功能中显示)。
唯一的可供配置的是关闭指定 TAB后缀 的对齐。如果你想要设置不自动对齐的 TAB后缀,将它们配置到 customtabname 选项的其中一部分(不要忘记你需要使用 %player% 变量符来显示玩家名称)。


限制

这个功能不支持自定义字符 (例如资源包或者在客户端开启 unicode 字符设置)。我们无法知道客户端显示的字符到底是什么样子的,所以这个限制永远也无法解决。



pXiaoD
名称标签下方

关于

在玩家的名称标签下方添加一行文本,通过计分板目标选择实现。


所添加的一行默认会在所有玩家实体上显示。这会导致无法在指定玩家或者 NPC 上关闭这个显示。
然而,如果你只想给真正的玩家显示它,你可以关闭这个功能,启用 无限制名称标签模式 然后使用命令 /tab group _DEFAULT_ belowname %health% Health (或者其他你想要的文本)。这样我们会通过隐形盔甲架实现几乎相同的效果。


新增的一行只能的格式只能是 白色数字 + 空格 + 文本,并且所有玩家的名称标签下方的文本都是统一的,数字可以不同,因此带有文本的变量符可能无法按照预期工作。

启用

要启用这个功能,打开 config.yml 并设置

  1. belowname-objective:
  2.   enabled: true
复制代码

如需关闭这个功能,将选项改为 false

配置

数字

  1. belowname-objective:
  2.   number: "%health%"
复制代码

一个从 -2147483648 到 2147483647 的整数,不支持小数。数字只能为白色。支持根据玩家输出的纯数字变量符,例如玩家血量。

文本

  1. belowname-objective:
  2.   text: "Health"
复制代码

在数字后显示的文本。它正式的名称是计分板标题,会在所有的玩家实体显示,并且文本内容在所有玩家实体**用,这就导致无法实现不同玩家文本不同和关闭非真实玩家的显示。
它只能填写文本和向所有玩家都保持一致的变量符。(PS: 比如说真实日期)
所有输入的变量符会以该玩家的视角显示。


在指定世界、服务器关闭

  1. belowname-objective:
  2.   disable-in-worlds:
  3.     - disabledworld
  4.   disable-in-servers:
  5.     - disabledserver
复制代码

要在指定世界中关闭这个功能,只需找到上面的内容并设置。如果你要在除了指定世界外关闭这个功能,在列表中添加 WHITELIST 关键词即可。例如:

  1. belowname-objective:
  2.   disable-in-worlds:
  3.     - WHITELIST
  4.     - enabledworld
复制代码

注意: 在指定服务器关闭只能在 BungeeCord 上使用,并且还需安装 TAB-Bridge 插件到所有子服上。

额外信息

这个功能会受到名称标签显示规则影响。这意味着如果玩家标签是隐形的,玩家标签下方也是隐形的。这一点是非常重要的,因为你在启用 unlimited nametag mode 后会将玩家的名称标签隐形并用隐形的盔甲架来代替它。要使得名称标签下方的内容能再次显示,请通过属性指令再次添加。(例如输入 /tab group _DEFAULT_ belowname &c%health% &fHealth).

提示

提示 1 - 爱心符号

如果你想要显示玩家的血量并且想要一个爱心符号,你可以使用这个: 。 请确保你 save config in UTF-8 encoding 这样这个符号就可以正常显示了。

  1. belowname-objective:
  2.   text: "&4❤"
复制代码

提示 2 - 将血量以 0-10 范围显示

如果你想让血量以 0-10 范围显示而不是 0-20 范围,你可以通过 PlaceholderAPI 插件实现:

  • 安装 PlaceholderAPI
  • 输入指令 /papi ecloud download math
  • 输入指令 /papi ecloud download player
  • 输入指令 /papi reload
  • number 选项设置为 "%math_0_{player_health}/2%"

提示 3 - 以百分比显示血量

与提示 2 执行相同步骤,只是在最后设置的内容修改为 %math_0_{player_health}*5%。血量将会以百分比显示。(PS:没有 % 符号)

限制

  • 只能以 白色数字 + 空格 + 所有玩家共用的文本。
  • 文本是所有玩家共用的,只能全部一致,因此无法个性化显示(例如显示玩家的公会)。只有数字每个玩家可以不一致。
  • 数字的颜色无法修改。
  • 所有玩家实体都会被添加名称标签下方。这包括玩家 NPC。
  • 在 <1.13 版本下最多只能使用 32 个字符。

上面所有的限制都可以通过开启 无限制名称标签模式 ,然后配置 belowname 属性以解决 (例如 /tab group _DEFAULT_ belowname &c%health% &fHealth)。


pXiaoD
Boss 条

关于


Boss 条是在屏幕最上方的一行条。它本来用于显示凋零 & 末影龙的血量,但是插件将它的作用拓宽了。在 1.9 版本 Mojang 新增了可以不需要实体就可以修改 Boss 条的数据包,并且还可以修改它的颜色和风格。


启用

要启用该功能,打开 config.yml 并设置

  1. bossbar:
  2.   enabled: true
复制代码

配置

配置 Boss 条

  1. bossbar:
  2.   bars:
  3.     MyBossbar:
  4.       style: "PROGRESS"
  5.       color: "%animation:barcolors%"
  6.       progress: "100"
  7.       text: "&fWebsite: &bwww.domain.com"
复制代码

每个 Boss 条拥有 4 个属性:

style(风格)

Boss 条划风的样式,仅在 1.9+ 以上版本提供。
你可以选择 5 种风格: PROGRESS, NOTCHED_6, NOTCHED_10, NOTCHED_12NOTCHED_20

这是由 mojang 配置的,没有其他的选项可以选择。其他使用 Bukkit API 的 Boss 条插件可能只是名字不一样,但它们的原理和 TAB 一样。所以你不必为求“自定义风格"的BOSS条插件而到处寻找。


color(颜色)

Boss 条的颜色,仅在 1.9+ 以上版本提供。旧版本将只会看到 PINK 色。
你可以选择 7 种颜色: BLUE, GREEN, PINK, PURPLE, RED, WHITEYELLOW

这是由 mojang 配置的,没有其他的选项可以选择。


progress(百分比)

从 0 到 100 数字,支持小数。大于 100 的数字将会导致显示错误。

如果你想要显示一个变量符的值的进度,那么你可以使用来自 PlaceholderAPI  的 Math Expansion 并设置这样的变量符: %math_{placeholder_current_value}/{placeholder_max_value}*100% 或者%math_{placeholder_current_value}/<max_value>*100% 这样你的最大值就可以固定为 100 了。


注意:
将上面文本的 {} 符号内替换你真正需要的变量符(你不能在 math 变量符中再套娃 %placeholder% 样式的变量符,因此需要这个符号代替原来的 % 符号),将 <max_value> 替换为一个正整数。(例如20)


展示玩家血量的示例: %math_{player_health}/20*100% 或者or %math_{player_health}/{player_max_health}*100%

text(文本)

Boss 条的文本。长度是没有限制的,支持 1.16+ 的 RGB 代码。不支持换行。

所有 4 种属性都支持变量符。这也包括动画,可以用于改变 Boss 条的文本或者缓慢出现特效。

在下面的示例中,Boss条的文本将会在我们在动画中添加的四个文本之间切换: animations.yml

  1. bossbarText:
  2.   change-interval: 10000
  3.   texts:
  4.     - "&avote.domain.com"
  5.     - "&a&nvote.domain.com"
  6.     - "&5vote.domain.com"
  7.     - "&5&nvote.domain.com"
复制代码

config.yml

  1. bossbar:
  2.   bars:
  3.     MyBossbar:
  4.       style: "PROGRESS"
  5.       color: "BLUE"
  6.       progress: "100"
  7.       text: "%animation:bossbarText%"
  8.       announcement-bar: false
复制代码

你也可以使用一些代表等级的变量符来使得 Boss 条看起来更加炫酷,取决于你。

announcement-bar

当设置成 true,Boss 条默认将不会显示,这一般代表这个 Boss 条用于公告。

  1. bossbar:
  2.   bars:
  3.     MyBossbar:
  4.       style: "PROGRESS"
  5.       color: "BLUE"
  6.       progress: "100"
  7.       text: "Text"
  8.       announcement-bar: true #false or undefined means it will be visible all the time
复制代码

display-condition

玩家看到此 Boss 条必须满足的 条件。公告出的 Boss 条同样需要检查玩家是否满足条件,玩家必须满足条件才会看懂 Boss 条。当 Boss 条没有设置条件时,它会无要求的向所有玩家展示。

  1. bossbar:
  2.   bars:
  3.     MyBossbar:
  4.       style: "PROGRESS"
  5.       color: "BLUE"
  6.       progress: "100"
  7.       text: "This bossbar is only visible in world 'world'"
  8.       display-condition: "%world%=world"
复制代码

公告指令

/tab announce bar <name> <time>
name 是 bossbar.yml 文件内的 Boss条名称, time 是显示的时长。


当使用 Boss 条公告时,你将拥有一个新的变量符可以使用: %countdown% 它将显示该公告显示的剩余时间。

额外设置

toggle-command: /bossbar

玩家开关计分板的指令。玩家需要 tab.scoreboard.toggle 权限才能使用它。
注意: 这个指令不会在指令自动补充框中出现,因为它不是一个真正注册的指令。注册的指令必须在插件中就已经决定好,不能动态修改。如果你想要解决这个问题,请自行定制插件。


remember-toggle-choice: false
如果启用,切换计分板的指令偏好将会保存。玩家在重新加入、服务器重启等后依然保留该偏好。


hidden-by-default: false
当启用后,Boss 条默认不显示,只有使用指令才会让其显示。


在指定世界、服务器禁用

  1. bossbar:
  2.   disable-in-worlds:
  3.     - disabledworld
  4.   disable-in-servers:
  5.     - disabledserver
复制代码

要在除了所列的世界外禁用,只需添加 WHITELIST 关键词到列表中,这回导致该功能只会在所列的世界中启用。示例:

  1. bossbar:
  2.   disable-in-worlds:
  3.     - WHITELIST
  4.     - enabledworld
复制代码

注意: 在指定服务器关闭只能在 BungeeCord 上使用,并且还需安装 TAB-Bridge 插件到所有子服上。

在 <1.9 上的限制

  • 如果 TAB 安装在 BungeeCord 上,则 Boss 条不会发送给玩家。
  • 不提供选择颜色和风格功能。
  • 如果进度条在 50% 及以下则会在显示方面有问题。(客户端bug)
  • 同一时间只能显示一行。
  • 如果你不在客户端关闭粒子效果显示,则会有雾效果。(仿佛在打BOSS)
  • 在看着方块的时候可能不会显示。

额外信息

额外信息 1 - 隐藏 Boss 条的条

如果您想要隐藏 Boss条本身而不包括它显示的文本,这是可能的,但不是从插件层面。你需要自己使用资源包来隐藏 Boss条,然后强制你的玩家使用该资源包。




pXiaoD
共用玩家列表

关于

这个功能允许你在一个子服查看整个群组服所有的在线玩家而不是与你在同一个服务器的玩家。
要启用这个功能,你需要将 TAB 安装到 BC 上。这个功能不支持 Bukkit,并且后续也不会增加。


启用

打开 config.yml 并且找到如下部分:

  1. global-playerlist:
  2.   enabled: false
  3.   display-others-as-spectators: false
  4.   display-vanished-players-as-spectators: true
  5.   isolate-unlisted-servers: false
  6.   spy-servers:
  7.     - spyserver1
  8.     - spyserver2
  9.   server-groups:
  10.     lobbies:
  11.       - lobby1
  12.       - lobby2
  13.     group2:
  14.       - server1
  15.       - server2
复制代码

要启用该功能,修改以下设置:

  1. global-playerlist:
  2.   enabled: true
复制代码

配置

通过分组共享玩家列表

在一些情况下,你只想要部分服务器而不是所有服务器都显示共同的玩家列表。这个配置将会给你帮助。默认的示例:

  1. global-playerlist:
  2.   server-groups:
  3.     lobbies:
  4.       - lobby1
  5.       - lobby2
  6.     group2:
  7.       - server1
  8.       - server2
复制代码

这包含 2 个组,每个组包括 2 个服务器。服务器组的名称可以设置成任意值。(例如 "lobby" 或者 "group2")。在每个组的名称下面,列出该组下的服务器名称,服务器名称取决于 BC 的 config.yml 文件的配置。

在这个设置中, "lobby1" 和 "lobby2" 服务器将会共享玩家列表, "server1" 和 "server2" 也是同理。所有未列出的服务器将会自动被分配到一个隐藏的默认组中。这意味着除了上面 4 个服务器的子服再共用玩家列表。

要实现所有子服通用一个玩家列表,可以将此选项设置为:

  1.   server-groups: {}
复制代码

配置隔离服务器

如果你想要设置某个子服隔离(别的服的玩家看不到这个服的玩家列表,这个服的玩家也看不到别的服的玩家列表),只需创建一个单独的组,然后将隔离的服务器放置到这即可:

  1. global-playerlist:
  2.   server-groups:
  3.     test1:
  4.       - isolatedServer1
  5.     test2:
  6.       - isolatedServer2
复制代码

额外设置

display-others-as-spectators: false
如果启用,玩家在不同的服务器将会以旁观者模式玩家显示在 TAB 列表中。


display-vanished-players-as-spectators: true
如果启用,拥有查看隐身玩家权限的玩家(tab.seevanished)将会发现隐身的玩家会以旁观者模式显示(其他玩家则无法看到)。隐身的玩家将不会看到它们被标记为旁观者模式,因为这会导致一些问题。


isolate-unlisted-servers: false
如果启用,没有被分组的服务器将不会显示全体玩家列表(TAB)。


与其他隐身插件兼容

该功能替换了原本的 TAB 列表,它会导致一些与其他隐身插件的兼容问题。要使得这些隐身插件正常工作,你需要在 BC 上使用 PremiumVanish 或者在所有子服安装隐身插件和 TAB-Bridge 插件。



pXiaoD
TAB 的头部和底部

关于

Minecraft 在 1.8 添加了在 TAB 的上方和下方添加文本的功能,这意味着在 1.7 及以下版本该功能不可用。



启用

要启用这个功能,打开 config.yml 并设置

  1. header-footer:
  2.   enabled: true
复制代码

配置

通用设置

下面的是一般常用的配置:

  1. header-footer:
  2.   header:
  3.   - "This is the first line of header"
  4.   - "2nd line of header"
  5.   footer:
  6.   - "This is the first line of footer"
  7.   - "2nd line of footer"
复制代码

这也是每个服主的默认 TAB 显示内容,除非它被其他的插件覆盖了。

各世界、服务器不同头部和底部

  1. header-footer:
  2.   per-world:
  3.     <your world>:
  4.       header:
  5.         - "Header in specified world"
  6.       footer:
  7.         - "Footer in specified world"
  8.   per-server:
  9.     <your server>:
  10.       header:
  11.         - "Header in specified server"
  12.       footer:
  13.         - "Footer in specified server"
复制代码

如果你想要多个服务器、世界共用一个头部和底部,只需在它们之间使用; 符号相隔。
如果你的世界或者服务器拥有相同的前缀,你可以使用 * 代表其剩余的部分
示例:


  1. per-world:
  2.   world1;world2:
  3.     header:
  4.       - "Shared header in worlds world1 and world2"
  5.   lobby-*:
  6.     header:
  7.       - "Header in all worlds starting with lobby-"
复制代码

PS:这代表 lobby-1、lobby-2、lobby-xxx 都会使用。

注意: 要使得各世界不同头部和底部功能在 BC 上使用,你需要在子服上安装 TAB-Bridge 插件。

各玩家、组不同头部和底部

groups.yml

  1. MyGroup:
  2.   header:
  3.     - "This is a header for MyGroup group"
  4.   footer:
  5.     - "This is a footer for MyGroup group"
  6. per-world:
  7.   MyWorld:
  8.     TestGroup:
  9.       header:
  10.         - "Header for group TestGroup in world MyWorld"
复制代码

玩家也组也是一样的,只不过它们在 users.yml

在指定世界、服务器禁用

  1. header-footer:
  2.   disable-in-worlds:
  3.     - disabledworld
  4.   disable-in-servers:
  5.     - disabledserver
复制代码

要在除了所列的世界外禁用,只需添加 WHITELIST 关键词到列表中,这回导致该功能只会在所列的世界中启用。示例:

  1. header-footer:
  2.   disable-in-worlds:
  3.     - WHITELIST
  4.     - enabledworld
复制代码

注意: 在指定服务器关闭仅支持 BungeeCord。在 BC 上市在指定世界关闭需要在所有子服安装 TAB-Bridge 插件。



pXiaoD
本帖最后由 pXiaoD 于 2022-4-1 21:00 编辑

布局

关于

这个功能允许你配置所有 80 个 TAB 列表槽位。目前不支持显示小于 4 列。这个功能目前可以通过 layout.yml 启用或者配置。

创建一个布局

这个功能可以在 layout.yml 文件下的 layouts 部分配置。所有布局包括 3 个设置:  Fixed slots, player groups 和 display condition (可选)。

Display condition(显示条件)

玩家必须满足条件才会显示该布局。如果玩家不满足该布局的所有条件,那么插件会检查是否满足下一个布局的条件。如果玩家不满足所有布局的条件,那么他将会显示默认的 TAB 列表。该设置是可选的,你也可以不设置它。

Fixed slots(修复槽位)

这些是通过修改位置实现的空白玩家槽位,它们可以自定义文本和显示的皮肤。它们可以在各个布局下的 fixed-slots 选项配置。定义的语法是 SLOT|TEXT|SKIN。如果你不想要定义自定义皮肤,请直接使用 SLOT|TEXT
SLOT - 修复槽位所在的位置。它可以是 1 到 80。默认情况下,槽位数是按列增长的,因此第一列即是 0 到 20。
TEXT - 文本内容。支持变量符。
SKIN - 布局的皮肤,具体见下。


玩家组

这些是满足指定条件的玩家组。

显示条件

显示条件是这个组的玩家必须满足的要求。如果一个玩家不能满足这个组的条件,那么下一个组的条件将会被检查(根据配置文件中各个组的顺序)。如果玩家无法满足所有组的条件,那么他将不会在布局中显示。显示条件不是必须的(可以用于默认组)。

槽位

这个组在布局中显示的槽位间隔。间隔 1-5 代表 1 到 5 的所有槽位。如果你想要多个间隔下的槽位,只需要根据格式另起一行即可。
从 41 到 80 间隔的槽位而不包括 61,62 和 63 槽位的示例:


  1.         slots:
  2.           - '41-60'
  3.           - '64-80'
复制代码

通过条件管理多布局

你可以通过为各个布局设置显示条件的方法创建多布局。要想这么做,你需要为各个布局设置 condition 选项。在配置中的各个布局在显示前都会被检查其显示条件。如果一个布局没有设置其条件,它将无条件显示。如果玩家不满足所有布局的条件,那么它将会看到正常的 TAB 列表。

皮肤

玩家所处的槽位可以显示他们的皮肤。如果是修复槽位(即空白玩家槽位),如果它们在配置中被指定了皮肤,该皮肤将会显示,否则将会使用 default-skin 的皮肤。该选项的皮肤也会用于无效皮肤时的玩家槽位。

样式

目前,TAB支持 3 种皮肤样式:
mineskin:ID - 使用来自 MineSkin 的UUID。你可以在下方找到一些已经配置好的皮肤。
player:名称 - 显示该 名称 正版玩家的皮肤。
texture:<材质> - 使用皮肤材质纹理。你可以使用 Minecraft-Heads 中自定义皮肤的 Minecraft-URL 区域所给的值。


额外设置

direction: COLUMNS
槽位统计的方式,可以选择 COLUMNS 和 ROWS。(即按列排和按行排)


  1. enable-remaining-players-text: true
  2. remaining-players-text: "... and %s more"
复制代码

如果启用,各玩家组的最后一个槽位将会显示该组有多少位玩家,而不是之前为其他玩家准备的槽位。

default-skin: "mineskin:1753261242"
给修复槽位和无法检测到皮肤的玩家的默认皮肤。、


一些预置的皮肤:

  1. BTLP's balance.png: 510604280
  2. BTLP's clock.png: 2053951237
  3. BTLP's server.png: 604037953
  4. BTLP's ping.png: 796704708
  5. BTLP's players.png: 1160612233
  6. BTLP's rank.png: 527763880
  7. Aqua: 1749359849
  8. Black: 1551047136
  9. Blue: 1870064311
  10. Dark Aqua: 1893783461
  11. Dark Blue: 899643609
  12. Dark Gray: 383747683
  13. Dark Green: 588254656
  14. Dark Purple: 2061328517
  15. Dark Red: 924139093
  16. Gold: 1074335506
  17. Gray: 745109047
  18. Green: 224445819
  19. Pink: 1818936290
  20. Red: 1160568696
  21. White: 1105851698
  22. Yellow: 1307755006
复制代码

额外信息

为避免在使用指令 Tab 补全时显示虚拟玩家,TAB 使用一个空白的字符作为虚拟玩家的名称。因为 Minecraft 的计分板目标只使用玩家的名称而不是玩家的UUID 来定义值,这样结果是 TAB 无法为每个虚拟位置设置不同的名称值,这使得 黄色颜色 功能无法兼容此功能。如果你希望在拥有此效果同时仍使用黄色颜色,请考虑使用 TAB后缀对齐 功能。


名称标签

启用

要启用该功能,请设置

  1. scoreboard-teams:
  2.   enabled: true
复制代码

config.yml.
请记住,这可以处理记分牌队伍所附带的所有内容,包括排序等。


配置

介绍

名称标签是由一个叫做计分板队伍的原版功能控制的。它提供 6 种属性:

  • Team name(队伍名称) - 用于在 TAB 列表中分类玩家,请在分组 一栏了解更多
  • Prefix(前缀) - 名称标签中显示的前缀,它也被称为 tagprefix
  • Suffix(后缀) - 名称标签中显示的后缀,它也被成为 tagsuffix
  • Nametag visibility rule(名称标签显示规则)
  • Collision rule(碰撞规则)
  • Team color (1.13+)(队伍颜色) - 用于名称标签显示的颜色 (建议查看 如何与其他名称标签颜色插件兼容?)

当启用此功能后,TAB 将会控制以上所有内容,因为无法同时从 2 个队伍(插件)获取上述的值。您可以使用变量符来实现显示其他插件的数值。如果您只是想排列而不需要修改名称标签,请将前缀和后缀的值留空。如果您希望其他插件处理计分板队伍,请配置对应插件的排列。

组和玩家

属性有 2 种对应形式:组和玩家。玩家可以由玩家本身的用户名和他们的 UUID 决定。定义在用户上的值优先级比组高。

groups.yml

  1. admin:
  2.   tagprefix: "&4&lAdmin &r"
复制代码

这也可以通过指令配置,例如: /tab group admin tabprefix "&4&lAdmin &r"

users.yml

  1. _NEZNAMY_:
  2.   tagprefix: "&6&lTAB &r"

  3. # An alternate way using UUID
  4. 237d8b55-3f97-4749-aa60-e9fe97b45062:
  5.   tagprefix: "&6&lTAB &r"
复制代码

这也可以通过指令配置,例如: /tab player _NEZNAMY_ tabprefix "&4&lAdmin &r" 或者 /tab playeruuid _NEZNAMY_ tabprefix "&4&lAdmin &r"

你也可以为这些属性指定一个默认值,这样的话,所有玩家默认都将拥有对应属性所设置的默认值,你只需使用 _DEFAULT_ 关键词即可。
groups.yml


  1. admin:
  2.   tagprefix: "&4&lAdmin &r"
  3. _DEFAULT_:
  4.   tagprefix: "&7" # This will be displayed on everyone except admin
复制代码

各世界、服务器

值可以根据各世界(BC上的各服务器)不同,并且还可根据各用户/组不同情况定义。这些值的优先级超过全服设置。例如:
groups.yml


  1. per-world:
  2.   world1:
  3.     _DEFAULT_:
  4.       tagprefix: "&a" # Everyone in world "world1" will have this prefix
  5. per-server:
  6.   server1:
  7.     _DEFAULT_:
  8.       tagprefix: "&a" # Everyone in server "server1" will have this prefix
复制代码

如果你希望多个服务器或者世界共用,请使用; 符号公开。如果你的服务器或者世界开头拥有相同的文本,你可以使用 * 代表后面的部分。例如:
  1. per-world:
  2.   world1;world2:
  3.     _DEFAULT_:
  4.       tagsuffix: "Shared tabsuffix in worlds world1 and world2"
  5.   lobby-*:
  6.     _DEFAULT_:
  7.       tagsuffix: "Suffix in all worlds starting with lobby-"
复制代码

优先级系统

完整的优先级机制应当如下:

  • 各世界、服务器所应用到玩家的值
  • 各世界、服务器所应用到组的值
  • 直接应用到玩家的值
  • 直接应用到组的值
  • 各世界、服务器所应用到玩家组的值
  • 各世界、服务器所应用到全服组 _DEFAULT_
  • 直接应用到玩家组的值
  • 直接应用到全服组的值 _DEFAULT_

这个列表将会从上到下被查找,直到找到满足的项。如果没有项满足,将会使用空值。
各个值是互相独立的。这意味着你可以设置各世界的 tagprefix(名称前缀),但全服统一 tagsuffix(名称后缀)。


Placeholder 支持

所有的值完美支持 TAB 的内部变量符和 PlaceholderAPI 的变量符。变量符的数量是无限制的并且支持各种显示输出值类型。

额外设置

enable-collision: true
控制碰撞规则。禁用它以取消碰撞。


invisible-nametags: false
禁用后,所有玩家将同时拥有一个隐形的名称标签。


anti-override: true
启用后,可防止其他插件将在线玩家分配到队伍中并使 TAB 无法正常工作。它们应该配置为不使用队伍,但是许多用户未能禁用他们不想要的其他插件中的功能,因此需要此选项。有些插件甚至没有说他们使用队伍来实现他们的功能。 你知道甚至 Paper 也使用队伍吗?


在指定世界、服务器禁用

  1. scoreboard-teams:
  2.   disable-in-worlds:
  3.     - disabledworld
  4.   disable-in-servers:
  5.     - disabledserver
复制代码

要在除了所列的世界外禁用,只需添加 WHITELIST 关键词到列表中,这回导致该功能只会在所列的世界中启用。示例:

  1. scoreboard-teams:
  2.   disable-in-worlds:
  3.     - WHITELIST
  4.     - enabledworld
复制代码

注意: 在指定服务器关闭只能在 BungeeCord 上使用,并且还需安装 TAB-Bridge 插件到所有子服上。

提示

绕过你希望 TAB 通过权限组插件获得玩家的前缀和后缀,请删除 grous.yml 文件下的所有组并设置成:

  1. _DEFAULT_:
  2.   tagprefix: "%vault-prefix%"
  3.   tagsuffix: "%vault-suffix%"
复制代码

这使用 Vault 挂钩使用权限组插件的前缀和后缀。如果你使用 LuckPerms,你可以分别使用 %luckperms-prefix%%luckperms-suffix% 来代替 Vault 的对应变量符。

限制

  • 在 <1.13 版本前缀/后缀的长度限制在 16 个字符(包括颜色代码)。
  • 玩家名称无法真正修改,插件也不提供这个功能。
  • 自 1.13 版本开始名称只能有一个颜色代码。这包括颜色代码和格式化代码。 (例如 &4 或者 &l),所以不能两个同时使用。
  • 名称不支持 RGB 代码。

绕过 (不支持 BC): 启用 无限制名称标签模式

额外信息

额外信息 1 - TAB 列表的名称标签样式

TAB 列表名称样式 功能禁用后,将会在 TAB 显示名称标签的前缀和后缀。这是一个 MC 原版机制。如果你不想要在 TAB 显示任何前缀,只需继续保持启用该功能,并不设置任何前缀。禁用此功能一般只在想让其他插件使用此功能时有用。

额外信息 2 - NPC 兼容性

队伍和玩家名称绑定,而不是 UUID 或者 实体 ID。因为这样,它们将影响所有拥有名称的玩家实体,这也包括和正版玩家拥有相同名称的 NPC。要避免此问题,请不要把 NPC 设置和在线玩家一样的名称,或者使用浮空字替代显示。、

额外信息 3 - 宠物上的前缀和后缀。

自从 1.9 版本开始,队伍也将影响到合作的动物。如果你想避免这个情况,请使用 宠物名称修复 功能。

额外信息 4 - 修改名称本身

队伍不会修改名称标签它自身。修改名称本身是一个复杂的过程,稍微超出了插件可能实现的范围,这就是昵称插件存在的意义,因为修改名称将要修改大量发包,并且还要考虑各个版本不同的机制,这听起来不会很有趣。但我们可以通过隐藏名称标签而用一个隐形的盔甲架来代替名称标签的显示,这样我们就可以避免这个限制,如果你对此感兴趣,请查看 无限制名称标签模式

额外信息 5 - F1 查看

使用队伍导致玩家的名称标签在 F1 下依然可见。这不是插件方面可以解决的问题,可能的解决办法是修改你的游戏客户端。




pXiaoD
排列

启用

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

  1. scoreboard-teams:
  2.   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 下。也就是说应该像这样:


  1. scoreboard-teams:
  2.   sorting-types:
  3.     - "GROUPS:owner,admin,mod,default"
复制代码

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

  1. scoreboard-teams:
  2.   sorting-types:
  3.     - "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 下。也就是说应该像这样:


  1. scoreboard-teams:
  2.   sorting-types:
  3.     - "PERMISSIONS:my.permission.1,my.permission.2,my.permission.3,my.permission.4"
复制代码

使用变量符排列 - 预设值

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

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


  1. scoreboard-teams:
  2.   sorting-types:
  3.     - "PLACEHOLDER:%afk%:yes,no"
复制代码

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

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

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


  1. scoreboard-teams:
  2.   sorting-types:
  3.     - "PLACEHOLDER_A_TO_Z:%displayname%"
复制代码

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

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


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


  1. scoreboard-teams:
  2.   sorting-types:
  3.     - "PLACEHOLDER_Z_TO_A:%displayname%"
复制代码

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

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


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


  1. scoreboard-teams:
  2.   sorting-types:
  3.     - "PLACEHOLDER_HIGH_TO_LOW:%health%"
复制代码

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

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


  1. scoreboard-teams:
  2.   sorting-types:
  3.     - "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 版本有关。


pXiaoD
各世界玩家列表

关于

要使用此功能,你需要安装 TAB 到 Bukkit服务器。该功能无法在 BC 上使用。

启用

打开 config.yml 并找到这一部分:

  1. per-world-playerlist:
  2.   enabled: false
  3.   allow-bypass-permission: false
  4.   ignore-effect-in-worlds:
  5.     - ignoredworld
  6.     - build
  7.   shared-playerlist-world-groups:
  8.     lobby:
  9.       - lobby1
  10.       - lobby2
  11.     minigames:
  12.       - paintball
  13.       - bedwars
复制代码

要启用该功能,设置:

  1. per-world-playerlist:
  2.   enabled: true
复制代码

配置

按分组显示多世界的玩家

如果您想要多个世界共用一个玩家列表,在开启该功能后并设置组。示例:

  1. per-world-playerlist:
  2.   shared-playerlist-world-groups:
  3.     lobby:
  4.       - lobby1
  5.       - lobby2
  6.     minigames:
  7.       - paintball
  8.       - bedwars
复制代码

包含 2 个组,每个组包含 2 个世界。世界组的名称可以是任何字符。世界组的下面列出该组包含的真实世界名称。

在这个示例中,"lobby1" 和 "lobby2" 将共用一个玩家列表, "paintball" 和 "bedwars" 也是这样。其他的所有世界将会再共用一个玩家列表。只创建 1 个组而该组又只有 1 个世界是没用的。

指定世界的玩家仍被全服玩家看到

如果尽管启用了此功能,但您希望玩家看到服务器上来自特定世界的每个人,您可以在以下位置列出这些世界:

  1. per-world-playerlist:
  2.   ignore-effect-in-worlds:
  3.     - ignoredworld
  4.     - build
复制代码

现在,在 "ignoredworld" 和 "build" 世界的玩家会正常被所有玩家看到。

高级设置

allow-bypass-permission: false
如果启用,拥有 tab.bypass 权限的玩家会正常看到所有玩家而不是一个世界的玩家。

pXiaoD
本帖最后由 pXiaoD 于 2022-3-31 18:01 编辑

宠物名称修复

关于

从 Minecraft 1.9 开始,Mojang 引入了一项功能,驯服的宠物的名称标签将复制其所有者的名称标签属性。 这包括前缀、后缀和名标签可见性规则。因此,1.9+ 服务器上的 1.9+ 客户端也会在他们的宠物上看到玩家的前缀。而当启用无限制名称标签模式时,它们将完全不可见,因为它将名称标签设置为不可见。启用此功能将使被驯服的动物不再从其所有者那里复制名称标签属性。


启用

要启用该功能,打开 config.yml 并设置

  1. fix-pet-names:
  2. enabled: true
复制代码

如果你在 BC 上安装 TAB,你需要在所有的子服安装 TAB-Bridge

附加信息

在开启该功能并 /tab reload 后,玩家需要重新进入服务器才会看到变化。立即更新实体是一件非常麻烦的事情,不值得我们花大力去做。


pXiaoD
Ping 伪装

关于

默认情况下,服务器将会把玩家的延迟显示给所有玩家,你可以通过 TAB 列表的绿色条查看。一些修改过的客户端可以直接显示延迟数而不是绿色条。这个功能伪装所有玩家的延迟为配置的值,隐藏它们真实的值。我不知道为什么有人需要,但是有人想要,我就做了。

配置

config.yml 找到如下部分:

  1. ping-spoof:
  2.   enabled: false
  3.   value: 0
复制代码

要启用该功能,设置 enabled 为 true。
当该功能启用后,所有玩家的延迟将会被伪装成 value 所设置的值。


客户端的 Ping 显示的绿色条规则如下:

  • 负值: ✖
  • 0 - 149: 5 条
  • 150 - 299: 4 条
  • 300 - 599: 3 条
  • 600 - 999: 2 条
  • 1000+: 1 条


pXiaoD
计分板

关于

SIDEBAR(侧边栏) 显示。

启用

打开 config.yml 并找到这一部分

  1. scoreboard:
  2.   enabled: false
  3.   toggle-command: /sb
  4.   remember-toggle-choice: false
  5.   hidden-by-default: false
  6.   use-numbers: false
  7.   static-number: 0
  8.   delay-on-join-milliseconds: 0
  9.   respect-other-plugins: true
  10.   disable-in-worlds:
  11.     - disabledworld
复制代码

要启用该功能,请设置

  1. scoreboard:
  2.   enabled: true
复制代码

创建一个计分板

计分板可以在配置文件的 scoreboards 部分设置。你可以创建无限多的计分板。每个计分板可以有一个条件要求,玩家必须满足条件要求才能看到计分板。如果没有满足,下一个配置的计分板将会被继续检查,以此类推。如果最后一个计分板玩家仍不满足条件,那么玩家将不会看到计分板。

每个计分板可以由 3 个部分组成。:

title

计分板的标题。

lines

最大 15 行文本。你也可以配置更多,但是客户端不会显示。

注意: 空白行将会被隐藏。如果你想要计分板的一行不显示任何内容,请使用 " "

display-condition

一个要显示该计分板必须满足的条件。如果玩家没有满足,将会检查下一个计分板。

规则

在配置超过 1 个计分板后,插件将会根据条件要求为玩家显示计分板。每个计分板的条件要求将会配置的从上到下依次检查,直到玩家能够满足的第一个计分板。总而言之,插件将会直接跳过玩家不满足的计分板,直到第一个满足的计分板。如果没有计分板满足,那么没有计分板会被显示。

公告指令

公告的计分板将会覆盖原来的计分板,当公告结束后,原来的计分板将会恢复。
/tab announce scoreboard <name> <time>
name - 公告计分板的名称。
time - 公告计分板显示的时间,以秒为单位。


附加设置

开关计分板

toggle-command: /sb
玩家开关计分板的指令。玩家需要 tab.scoreboard.toggle 权限才能使用它。
注意: 这个指令不会在指令自动补充框中出现,因为它不是一个真正注册的指令。注册的指令必须在插件中就已经决定好,不能动态修改。如果你想要解决这个问题,请自行定制插件。


remember-toggle-choice: false
如果启用,切换计分板的指令偏好将会保存。玩家在重新加入、服务器重启等后依然保留该偏好。


hidden-by-default: false
如果启用,记分牌将在加入时自动隐藏,直到使用切换命令显示它。


数字

use-numbers: false
如果启用,将会在计分板左侧显示 1-15 数字,如果禁用,将会显示 static-number 的数字。


static-number: 0
如果 use-numbers 禁用,所有行都会显示该数字。


其他

delay-on-join-milliseconds: 0
在玩家加入服务器多久后显示计分板,以毫秒为单位。


respect-other-plugins: true
如果启用,其他插件如果发送计分板,TAB会自动隐藏自己的计分板,这样其他插件的计分板就可以正常显示了。


在指定世界、服务器禁用

  1. scoreboard:
  2.   disable-in-worlds:
  3.     - disabledworld
  4.   disable-in-servers:
  5.     - disabledserver
复制代码

要在除了所列的世界外禁用,只需添加 WHITELIST 关键词到列表中,这回导致该功能只会在所列的世界中启用。示例:

  1. scoreboard:
  2.   disable-in-worlds:
  3.     - WHITELIST
  4.     - enabledworld
复制代码

注意: 在指定服务器关闭只能在 BungeeCord 上使用,并且还需安装 TAB-Bridge 插件到所有子服上。

限制

  • 在 1.13 以下版本,计分板的标题限制在 32 个字符以内(包括颜色代码)。
  • 在 1.13 以下版本,计分板每行限制在 26 个字符以内(包括颜色代码)。
  • 最多只能显示 15 行。
  • 计分板右侧的红色数字在插件层面无法删除,你需要额外安装 Mod。(PS: 资源包也可以)

示例

示例 1 - 分世界计分板

我们将会根据 "等于号" (=) 的条件判别来检查 %world% 变量符。如果条件符合(即世界为你设置的世界),在指定世界的计分板将会显示给玩家。如果没有,那么会继续检查下一个计分板。如果没有计分板符合要求,那么将会显示 default(默认)计分板。

  1. scoreboard:
  2.   scoreboards:
  3.     # start
  4.     scoreboard1:
  5.       display-condition: "%world%=world1"
  6.       title: 'Scoreboard 1'
  7.       lines:
  8.       - 'You are in world world1'
  9.     # first condition didn't pass, try next
  10.     scoreboard2:
  11.       display-condition: "%world%=world2"
  12.       title: 'Scoreboard 2'
  13.       lines:
  14.       - 'You are in world world2'
  15.     # first two conditions didn't pass, try next
  16.     scoreboard3:
  17.       display-condition: "%world%=world3"
  18.       title: 'Scoreboard 3'
  19.       lines:
  20.       - 'You are in world world3'
  21.     # none of the conditions above passed, display default scoreboard
  22.     default:
  23.       title: 'Default scoreboard'
  24.       lines:
  25.       - 'You are not in any of the worlds listed above'
复制代码

pXiaoD
旁观者修复

关于

旁观者模式在 1.8 版本被加入,在该模式的玩家会自动出现在 TAB 列表的底部,名称透明并且无法拥有 黄色数字。这个功能从数据包(packet)层面取消模式改变数据包,这样该机制也就不会出现了。

启用

要启用该功能,请打开 config.yml 并设置

  1. prevent-spectator-effect:
  2.   enabled: true
复制代码

配置

allow-spectator-bypass-permission: false
启用后,拥有 tab.spectatorbypass 权限的玩家仍会以正常旁观者模式玩家出现在 TAB 列表。



pXiaoD
TAB 列表排序

启用

要启用该功能,请设置

  1. tablist-name-formatting:
  2.   enabled: true
复制代码

config.yml。将 enabled 设置为 false 将会禁用该功能。

配置

介绍

玩家在 TAB 显示名称由以下部分组成:
tabprefix - 位于显示名称的前面,一般是玩家名称的前缀。
customtabname - 显示名称的中间部分,它一般用于显示你在配置文件设置的自定义的名称。如果我们无法检查到 customtabname 的值,将会显示玩家的真实名称。
tabsuffix -位于显示名称的后面,一般是玩家名称的后缀。


组和玩家
待翻译内容
附加信息

如果你禁用了该功能,TAB 列表将会显示名称标签的前缀和后缀。这是 MC 原版的机制。如果你不想要在 TAB 列表显示前缀和后缀,请开启该功能,但保持前缀和后缀空白即可。关闭此功能只在你需要其他插件管理该功能时有用。


pXiaoD
黄色数字

关于


在 PLAYER_LIST(玩家列表) 显示计分板目标选择的值。它提供 2 种显示模式:


  • 黄色数字
  • 爱心

启用

打开 config.yml 并设置:

  1. yellow-number-in-tablist:
  2.   enabled: true
复制代码

将 enabled 修改为 false 即禁用该功能。

配置

value 决定显示的值。
你可以在这里使用任意一个输出数字的变量符。如果你设置为 %health%, %player_health% or %player_health_rounded% 将会让输出图中样式的爱心血量。



如果你想要显示数字而不是爱心,将 vault 设置为 0%health% 这样的即可。


在指定世界、服务器禁用

  1. yellow-number-in-tablist:
  2.   disable-in-worlds:
  3.     - disabledworld
  4.   disable-in-servers:
  5.     - disabledserver
复制代码

要在除了所列的世界外禁用,只需添加 WHITELIST 关键词到列表中,这回导致该功能只会在所列的世界中启用。示例:

  1. yellow-number-in-tablist:
  2.   disable-in-worlds:
  3.     - WHITELIST
  4.     - enabledworld
复制代码

注意: 在指定服务器关闭仅支持 BungeeCord。在 BC 上市在指定世界关闭需要在所有子服安装 TAB-Bridge 插件。

附加事项

注意 1: 该功能不会对旁观者模式的隐身玩家有效。要解决此问题,请查看 旁观者修复 功能。

限制

只支持 2 种显示模式 - 数字和爱心。并且数字的颜色只能的黄色并且不能修改。
要想绕过这一限制,请尝试使用 TAB 后缀对齐 功能。



2571724511
不常用但非常实用的

2571724511
6666666怎么收藏帖子

pXiaoD
无限制名称标签模式

关于

Minecraft 的名称标签拥有大量限制,这可以在 限制 页面查看。这个功能隐藏玩家本身的名称标签,而在名称标签原本的地方放置一个隐身的盔甲架,这样在拥有同样的效果同时即可解除 Minecraft 原版的大量限制。同时每当玩家移动时,盔甲架就也会同时跟着移动,这使得玩家几乎感觉不出这带来的变化。它们基于发包(这意味着这不是基于服务端方面)并且异步处理(不会影响你的服务器的 TPS)。

启用

打开 config.yml 并找到这一部分

  1. scoreboard-teams:
  2.   unlimited-nametag-mode:
  3.     enabled: false
  4.     use-marker-tag-for-1-8-x-clients: false
  5.     disable-on-boats: true
  6.     space-between-lines: 0.22
  7.     disable-in-worlds:
  8.       - disabledworld
  9.     dynamic-lines:
  10.       - abovename
  11.       - nametag
  12.       - belowname
  13.       - another
  14.     static-lines:
  15.       myCustomLine: 0.66
复制代码

要启用该功能,设置:

  1.   unlimited-nametag-mode:
  2.     enabled: true
复制代码

要使得该功能正常工作,您还必须保持打开原版的名称标签功能,请设置:

  1. scoreboard-teams:
  2.   enabled: true
复制代码

如果你在 BC 上安装的 TAB,您需要在所有子服安装 TAB-Bridge 才能使得该功能工作。

配置

默认情况下,只有一行文本被显示,即重复了原版名称标签的内容。(由 tagprefix + customtagname + tagsuffix 组成)

如果你希望所有玩家的名称标签都一样而不是根据组决定不同,你只需使用名称为 _DEFAULT_ 关键词的组即可,例如:
groups.yml


  1. _DEFAULT_:
  2.   abovename: "%group%"
  3.   belowname: "&cHealth: %health%"
复制代码



动态行(dynamic-lines)

动态行的各个行的高度(PS:即隐形盔甲架的高度)根据它所在的行决定。最开始的高度为 0,每增加一行即增加 0.22 格高度。如果您要增加新的一行,只需将其代表的名称添加到您想要的名称标签中的列表中,它将自动调整高度来实现另起一行的效果。
注意: nametag 关键词表示原版的名称标签内容 - 由 tagprefix + customtagname + tagsuffix 组成。


静态行(static-lines)

修改过高度的行。越高的值代表越高的高度。0 即第一行的高度,1 即 1 格方块的高度。支持小数点。如果您要增加新的一行,需要指定其自定义的间隔高度。

换行

您可以在配置中使用像 tagprefix,tagsuffix和其他属性 这样的行。例如: groups.yml

  1. test:
  2.   belowname: "这本身名称标签下方的内容"
  3.   another: "这是在名称标签下方的下方的内容"
  4.   myCustomLine: "这是拥有自定义行间隔的新的一行"
复制代码

额外设置

use-marker-tag-for-1-8-x-clients: false
利用 1.8.1 中引入的一项功能,允许盔甲架的碰撞箱为零,从而降低了击中盔甲架而不是玩家的风险。但问题是所有 1.8.x 版本都具有相同的协议版本,因此无法知道玩家是否使用 1.8.0。此功能在 1.9+ 客户端自动开启,1.9+ 客户端不会受到该选项影响。


启用此功能后,1.8.0 玩家显示的盔甲架比预期的高 2 格,这意味着它们看到的名称标签也对应提高。

禁用此功能后,如果盔甲架被击中,那么该击中将重定向到盔甲架所有者,这应该是不可能注意到的,但注重 PvP 玩法的服务器可能会注意此变化。

disable-on-boats: true
由于内部的玩家位置更新问题,玩家所显示的位置和服务端层面实际的位置并不匹配,这导致玩家在坐船时盔甲架显示的位置可能和实际位置不匹配。启用该选项将会在玩家坐船时关闭隐藏盔甲架以解决该问题。


space-between-lines: 0.22
每行之间的间隔。这个值是最佳的,你基本上不需要修改。


额外信息

#1 该功能会使得原版的名称标签隐形,这样我们才能使用隐形的盔甲架来替换它。这也会导致你的原版的 名称标签下方 同样会隐形,无法正常显示。要使得名称标签下方的内容能再次显示,请在开启无限制名称标签模式后通过属性指令再次添加。例如:/tab group _OTHER_ belowname %health% Health

#2 由于每个玩家的隐形盔甲架都在你头顶生成,使用非官方 MC 的 Mod 将有可能导致你无法查看自己的隐形盔甲架,就像 F5 看原版名称标签那样。如果你想看到它们,请使用指令 /tab nametag preview (这是一个开关指令)。

pXiaoD
动画

创建一个动画

动画可以在 animations.yml 文件中被创建。
最开始,你需要复制其中已有的动画或者修改已有的动画。
让我们直接看它作为示例:


  1. Welcome:  #this is name of the animation
  2.   change-interval: 400  #this is refresh interval of the animation in milliseconds
  3.   texts:  #the frames of animation
  4.     - "&7&lW_"  
  5.     - "&7&lW_"  
  6.     - "&7&lWe_"  
  7.     - "&7&lWel_"  
  8.     - "&7&lWelc_"  
  9.     - "&7&lWelco_"  
  10.     - "&7&lWelcom_"  
  11.     - "&7&lWelcome_"  
  12.     - "&7&lWelcome_"  
  13.     - "&7&lWelcome_"  
  14.     - "&7&lWelcome_"  
  15.     - "&7&lWelcom_"  
  16.     - "&7&lWelco_"  
  17.     - "&7&lWelc_"  
  18.     - "&7&lWel_"  
  19.     - "&7&lWe_"  
  20.     - "&7&lW_"  
  21.     - "&7&lW_"
复制代码

这是一个名为 Welcomechange-interval (切换频率)为 400 毫秒的动画,也就是说每秒刷新 2.5 次。 Texts 则是动画实际显示的文本。

使用一个动画

要使用一个动画,你需要使用 %animation:<名称>% 格式,例如上面的示例就是 %animation:Welcome%。动画可以在 TAB 中的任何地方使用。

提示

  • 动画不需要太快。你可以将它们用于切换文本的工具。仔细查看默认的 "ping-tps" 动画,它只每 5 秒刷新一次。在 Boss 条使用动画也是很不错的注意。
  • 从短文本逐渐变成长文本是很不错的动画效果。上面的示例就是这样。

额外工具

如果你觉得自己手动制作动画太累了,不如试试下面的几个网站:
https://rgb.birdflop.com/
https://www.simplymc.art/AnimTAB/
https://starve-l.github.io/tab-animation.html

pXiaoD
条件变量符

关于

条件/条件变量符允许您通过其他变量符或者权限作为条件来自定义输出。在本插件中主要有 2 个主要用处:

  • 显示条件用于显示计分板、Boss条、排布等的必须满足的条件。
  • 条件变量符则为判别是否满足条件并控制满足和不满足的输出值。

条件类型

比较数字

>=: 大于等于
例如: %ping%>=100 将会在玩家的延迟大于或者等于 100 时满足条件。


>: 大于
例如: %ping%>100 将会在玩家的延迟大于 100 时满足条件。


<=: 小于等于
例如: %ping%<=100 将会在玩家的延迟小于或者等于 100 时满足条件。


<: 小于
例如: %ping%<100 将会在玩家延迟小于 100 时满足条件。


文本

=: 等于 (必须完全精确,包括颜色符号)
例如: %world%=world 将会在玩家在 world 世界时满足。


!=: 不等于 (不符合)
例如: %world%!=world 将会在玩家在除了 world 外的世界时满足。


<-: 包含 (左侧为变量符,右侧为包含的文本)
例如: %world%<-lobby- 将会在名称开头为 lobby- (例如 lobby-1 等) 的世界时满足。


权限

permission:<值>: 权限要求
例如: permission:my.permission 将会在玩家拥有my.permission 权限时满足。


多条件要求

每个条件都可以有一个条件 范围 ,即一个条件列表。当你拥有超过 1 个条件时,你必须设置它们的条件类型。
这个值可以在 type 配置设置。可选的类型有:


  • AND - 所有的条件都必须满足。
  • OR - 只要有一个条件满足即可。

条件输出

如果你使用条件作为变量符使用,你可以指定它们的输出值。 yes 用于条件满足时的输出,no 则为不满足。如果这个条件只是一个显示条件,你可以将这两个选项的值留空或者不设置这两个选项。

配置

打开 config.yml 并找到这一部分:

  1. conditions:
  2.   health:
  3.     conditions:
  4.     - '%health%<21'
  5.     - '%health%>15'
  6.     type: AND
  7.     yes: Healthy!
  8.     no: Damaged!
复制代码

health 为这个条件的名称。
conditions 为该条件要满足的子条件。
type 为条件类型,决定是所有子条件都要满足还是只需一个满足。
yes & no 为变量符输出值。


用法

你有 2 种方法来使用条件。

一种方法是使用 %condition:<名称>%,它将输出根据是否满足该条件而输出该条件的 yes 或者 no 的值。

另一种方法是将该条件的名称放置在可以放置条件的地方。这包括 Boss条,计分板和布局的显示条件配置,例如:

  1. scoreboards:
  2.   MyScoreboard:
  3.     display-condition: MyCondition
复制代码

在这种情况下,yes/no 的配置也未被使用,因此你也不需要配置它们。

简写形式

如果你正在尝试可以放置条件的地方使用条件(Boss条,计分板等的显示条件等),你可以使用一个简写形式。

简写形式可以通过在各个条件的中间处使用 ; 分开以代表 AND 条件类型(即所有条件必须满足)。 OR 条件类型目前不支持。

示例:

使用前:

  1. scoreboards:
  2.   myScoreboard:
  3.     display-condition: myCondition
  4. .
  5. .
  6. .
  7. conditions:
  8.   myCondition:
  9.     conditions:
  10.       - "%my_placeholder%=something"
  11.       - "%money%>1000"
  12.     type: AND
复制代码

使用后:

  1. scoreboards:
  2.   myScoreboard:
  3.     display-condition: "%my_placeholder%=something;%player_ping%>1000"
复制代码

刷新间隔

条件实际上只是一个变量符,同样它们也必须定期刷新。刷新间隔目前还不可以直接配置。它们基于子条件、yes/no 值等处包含的变量符决定它自身的刷新间隔。权限检查间隔为 1000 毫秒。
如果该条件只包含基于事件的变量符(即该变量符只在一个事件后才会刷新而不是定时刷新,例如 %world% 和 %server%),刷新间隔为 500 毫秒。
要配置变量符的刷新间隔,请查看 优化插件 页面。


提示

如果你正在被 = 条件判别困扰,请务必注意变量符的输出值和你设置的值必须完全一致(包括颜色代码)。如果你在使用 变量符输出替换,那么你应该设置被替换后的输出值。
要查看一个变量符的精确输出(包括颜色代码),请使用指令: /tab parse <玩家> <变量符>

pXiaoD
MySQL

关于

默认情况下,组和玩家是储存在不同的文件下。(groups.yml 和 users.yml)

启用 MySQL 将会使用它来储存组和玩家的数据而不是储存在本地的文件里。

playerdata.yml 文件 (用来储存玩家开关计分板、boss条并记录他们偏好的文件 ) 将不会受到影响,或许在后续版本我们会提供支持。

配置

config.yml 找到如下部分:

  1. mysql:
  2.   enabled: false
  3.   host: 127.0.0.1
  4.   port: 3306
  5.   database: tab
  6.   username: user
  7.   password: password
复制代码

enabled 将决定插件是否使用 MySQL 储存,其他选项则是修改 MySQL 数据包信息的。

数据转换

将数据从 MySQL 下载到本地文件

这可以通过使用指令 /tab mysql download 实现 (权限是 tab.mysql.download)。它将会从所连接的 MySQL 下载数据并保存到 users.yml 和 groups.yml 文件。
这个指令只会在你使用 MySQL 储存数据时才会有效。


将数据上传到 MySQL

这可以通过使用指令 /tab mysql upload 实现 (权限是 tab.mysql.upload)。 它将会将本地 users.yml 和 groups.yml 文件的数据上传到所连接的 MySQL。
这个指令只会在你使用 MySQL 储存数据时才会有效。

pXiaoD
变量符输出替换

关于

大部分变量符无法自定义它的输出内容,这使得你无法让它们显示你希望它们显示的样子。例如你需要显示玩家是否在挂机或者隐形,可这些插件的变量符只会显示 "yes" 或者 "no" 而不是一些炫酷的文本。这些插件本应该提供自定义的功能,但是它们没有,所以 TAB 为你提供这个功能。

配置

打开 config.yml 并找到如下部分:

  1. placeholder-output-replacements:
  2.   <placeholder>:
  3.     <original output>: <new output>
复制代码

支持的替换模式

模式 1: 准确文本

让一个变量符的输出内容准确的满足左侧内容,那么它将会被替换为右侧的内容。
示例:


  1. placeholder-output-replacements:
  2.   "%tps%":
  3.     "20": "Running at perfect 20 TPS!"
  4.   "%essentials_vanished%":
  5.     "yes": " &7[V]"
  6.     "no": ""
复制代码

注意 1: 如果你希望替换后不显示文本,在左侧填写 "" 或者 '' 即可。

注意 2: 内容必须十分精确,包括颜色代码。要检查该变量符包含的颜色代码,你可以使用命令  /tab parse <player> <placeholder> 并查看 "无颜色"。

模式 2: 数字间隔

如果一个变量符输出的内容在一个间隔内,那么它将会被替换。
示例:


  1. placeholder-output-replacements:
  2.   "%tps%": #服务器TPS
  3.     "15-20": "还可以"
  4.     "5-15": "有的糟"
  5.     "0-5": "糟糕"
复制代码

注意: 如果一个数字包含在超过 1 个间隔中(就像上面的 5 和 15)。间隔上限大的将会被使用。这样的话,15 将会显示 还可以 并且 5 将会显示 有的糟

模式 3: else(或者)

如果变量符输出的结果不满足所设置的所有预定值(即右侧内容),并且 "else" 模式也被设置,那么替换的内容将会使用 "else" 所设置的内容。
示例:


  1. placeholder-output-replacements:
  2.   "%tps%":
  3.     "20": "非常完美的 20 TPS!"
  4.     "15-20": "还可以"
  5.     "5-15": "有点糟"
  6.     "else": "太糟糕了" #这种情况下else就是0-5 ,因为TPS只能是0-20
复制代码

替换值中支持的内容

你可以使用其他变量符作为替换后的内容,但你不能使用与替换前相同的变量符,因为这只会导致死循环。
要避免这个问题,你可以使用 %value% 来显示该变量符本来将会显示的内容。
示例


  1. placeholder-output-replacements:
  2.   "%tps%":
  3.     "20": "Running at perfect 20 TPS!"
  4.     "15-20": "%value% (Solid)"
  5.     "5-15": "%value% (Bad)"
  6.     "else": "%value% (Terrible)"
复制代码

在这个示例中,如果 TPS 达到 17.5,那么替换后的实际输出值是 17.5 (Solid)

在其他插件使用

这些替换将只在 TAB 内部使用,其他插件不会被替换。
如果你希望在其他插件使用这些替换变量符,你只需要 TAB 插件的变量符拓展(将会自动安装),并使用 %tab_replace_<变量符>%。例如你想要 TAB 替换后的 %player_health% 变量符,只需使用 %tab_replace_player_health% 变量符即可显示。


这只支持 PlaceholderAPI 的变量符,并且不能是 TAB 的内部变量符。要使用 TAB 的内部变量符,请使用 %tab_placeholder_<变量符>, 例如 %health% 使用 %tab_placeholder_health%

附加信息

附加注意 1

如果你使用的变量符包含 . (例如检查玩家是否有某个权限节点),以前的格式将不起作用。这是因为 . 符号被用于间隔配置文件之间选项的路径。要使得这种变量符正常工作,只需在每个带有 . 的地方拆分。示例:使用 %player_has_permission_test.permission% 权限节点

  1. placeholder-output-replacements:
  2.   "%player_has_permission_test":
  3.     "permission%":
  4.       yes: "Permission present"
  5.       no: "No permission"
复制代码

提示

如果你在 BC 服安装了 TAB 并且不希望在变量符尚未加载好之前显示它本来的样子,你可以使用这个功能来实现没加载好之前的内容自动被替换。示例:

  1. placeholder-output-replacements:
  2.   "%my_placeholder%":
  3.     "%my_placeholder%": "" # 当变量符尚未加载好时,它就是空的,而不是以前的显示变量符本来的样子
复制代码


pXiaoD
本帖最后由 pXiaoD 于 2022-4-1 14:49 编辑

变量符

关于

TAB 内部提供多个变量符以显示一些常用的信息。它也支持 PlaceholderAPI的变量符。

内部变量符

内部变量符是由 TAB 插件本身提供的。大部分的它们是由于有的人不愿再安装插件来显示它们需要的变量。其中一些已经在 config.yml 的 Placeholders 部分写出。没有使用的变量符不会以任何形式占用你的服务器的资源。

通用

  1. %online%         - 除隐身玩家外的服务器总在线人数
  2. %world%          - 玩家所在的世界的名称
  3. %worldonline%    - 玩家当前世界的玩家名称,要求启用 per-world-playerlist
  4. %ping%           - 服务器的 ping (由服务器测量)
  5. %player%         - 玩家的真实名称,通过 .getName() 得到的,不会受到其他插件的修改而影响
  6. %time%           - 真实时间,格式可以在 config.yml 修改
  7. %date%           - 真实日期,格式可以在 config.yml 修改
  8. %staffonline%    - 拥有 tab.staff 权限的在线玩家数
  9. %nonstaffonline% - 没有 tab.staff 权限的在线玩家数 ( online - staffonline )
  10. %memory-used%    - 已使用的服务器内存,以 MB 为单位
  11. %memory-max%     - 总的服务器内存,以 MB 为单位
  12. %memory-used-gb% - 已使用的服务器内存,以 GB 为单位
  13. %memory-max-gb%  - 总的服务器内存,以 GB 为单位
  14. %player-version% - 玩家的客户端版本号,例如 "1.14.4"
  15. %player-version-id% - 玩家的客户端协议号
  16. %luckperms-prefix%  - LuckPerms 的前缀
  17. %luckperms-suffix%  - LuckPerms 的后缀
  18. %displayname%       - 由权限组插件通过的玩家名称,通常是 prefix(前缀) + name(名称) + suffix(后缀)
复制代码

仅限 Bukkit

  1. %health%            - 玩家的血量
  2. %tps%               - 最后一分钟的服务器 TPS 信息
  3. %mspt%              - 服务器每刻的延迟
  4. %vault-prefix%      - Vault 的前缀
  5. %vault-suffix%      - Vault 的后缀
  6. %afk%               - 玩家挂机的状态,支持 Essentials / Purpur
  7. %mspt%              - 服务器当前的 MSPT (需要 Paper)
复制代码

仅限 Bungee

  1. %server%                    - 玩家所在的服务器
  2. %serveronline%              - 玩家所在的BC服务器的人数
  3. %online_<servername>%       - 指定子服的人数
复制代码

PlaceholderAPI

PlaceholderAPI 是支持的,并且外部变量符也是受到支持的。

TAB 同样也提供 PlaceholderAPI 的变量符,要获得对应的拓展,请修改:

  1. placeholders:
  2.   register-tab-expansion: true
复制代码

在 config.yml。

完整的变量符列表:

  1. %tab_tabprefix%
  2. %tab_tabsuffix%
  3. %tab_tagprefix%
  4. %tab_tagsuffix%
  5. %tab_customtabname%
  6. %tab_customtagname%
  7. %tab_belowname%
  8. %tab_abovename%

  9. %tab_tabprefix_raw%
  10. %tab_tabsuffix_raw%
  11. %tab_tagprefix_raw%
  12. %tab_tagsuffix_raw%
  13. %tab_customtabname_raw%
  14. %tab_customtagname_raw%
  15. %tab_belowname_raw%
  16. %tab_abovename_raw%

  17. %tab_scoreboard_visible%
  18. %tab_bossbar_visible%
  19. %tab_ntpreview%
  20. %tab_replace_<placeholder>%
  21. %tab_placeholder_<placeholder>%
  22. %tab_scoreboard_name%
复制代码

刷新

刷新间隔

TAB 会定期刷新变量符显示。对于内部变量符,它使用的是我找到的最佳值并直接在插件中设置。PlaceholderAPI 变量占位符的刷新间隔同样也可以 配置

异步刷新

默认情况下,所有的变量符都会异步刷新,这样它们就不会堵塞主线程。但是有一些变量符,必须在主线程刷新,这时这可能会导致一些问题或者错误。这样的话,你只需将它们替换为 %sync:<原本的变量符>% 然后它们就只会在主线程中被刷新,例如 %sync:server_total_entities%
需要注意的是你需要设置有理由的间隔时间,不要过于频繁,否则将会可能导致 TPS 下降。需要了解其对服务器 CPU 的占用情况,请输入指令 /tab cpu


变量符不显示变量

你要确保这是一个真正的变量符:TAB 的内部变量符或者是 PlaceholderAPI 的变量符。如果不是,这就是问题所在。

注意: 不要忘记在变量符的开头和末尾使用 % 符号。如果您需要使用这个符号,尝试使用 %% 替换。

内部变量符没有正常显示

所有的 TAB 内部变量符已经在上方列出。它们中的一些只能在 Bukkit 使用)对于内部占位符,它使用我找到的最佳值并直接在插件中设置。 可以配置 PlaceholderAPI 占位符的刷新间隔。(这意味着在 BC 上它们不会正常工作),还有的只能在 Bungee 上使用。尝试将仅限 Bukkit 使用的变量符或者将 Bukkit 的 TAB 配置直接复制到 BC上是导致此问题的关键因素。

PlaceholderAPI 变量符没有正常显示

如果你在 BungeeCord 上安装 TAB,请确保你按照 BungeeCord上的变量符 指示去做,因为没有将一个服务器数据直接转送到另一个服务器的办法。

如果你在 Bukkit 上安装 TAB 并遵循了上面介绍的步骤仍不正常显示,请使用If  /papi parse me <placeholder> 指令检查这个变量符到底能否正常显示。如果这个指令反馈的值仍是异常的,那么这就不是 TAB 的问题。


pXiaoD
BungeeCord 上的变量符

在 BC 上安装了 TAB 但是苦于 PlaceholderAPI 不支持 BC?我们提供了一个解决方案。

建立支持


警告!不支持 TAB的内部变量符,只支持 PlaceholderAPI 的变量符。

注意: PlaceholderAPI 变量符将会在插件重启或者玩家加入时显示它们本来的样子,只有在值被识取到后才会变化。你可以通过使用变量符输出替换功能来解决该问题。这个延迟通常只会在计分板中出现,因此你也可以尝试设置计分板在玩家进服延迟一段时间后才会显示以解决该问题。

pXiaoD
RedisBungee 支持

RedisBungee 插件被检测到后,TAB 将会自动启用该支持并和它挂钩。这包括名称标签、TAB列表排序、共用玩家列表还有其他。这个功能没有配置,并且将会在检测RedisBungee后自动开启。该功能要求 TAB 必须安装在 BC 服务器上。

如果你看到控制台发出消息 RedisBungee plugin was detected, but it returned null API instance. Disabling hook.,这意味着RedisBungee 插件没有正确启用,请检查你的控制台。


pXiaoD
RGB 颜色

简绍

自从 1.16 mojang 加入了 RGB 颜色支持,MC 也将允许我们使用 256^3 种不同的颜色而不是支持的 16 种。这也意味着 < 1.16 的版本不支持该功能。

用法

支持的 RGB 格式:
#RRGGBB
&#RRGGBB
{#RRGGBB}
#<RRGGBB>
&x&R&R&G&G&B&B


渐变色效果:
<#RRGGBB>Text</#RRGGBB>
{#RRGGBB>}Text{#RRGGBB<}
<$#RRGGBB>Text<$#RRGGBB>
<gradient:#RRGGBB:#RRGGBB>Text</gradient>


TAB 默认使用第一个,但也可以接受其他类型,而不会留下任何字符(例如 {})。

不要忘记替换 RRGGBB 为实际的十六进制颜色代码,例如 FFAA00 (是的,真的有人只是复制 "RRGGBB" 然后问我们为什么RGB颜色没有显示):
这个颜色代码代表 256 红 170 绿 0 蓝,对应原来的颜色代码 6 (橙色)。


你也可以使用 该网站 查找自己喜欢的RGB颜色。

魔法代码

和以前的颜色代码已有,在 (in any order). 例如: #00FFFF&lText.

如果是渐变色,你只需要将魔法代码放在文本的最开始的前面即可。例如 <#00FF00>&lBold gradient text</#FF00FF>.

无效代码解决

如果您不小心使用了无效的十六进制颜色代码,插件将简单地忽略它并将其保持为原始格式。

与 <1.16 兼容性

由于 <1.16客户端不能使用这些颜色代码,因此必须显示其他内容。该插件将找该 RGB 颜色最接近的旧版颜色,并将使用该颜色。

手动转换

如果你想要指定一个旧版颜色而不是插件自动寻找,你可以通过在颜色代码的末尾添加 |L ,其中 L 表示旧版颜色代码 (0-9 a-f)。
例如:
#RRGGBB|L
&#RRGGBB|L
{#RRGGBB|L}
#<RRGGBB|L>
<#RRGGBB|L>
&x&R&R&G&G&B&B|L


对于渐变色,这回导致整个文本被替换为相同的颜色而不是每个字符的最接近旧版颜色。同样,将 |L 放置到最开始的颜色代码的末尾位置。
例如:
<#RRGGBB|L>Text</#RRGGBB>
{#RRGGBB|L>}Text{#RRGGBB<}
<$#RRGGBB|L>Text<$#RRGGBB>
<gradient:#RRGGBB|L:#RRGGBB>Text</gradient>



pXiaoD
如何与其他名称颜色插件兼容?

不兼容的原因

玩家名称的颜色是由计分板队伍控制的,它同样也处理名称标签的格式和 TAB 列表的玩家排列。同一时候只能有一个插件处理计分板队伍。正是因为这样,TAB会阻止其他的发光插件尝试修改玩家的队伍。

解决方案

解决方案就是使用这个发光插件的变量符(如果它有的话)。
这个变量符需要设置在玩家 tagprefix 属性的末尾。
注意: 针对 Minecraft 版本 1.9 - 1.12 下 prefix(前缀)不能超过 14 个字符。(发光插件的变量符增加 2 个字符 - & 和颜色代码)


示例: 这个示例使用的是 eGlow 插件。

groups.yml

  1. _DEFAULT_:
  2.   tagprefix: '%vault-prefix%%eglow_glowcolor%'
复制代码

示例兼容的插件

  • eGlow (%eglow_glowcolor%) (免费)
  • CMI (%cmi_user_glow_code%) (付费)
  • ... 还有其他 ?

额外信息

  • 名称颜色插件不能在低于 1.9.4 客户端版本上使用。



pXiaoD
如果和其他昵称插件兼容?

不兼容的原因

昵称插件将会尝试在 2 种场合修改玩家的名称:
Tablist: TAB 完全控制 TAB 列表并阻止其他插件尝试修改它。
名称标签: TAB 故意阻止其他插件更改名称标签中的玩家名称,因为这会导致两个问题:


1.修改名称后的玩家不会有任何来自 TAB 的前缀/后缀,因为名称标签属性绑定到玩家名称上,而TAB 使用玩家的真实姓名。

2.修改过名字的玩家会出现在 TAB 列表(未排序)的顶部,因为名称标签属性绑定到玩家名字,而TAB 使用玩家的真实姓名。 这样,TAB 将不会处理该播玩家的排序。

解决

解决这个问题的一个方法是使用这些昵称插件的变量符来代替玩家名称的变量符。
这个变量符必须配置到使用昵称的组或者玩家的 customtabname 和/或者 customtagname 属性中,你也可以使用 _DEFAULT_ 组代表所有玩家。
注意: customtagname 需要启用 unlimited nametag mode


示例: 这个示例使用 Essentials 的变量符 %essentials_nickname% ,其来自 PlaceholderAPI 插件,所以不要忘记安装对应的 PAPI 拓展。

  1. Groups:
  2.   _DEFAULT_:
  3.     customtabname: '%essentials_nickname%'
  4.     customtagname: '%essentials_nickname%'
复制代码

如果你想要你的昵称前面添加前缀,请查看 小提示。

昵称插件示例

这些是一些昵称插件的 PlaceholderAPI 变量符,查看完整的列表可查看 PlaceholderAPI
Essentials: %essentials_nickname%
EazyNick: %eazynick_display_name%
CMI: %cmi_user_nickname%
这不是最终列表,所有带有变量符的昵称插件都受支持。


根据它们的昵称来排序玩家

要想这么做,您需要你的昵称插件来更改权限组插件中玩家对应的权限组。如果您没有办法这么做,那么还有一个办法。
您需要使用昵称插件为玩家添加一个权限组并使用来自 分组 的第二个方法,但不是里面的按照预期配置列表,您应该恢复它。
例如,当你将 default 组放置在 owner 前面时,在你同时拥有该两个组的情况下, (从昵称插件获得 default 组), TAB 将会选择并将你按照 default 组的成员排列。
警告: 这只会玩家同时只有 1 个组时才会有用。如果服主、管理员或者其他的玩家拥有多个组,那么这不会起效,因为这会破坏基本的排列规则。

pXiaoD
如果设置权限组的 weight?

它们是什么?

每个权限组插件都会有一套 weight(权重值)系统。这些权重值决定玩家能拥有的各个权限组的优先级,即哪个组排列更高。

在 TAB 中,您需要指定各个组的权重值,这样 TAB 的自动排列等功能才会像您想要的样子工作。

如何设置它们?

LuckPerms

如果你正在使用 LuckPerms 作为权限组插件,那么你可以使用指令/lp group <组名称> setweight <数字> 如果这个组越重要,那么它的权重值对应的数字就应该越大。

PermissionsEx

如果你正在使用 PEX 作为权限组插件,那么你可以使用指令 /pex group <组> weight <数字> 相较于 LuckPerms,如果这个组约重要,那么它的权重值对应的数字就应该越小。

其他插件

如果你不使用 LuckPerms 或者 PermissionsEx,你必须仔细阅读它们的 Wiki 并查找如何设置权限组的权重值。如果你的权限组插件不支持该功能,你可以尝试TAB的 根据权限节点自动排列 功能。


pXiaoD
如何将插件配置以 UFT-8 编码储存?

Notepad

打开文件 > 点击"文件" > 另存为... > 将编码设置为 UTF-8 > 点击保存。



Notepad++

打开文件 > 点击编码 > 点击 UTF-8




Sublime Text 3





WinSCP

在 WinSCP 中打开文件并检查它是否已经是 UTF-8 代码 (1)。如果不是,点击顶部的编码按钮 (2), 选择 UTF-8 (3) 然后保存文件。


pXiaoD
小提示

在 TAB 列表中显示死亡数

  1. yellow-number-in-tablist:
  2.   enabled: true
  3.   value: "%statistic_deaths%"
复制代码

请保证你的服务器安装了 PlaceholderAPI 和它的 statistic 拓展 (/papi ecloud download statistic)。
注意: 这是从服务器的数据统计值处获得的,您可以在 <默认世界名称>/stats/<玩家 uuid>.json 重置其数据。


使用来自权限组插件的前缀和后缀

删除 groups.yml 中所有的组并只保留:

  1. _DEFAULT_:
  2.   tabprefix: "%vault-prefix%"
  3.   tagprefix: "%vault-prefix%"   
  4.   tabsuffix: "%vault-suffix%"   
  5.   tagsuffix: "%vault-suffix%"
复制代码

你需要 Vault 和一个权限组插件挂钩。
如果你安装了 LuckPerms,你也可以使用 %luckperms-prefix% 作为前缀(suffix,后缀也是同理)。
注意: 如果你在 BC 上安装了 TAB 并且希望显示子符的前缀,请使用 %vault_prefix% (或者 %luckperms_prefix%) 并参考 BungeeCord上的变量符


在 TAB 列表中显示玩家的版本号

使用指令 /tab group _DEFAULT_ tabsuffix " &8[&3%player-version%&8]" ,如果你希望显示的版本号统一在右侧,请使用 TAB 后缀对齐功能

复制 Purpur 的 TPSBar

默认情况下,Purpur 的 TPS 条显示服务器的 TPS, MSPT和玩家的延迟,并且它们将会根据值来改变颜色,从绿色到红色。较为简单的一个办法是使用 变量符输出替换 功能,然而,它会替换 TAB 中所有用到该变量符的地方,这会导致当你在 黄色数字 功能使用像 %ping% 的变量符是,它将不再工作,因为这时的该变量符将因为你的替换而拥有颜色代码。因为如此,我们将会使用 条件变量符 功能。

当 TPS 超过 19 时,它将会显示 <#55FF55>值value</#00AA00>。当超过 15 时,它将会显示 <#FFFF55>值</#FFAA00>,否则将会显示<#FF5555>值</#AA0000>。这可以通过 2 个条件来实现:

  1. conditions:
  2.   tps:
  3.     conditions:
  4.       - "%tps%>=19"
  5.     yes: "<#55FF55>%tps%</#00AA00>"
  6.     no: "%condition:tps2%"
  7.   tps2:
  8.     conditions:
  9.       - "%tps%>=15"
  10.     yes: "<#FFFF55>%tps%</#FFAA00>"
  11.     no: "<#FF5555>%tps%</#AA0000>"
复制代码

要使用这个条件变量符,我们需要使用 %condition:tps% 变量符。
现在,重复 mspt 和 ping(玩家延迟)变量符的操作。对于 mspt,Purpur的间隔是 <40, <50, 50+。对于玩家延迟,则是 <100, <200, 200+。


mspt 和玩家延迟的条件应该像这样:

  1. conditions:
  2.   mspt:
  3.     conditions:
  4.       - "%mspt%<40"
  5.     yes: "<#55FF55>%mspt%</#00AA00>"
  6.     no: "%condition:mspt2%"
  7.   mspt2:
  8.     conditions:
  9.       - "%mspt%<50"
  10.     yes: "<#FFFF55>%mspt%</#FFAA00>"
  11.     no: "<#FF5555>%mspt%</#AA0000>"
  12.   ping:
  13.     conditions:
  14.       - "%ping%<100"
  15.     yes: "<#55FF55>%ping%</#00AA00>"
  16.     no: "%condition:ping2%"
  17.   ping2:
  18.     conditions:
  19.       - "%ping%<200"
  20.     yes: "<#FFFF55>%ping%</#FFAA00>"
  21.     no: "<#FF5555>%ping%</#AA0000>"
复制代码

要使用它们,我们可以使用 %condition:mspt%%condition:ping 变量符。Purpur 的 TPS条是使用 mspt 作为从 0 到 50 数值的 Boss条。这可以通过 PlaceholderAPI 的 math 拓展实现: %math_0_{tab_placeholder_mspt}*2%。它将会使用 GREEN 颜色和 NOTCHED_20 风格,让我们汇总这些到 bossbar.yml 文件:

  1.   bars:
  2.     tpsbar:
  3.       style: NOTCHED_20
  4.       color: GREEN
  5.       progress: "%math_0_{tab_placeholder_mspt}*2%"
  6.       text: "&7TPS&e: %condition:tps% &7MSPT&e: %condition:mspt% &7Ping&e: %condition:ping%&7ms"
复制代码

最后一步就是配置这个 Boss条 在何时显示。一种方法是使用 Boss条 的公告/发送指令。另一种方式则是使用显示条件,例如 display-condition: "%permission:tab.tpsbar% 。这样拥有 tab.tpsbar 权限的玩家将会看到该 Boss条。

BedWars1058 兼容

分组

要想通过 TAB 分组,请添加 PLACEHOLDER_A_TO_Z 分组模式并使用 %bw1058_player_team% 变量符,示例:

  1. sorting-types:
  2.   - "PLACEHOLDER_A_TO_Z:%bw1058_player_team%"
  3.   - "GROUPS:admin,mod,default"
  4.   - "PLACEHOLDER_A_TO_Z:%player%"
复制代码

TAB 列表和名称并且显示玩家所在的游戏队伍

要显示玩家所在的游戏队伍,请使用该指令: /tab group _DEFAULT_ tabprefix %bw1058_player_team%
名称标签也是同理,只需把 tagprefix 替换成 nametag 即可: /tab group _DEFAULT_ nametag %bw1058_player_team%


如果你只想显示玩家队伍的缩写,请安装 PlaceholderAPI 的一个拓展: https://api.extendedclip.com/expansions/bw1058plus/ 并使用 %bw1058plus_team_letter% 变量符,如果你还想要显示玩家队伍的颜色,在这个变量符的右侧再补上 %bw1058plus_team_color% 变量符即可。

大厅 Rank 和游戏里的玩家队伍

如果你想在玩家还在游戏大厅时显示它的 Rank,而在游戏房间中显示他所在的游戏队伍,不用担心,这里有一个办法 =)
你可以通过条件来检查玩家当前的队伍,如果当前队伍为空(这意味着玩家目前还没有开始游戏),那么就返回 Rank 或者它们所选择的队伍。示例:


  1. conditions:
  2.   rankOrTeam:
  3.     conditions:
  4.       - "%bw1058_player_team%="
  5.     yes: "%luckperms-prefix%"
  6.     no: "%bw1058_player_team%"
复制代码

然后输入 /tab group _DEFAULT_ tabprefix %condition:rankOrTeam%/tab group _DEFAULT_ tagprefix %condition:rankOrTeam% 这样你设置的条件将会作用到你的 TAB 列表和名称标签了。


pXiaoD
报错日志

关于

TAB 会将不同的事件记录在最多 3 个不同的文件中以避免控制台刷屏。这些记录的内容都是负面的,因此你需要时刻注意它们。

这些文件只会在它们有需要记录的内容时才会生成。这意味着如果你没有这些文件在你的文件夹,一切正常。并且,在不重启插件和其他的情况下,都可以删除这些记录文件,这不会造成任何影响。

所有文件的大小被限制在 1MB 以避免包含相同错误的巨型文件一遍又一遍地重复记录。不要忘记这些文件的作用是记录,在你解决它们记录的问题后你必须删除它们。它们不会自己删除。

errors.log

这个文件包含 2 种内容:

用户错误

这通常包括您错误配置,例如按权限排序但不给予任何权限、排序列表中缺少组、尝试在纯数字字段中使用文本等等,解决它们一般无需花费大量时间。

内部错误

没有人喜欢让他们的控制台充满错误。 修复错误是最可靠的解决方案,但是这需要时间,而且您通常不会在报告错误的第二次获得修复错误的更新。 因此,所有插件错误都将移至此文件。

该文件用于追踪由 PlaceholderAPI 拓展导致的错误。这应当反馈给这些拓展的作者。错误的第一行将会显示是哪个变量符出错。

anti-override.log

这个文件记录了所有其他尝试覆盖 TAB 目前功能的插件。这个记录文件存在的意义是由于只能有 1 个插件同时占用显示(例如名称并且的前缀和后缀、TAB 列表的前缀和后缀)。这意味着如果您将其他插件没有正确配置并关闭您实际因已有 TAB 而不再需要的功能,那么这将会导致该插件和 TAB 冲突。如果您希望是 TAB 使用对应功能,请禁用其他插件的该功能,否则请禁用 TAB 的对应功能。

不幸的是,您可以仍无法通过此记录文件判断到底是哪些插件和 TAB 不兼容,但你至少现在可以通过它猜测,而不是以前的两眼摸黑。

虽然这在技术上是不必要的,因为 TAB 会自动阻止其他插件覆盖它,但最好正确配置其他插件。 在将 TAB 从 bukkit 移动到 bungeecord 时,这可能会派上用场,因为由于 bungeecord 中缺少功能,反覆盖不能很好地工作,因此在移动到 bungeecord 时,您不会突然体验到大量 TAB 的功能因冲突而无法正常工作。


pXiaoD
优化插件

这个指南解释了你有哪些降低本插件 CPU 占用的方法。
正确的随时检查 CPU 性能的方法是使用 /tab cpu 指令。如果输出的值超过它本应当的值,请检查此指南以帮助你优化插件。


#1 - 尽量使用静态文本而不是变量符

静态文本不需要定时刷新,这带来更好的服务器性能。一些变量符完全可以通过静态文本来代替,例如 %maxplayers% 变量符应该很少变化(除非你又改了服务器的最大人数)。另一个可用的选项的根据组或者权限显示不同的内容时使用插件自带的功能而不是使用权限组插件的变量符。

#2 - 变量符刷新间隔

一些变量符会使用很长时间来读取值,这会导致很高的 CPU 占用。然而,这可以通过修改变量符刷新间隔的方法优化。

这只对 PlaceholderAPI 变量符有效,内部变量符有我发现的最佳优化的刷新间隔值并且无法修改。

首先,在你的配置找到这一部分

  1. placeholderapi-refresh-intervals:
  2.   default-refresh-interval: 100
  3.   server:
  4.     "%server_uptime%": 1000
  5.     "%server_tps_1_colored%": 1000
  6.   player:
  7.     "%player_health%": 200
  8.     "%player_ping%": 1000
  9.     "%vault_prefix%": 1000
  10.   relational:
  11.     "%rel_factionsuuid_relation_color%": 500
复制代码

刷新间隔是以毫秒为单位。它必须是 50 的倍数,即重复刷新变量符任务的间隔。

变量符可以分为 3 种:

#1 - 服务器变量符: 这是向所有玩家输出共同值的变量符。例如 %server_tps%。但并不是所有变量符都是这样,大部分的变量符应该同时因服务器和玩家的不同而输出不同的值。
在这个分类的变量符占用的 CPU 是 玩家变量符<当前在线玩家数量> 分之一。
警告: 如果 TAB 安装在 BC 上,那么这一部分不会作用于 PlaceholderAPI 的变量符,因为不同服务器的玩家依然拥有不同的值。这时的服务器变量符消耗几乎于玩家变量符一样。


#2 - 玩家变量符: 这时根据不同玩家输出不同的值的变量符。例如 %vault_prefix% - 每个玩家的前缀都不一样。

#3 - 关系变量符: 可能为每个玩家组合输出不同值的变量符,通常以 %rel_ 开头。

default-refresh-interval 是所有未列出的 PlaceholderAPI 护身符的刷新间隔。它们自动被视为 玩家变量符 ,除了以 %rel_ 开头的变量符 ,它们应该被分为 关系变量符

你应该知道怎么区分玩家变量符和服务器变量符。如果你还是不知道,直接将它们归为 玩家变量符 吧。

警告! 一些变量符虽然向所有玩家输出共同的值,看起来它们似乎应该被分列为 服务器变量符 ,但它们中一些会包含检查该玩家是否有效。在这种情况下,你应该把它们分类为 玩家变量符 。联系变量符拓展的作者是最佳了解这是玩家变量符还是服务器变量符的最佳方法。

#3 - 不要使用 RGB

尽管 RGB 颜色看起来很好看,但它们需要将文本拆分成若干 子颜色 部分。这会需要一小段时间并消耗一些 CPU 性能,使用旧版颜色代码是提高性能的一个方法之一。

#4 - unregister-before-register 选项

这是一个默认启用的隐藏选项,目的在于尝试解决 BC 的玩家因 "Team already exists in this scoreboard" 被踢出的 bug。这导致客户端可能会出现一些小问题,但远比从服务器被踢出好得多。

如果你的 TAB 安装在一个 Bukkit 服务器而不是 BC 群组服务器,你可以通过在配置文件新增 unregister-before-register: false 这行以禁用该功能。这会让插件不再发送对你来说无用的发包以提高一些性能。

#5 - 禁用反覆盖

默认情况下,TAB 阻止其他插件覆盖它所带有的功能。这时因为许多服主没有足够的能力去正确配置它们安装的插件,例如关闭 CMI 的碰撞处理,该处理将会破坏 TAB 的名称并且,还有 CMI 也带有 TAB 顶部和底部功能。反覆盖会无意间增加 CPU 消耗。TAB 将会记录所有反覆盖记录到 anti-override.log 文件。如果该文件为空或者你没有这个文件,那么看起来你没有插件和 TAB 冲突,只需关闭反覆盖功能即可降低一些消耗。

要关闭该功能,在你的配置文件中找到

  1. feature-name:
  2.   anti-override: true
复制代码

并将该选项值设置为 false 即可禁用它。


古青鸣
灌死你,灌死你,反正我没金粒

謎__
牛蛙,好详细的讲解

guduinstall
pXiaoD 发表于 2022-4-2 13:32
优化插件

这个指南解释了你有哪些降低本插件 CPU 占用的方法。

谢谢楼主,解决了我几乎所有对tab这个插件的问题,么么哒

302qq
这个兼容性不错,点赞~

第一页 上一页 下一页 最后一页