权限体系
基本信息
| 属性 | 值 |
|---|---|
| 仓库内示例 | src/main/resources/permissions.yml.example(27 行) |
| 运行时路径 | <MC 根目录>/dynmap/permissions.yml(需自行从 example 复制) |
| 缺失时行为 | 回落到 OP 权限,仅 ops.json 中的玩家可执行大部分指令 |
| 接口 | forge/permissions/PermissionProvider.java |
| 实现 | forge/permissions/FilePermissions.java、forge/permissions/OpPermissions.java |
| 格式 | YAML,扁平权限名(无 dynmap. 前缀) |
功能
GTNH-Web-Map 自带一套独立的扁平文件权限系统,与 ServerUtilities 的权限系统并存。仓库 README.md “Permissions” 一节点明这一设计并给出警告:即使已在 ServerUtilities 配好等级权限,玩家仍可能看到本 mod 自己抛出的 “You don’t have permission to use this command!”。
启用时服务端日志会打印 [Dynmap] Using permissions.yml for access control(仓库 README.md 同节)。
permissions.yml.example 是扁平映射:顶层键为玩家名(或特殊键 defaultuser),值为权限字符串数组。defaultuser 下的权限对所有玩家生效。
permissions.yml.example:8-9 明确要求:权限名不带 dynmap. 前缀——dynmap.fullrender 在此文件中写作 fullrender。
权限名
defaultuser 默认授予的 11 项(permissions.yml.example:12-22):
| 权限 | 源码行 |
|---|---|
render |
permissions.yml.example:12 |
show.self |
permissions.yml.example:13 |
hide.self |
permissions.yml.example:14 |
sendtoweb |
permissions.yml.example:15 |
stats |
permissions.yml.example:16 |
marker.list |
permissions.yml.example:17 |
marker.listsets |
permissions.yml.example:18 |
marker.icons |
permissions.yml.example:19 |
webregister |
permissions.yml.example:20 |
webchat |
permissions.yml.example:21 |
marker.sign |
permissions.yml.example:22(默认注释掉) |
文件尾部 permissions.yml.example:24-27 以注释形式给出高权限玩家的写法(fullrender / cancelrender / radiusrender)。
/dynmap 侧的权限名集合可直接读自 DynmapCore.commands(DynmapCore.java:1134-1158,24 项):render、hide、show、version、fullrender、cancelrender、radiusrender、updaterender、reload、stats、triggerstats、resetstats、sendtoweb、pause、purgequeue、purgemap、purgeworld、quiet、ids-for-ip、ips-for-id、add-id-for-ip、del-id-for-ip、webregister、help。
marker.* 权限在分派处直接读出,可作为权限名的第二来源:marker.list(MarkerAPIImpl.java:1401)、marker.add(MarkerAPIImpl.java:1434)、marker.delete(MarkerAPIImpl.java:1446)。
数值
| 数值名 | 值 |
|---|---|
defaultuser 默认权限数 |
10 生效(permissions.yml.example:12-21)+ 1 注释(marker.sign,:22) |
/dynmap 权限名总数 |
24(DynmapCore.java:1134-1158) |
permissions.yml.example 行数 |
27 |
交互
| 触发 | 行为 |
|---|---|
dynmap/permissions.yml 存在 |
使用文件权限,日志打印 [Dynmap] Using permissions.yml for access control |
| 文件缺失 | 回落到 OP 权限,仅 ops.json 中的玩家可执行大部分指令 |
| 网页端玩家添加标记 | 需 marker.add(仓库 README.md 举例 defaultuser: [marker.add, marker.delete]) |
相关条目
- /dmarker -
marker.*权限的校验点 - /dynmap - 24 项指令权限的校验点
- config/GTNH-Web-Map.cfg - 与 ServerUtilities 相关的功能开关