联动
Regions 跨模块联动、EventBus 事件与跨服支持
联动
Regions 模块通过 EventBus、存储层等机制与其他模块和外部系统联动。
EventBus 事件
Regions 模块在玩家进出区域时发布事件,其他模块可通过 EventBus 监听实现联动。
| 事件 Topic | 触发时机 | Payload |
|---|---|---|
axs.regions.region_change | 玩家进入或离开区域 | region_id(区域 ID)、type(enter / leave) |
EventBus 不可用时事件不发布,不影响 Regions 正常运行。若宿主配置了跨服传输,事件可跨服传播,其他子服上的模块也能监听到玩家进出区域的事件。
典型联动场景:进入区域触发任务(QuestGPS)、播放音效/公告(Announcer)、显示标题(Title)、区域挂机奖励(AfkReward)、自动切换聊天频道(Chat)。
存储模式
Regions 模块支持两种存储模式,通过 storage.shared 配置切换:
- 共享存储模式(推荐):
storage.shared: true,使用本体统一数据源,各模块共用config.yml的storage节配置 - 自建存储模式:
storage.shared: false,使用独立数据库连接,支持 SQLite 和 MySQL
数据存储在区域、标志、成员三张表中,MySQL 表名前缀默认为 axs_rg_(可通过 storage.mysql.table-prefix 配置)。日常维护请使用 /axs purge、/axs migrate 命令,不建议手动改表。
跨服支持
- 存储层跨服:共享存储模式 + 同一 MySQL 数据库时,区域定义、标志、成员在全服范围内一致
- 事件跨服:进出区域事件可通过宿主跨服传输传播到其他子服
- 数据迁移:通过
/axs migrate可在 SQLite(单服)与 MySQL(跨服)之间迁移区域数据
跨服传输依赖宿主的 cross-server 配置,详见 跨服部署。
模块集成
Essentials
| 权限节点 | 说明 |
|---|---|
axs.essentials.fly.bypass | 绕过世界规则禁飞限制 |
axs.essentials.interact.bypass | 绕过世界规则禁交互限制 |
Essentials 为 Regions 的软依赖,先于 Regions 启动。
玩家数据清理
/axs purge 清理的是玩家的选区会话与进出追踪记录。区域定义、标志、成员数据以区域为主键,不属于玩家数据,不会被清理。
图形界面
Regions 模块提供两个 UI 界面(玩家菜单、管理员面板),文件位于 ui/ 目录:
| UI 文件 | 用途 |
|---|---|
ui/regions_menu.yml | 玩家区域查看菜单 |
ui/regions_admin.yml | 管理员区域管理面板 |
UI 文件支持通过 UI Editor 自定义修改,默认不会被更新覆盖。如需恢复默认 UI,删除对应文件后重启模块即可。