Suite

联动

Tab 模块公开能力、刷新触发、跨服与模块集成

联动

TabRefreshable 公开能力

Tab 列表刷新能力接口,供 Title、Chat 等模块在数据变更时触发 Tab 刷新。

方法参数说明
requestViewerRefreshPlayer viewer, String reason请求刷新指定玩家可见的 Tab
requestGlobalRefreshString reason请求刷新所有在线玩家的 Tab
TabRefreshable refreshable = getCapability(TabRefreshable.class);
if (refreshable != null) {
    refreshable.requestGlobalRefresh("title-change");
}

同一 tick 内的重复刷新请求会被合并去重;全局刷新会吸收所有单玩家请求。

刷新触发时机

触发源刷新范围说明
周期任务全局每隔 refresh-interval-ticks 自动触发一次全局刷新
玩家进服/退服全局自动触发全局刷新
客户端回包单玩家客户端主动请求刷新
客户端翻页单玩家翻页时刷新
命令单玩家/tab refresh / /tab view / /tab page
跨服数据全局收到远程节点数据时触发全局刷新
公开能力单玩家/全局其他模块通过 TabRefreshable 触发

客户端刷新防护

客户端主动刷新受滑动窗口限流保护,防止高频刷新请求:

配置项默认值说明
enabledtrue是否启用防护
window-ms1500统计窗口时长(毫秒)
max-hits1窗口内允许的最大刷新次数
modesilentsilent 静默丢弃 / notify 提示玩家
notify-message&cTAB 刷新过快,请稍后再试。命中防护时的提示消息
notify-cooldown-ms3000提示消息冷却时长(毫秒)

跨服同步

跨服同步的完整配置与部署说明见 跨服同步与聚合。

配置层级说明
宿主 config.yml 的 cross-server 节配置 Redis 或 Proxy 后端连接参数
模块 config.yml 的 cross-server.enabled全局开关
Tab 定义 cross-server单定义覆盖全局开关

跨服同步需要所有节点使用相同的 Tab 定义 ID 和兼容的 pack 配置。

数据存储

Tab 模块不使用数据库。所有运行时状态(视图、页码、跨服数据、限流状态等)均保存在内存中,服务端重启后重置。调试快照以 JSON 文件存储在 data/tab/snapshots/。

模块集成

与 Title 模块联动

Title 模块在称号变更时通过 TabRefreshable 触发 Tab 刷新,确保 Tab 列表中的称号前后缀实时更新。Tab 的 pack 中可直接使用 Title 模块的 PAPI 占位符:

占位符说明
%axstitle_tab_<groupId>_prefix%指定分组的 Tab 前缀
%axstitle_tab_<groupId>_suffix%指定分组的 Tab 后缀
%axstitle_display%主展示称号
%axstitle_chat_<groupId>_prefix%聊天前缀(可按分组接入)
%axstitle_chat_<groupId>_suffix%聊天后缀(可按分组接入)

与 Chat 模块联动

Chat 模块在聊天格式变更时可通过 TabRefreshable 触发 Tab 刷新。Tab 的 pack 中可使用 Chat 模块的前后缀占位符。

与 EventPacket 模块联动

EventPacket 模块可通过 TabRefreshable 在事件触发时刷新 Tab,例如玩家完成特定成就后刷新 Tab 以更新排序列表。

PVP 高亮

%axstab_pvp% / %axstab_pvp_color% 占位符可判定玩家是否处于 PVP 高亮窗口(受 settings.style.pvp-highlight.enabled 控制)。玩家间相互伤害会自动记录时间戳,自身伤害不计入。

本页目录