API 模块
DominionAPI 的公开模块、包结构和各模块的使用边界。
模块总览
| 模块 | 主要包 | 用途 | 详情 |
|---|---|---|---|
| 主 API | cn.lunadeer.dominion.api | 获取单例、查询数据、检查权限、获取 Provider | 主 API |
| Provider | cn.lunadeer.dominion.providers | 以受控方式创建、修改和删除数据 | Provider |
| DTO 与数据模型 | cn.lunadeer.dominion.api.dtos | 表示领地、成员、组、玩家、模板和空间范围 | DTO 与数据模型 |
| Flag | cn.lunadeer.dominion.api.dtos.flag | 读取内置 flag、注册自定义 flag 和组织 UI 分组 | Flag |
| 事件 | cn.lunadeer.dominion.events | 监听领地移动、数据操作和自定义 flag 注册 | 事件 |
| 辅助类型 | cn.lunadeer.dominion.utils | 处理颜色、MCA 区域记录和长方体范围 | 辅助类型 |
依赖关系
常见的调用路径如下:
DominionAPI
├─ 查询 -> DominionDTO / MemberDTO / GroupDTO / PlayerDTO
├─ 权限 -> PriFlag / EnvFlag
├─ 写入 -> DominionProvider / GroupProvider / MemberProvider / ...
└─ 联动 -> Dominion 事件
多数附属只需要主 API、DTO、Flags 和少量事件。只有在确实需要创建或修改 Dominion 数据时,才引入 Provider;不要因为能访问某个内部类就把它当作扩展 API。
选择模块的原则
- 展示领地名称、边界或所有者:使用 DTO;
- 判断玩家能否执行某动作:使用
DominionAPI.checkPrivilegeFlag(...); - 判断领地环境规则:使用
DominionAPI.checkEnvironmentFlag(...); - 改名、加成员、修改 flag:使用对应 Provider;
- 响应进入/离开领地:监听
PlayerMoveInDominionEvent、PlayerMoveOutDominionEvent或PlayerCrossDominionBorderEvent; - 增加可在 Dominion UI 中配置的规则:注册自定义 flag,并由附属实现实际行为。