
TablistMod
使用完整的精灵占位符和动画支持来格式化您的标签列表/玩家列表。
查看大图TabListMod — 基于权限的动画 TabList,支持精灵图、渐变色、内联动画与分维度布局
作为 Chat Mod 的配套模组开发。 直接共享 ChatMod 的精灵图集和
sprites.yml—— 你在 ChatMod 中定义的每个精灵别名都可以直接在 TabList 的页眉、页脚、前缀和后缀中生效,无需重复定义。所有格式字符串完全支持 ChatMod 的颜色、渐变和精灵语法。
功能介绍
TabListMod 让服务器管理员可以根据每位玩家的权限,完全控制 TabList 页眉、页脚和玩家名字行的显示效果。管理员看到的布局与 VIP 玩家不同,而 VIP 玩家看到的又与普通成员不同。每种格式都可以设置动画、按维度区分,并包含实时占位符 —— 所有配置均在简单的 YAML 文件中定义,无需重启。
在此基础上,每位玩家都会有格式化的名字行,包含前缀、彩色显示名和后缀,这些均由可配置的格式字符串构建。前缀和后缀各自拥有独立的优先级系统、权限节点和可选条件。
特色功能
🎨 按权限区分的 TabList 格式
在 tablist_formats.yml 中定义任意数量的 TabList 格式。系统会应用玩家持有的第一个权限节点对应的格式。没有设置权限节点的格式将作为兜底方案,匹配所有玩家。
formats:
admin:
priority: 100
permission_node: 'TabListMod.admin'
animated: true
seconds: 2.0
frames:
1:
header:
- ''
- '<#FF5555>⚡ 管理员 ⚡<#FF0000>'
- '&7在线玩家: &f%online_players%&7/&f%max_players% &7余额: &a%balance%'
- ''
footer:
- ''
- '&7%datetime%'
- ''
default:
priority: 0
animated: true
seconds: 2.0
frames:
1:
header:
- ''
- '%animation:running_man%'
- '<#55FF55>✦ 欢迎来到服务器 ✦'
- '&7在线玩家: &f%online_players% &7延迟: &f%ping%ms'
- '&7余额: &a%balance%'
- ''
footer:
- ''
- '&7%date% &f%time%'
- ''
每个格式字符串都支持颜色代码、平铺十六进制(&#RRGGBB)、渐变色(<#RRGGBB>文字<#RRGGBB>)、精灵标记([#alias]、[item]、[player])以及所有内部和 PlaceholderAPI 占位符。
🎬 基于帧的动画与回退机制
动画格式使用编号帧映射表而非平面列表。第 1 帧是标准帧 —— 它必须同时定义页眉和页脚。之后的任何帧只需声明实际变化的内容。在第 2、3 帧及后续帧中省略的行会自动回退到帧 1 的值,因此你无需在多个帧中重复静态行。
frames:
1:
header:
- ''
- '<#55FF55>✦ 欢迎 ✦'
- '&7在线玩家: &f%online_players%'
- ''
footer: # ← 只定义一次,其他帧自动继承
- ''
- '&7%date% &f%time%'
- ''
2:
header: # 只有页眉变化 —— 页脚省略 → 使用帧 1 的值
- ''
- '<#FFAA00>✦ 欢迎 ✦'
- '&7在线玩家: &f%online_players%'
- ''
✨ 内联动画 %animation:名称%
在 tablist_animations.yml 中定义可复用的文字动画。每个动画拥有独立的帧速率,并在文字值列表中循环。将 %animation:name% 放入任意页眉、页脚、前缀、后缀或玩家名字格式字符串中,它就会以自身速度独立播放 —— 与周围格式的动画速度完全无关。
animations:
running_man:
seconds: 0.20
frames:
- '&f[#run]&7·····················'
- '&f·[#walk]&7····················'
# ...
内联动画同样适用于完全静态的格式 —— 如果某行包含 %animation:x%,该格式会自动每 tick 发送一次,确保不会跳帧。
🌍 分维度布局
每种格式都可以定义特定维度的覆盖内容,当玩家进入该世界时自动生效。覆盖内容可以是静态的,也可以使用独立的帧速率设置动画。
dimensions:
'minecraft:the_nether':
animated: false
header:
- ''
- '&4&l[ 下界 ] &b&l 管理员'
- '&c世界: [#netherrack] &4地狱'
- ''
footer:
- ''
- '&c%datetime%'
- ''
🏷️ 前缀、后缀与玩家名字格式
在 tablist_prefixes.yml 中定义前缀和后缀等级。每个条目都有独立的优先级、权限节点和可选条件。TabList 中玩家的名字行可通过 tablistmod.yml 中的 tablist_name_format 完全自定义:
tablist_name_format: '%custom_rank%%displayname%'
| 令牌 | 值 |
|---|---|
%custom_rank% |
激活的前缀格式字符串(包含颜色代码) |
%displayname% |
玩家游戏内显示名 |
%player% |
原始 Minecraft 用户名 |
%balance% |
EcoBal 余额(需安装 EcoBal 模组) |
%ping% |
当前延迟(毫秒) |
精灵图、十六进制颜色和渐变色同样适用于名字格式。
🖼️ 通过 ChatMod 支持精灵图
TabListMod 直接桥接 ChatMod 的 AtlasSpriteHelper 和 SpritesManager。你在 ChatMod 的 sprites.yml 中定义的每个精灵别名,在 TabListMod 中均可使用相同的令牌语法调用 —— 无需单独的精灵配置。
[#grass_block] → sprites.yml 中的精灵别名
[#netherrack] → 精灵别名
[item] → 玩家手持物品
[item:1] → 快捷栏第 1 格的物品
[player] → 玩家皮肤头像(16×16)
[player:Name] → 指定玩家的头像
如果未安装 ChatMod,精灵令牌将解析为空 —— TabList 的其余功能正常运行。
💰 EcoBal 经济集成
如果安装了 EcoBal,%balance% 将解析为玩家的格式化余额,支持可配置的货币符号和小数位数。如果未安装 EcoBal,%balance% 将显示 N/A。无需任何配置 —— 系统自动检测。
ecobal:
enabled: true
decimal_places: 2
currency_symbol: "$"
📋 占位符
| 占位符 | 值 |
|---|---|
%player% |
原始 Minecraft 用户名 |
%displayname% |
游戏内显示名 |
%custom_rank% |
激活的前缀(含颜色代码) |
%ping% |
延迟(毫秒) |
%online_players% |
当前在线玩家数 |
%max_players% |
服务器玩家上限 |
%balance% |
EcoBal 余额 |
%date% |
当前日期(yyyy-MM-dd) |
%time% |
当前时间(HH:mm:ss) |
%datetime% |
完整日期、时间和时区 |
%dimension% |
维度显示名称 |
%dimension_id% |
原始维度键,例如 minecraft:the_nether |
%dimension_sprite% |
当前维度的精灵令牌 |
%playtime% |
总游戏时间,例如 3d 2h 15m |
%animation:名称% |
命名内联动画的当前帧 |
所有 Fabric PlaceholderAPI 占位符也会自动解析。
🎮 逐行动画模式
对于更精细的控制,页眉的每一行都可以设置独立的动画速度。速度为 0 的行将完全保持静态,而周围的行则独立播放动画。
per_line_seconds:
- 0 # 第 1 行 — 永久静态
- 1.25 # 第 2 行 — 每 1.25 秒循环一次
- 1.0 # 第 3 行 — 每 1.0 秒循环一次
- 0 # 第 4 行 — 永久静态
header_lines:
- frames: ['']
- frames: ['<#FF5555>⚡ 管理员 ⚡', '<#FF0000>⚡ 管理员 ⚡']
- frames: ['&7在线玩家: &f%online_players%']
- frames: ['']
👻 旁观者处理
配置旁观者玩家在 TabList 中的显示方式。
| 模式 | 行为 |
|---|---|
KEEP_POSITION |
旁观者保持在正常排序位置 |
SINK_TO_BOTTOM |
旁观者下沉至所有生存模式玩家下方 |
HIDE_EFFECT |
取消旁观者游戏模式的数据包;以普通玩家身份显示 |
🔧 管理命令
| 命令 | 描述 | 权限 |
|---|---|---|
/tablist reload |
热重载所有 TabListMod 配置 | tablistmod.reload |
/tablist debug [玩家] |
显示激活的格式、前缀和后缀 | tablistmod.debug |
/tablist list formats |
列出所有已加载的格式 | tablistmod.list |
/tablist list prefixes |
列出所有已加载的前缀 | tablistmod.list |
/tablist player <名字> refresh |
强制刷新某位玩家的 TabList | tablistmod.player.refresh |
任何配置更改均无需重启服务器 —— /tablist reload 可立即应用所有更改。
配置文件
所有文件位于 config/tablistmod/ 目录下。编辑后使用 /tablist reload 应用更改。
| 文件 | 内容 |
|---|---|
tablistmod.yml |
全局设置、名字格式、时区、旁观者模式、EcoBal、维度映射 |
tablist_formats.yml |
按权限区分的页眉/页脚格式定义 |
tablist_prefixes.yml |
前缀和后缀定义 |
tablist_animations.yml |
可复用的内联动画定义 |
依赖模组
| 模组 | 是否必需? |
|---|---|
| Fabric API | ✅ 必需 |
| LuckPerms | ✅ 按权限区分格式时必需 |
| ChatMod | ⭐ 强烈推荐 —— 启用精灵图和共享图集 |
| EcoBal | 🔶 可选 —— 启用 %balance% 占位符 |
| Placeholder API | 🔶 可选 —— 启用 PAPI 占位符 |
TabListMod 对 ChatMod 没有硬性编译时依赖 —— 它可以独立运行,并在未安装 ChatMod 时优雅降级(精灵图解析为空)。两个模组设计为配套使用,一起工作效果最佳。
整合包政策
- ✅ 你可以在任意整合包中包含 TabListMod。
- ❌ 不得出售该整合包。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。